Code Development

General

The boss hit detector has been updated to include boss two, I still need to add boss three to this once I have created the second phase model and add the hit boxes onto them. When the level starts, it loads in the correct health bar widget for the current boss. The boss hit detector code is below.

The boss health bar widget is what controls the phases of the fight. When the boss reaches a certain percentage, an event is triggered. For example, as level two has only one phase, the widget instead controls the destruction of the environment as the health decreases. This code can be seen below.

Once I have all the levels completed, I will then be looking into changing the way the dodge mechanic works. At the moment it feels like the player looses too much control whilst using it, potentially causing unfair deaths and frustration.

Another update I will be looking into is potentially adding a damage multiplier to the vent system, but I will have to test the levels in their entirety to make sure it doesn’t trivialize the boss. The way I would set it out is to have the multiplier stack for every successful vent (probably up to a cap), then any failed vents or if the player loses their shield, will cause the multiplier drop.

After some testing with the public at the 2024 Transmedia exhibition, the controller lost focus on the menus after certain screen transitions, I will need to go in and double check the widget codes to stop this happening, I think a part of it may be down to the fact I am using a Playstation 4 controller, which utilises the touch pad as mouse control, which when slightly brushed, will move the mouse and lose focus. I am going to have to by an X-box controller as these seem to be the main controller used for PC gaming due to not needing emulating software and it being simply plug and play. This will also allow me to change the control menu visuals to just represent X-box controller buttons, making menu prompts and tutorial easier to read at a glance.

Level one phase two

I wanted to make sure the boss fights did not get too repetitive which could potentially cause them to become boring. When the boss is reduced to 50% HP, the robot is revealed to be armour that houses the real boss inside. A short animation plays then spawns the second phase actor. Phase two uses a different boss actor which deletes all previous assets if they are valid (to avoid any mechanics rolling over and potentially killing the player in the ‘cutscene’).

Phase two progressively removes the playing field for the player, causing a lot less room to dodge the incoming attacks. This is caused by an acid attack that erodes the floor away, I understand that it doesn’t make that much sense that a flying spaceship can’t fly over these areas, however this is where a lot of the attacks come from, if the player was able to fly over them it would cause them to instantly die without warning which would be frustrating.

From the newly created holes, arms sprout and slam onto the playing field. As more and more holes are created, more attacks come in, causing a sort of memory game of safe spots. Once the play area is reduces to a single line, the acid attacks stop, however i may add one last acid attack as an ‘enrage’. An enrage mechanic is commonly seen in MMORPGS, raid bosses can have a certain time in which it needs to be defeated, otherwise it enrages and either kills the entire raid in a single hit or increases its damage by a huge degree and decimates the team one by one. This can create a lot of tension and excitement as you get to the last few percent of HP, however you also run the risk of it becoming too hard to beat the ‘enrage’ timer, which is frustrating, or even making it impossible. The only way to combat these issues is to test with a multitude of different players to make sure all playstyles are able to beat the time as long as they play well, I wouldn’t want to tune it to my own experience as being the developer, I already have enough experience with the game to change my gameplay from a beginner player.

This is something i can add at any point though so i will see how the level is received without it during testing, another way to add a soft enrage is to just keep increasing the number of attacks in phase two until they become impossible to dodge, however this would be harder to portray to the player unless they are counting the attacks each time. The visual effect of the floor being dissolved is easier to understand in my opinion.

The attacks in phase two work similarly to phase one, each one is a custom event that is called through a magic gate node, the further into the fight, the more attacks are added in the sequence.

Animation of the boss is a mixture of sprites and splines, the attacks are dealt with in a similar fashion, rather than have a bunch of different splines on one actor. I decided to have each attack be it’s own actor, then have them place the corresponding arm for the attack animation whilst destroying the previous actor to avoid two arms existing in the same space. Each asset rotates within a certain degree range back and forth as it looked a little too static without this. The two videos below show an example of the spline animations.

Below is a short example video with the attacks during gameplay, which include the acid attacks that reduce playing area, the arm slams from those areas and the bosses arm swipe which hits half the room with either his arm or the shockwave emitting from it. For the acid attack, once the collider that acts as a damage trigger (killing the player if they enter it) disappears, collision boxes block the effected areas from access to the player.

The eyes of the boss and the eyes inside the pits created by the acid attack change animation randomly at different intervals (e.g blinking or looking left/right), without this, all the eyes would follow the same animation loops which would look too formulaic and a bit sloppy in my opinion, it also just looks a bit more creepy with each eye doing different things.

Level two

For this level, i decided to use some 3D assets, as well as sprites for the boss model. This allows me to animate certain parts much faster than if i were to try to imitate it in a 2D flipbook. This fight is the only one that will not have a second phase to it, however the boss attacks will come in faster and faster as the boss’s health is depleted, creating a difficulty curve that is constant in every attempt and can be prepared for.

