This week, I worked on implementing the boss. The goals were implementing the systems to kill the boss, setting up tentacle attacks, and setting up the dynamic tentacles. I worked on the first two, and the last one will be pushed to next week. They weren’t all necessarily goals for this week, just what I knew needed to be done soon. We have a plan for setting up the tentacles, and it may require assets I am waiting on for now. Regardless, there was plenty for me to do this week with just those two tasks. I also fixed some bugs with previously implemented systems.
The first thing I did was set up the flow for the boss fight. You can now follow the intended steps to kill the boss, including opening cylinders and freeing starfish, shooting the eye with the laser, and shooting the tentacles with the laser. They are all in the intended order, and the fight plays out as planned, just without the boss moving or attacking. When you deliver the final hit, it explodes. It still has a ways to go before it can be QA tested because the steps aren’t communicated very clearly, but it can be played, and that’s something.
I also got started on the boss attacks system. I already set up a system for deciding states to transition between, based on the angle to the player, distance, and RNG. Now that we have decided how we want the tentacle attacks to work, I could get started on the system that controls them. The tentacles will be composed of segments connected by joints. The way I plan on controlling them is by controlling the tip of the tentacles with code, and the rest will be simulated with the physics joints. This will allow for controlled attacks that target specific areas, without the need for complex animations for each attack. What I worked on was the code to set up the control of that tip.
I set up a behavior script to make a target object move through a set of nodes. These nodes can be added and moved in the editor, using an editor script I set up. You can set the total time it takes to move between the points with a variable on the script. The path between the points is interpolated using a Catmull-Rom spline. This gives it a fluid path to follow, without the need for a complicated steering script. It is a giant robot squid, so it will pretty much completely ignore everything in its way. A static curve works fine for this, because it doesn’t need to interact with anything anyway. This all works, but until the tentacles are set up, it just moves a sprite around.
The other thing I did this week was fix the sand dollar explosions. They are supposed to destroy walls, which I set up to work in a test scene. The problem was that the walls in the levels use a different script to break apart, so the sand dollars didn’t break walls in the game. I added some code to check for that script and use it, and that works now. As a fun bonus, setting the explosion range to a large enough number can completely strip a level down to just the indestructible materials.