INFSCI 1601
Game Implementation
Spring 2019
INFSCI 1601 is a game development course for information science majors at the University of Pittsburgh. The course focused on learning good implementation practices in Unity and had students work on three solo projects throughout the semester.
The three projects I made were called Earthbound Runner, Free Air, and Mummy Wrap.
Project 1:
Earthbound Runner
(PC)
Role:
Solo Project
Total Dev Time:
~ 3 weeks
Earthbound Runner is an "endless" runner game in which the player plays a Ness. The character can hit enemies with their bat and open presents for heath and money. The goal is to get home at the end of the road.
OVERVIEW
-
2D "Endless" Runner
-
Made in Unity
-
Utilizes PixelPerfect Graphics
PROCESS
The project constraint we had was to simply make a 2D endless runner. The project required us only to scroll the camera horizontally or vertically, but I took the challenge to do both and make an isometric game instead.
I used the Earthbound sprites so I could focus on coding the game rather than making artwork. I did however have to make custom Ness sprites for swinging the bat and taking damage, because he never actually does either on the overworld in the original game.
I also made some custom sprites for the SMAAAASH!! and HUD since they also did not appear in the original game.
The only other constraint we had to use for the game was the use of pooling so that we were not constantly creating and destroying objects during runtime. In order to make my game stand out from others, I used the idea of pooling to my advantage. By making a pool of back drop pieces, I was able to randomly generate different landscapes by stacking the same few backdrops in a row. By doing this, I was also able to make the game act differently based on what backdrops were visible (i.e. If the vertical backdrop is present, spawn vertical cars). Nearly every object on screen is pooled, making the game more efficient.
The biggest challenge for this game was making the counter on the HUD spin like it does in the original game, since all of the scrolling was done using sprites. Learning about pooling changed my perspective on gameplay coding and I learned a lot from this project.
Project 2:
Free Air
(PC)
Role:
Solo Project
Total Dev Time:
~ 3 weeks
Free Air is a grid-based turn-based strategy game set in the skies. The player is a pilot who has to fight off the hostile airplanes and collect plane parts to upgrade their ship.
OVERVIEW
-
3D Turn-Based Strategy Game
-
Made in Unity
-
Utilizes Perlian Noise Generation
PROCESS
For this project, we were given two words and had to make a game from them. The words I got were role playing and aviation.
Before I started building, I had to make a game design document laying out what I wanted to do, what my inspirations were, and how I used my given words to make my game.
The Game Design Document
I also made concept sketches detailing how I wanted the game to play, look, and feel. After all of that was finished, I then got to work on building the game.
Rough 3D Sketch of what the game should look like using Unity primitives.
Concept work of how I want the turn based system to flow.
Concept art of the map system between missions. It had be cut.
In terms of artwork, this was the first time I had ever worked in 3D, so I simply made objects out of Unity primitives and textured them. The menus were simply drawn in Paint to maximize the amount of time I had to code the game.
During the development I learned about how to work with perlian noise. As a result, I was able to make a randomly generating landscape that resulted as islands underneath the gameplay area.
The terrain as it appears in game.
One generation of the Terrain in Unity.
One generation of the Terrain in Unity.
The terrain as it appears in game.
The most difficult part of this project was the game engine itself. It required a lot of tweaking in order for the camera to properly show the models at the right perspectives. I also learned a lot about the flow of events in my system (menu -> cutscene -> textbox -> menu) and how to time them properly in engine. I also learned how to effectively cut down the scope of a game in a tight deadline.
Project 3:
Mummy Wrap
(PC)
Role:
Solo Project
Total Dev Time:
~ 3 weeks
Mummy Wrap is a 2.5D physics-based platformer. The game has the player be a mummy as they swing their way past spiders so they can investigate the strange knock at the door.
OVERVIEW
-
2.5D physics-based platformer
-
Made in Unity
PROCESS
Due to balancing a tight school schedule, the game's development had to be streamlined. The game's core vision had the mouse at its core. The majority of my time was spent building a game that tried to utilize only the mouse scroll wheel. I chose this control scheme because I rarely see it in games.
One of the requirements for this project was to build a game using at least three different assets from the Unity asset store. For this project I used a mummy asset, a spider asset, and a pillow asset.
This game also introduced me to 3D animation. Since the mummy model I found didn't have all the poses I wanted for the game, I had to make a few myself in the Unity animator, like the swing and fall animations.
For this project I also relearned how NavMeshes work so I could get the Spiders to walk randomly around the maze in the latter half of the game.
The biggest challenge in this game was level design. This was the first real platformer game I had made, so level design for this genre was unfamiliar to me. I ultimately ran of time to properly play test both levels. For the sake of my professor I simply added in level skip buttons. I hope to take what I learn here and apply it to platformers in the future.