Add Caterkiller
caterkiller branch doesn't contain any caterkillers 0/10
Self-explanatory name, and he's placed in Base Zone Act 2.
The separate segments are put into the same space as the parent node as separate objects entirely, since the segments can't be animated horizontally just using an AnimationPlayer node, and therefore vertically since you can't only animate one axis. Ideally it could still be attached to the parent and move via script, but since all of the sonic retro docs pretend I can't do that i might as well not.
One actual change though outside of just the enemy is making Hazard.gd a class (named Hazard), since the segments need to modify that logic a little to activate the scattering. I feel like it's important to say this here since it technically affects Orbinaut's code, but nothing had to be changed to support this new class.
The Caterkiller's motion and velocity values are not adjusted for delta, since I can't be bothered when it's supposed to be stuck in _physics_process() anyway. Regarding ~~the AnimationPlayer again, to move the segments it uses a "state" system to determine which set of speeds to use from Sonic Retro, unfortunately the states are animated outside of the script for now, and are placed slightly before they're supposed to to prevent desynching the parts. I'll probably be replacing this behavior soon.~~ The node in question is gone and state timing is handled in-script.
One more extremely minor thing, there's a big fixed when the Caterkiller is killed before scattering that removes the previous segments the frame after it dies, usually resulting in the player getting hit trying to kill it. This is technically fixed in this implementation, but another issue seems to have similar behavior originating from the badnik code itself anyway.
Note that I originally wanted to add the Bloominator, but the only reference for how that object works is the skdisasm, and I'm far too stupid to understand largely undocumented assembly code.
An extra thing in that last commit was a small typo fix in Corkscrew.gd, "implament".
Hopefully that's fine to do here despite the much more specific focus.
heh, sorry about that. I had started this branch and started working on this with the intention of making a very malleable caterkiller but then I didn't get as deep into it as I wanted. I'll give this a look and approve as long as it meets the level of accuracy I'm expecting and passes some tests I intend to run on it.
I'll give this a look and approve as long as it meets the level of accuracy I'm expecting and passes some tests I intend to run on it.
Big stuff is the lack of a table for the vertical animation (not just linear animation!!), and that all the segments bounce in sync upon scattering, unlike testing I had done in a small romhack I did, I'll post a comparison soon but there's general inconsistency and I can't really use blastem's debugger good enough to extract nice info like this.
Smaller stuff is the segments, which detect floors by themselves instead of a table, on one hand Sonic Retro lists this as an optimization, on the other hand every segment turns as soon as they leave ground, so if a floor is somehow removed... they'll probably start having all the segments facing the other way and move backwards or something.
An interesting quality of Caterkiller in OG Sonic 1 is that if it hit a moving platform or something there actually was a real possibility of its segments splitting up when some of them hit a wall after the head didn't.
Honestly not 100% sure how desirable that is, but that's probably how it should work since I can't think of a better way to resolve that issue off the top of my head.
So, testing this, I have a couple of issues out of the gate. Depending on when you jump on or roll into the caterkiller, you still take damage even if hitting the head perfectly. Secondly, the caterkiller doesn't interact with floors at all unless it's put right on one from the start. Ideally, it would fall to or snap to a floor instead or potentially floating in the air.
I think taking damage from the caterkiller, even if jumping or rolling into its head, is a result of Area2D detection in Godot being up to 2 frames late: https://github.com/godotengine/godot/issues/86199
It's not noticeable for most enemies but the caterkiller inherently requires precise hit detection. But if the player overlaps both the caterkiller's vulnerable head and its first invulnerable body segment at the same time, this might be fixed by changing the process priority; the player would be in the head's playerHit array and the segment's playerHit array at the same time, but the head's logic would trigger first and destroy all of the segments, preventing the player from being damaged.
Rejecting for now on account of Caverns' issues with testing. Feel free to take a swing at the issues @Caverns4 pointed out, but this is something I was wanting to take a swing at myself (with a heavy emphasis on customizability and accuracy to the original in terms of default behavior), so your energy might be better spent on another effort.
I'll leave the PR open in case you update it.
Yeah i shoulda probably said that i want gonna work on it anymore.
Sure, i can make things, but i cant reference what the assembly does like you guys probably can, I cant read it for shit. I have comet catastrophe to worry abt anyway (which actually released a demo for sage, you may check it out if you will....)
On Tue, Mar 4, 2025, 10:52 PM DimensionWarped @.***> wrote:
Rejecting for now on account of Caverns' issues with testing. Feel free to take a swing at the issues @Caverns4 https://github.com/Caverns4 pointed out, but this is something I was wanting to take a swing at myself (with a heavy emphasis on customizability and accuracy to the original in terms of default behavior), so your energy might be better spent on another effort.
I'll leave the PR open in case you update it.
— Reply to this email directly, view it on GitHub https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4JOMPJJ2RPKEI5BKB4MDJL2SZYH3AVCNFSM6AAAAABK5UV2MSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJZG4ZTGMRSGQ . You are receiving this because you authored the thread.Message ID: @.***> [image: DimensionWarped]DimensionWarped left a comment (Techokami/SonicWorldsNext#170) https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224
Rejecting for now on account of Caverns' issues with testing. Feel free to take a swing at the issues @Caverns4 https://github.com/Caverns4 pointed out, but this is something I was wanting to take a swing at myself (with a heavy emphasis on customizability and accuracy to the original in terms of default behavior), so your energy might be better spent on another effort.
I'll leave the PR open in case you update it.
— Reply to this email directly, view it on GitHub https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4JOMPJJ2RPKEI5BKB4MDJL2SZYH3AVCNFSM6AAAAABK5UV2MSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJZG4ZTGMRSGQ . You are receiving this because you authored the thread.Message ID: @.***>
I MEANT DONT WANNA, FUCK.
On Mon, Sep 22, 2025, 11:51 AM Neon @.***> wrote:
Yeah i shoulda probably said that i want gonna work on it anymore.
Sure, i can make things, but i cant reference what the assembly does like you guys probably can, I cant read it for shit. I have comet catastrophe to worry abt anyway (which actually released a demo for sage, you may check it out if you will....)
On Tue, Mar 4, 2025, 10:52 PM DimensionWarped @.***> wrote:
Rejecting for now on account of Caverns' issues with testing. Feel free to take a swing at the issues @Caverns4 https://github.com/Caverns4 pointed out, but this is something I was wanting to take a swing at myself (with a heavy emphasis on customizability and accuracy to the original in terms of default behavior), so your energy might be better spent on another effort.
I'll leave the PR open in case you update it.
— Reply to this email directly, view it on GitHub https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4JOMPJJ2RPKEI5BKB4MDJL2SZYH3AVCNFSM6AAAAABK5UV2MSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJZG4ZTGMRSGQ . You are receiving this because you authored the thread.Message ID: @.***> [image: DimensionWarped]DimensionWarped left a comment (Techokami/SonicWorldsNext#170) https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224
Rejecting for now on account of Caverns' issues with testing. Feel free to take a swing at the issues @Caverns4 https://github.com/Caverns4 pointed out, but this is something I was wanting to take a swing at myself (with a heavy emphasis on customizability and accuracy to the original in terms of default behavior), so your energy might be better spent on another effort.
I'll leave the PR open in case you update it.
— Reply to this email directly, view it on GitHub https://github.com/Techokami/SonicWorldsNext/pull/170#issuecomment-2699733224, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4JOMPJJ2RPKEI5BKB4MDJL2SZYH3AVCNFSM6AAAAABK5UV2MSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJZG4ZTGMRSGQ . You are receiving this because you authored the thread.Message ID: @.***>
No worries Neon. FWIW, I don't even look at the disassembly, I'm just really anal-retentive about testing how things work and do frame by frame video analysis to pick apart the details. I'll definitely check out your work.
EDIT: just finished a run through the demo with each character. Love what you did with Buzz Bomber and all the squash and stretch effects on the animations. Also really dig the fact that double jump abilities tend to be available when launching out of a ramp without jumping. What an excellent showcase!
Which version of Worlds did you use to build it out of curiosity? Also you should definitely make a thread on the show and tell discussions board because that's the most evolutionary use of the engine I've seen so far... which admittedly probably not a ton to compare against since I was in too big of a funk to check SAGE or anything else out this year, but damn it was good. Only thing that immediately comes to mind on suggested improvements would be to get some kind of distortion in the water instead of just having that animated texture or whatever that is.