Below is the code at the end of each mechanic, there are three different spinning durations before the next attack comes in, the health of the boss controls how short the ‘cooldown’ between future attacks.

There is a new mechanic for the player to consider on this level. On the platforms are circular markers, which when dodging on-top of them (or into them), the player is teleported to the corresponding platform. The player will need to use this to avoid certain attacks. The player’s ship is also tilted either way to allow them to continue attacking the boss. I still need to add in a small dialogue to explain this mechanic to the player as it is not at all obvious unless they accidently dodge into it.

The boss also has a power bar, seen in the top left corner of the screen, this depletes as the boss uses attacks, when it reaches zero, the boss will activate one of the platforms. This causes a charging column to lower onto the platform, crushing the player if they are on it, and also cutting off access to reduce the playing area by a third, this persists for a few seconds until the boss’s power reaches full.

The attacks that come in, correspond with the coloured cube combinations. These are;

  • Three purple cubes triggers eyeball drones that shoot a laser across the platforms.
  • Three green cubes cause the platform ‘rechargers’ to activate in a certain order, the player must time their platform change to avoid getting crushed.
  • Three red cubes spawns three crosshairs that follow the player and drop flame sprites which will explode after a certain cooldown.
  • Three black cubes lowers a shield over the boss, causing it to be invulnerable. To remove this shield, the player must destroy three portals that spawn for each platform, however these portals spawn projectiles that the player will have to dodge.

The portals that are spawned by the black cubes can only be hit on the platform you are on. I think I will have to add a visible representation of this though as I imagine players will become confused as to why they can no longer shoot through that area. I wanted to make mechanics that force the player to change platforms to avoid them just sticking to the starting one.

With the above mechanics, they becomes harder after the player has seen them once. The purple eyeball drones shoot their laser more quickly, the green platform crushes have a shorter time gap between them, the red cubes spawn five cross hairs instead of the original three. However the black cube attack is not changed after the first sight, i decided this as this takes a lot longer to resolve than the other boss attacks and I feel it is already as difficult as it should be. I will also be paying attention to playtesting feedback on this ability as I may need to make it rarer to be used by the boss if it becomes too frustrating being at an equal chance of the other attacks, I imagine this to be the case so I might even just create a new attack for the black cubes (Perhaps spawn the flying minion from level one, this would create the same need to change platforms) and change the current shield attack to the recharge feature to make the power mechanic slightly more involved (removing the portal on whichever side has the crusher come down). If I were to do this then I would also need to reduce the power costs of the boss attacks to make sure the same issue isn’t happening with too many shields phases.

To have this boss in a completed state, i just need to make the adjustments as stated above, like adding the minion/changing the black cube attack, then i will need to create the transition screen into level three.

Level three (Still a work in progress)

Level three is going to be the final level in the game, so I wanted it to have the most mechanics and ‘story’ to it. As the ‘Avoiders’ are on their way to take Earth, i added this into the fight by having the different phases represent the journey. Phase one will be whilst the ship powers up to warp to Earth’s solar system, this will end once the boss is reduced to 60 percent HP, which will release the boss from the tethers, causing the player to move more to hit it. Phase one continues with the boss untethered during ‘warp speed’. Once again, this is ended by bringing the boss down to 30 percent health, which will remove the armour, revealing the phase two form.

Below is a video of the different mechanics and animations, timings and ordering still need to be implemented, however it is set up to work in the same manner as previous bosses, using magic gate node sequences.

Phase three will take place in Earth’s solar system and includes a timed enrage. The phase contains Stars, a Sun and a 3D earth, which move and resize to represent travel. If the player does not finish the fight before the enemy ship reaches and neutralises (shoots) earth. There will also be a mechanic where the player is sent to a ‘shadow area’ where the player must dodge a small gauntlet of attacks without having to worry about shooting, these will be comprised of attacks the player has already seen, but in a more difficult style.

This mechanic will be unavoidable for the first instance in phase 2, however it will be dodge-able after this. The player is unable to attack the boss whilst in the other area so if they do not dodge enough of them, they will not beat the enrage timer. I still need to create the asset for this attack hitting the player, I have a black hole style orb in mind currently.

Both of these can be seen in the video below, some mechanics still need to be coded and added to the other area, however as these use the same animation as the previous iterations, this should not take a significant amount of time.

I still need to create the rest of the mechanics for phase 2 of this fight. I want it to be the most difficult phase of the game as it is the final one, however I also want it to be a fun difficult, not frustrating and to reflect the tension of the timer ticking down towards the player losing. Since the boss has physic abilities, perhaps illusions of the previous two bosses abilities mixed together to allow the player to use their knowledge of the previous fights. Though on the other hand it may be more fun to just have unique abilities for the player to work out for from scratch.

