Development Process:

Initial Concept: As an intern hired at MoonRift Entertainment, I worked with a team of five other interns on a six week project in a competition to develop a game centered around the theme of wind and air. After a group brainstorming session, the team decided to go with my idea of playing as a Kiwi bird who is separated from his parents after a nasty storm. The object of the game is to reunite with his family. I thought this was a fun concept since you’re playing as a flightless bird trying to do something which should be impossible. You must figure out how to “fly” which for Kiwi means falling with style.

To keep Kiwi going, you must use your surroundings to help him jump from platform to platform. This can be accomplished by catching gusts of wind, hitching rides on planes, and hopping on top of clouds. The team plans on adding other methods of transportation as we continue to work on the game. (Our team finished first place in the competition, and as a result MoonRift Entertainment has hired our team as freelance contractors to further develop the game for commercial use.)

Level Design: When the player enters the game, there’s a cutscene that explains Kiwi’s backstory and what he’s trying to accomplish. You can then choose to start at a tutorial level or start the game right away. Kiwi has to travel through different areas of the level map throughout the game, which are procedurally generated and never ending. Each environment Kiwi travels through gets more hostile, making the game harder the longer the player survives.

Character Design: All of our characters were designed to look simple and fun to make our game appealing to a general audience, and what better way to do that then to make an inviting looking game. We created an Okarito Kiwi as the main character and star of the game. We added the Black Footed Ferret, Arapawa Pig, and British Hedgehog as enemies since all of these animals are natural predators of the Kiwi bird. I created a 3D version of Kiwi that will be implemented in the game when we create the bonus level.

Environment Design: Included in our game is a forest level, sky level, and volcano level. Kiwi birds are forest dwellers that live in New Zealand, so it was only fitting that we made the first level introduce Kiwi in that environment. The sky level has a variety of cool features such as plane hopping and flying hedgehogs that shoot quills. The volcano level has a fun game mechanic where you can shoot kiwi fruits at volcanoes in an attempt stop them from erupting. Essentially, we shaped the level design around game mechanics we thought would be really awesome and fun for the player.

Putting It Into Code:

Physics and Player Controller: We used a 2D sprite for Kiwi, and attached a rigid-body component and collider component to the player. In the player script, Kiwi is limited to how far he travels by the flight meter.

Enemy AI: There is an AI director script that controls how many enemies spawn and what enemies spawn in every environment. When the player collides with an enemy they lose the game.

Environment: The levels were created so that Kiwi could travel seamlessly from one area to another in search of his parents. There are large clouds that signify to the player that they have unlocked a new area.

Animation: We used Unity’s Sprite Editor to do the animations for the characters. Some of the animations were created using Unity’s particle effect system, for example the volcano eruptions use particle effects.

Saving Player Data: We used the PlayerPrefs system in Unity to save the high-score of players, and also to keep track of how many coins the player has. Coins can be used to buy power-ups in the game.

Leaderboard: I created the online leaderboard by using PlayerPrefs in Unity to save the high-score locally, and then Firebase to save the player’s high-score to a database. To send your high-score to the database, you must first own a copy of the game and then submit your high-score within the game. The online leaderboard works by getting the high-score variable from Unity and then retrieving it to Firebase. Then, Firebase communicates to the website and it displays the data inside of a table. I used REST API to link everything together.

This game was made using the Unity game engine.

Go more into depth on the GitHub repository.