If you are viewing this article on the IndieDB page for Bug-Bot Blitz, then be sure to check out the sequel, Bug-Bot Blitz 2!
Improving on Old Works
In the summer of 2018, I was determined to create as many and as varied games as I could. I ended up putting together three games in as many months and genres. These games are Climbing the Dragon Tower, Bug-Bot Blitz, and Star Empire. While these three games don't match up to the standards I have for my work now, they were each valuable learning experiences that helped me master a variety of skills in game design and game programming. I revisited the concepts for Climbing the Dragon Tower when I developed Heroes' Climb, and these past couple months I have revisited Bug-Bot Blitz with this direct sequel. Comparing the two games helped me appreciate just how far I have come in two years and provided a nice break between Star Legion and what I have planned next.
To introduce Bug-Bot Blitz 2, I'd like to walk through key features that were improved upon compared to the first Bug-Bot Blitz or were not even present in the first game.
The Rifle: Better Ray Tracing, Aiming Down Sights, and Particles
In the original Bug-Bot Blitz, the player could see a target's health only when landing hits on the target. Since making the first game, I have learned so much about Unity's physics engine and now better understand ray tracing. I used these skills to efficiently allow the player to see a target's health simply by aiming at the target. Similar ray tracing techniques were also used to prevent the rifle's laser from clipping through parts of the environment.
The second major improvement allows the player to aim down the sights of their laser rifle. This feature would have been difficult for me to implement in 2018, but this time around it was fairly straightforward. When the player presses the button to zoom in, three things happen:
- A large outer ring is added to the aiming reticule. This is implemented using a combination of UI sprites and masks. When the button to zoom is released, these new UI features are hidden.
- The player's rifle slides from the right to the center of the player's vision. When the button to zoom is released, the rifle slides back to the right.
- The player's field of vision decreases to zoom in on the player's target. When the button to zoom is released, the player's field of vision returns to normal.
Neither the sliding of the rifle nor the change to field of vision happens instantaneously. Both actions occur over the same very quick amount of time. Just like the ray cast aiming, I understood the individual pieces of this feature while making the first game. However, the practice I've had over the intervening two years made bringing the pieces together fairly straightforward.
Finally, a smaller detail that was added was the particle effect emitted from the point where the rifle's laser meets either its target or the environment. This was simple to implement using Unity's particle system, which I had not yet learned while making the first game. This, paired with the sound effects added to the laser for the second game, accomplishes a level of detail that makes Bug-Bot Blitz 2 feel more polished than its predecessor.
Fixed Design vs Randomly Generated Stations
When creating the first Bug-Bot Blitz, I had wanted to create procedurally-generated levels to give the game greater replayability. However, I didn't even know where to start. In the end, the released version of the game featured a single station made up of four rooms that remained the same through every time playing the game.
When developing Bug-Bot Blitz 2, I had the advantage of two more years of study and practice, particularly in graph algorithms (departing from game design to a little computer science here). The stations in Bug-Bot Blitz 2 are created using an algorithm that picks a starting room and builds outward semi-randomly until the required number of rooms have been placed. The algorithm works much like a breadth-first search algorithm in which the vertices (in this case station rooms) have a random number of neighbors. Each room starts with one guaranteed neighbor and adds neighbors incrementally. The higher the number of neighbors n, the less likely a room is to acquire another neighbor and raise that number to n+1. Of course, no room can have more than four neighbors. This method guarantees that every room is accessible but still creates complex, sometimes maze-like stations. Each of these rooms is populated with a random set of internal furniture, populating the station with rooms like the power station, barracks, command center, and botany lab.
Bug-Bot Design: Shields, Blasters, and Explosions
One of the biggest problems with the original Bug-Bot Blitz was the difficulty of knowing when a Bug-Bot was attacking the player and knowing when the player got hit by one of those attacks. Bug-Bot Blitz 2 takes multiple steps to improve on its predecessor in this regard:
- Bug-Bots shoot blaster bolts, not lasers. In this original game, Bug-Bots are armed with lasers that work much like the player's rifle. They fire silently and deal a rate of damage per second. This means the attacks are hard to avoid and may go unnoticed unless the player keeps an eye on their health bar. Several key changes in Bug-Bot Blitz 2 help the player better interact with the Bug-Bots in a way that is fair while remaining challenging: (a) the player can see the Bug-Bots charging up to attack with new particle effects; (b) Bug-Bot blaster bolts make a "zap" sound effect when firing, so the player knows they are under attack even if the Bug-Bot is not visible on screen; and (c) the player has a chance to dodge incoming blaster bolts, which do not hit instantly like a laser. Because the Bug-Bots use projectile weapons in Bug-Bot Blitz 2 rather than hit-scan type weapons, the player does not automatically regenerate health as they did in the first game. Rather, the player recovers a small amount of health over time while activating terminals, and the player can pick up health-restoring items from some defeated Bug-Bots.
- The player's UI registers hits with a red sprite around the edge of the screen. Many first-person shooters (and even games in other genres) use red filters to indicate that the player is currently taking damage or recently took damage. Bug-Bot Blitz 2 uses a red sprite along the edges of the screen to indicate that the player has been shot by a Bug-Bot. This is a simple but important feature. When making the original Bug-Bot Blitz, such an indicator would not have worked well with the damage-per-second weapon utilized by the Bug-Bots and I would have struggled then to design and implement a similar indicator that would work. With both the skills I've learned over time and the changes made to the Bug-Bots' weapons, implementing a damage indicator made tremendous improvements on gameplay with little difficulty in development.
In addition to the difficulty in knowing when the player was taking damage in the original Bug-Bot Blitz, it was difficult to tell when a Bug-Bot had taken enough damage to be destroyed. In the first game, a destroyed Bug-Bot simply shrinks away before disappearing. This often led to players shooting a Bug-Bot longer than necessary, wasting valuable charge on their laser rifle and valuable time on the game clock. As mentioned before, use of Unity's particle system was one of the many skills I honed in the last two years. Using the particle system, Bug-Bots now explode spectacularly when destroyed. Even from a distance, it is now easy to see that the player's target has been destroyed.
General Improvements and Attention to Detail
Developing my skills means I spend less time making simple things like the player's rifle work and I can spend more time on smaller details within the game. Things like laser clipping, the particle effect at the end of the rifle beam, sound effects for explosions, and UI changes based on playtester feedback all helped the Bug-Bot Blitz 2 reach a much more polished state than the first game. Additionally, I have developed a number of tools across developing my hobby games - such as a jukebox script that creates and manages music playlists - which help me focus more on the things that make each game unique.
One major change intended to separate Bug-Bot Blitz 2 from the original Bug-Bot Blitz was the choice to require the player remain in a radius to activate terminals over time rather than activating terminals instantly. The instant activation of terminals in the first Bug-Bot Blitz resulted in a speedy, racing feel that drove the player quickly from objective to objective. By making the player stay still for even 15 seconds, Bug-Bot Blitz 2 creates an opportunity for the Bug-Bots to close in on the player, creating exciting shoot-outs that contrast greatly from the moments of speed and evasion between objectives. Both gameplay designs have their merits, but speaking as the designer, the terminals in Bug-Bot Blitz 2 were much more thought out.
I am very excited to be sharing Bug-Bot Blitz 2 - perhaps more so than most games. It is close enough to the original Bug-Bot Blitz to show how I have furthered myself as a designer and developer, but it is also different enough to stand as its own title.
I look forward to sharing my future projects as well (perhaps a revival and overhaul of Star Empire next). Thank you for reading, and good luck racing the clock and fighting the bots in Bug-Bot Blitz 2!