Art Design

General updates

Added a death animation which triggers when the level one boss is reduced to zero health. Boss two’s death sequence is almost done, i just need to edit a couple more assets and add a small amount of code to order and control these, like dimming the lights and triggering the next level. I’m still not one hundred percent sure if I’m happy with the look of the second phase of level one. I’m going to leave this till towards the end of the project and see how it stands and how much time i have to spare and also the feedback given through testing.

I also edited the arena for level one as i felt the walls and floors looked too similar and were just a bit smooth looking. I also added a flipbook animation to simulate lights progressing down the fake tunnel and lightened it slightly.

I have also updated the Player’s ability icons to help make them easier to see. Using feedback I have received I have added a ‘Heat meter’ to show the progress of the overheat gauge so the player can better plan their stronger shot. The left image is the old icons, the right image contains the new.

I have also created a loading screen which can be seen below, this is supposed to simulate what the player character’s ship looks like from the inside. I will be looking to change the image on the outside of the ship depending on which level is loading.

After some playtesting at the 2024 Transmedia exhibition, I did realise that whilst the tutorial sequence is much better at retaining the players attention, there were a couple of things I will need to change before release. For example, some of the dialogue boxes, which display the player’s objective, sometimes clip outside the screen, making some words unreadable. Another change will need to be for the player’s laser, which will need some slight modifications in it’s visuals as it blends into the playing area too much, resulting in players not realising they are shooting.

Level two

As i mentioned above, I decided to mix both 3D assets with 2D flipbook animations as some animations would have been too difficult to draw frame by frame for my intended purpose. The rings around the boss is a simple mesh i made on Blender, I decided to keep straight edges in the model as it displayed the materials in a more fitting manner for the rest of the art style, the curved mesh looked quite off, you will see an example of this a little lower down. Though I may also change the cube material depending on feedback as I’m not sure if it also looks a little odd at the moment.

The actual set up to the boss is very similar to the first, using layering and perspective for an illusion of moving on a different plane. The background is a static image with multiple different flipbooks layered on top, allowing for control of each one, this is used throughout the fight with the power bar, the screen that displays attacks and the destruction of the panels at certain health percentages.

For the Mechanics, again a mixture of 3D and 2D are used. The ‘purple’ attack spawn two eye drones which charge up and fire a laser across the platform, this is the example i refer to above, I’m likely to change the mesh to become slightly angular as I feel it looks out of place against the rest of the art style. I might even just choose to make it a 2D sprite animation if i can’t get the look right as a 3D one.

Whilst each attack is shown via the coloured cubes lining up, the panel on the bosses background also displays the incoming attack. During the spinning section before the cubes line up, an animation on the screen starts then finishes with a display of the attack by changing the flipbook. Below is a video of the beginning animation, with the four different attack screens in an image below the video. The two extra images below the four attacks are used during the startup sequence where the boss attempts to contact the previous level’s boss but is unable to, but is able to contact the third levels boss which activate the defense system.

Boss three

I wanted to make the third and final level be a bit more ‘cinematic’ and for the environment to be relevant to the fight progression. I decided to make the fight take place on the ship bridge overlooking a large window into space. The first part will have the window show a typical space but with a planet that is obviously not from our solar system, this has not been added yet but won’t take too much time and can be coded apart from the fight itself. The arena is larger that the previous two as the attacks will ask the player to move a lot more than previous fights.

The second part of the first phase simulates the ship warping through hyperspace, using simple flipbook animations to simulate the streaking of starts passing. These animations are triggered at random and are set to different speeds in a range to avoid it looking like a straight repeating pattern (these can be seen in the level 3 boss video above in the development section or here). It doesn’t behave exactly as I would like currently, so the below code will be updated in the near future, however this is currently how it’s controlled during the warp phase.

As discussed in the development section, phase two is concluded with defeating the boss, or with the Earth being destroyed. The Earth is comprised of two separate geodesic polyhedrons, one with a pixel texture of a rough Earth, and the other with a mostly transparent material to simulate clouds. Both of these spin at slightly different speeds for an atmospheric effect. Below is an image and a sped up video to show this in action. I have yet to make the sequence when the Earth is destroyed.

As the last boss is essentially a giant brain inside armour, i wanted to make the mechanics a mixture of ‘paranormal/psychic’ based and technological, though this will progress to less technological once in phase 2 after destroying the armour. Currently the orb wave attack seen in the below image is using placeholder assets and I will be updating these once i have the mechanics completed.

Other than the orb attacks, i have created a few mechanics based on ‘spirit weapons’ which have separate different mechanics, i still need to add the danger zones to the mechanic so these are missing during the demo below.

