Because I only worked on fixing bugs this week, I decided to write about some design and coding work I had done the week before which is a lot more interesting to write about. Namely how me and our lead designer worked on the design of the boss and how I implemented it in the game.
When we designed the boss we had the following goals for it:
- The boss needs to test the player’s understanding of the core mechanics of the game.
- Since we had 2 levels, but didn’t have time to make 2 separate bosses, the boss design needs to have room for abilities that can be added for the second boss to make it more difficult.
- The boss needs to offer challenges that are new but still familiar to the ones the player has already encountered.
Based on those goals we came up with the following design:
1. The boss has 4 shields that surround it, and every few seconds they change to either be a full shield, half shield or no shield. When the boss is hit on one side, it takes 1x damage if it is a full shield, 2x damage if it is a half shield and 3x damage if it has no shield.
When the boss switches shields, it also switches weapons, unless it gets no shield in which case it gets no weapon.
The boss also spawns enemies after a few seconds (longer than the shield switch time).
This tests the player in their ability to maneuver both their avatars so neither take damage based on how the boss switches shields and what weapons it has. The boss spawning enemies allows the player to get powerups (which are dropped by enemies) and adds another challenge based on awareness.
2. The bosses in later levels have more weapons, and the final one has a laser state, where it spins around and shoots a ”laser” which the player needs to avoid. The later bosses also spawn more enemies and have more health.
3. The shields are an entirely new concept that the player hasn’t encountered, but we think they are untuitive to understand. The bigger the shield the less damage it takes. Even if the shields are a new concept to the player, they test the same skills the player has required before: maneuvering two avatars at once based on where enemies are on the screen and how the behave at that moment.
The boss was simple to implement. The laser state, spawning enemies state and normal state are handled by a state machine, where each shield is a child object which handles switching shields after a few seconds and fires projectiles based on its own state machine that handles which weapon it has equipped.
Movement is simple: It randomly picks a position within a boundary, and then moves towards that position. When it reaches the position it chooses a new position. When it enters a new state it stands still until the state is finished.
(Screencap of the boss firing projectiles)