Resonant Blade: NEW Snake Boss!
Hey, everyone and welcome back to another Resonant Blade devlog episode. And just in case you’re new here, this devlog is about my solo indie gamedev project, Resonant Blade, a 2D sci-fi action-adventure game inspired by Zelda and Hyperlight Drifter where you play as Atlas and fight against the Dark Synths harnessing the sonic power of the Resonant Blade. If you haven’t already seen the latest trailer for the game, be sure to check it out now!
Since then, I’ve mainly been figuring out how to make a snake game. You know, like the old retro Snake games. Well, actually, a snake boss. In order to do this, I had to embark on an epic quest of mythic proportions to unveil the secrets of the snake. (searches youtube for how to make snake game)... And just like that, I had a moving snake creature.
This works by having the head of the snake essentially leave a trail of breadcrumbs for the next segment to follow by updating that segment’s position to the next breadcrumb waypoint. I also made sure to load in different sprites for the head, body segments, and tail depending on the direction they are moving. Yay, I got that working. Now, I needed to make the snake do more than just move around. So, why not have it move around underground? Sure, why not. To do this, I store the properties for each segment (i.e. HP and Resonance) in a separate class, destroy the segment game objects when colliding with the burrowing waypoint, and then re-create the segments at a random position and load their properties back in. I added in some collision for each segment so you can damage them. Getting hit by the snake will knock you to the ground for a short duration. Ok, it’s getting better but still needs a lot of help. It’s time to bring out the big guns. Well, these energy projectiles will have to do. When the snake is in its default moving state, it will have a random chance to shoot some projectiles out of each segment. These can be parried and absorbed into the Resonant Blade to build up your Triad attacks. The snake can shoot things now. Epic. Let’s add some more things for it to shoot at Atlas. What’s something that a snake can actually throw? Venomous spit balls. Check.
These poison balls are the same projectiles that these little slime enemies throw at you and they will blind your sensors so that you won’t be able to see or hear any resonant frequencies for a short time. The snake can only enter this spit turret mode from burrowing. When it surfaces, the camera will center on the snake as it opens its jaws and fires out volleys of poison at Atlas. Ok, the snake boss is mildly dangerous now. Let’s crank up the danger and have the snake bite Atlas. Yea, that sounds terrifyingly painful. Again, coming from a burrowing state the snake will follow Atlas and pause briefly before launching up out of the ground with its jaws wide open trying to bite Atlas. I still need to play around with the timing of things and make the burrowing effect look better, but this bite attack will do tons of damage, so the best thing to do is dash out of the way. Seems easy enough. But this might be a little tougher with some mobs to deal with. Yep, I threw in some mini snake worms that this boss can spawn. I made a little surfacing animation for them so when they spawn they’ll pop out of the ground. As for the functionality of these enemies, they don’t do much at the moment except for chase you around, but I might give them one attack. Maybe a projectile? Spit poison, energy ball, laser? I also came up with a basic design for how the boss fight will progress. I won’t go into too much of the details, but the gist of it is that you will need to find a way to stun the Hydra to make its head vulnerable to attacks. Ok, that’s most of what I’ve done with the Snake Boss so far. Basically, I made a bunch of different states for this boss. The next thing to do is to spend some time getting all of these to gel with one another so that it makes fighting this boss a fun and challenging experience.
Hydra Arena Map
I sketched up a map for the Hydra boss fight. This fight takes place in the jungle area of the world. This area is bigger than other boss levels allowing the player plenty of movement around the Hydra as it weaves and burrows around. Located at the top of the map are 2 switches that will activate an earthquake generator device which will force the Hydra out from hiding and stun it. The Resonant Orbs required to activate the Quake Generator will only appear while the Hydra is in its burrowing state. Basically, the player will have limited time to figure out the 2 colors for the switches before the Hydra launches a devastating attack. Figuring out the 2 resonances for the switches can be done in 2 ways. You can guess, which isn’t recommended since you’ll have access to 4 Resonant Crystals at this point which would make 16 different combinations to try out. The second and preferred method is to use Otto’s Long Range Scan. This ability allows Atlas to remotely control his droid companion, Otto, and scan previously unreachable areas. The idea for the Quake Generator is that you can move Otto to the Resonant Sources of the switches and scan them. This will reveal the Resonance required to activate the Quake Generator.
Adding in the remote control support for Otto wasn’t too difficult to do. I already had some functions that would disable or pause the control of Atlas for other reasons. I also had to do some simple things like making sure the camera follows Otto instead of Atlas, and come up with a simple way to move Otto. Since you won’t be doing any fighting or any fancy movement with Otto, I just mapped the Horizontal and Vertical axes directly to Otto’s 2d rigidbody velocity. There’s no acceleration or deceleration or anything like that. It’s just plain ol’ simple movement. After that, I had to make sure that the Scanner function actually originated from Otto. Moving the visuals for this wasn’t too bad. Getting other game objects like enemies and switches to interact with Otto’s Scanner was a little harder to figure out. Instead of having the PlayerScanner script attached to the player, I ended up making a separate object just for the Scanner. I could then just switch the parent for this object and local position to either Atlas or Otto.
ResoOrb Pedestal Interaction
I made this pedestal thing that can hold these orb things. The orbs can be picked up and moved around. The function of the pedestals is to change the resonance of an orb. After throwing an orb on a pedestal, you can thrust the Resonant Blade into the pedestal and power up the orb to change its resonance. To do this, you can select any Resonance and rapid-fire pressing a button until this little energy meter maxes out. This will trigger a little animation and update the color of the orb. These orbs can then be placed into these floor switches to unlock things or power up devices like the previously mentioned Quake Generator.
Sonic Slam Updated!
So I finally went back and updated the Sonic Slam Triad Ability. I updated the visuals and made Atlas jump in the air a little higher than before. Before, there was a ring particle effect that expanded outward from the player. Now, it’s more like an expanding rectangle of highlighted boxes and ground spikes that reach to the edge of the screen. I made the damage reduce the further out it goes. Instead of a circle collider object that grows in scale and collides with enemies, I just attached a box collider to each rectangle object that’s created. With the knockback effect, you can even hit enemies multiple times as they keep getting launched into the next damage zone. Making Atlas jump even higher and adding subtle things like darkening the background really help make this Triad ability more intense. Using this move is one strategy for getting past the Snake Boss’s defenses.
Damage Numbers Font
One last thing is just a small visual upgrade to the font for the damage numbers that pop up when getting hit or hitting an enemy. I was using Unity’s Text objects before so the numbers weren’t exactly the same pixel ratio as the rest of the stuff on the screen. I just made some individual sprites for the numbers instead of using the Text objects. I went with a wider font because I think it looks more sci-fi futuristic, I guess. Things like this are probably unnecessary in the grand scheme of things (finishing the game), but it helps keep me motivated and more productive when I go back to other aspects of game dev.
Okee dokee… That’s it for this devlog. If you want to help out and support what I’m doing, you can wishlist the game on Steam. Thanks for reading!