Before an attack comes in, the boss signified it by glowing a particular colour. These attacks are as follows;

  • A red hammer, which follows the player and bashes the ground at its current position after a short timer.
  • A purple axe which follows the player then starts to spin creating a danger zone for a period of time.
  • A green sword which aligns itself to the Y axis location of the player, then slashes across the arena in a straight line extremely fast.

Below is an image of the second phase of boss three in it’s current state. It’s currently composed of 4 separate flipbooks with the positions controlled through a blueprint repeating timer, these are the main boss body, the eyes, the background smoke and the glowing balls that travel the wires. I chose this route to make it easier when I want to convey mechanics. Like the first phase, I will be changing the boss’s eyes and the glowing balls to signify the incoming attacks, this means I can create a single animation for the main boss body, then I can just edit the hue and make slight bloom effects to the eye and ball flipbooks instead of creating a separate animation for each attack.

I’m still not 100% happy with the main boss art and will likely be adding to it in the near future to give it some more movement and to differentiate it to phase one a bit more.

Sound Design

SFX

There is not much in terms of technique or tools that has changed whilst making the sound assets for the game. I continue to use the Bandlabs MIDI instrument system to create the music and am still using the Zoom voice recorder and Audacity to create the sound effects.

Below are a few examples of created sound effects and some information regarding them.

This is the sound for when the second boss recharges power after it reduces to zero. I created it by recording my washing machine during a spin cycle at different stages (weight spinning, filling stage and full spin). I then used different sections of the cycle to create the full sound effect. The mechanical sounds of the washing machine worked out very well for what i wanted so I also used the washing machine sound to create the below sound effects.



This is an explosion sound effect I created by recording the sound of me dropping a metal bottle onto a glass counter top. I reduced the tempo, added some distortion, reverb and reduced the pitch. The sound effects are played with a slightly random pitch to avoid them sounding the same during consecutive activations.

Music

I have continued creating a couple different music tracks for each boss fight per phase of the fight. Each track has a starting track plus one to two looping tracks to avoid having to restart the starting song which would feel odd during gameplay and would not compliment the action of the boss fight if it were to start off slow again. Below is the starting stack and one of the loop tracks from the phase two of the third level.

Below is an example of two different loops for the second level. As level two only has one phase, I will likely be creating another version of the loop just to avoid the music becoming too repetitive.

Going forwards

Mechanics

  • I am close to finishing all of the games mechanics, with only a few attacks needed to be added for phase 2 of the third level.
  • After these have been created I will need to work on the sequencing and order of the fight.
  • Make any adjustments to previous mechanics that I personally feel need it.
  • After playtesting with 3rd parties, make any adjustments that are recommended through this process, for example boss health, mechanic speed or occurrence rate.

Art Design

  • Make adjustments or redo assets that I am not personally pleased with. For example, the orbs from level 3.
  • Go through and double check layering of assets as there are a couple of places where the player’s ship appears over an explosion/mechanic which isn’t intended. This will be done after all mechanics are complete.
  • Create transition screens (loading screens) and final cutscene images with credits.
  • After playtesting, make any adjustments that I feel are necessary after receiving feedback. For example, if some mechanics are not clear in their execution or if any testers feel pieces stand out too much or look out of place.

Sound Design

  • Make another loop for level two. This shouldn’t take too long as each loop only has a few differences in terms of composition, the biggest change is the instruments used, but in a MIDI editor, this is instant.
  • Sound effects will need to be made for the mechanics in level two, and any mechanics yet to be made. I already have an idea for the sword and axe attacks. Using a knife sharpener to get a sound like a sword being unsheathed, and using a weight on a string being spun fast to get the ‘whooping’ of the axe spinning.
  • Music will need to be created for the final cutscenes and credits.

General bits and pieces

  • Need to make some adjustments to the control options menu. At the moment, players are able to set control hotkeys even if the key is being used for another one, causing the player being able to bind all actions to a single button, which is not ideal. I will just need to add a check against the other control keys when the player selects a key, if it’s a duplicate, it will revert to the key before the player changed it.
  • Need to do some research on optimizing the build so it easily plays on my lower end Laptop. A game of this scale and graphical fidelity should be able to run on almost all systems without issue. I imagine there are a lot of engine systems that are being included when they are not being used.
  • Create a trailer once the game is completed and release this on YouTube, Instagram and then cross post to Reddit.
  • After the completion of Terra Avoider, I will be looking at beginning a new project as well as taking part in a couple Game Jams to try and increase my experience and building up my name. I had wanted to take part during my development of Terra Avoider, however I didn’t feel i could put enough time aside to focus on another project whilst problem solving my own.