Platform : Windows, Mac OS Team Size : 3 Role : Lead Programmer Dev Time : 3 Months Engine : Unity Programming Languages : C# Download Page Space_Viking is a wave based bullet hell game where you try to survive as long as possible while periodically upgrading your abilities.
Space_Viking was an interesting undertaking as it went through a very rigorous set of changes during its development cycle. The game started out as an idea for a top-down 2D rogue-like bullet hell style game. The idea was that the player would absorb enemies in a Kirby style mechanic. We also had a premise of a game show in mind where the crowd would influence the swing of the players success. Fast-forward a few weeks from our initial pitch and things were looking pretty underwhelming. The game had some semi-working combat and enemies but nothing close to a true MVP that could be tested under our original idea. With this being the case we decided to go back to the drawing board. One of the main things I proposed was how we cut down the idea to something doable in the remaining development time. After lots of discussion we decided to turn the games setting into a single room. We also agreed on ditching rogue-like being the focus and went with it being a wave-based survival game. The idea behind this decision was to streamline our desired combat into a more simplistic game idea to keep as much mechanical integrity as possible. As the games lead programmer I needed to consider what is and isn't doable in the remaining time. This reworked idea was very manageable in the remaining time.
Being the lead programmer in this project, I had quite a bit of work to handle. One of the most notable things I ended up programming for this game was an enemy-wave management script. The idea was that this script would allow users to set which enemies would spawn, how likely they were to spawn, rate of spawn etc. Here is a screenshot of the inspector to get a rough idea of what you can do.
The way this script works is that is uses pseudo-randomness in order to spawn enemies. For instance, in the image the 0th element is a crescent enemy and has a value of 10. What this means is that the array will be populated with 10 crescent enemies and 1 disk enemy. By doing this you will be influencing the random chance that a crescent enemy will spawn. When it comes to the scripts big picture, the way it executes is rather straightforward. Set Waves is a large array where each element represents a wave. It will take the properties you assigned and iterate through each element until it hits the end. The element only increases after the player has dealt with all the enemies in a single wave.