In today’s post, I would like to give some history on the team’s current game. We have code named our current game Project Novices Unite To Sprint or Project NUTS for short. The NUTS part coincides with what our team is about, which is for Novice to Unite, so we can Sprint. Or in other words, novices unite to gain more experience with Unity and game development, so we won’t be novices anymore.
For our first game, we wanted to start with something simple. We didn’t want to be too ambitious. We didn’t want to make a new groundbreaking FPS or MMO like all the twelve-year-old kids out there. We wanted a simple game that wasn’t too difficult but wasn’t so easy that it didn’t give us a challenge. We decided to make a running game inspired by the game Cube Runner, which is a simple 3D vertical scrolling game where the objective is to avoid objects, which are randomly generated, for as long as possible. We didn’t want to just copy and paste Cube Runner, so we decided to put our own spin on the game.
The first thing we needed to decide was what the theme of the game was going to be. We decided on this. The player controls a Bionic Chicken who is running from a mob of zombies in a graveyard. Great! Now we have our theme, so what about the gameplay? Our initial design was for the chicken to have two meters, HP and energy. The chicken lost HP when he hit an object, and he gradually lost energy due to him running. So not only did, the player have to avoid obstacles, but he also had to collect batteries or else he would run out of energy. Also, the chicken moved at a default speed that could only be changed by the water and oil pool objects. Water slowed the chicken down, and oil sped the chicken up. This was a simple design that we were happy about, so we began production on the game’s first prototype. The first prototype would just include the necessary scripts for the game and placeholder objects.
Due to team member’s schedules, progress on this first prototype was slow. After about a month, we had maybe 50 – 75 percent completed. Then progress went to a stand still when we discovered that Jay, our project director and programmer, had to leave the team. Luckily, we were able to find replacements quickly, but unfortunately, they didn’t work out, which I discussed in the previous blog post. One really big change came out of this though. One of the replacements, Andre, pitched the idea of having a mechanic called Zombie Threat instead of HP and energy. Essentially, zombie threat is the HP and energy mechanics combined. You hit an obstacle. You gained threat. You also gradually gained threat because you were running out of energy, so you had to decrease the threat by gathering batteries.
Zombie threat was a great and fresh idea, so we decided to roll with it. While we ended up not using the original idea for zombie threat, we did mold the original zombie threat mechanic to what it is currently. Zombie threat is a meter that increases and decreases when the chicken’s current speed goes below or above the default speed, respectively. So hitting a water or oil pool would affect the chicken’s zombie threat level. We also decided to re-add the energy meter. The energy meter gradually decreases, which the decrease rate depends on the chicken’s current speed. Also, the chicken will lose a good chunk of energy when he hits an object, because he has to use energy to repair himself.
Once again, we thought this was a good design, so we started adding in these changes. As soon as the mechanics were added, a big problem became immediately apparent. The chicken rarely, if ever, gains threat. We had a hunch this would be a problem before the new mechanics we even added, so we had thought of some solutions beforehand. One of the solutions is to allow the player to control the chicken’s speed, to a degree. Allowing the player to control the chicken’s speed actually helped us out with two problems. The first one is obviously the zombie threat meter problem, and the second is the player having difficulty avoiding objects when the game gets to a certain difficulty level.
I haven’t talked about how the game’s difficulty works, so I’ll go over that now. The difficulty system has always been the same. The game starts out easy and gets progressively harder. The game gets harder by spawning more obstacles for the player to avoid, more water pools, and fewer oil pools. At random intervals, the game’s difficulty will decrease significantly, but it will continue to increase afterwards. This is to give the player some breathing room. After playing at the most difficult level for a while, he can take it easy for a while when the game’s difficulty gets easier. And this is where the second problem appears. When the game is at it’s most difficult level, the player can avoid objects but sometimes it can just overwhelm the player, so to fix this, we allow the player to decrease the chicken’s speed to give himself more time to avoid objects. The chicken still gains threat when he goes slower than the default speed, but the player can also make the chicken go faster than the default speed. So the chicken will lose threat. The player can only make the chicken go three speeds; default, slower, and faster. This solution helped immensely with both of our problems. We are still working on how the chicken will gain threat, but it is definitely a lot better now than how it was before, when the player couldn’t control the chicken’s speed.
Now, this brings me to the last mechanic I will discuss today. We are in the process of implementing an ability system. Essentially, the chicken has three types of abilities: Mobility, Defensive, and Last Resort. Each category has its own set of unique abilities. The player can choose one ability from each category to use in the game, so while there might be 5 abilities per category, the player can only use one ability per category at any given time (kind of like the perk system in CoD). The ability system, like many other systems in the game, is a work in progress.
I hope you enjoyed learning a little about the history of Project NUTS. Until next time.
Take it easy,
Daniel
No comments:
Post a Comment