Galactic Race was built from a taking a Unity Tutorial and running with the idea to show students how they can expand on what they are learning.
Goals:
Teach students how to expand on what they are making.
Teach myself the basics of C#.
Build a great 2 player game with my brother.
Galactic Race is a 1-2 player game expanding on the basic Unity tutorial. Several students that I work with were having trouble seeing the value in the tutorials they were doing and were overwhelmed with the idea of coding. I wanted to show them that they could expand on these tutorials or that snipping their code would be helpful in building the game they wanted to.
What did I expand on?
two player:
The biggest change was to make the game two-player. This was the goal from the beginning but wasn't added until after most other features were working. We wanted to make sure things like pickups, difficulty curve, and bosses worked properly before adding in all the variables that go along with multiplayer. This involved setting up a lives system and making sure each player had controller support.
PICK UPS:
We added in four different pickups for players (Twin Fire, Triple Fire, Cross Shot, and Shields). Our primary goal with pickups was to encourage players to take risks by flying out of their "safe" zone and be rewarded with a stronger weapon for a short time. The reason we only added four was to keep them unique and useful enough, without several pickups that felt off. Twin and triple fire would change how many missiles you shot at once while cross-shot would change the type of missiles fired. Shields would save you from one collision and were rare drops from some enemies and always spawned after a boss kill.
HYPER BOOST:
Was a simple boost that would double your fire rate and movement speed for 3 seconds, then go on cooldown for 7 seconds. The primary goal with the Hyper Boost is to give the player some control over their windows of power. Pick Up spawns are random, and this lets the player control when they are powerful and how they choose to use this. Do they use their boost to shoot the boss more, or the move speed to avoid a hazard/get to a pickup?
DIFFICULTY CURVE:
The game only ends when all players and destroyed. Each wave that the player passes increases the speed of hazards and their score value. Once the player hits a predetermined score the boss will spawn.
NEW ENEMIES:
The first enemy we expanded on was the asteroids, we created a large asteroid that breaks into three smaller ones once destroyed. This is common for games like this and does a few things for us. If you destroy it all you get a lot of points, it is drops pickups that standard asteroids don't. and is a semi-controllable hazard for the player to respond to.
My favorite enemy (the Tracker) starts spawning after the first boss is beaten. This enemy will stay on the upper third of the screen until destroyed. It fires by randomly choosing a player to track, it then tracks their movement along the Y axis and shoots a missile horizontally that the player must avoid. This was added because players would stay at the bottom center of the screen and wouldn't move outside of it unless they needed to. We wanted to encourage players to use more of their space so this enemy forces you to move and destroy him because he won't fly past you. It also means you can't sit at the bottom of the screen because his shots will come from the side. If the player chooses to leave these enemies alive they will quickly become overwhelmed.
BOSSES:
Currently, the game only has one boss though I would like to add more when I get some time. The boss will stay on screen until destroyed and has three components each with their own hit points. When all three have taken enough damage the boss is beaten and the play can continue onto the next wave. Each time the boss is destroyed the wave speed is divided by 3 and the required score to spawn the boss is increased.
I had worked on several different Unity tutorials before. Many of them from Unity's own website, but also several I found online. When I completed this one I thought about how I could make the game better by taking what the game had and expanding on this idea. As I said above this was great for getting students excited in what they were making, and let me push several ideas along the way.
Sharing the game
As I worked I would take breaks to ask what I was trying to accomplish by adding a feature, and make sure everything was fun. I made sure to have other people test the game, my brother became a big help as he was more familiar with C# than myself. We would test the game and make changes depending on what we liked/didn't like. I knew I was on the right track when my brother said 'There were several points when playing the game that I couldn't help but smile.'
After we had our changes, I brought it in to show the students and talk about how changes were made. I put the game on the projector and have two students come up and play for everyone to watch. More came up and took turns tagging people in an out just like an arcade game. First of all, it felt great seeing people want to play something I worked on and even better when talking with them about feedback and how changes were made. Several students have taken these ideas and expanded on them for their own games and I believe it has really shown them that they can build whatever they want.
Feature Creep
The big takeaway from this game is that Feature Creep is a real thing. I could have taken one thing such as pickups and shown that off. It wouldn't have been exciting and I learned a lot from each thing I added. It's easy to think you need to add everything and it can be overwhelming to think about. It's important to know what is core to the experience you are trying to create, and what is secondary. There does need to be a point where you take a step back and say it is done.
Because this was something I made on my own and didn't have a real deadline I could do as much I as want. For example, one student suggested having a larger variety of pickups, and have them spawn more frequently. We opted to keep the pickups as a rare drop so that players would take risks to try and get them, and feel good when they did. We decided to avoid a V-type shot because it would be harder to aim and wouldn't add value to the game, in fact, we think many players would avoid this pickup. Another that we talked heavily about was a leader board, this is something we would love to do and would be able to but decided against it because it wouldn't change the core experience for those playing the game (people we know), and decided to focus on tools for them.
Like many things this is good and bad, I get to work on it and add everything I want, but I do have other things I would like to make. I expect I will continue to add features later. Such as more bosses or enemy types, but at this point I have learned from this project and am excited to move onto our next project.
You can play it here.
Plays best with a controller.