This is the big one. This project went beyond a prototype and is actually listed as an unreleased title on the resume. The core gameplay was mostly complete, although it would certainly need some more iteration after additional testing.
As a note for legal purposes, the audio from this in-development build is a series of copyright-infringing placeholders and I claim no rights to that part of it. It exists here just to show that work on setting up audio was being done.
Once again, I was trying to think of a type of game that would be low-scope, yet unique. In my research into arcade titles, I discovered how rare the sort of Puzzle-VS style Shoot-em-up was. There was a sequel to Twinkle Star Sprites, which I didn't know about, and there are a couple of Touhou Project games in this format, but that was all I could find.
But what would our unique theme for this sort of game be? Since the Phyken team had recently visited the Kennedy Space Center, I proposed making the two vertically scrolling ships competitors in a literal Space Race. Shortly thereafter, we decided that sending cartoon animals into space had just enough basis in fact to make it a more fun route. It wasn't long before we settled on dog breeds from around the world piloting spacecraft.
It became a sort of alternate-history Canine Cold War in which a World Warrior-like array of international Space Agencies were engaged in battle-missions as they ascended into orbit.
As a note for legal purposes, the audio from this in-development build is a series of copyright-infringing placeholders and I claim no rights to that part of it. It exists here just to show that work on setting up audio was being done.
Once again, I was trying to think of a type of game that would be low-scope, yet unique. In my research into arcade titles, I discovered how rare the sort of Puzzle-VS style Shoot-em-up was. There was a sequel to Twinkle Star Sprites, which I didn't know about, and there are a couple of Touhou Project games in this format, but that was all I could find.
But what would our unique theme for this sort of game be? Since the Phyken team had recently visited the Kennedy Space Center, I proposed making the two vertically scrolling ships competitors in a literal Space Race. Shortly thereafter, we decided that sending cartoon animals into space had just enough basis in fact to make it a more fun route. It wasn't long before we settled on dog breeds from around the world piloting spacecraft.
It became a sort of alternate-history Canine Cold War in which a World Warrior-like array of international Space Agencies were engaged in battle-missions as they ascended into orbit.
The cast began with six planned dogs and spaceships, but eventually it expanded to nine, with the center slot being an unlockable final boss character.
βThe game's gameplay took place in game fields that could be instantiated. The primary form of field was the competitive game field, of which two would normally be created. However, the character select screen features two small custom gamefields that demonstrate the abilities of the various spacecraft.
The game's tutorial system uses an alternate version of the standard gamefield instantiated in the center of the screen with a special UI on the side.
β
βThe game's gameplay took place in game fields that could be instantiated. The primary form of field was the competitive game field, of which two would normally be created. However, the character select screen features two small custom gamefields that demonstrate the abilities of the various spacecraft.
The game's tutorial system uses an alternate version of the standard gamefield instantiated in the center of the screen with a special UI on the side.
β
Speaking of tutorials, the game featured this how-to-play demonstration, which would also play alternately from the game's attract mode when left idle.
It may be a bit too fast to read in its' current state, although everything it covers is covered in greater detail in a series of actual tutorials.
It may be a bit too fast to read in its' current state, although everything it covers is covered in greater detail in a series of actual tutorials.
Here is a sample from one of the early tutorials. It demonstrates the Touhou-inspired hitboxes and then rolls into the rules of the game.
The way gameplay flowed and was scored was revised a few times, and I believe that the later parts of this tutorial are still based on one of the earlier revisions, actually. However, at the time they were developed, they explained the various elements of the Interface and the basic and advanced rules of play.
In the end, while the game was relatively easy to quickly develop, the gameplay may have become a bit more complex than I expected. I wanted there to be depth to the player-versus-player action, and as a result I ended up adding things like using a bomb to recover after being hit and several different types of attacks that are thrown back and forth from field to field.
The way gameplay flowed and was scored was revised a few times, and I believe that the later parts of this tutorial are still based on one of the earlier revisions, actually. However, at the time they were developed, they explained the various elements of the Interface and the basic and advanced rules of play.
In the end, while the game was relatively easy to quickly develop, the gameplay may have become a bit more complex than I expected. I wanted there to be depth to the player-versus-player action, and as a result I ended up adding things like using a bomb to recover after being hit and several different types of attacks that are thrown back and forth from field to field.
Also, an arcade mode with a story was developed. I mostly skip through the placeholder-filled dialog, but the systems and the script were in place. It probably needed a lot more proofreading, but I was happy to add it.
If the opponent on the left looks like they're firing slowly, that's intentional. The AI in arcade mode has restrictions placed on their ability to shoot quickly and recognize and avoid obstacles. As the player progresses, these restrictions lessen until eventually they reach the final boss, who is playing much more effectively, at least in theory.
β
If the opponent on the left looks like they're firing slowly, that's intentional. The AI in arcade mode has restrictions placed on their ability to shoot quickly and recognize and avoid obstacles. As the player progresses, these restrictions lessen until eventually they reach the final boss, who is playing much more effectively, at least in theory.
β
Another way to see the AI at maximum power in this build is to view the game's attract mode, where we can see two AI-controlled ships going all-out at the maximum difficulty.
Over the course of a match, the more ships one player can quickly destroy, the more and more powerful the ships that appear on the opponent's screen will become. This can quickly causes a back-and-forth escalation.
Destroying the gray ships causes red ships to counter-attack the opponent, and destroying red ships provides resources that will launch an attack unique to the player's ship on their opponent. Players also accumulate a sort of Fighting-Game style super meter that they can spend to launch summoned attack ships, and eventually a boss on their opponent's field.
Meanwhile, behind the scenes, and invisible value is rising that increases the number of ships sent with each attack. Whenever a boss is summoned, this value resets back to the minimum. However, each time it resets, it increases more quickly the next time, to ensure that all matches eventually reach a climax.
Over the course of a match, the more ships one player can quickly destroy, the more and more powerful the ships that appear on the opponent's screen will become. This can quickly causes a back-and-forth escalation.
Destroying the gray ships causes red ships to counter-attack the opponent, and destroying red ships provides resources that will launch an attack unique to the player's ship on their opponent. Players also accumulate a sort of Fighting-Game style super meter that they can spend to launch summoned attack ships, and eventually a boss on their opponent's field.
Meanwhile, behind the scenes, and invisible value is rising that increases the number of ships sent with each attack. Whenever a boss is summoned, this value resets back to the minimum. However, each time it resets, it increases more quickly the next time, to ensure that all matches eventually reach a climax.
There was also a dynamic music system. Since I developed this before music was created for the game, I used the Soundtrack from The Wonderful 101 as a suitably epic placeholder.
The game starts off with low-tension music, but after one character has taken damage and a boss has appeared, high-tension music will be the default.
Each character also has two unique themes, one for their boss, which plays when it is summoned, and a desperation theme that plays when that character has only one hit left. If both players are on their last hit, there is a unique theme for that.
In arcade mode, there is also a unique theme for when you battle your rival, and for the final boss.
β
The game starts off with low-tension music, but after one character has taken damage and a boss has appeared, high-tension music will be the default.
Each character also has two unique themes, one for their boss, which plays when it is summoned, and a desperation theme that plays when that character has only one hit left. If both players are on their last hit, there is a unique theme for that.
In arcade mode, there is also a unique theme for when you battle your rival, and for the final boss.
β
From an engineering standpoint, the most challenging and fun part of this project was creating the AI opponents.
Early on, I wound up coming back to my own website to read up on the reverse steering code from Master Plan in order to enable the AI to back away from bullets and other dangers.
Of course, in order to create a fun game, I also had to build an AI that could lose. The AI was set up to have a level of stress, based on how long the match had been going and how many objects were on screen. When under a lot of pressure, the AI would use escape mechanisms, like charged special attacks and their bomb. However, as the stress rose, the AI also had a chance to not notice bullets when performing its' movement calculations.
The system isn't perfect, but it did provide a series of variables that could be used to, in general, make opponents harder or easier to defeat.
To debug this system, I wound up drawing a lot of lines in the Unity Editor to show what the AI was thinking about and why it was doing what it was doing.
At one point in development, the AI began grinding against the wall of the gamefield, even when there were no discernible threats. Eventually, thanks to all the debug information, I discovered that the AI was trying to chase down a ship in the other player's field. This had arisen due to the game's extensive use of object pooling systems.
Thanks to the lines, this rarely occurring bug was much easier to fix.
Early on, I wound up coming back to my own website to read up on the reverse steering code from Master Plan in order to enable the AI to back away from bullets and other dangers.
Of course, in order to create a fun game, I also had to build an AI that could lose. The AI was set up to have a level of stress, based on how long the match had been going and how many objects were on screen. When under a lot of pressure, the AI would use escape mechanisms, like charged special attacks and their bomb. However, as the stress rose, the AI also had a chance to not notice bullets when performing its' movement calculations.
The system isn't perfect, but it did provide a series of variables that could be used to, in general, make opponents harder or easier to defeat.
To debug this system, I wound up drawing a lot of lines in the Unity Editor to show what the AI was thinking about and why it was doing what it was doing.
At one point in development, the AI began grinding against the wall of the gamefield, even when there were no discernible threats. Eventually, thanks to all the debug information, I discovered that the AI was trying to chase down a ship in the other player's field. This had arisen due to the game's extensive use of object pooling systems.
Thanks to the lines, this rarely occurring bug was much easier to fix.