My First Game- Winter Wipeout


I just finished designing and publishing my first individual project in Unity. I set out to create my first microgame in unity and thus Winter Wipeout was born. 

Description: Winter Wipeout is a single-player game built in unity and published using WebGL. I started this project as a part of the Unity Learn tutorial and did it as my personal project. This project is an infinite run game inspired by several old flash games I used to play as a child growing up.

Published: 2022

Build Process

Before starting the build process, I wanted to break the production down into four manageable chunks for better time management. I created an initial sketch and design board to help iron out the initial project theme and features. The first milestone was to implement all movement and collision of game objects. Next was importing any game assets including all objects, level design, and sound. The third was focused on scripting for the game manager that implemented any in-game functions. The last block was left to product test and debug any issues and implement last-minute bonus features.

Initial Concept

The player controls a character in an isometric game where the arrow keys control the player's movement. The goal is to dodge incoming obstacles from both the front and behind to survive as long as possible. The number and speed of obstacles will increase as the game progresses. Gifts will appear that the player can grab to help them survive longer. These gifts will display a message in the corner describing what it does and will chime. When the player collides with an obstacle the music will stop and a death sound is played. There is also UI for a menu and game over screen. The menu also includes a character selector and tutorial for the player. After a collision, the player has the option of restarting or going back to the title screen. The player can also hit "P" to pause if needed.

Project Timeline

My goal was to finish the initial version within 4 weeks so that I could focus my attention exclusively on learning unity and not worry about school. I gave myself a goal of one week to reach each milestone. 

Reflections

Challenges

Throughout my development I encountered various challenges which I had to overcome:

  • The biggest challenge I had to overcome was coding in C# for unity. Being a new language and having all the new libraries read into, I felt lost at times. While I knew what I wanted to do in my code, I didn’t know how I could implement it. It took me some time to figure out all of the different libraries and their functions I could use. After studying the documentation it started to click, and I was able to make my vision possible.
  • The first in-game challenge I ran into was making sure all collision detection and movement worked as intended with both the buffs and obstacles. I was having issues making sure that when the player collided with a buff the game didn't end. Also, the snowballs would cause a game over if they ran into the other oncoming obstacles. I implemented tags to all of the objects in the game, so I could add check statements in each condition of the scripts. This allowed me to control what each collision would do based on the tags of the object.
  • When I first started to spawn in the oncoming obstacles I had them all spawn on the same x-axis. This not only made the game feel less realistic since all the objects were in a straight line, but I would also have some spawns where they would all spawn in a single spot. Also, there would be some scenarios where there were no possible paths for the player to survive. To fix this I added a range on the z-axis for the objects to spawn. This allowed for a more natural spread of things and make it feel more playable.
  • Because I picked a present as the buff object, I noticed that it was hard to differentiate what the buffs did in the game. To help the player understand what happened with each buff, I added a positive sound cue and displayed a message in the top right corner to help inform the player. This allowed for a quick and easy display of information, so as not to distract the player from the game itself.
  • The last major hurdle I had to overcome was the restart button. While the menu button was easy, just restarting the scene, the restart button would instantly restart the game. This meant I needed to reset all the scaling difficulty parameters of the objects so the game started at the same spot each time. I did this by implementing a coroutine that reset all the global parameters to their original values, deleted any obstacles currently in the game, and after 1 second switched the game state back to not over. This allowed for the game to soft reset and create a repeatable starting point for the player to continue trying to survive.

Future Improvements

After completing my initial implementation of Winter Wipeout, I took time to reflect and came up with some fixes or features I would like to implement in a possible future version.

  • Adding a larger preview of the character selector that is more visually pleasing and polished
  • Adding snow particles in the title screen that create a transition effect when the game starts and ends
  • New objects to avoid to add more variety
  • A scoreboard to track the best runs
  • Implementing more robust spawn parameters for the objects to make it feel more natural and always allow a winnable path

Conclusion

Overall, I enjoyed the process of making this game and look forward to learning new skills and implementing them in future projects. Most of my coding experience has been algorithm based. Being able to create a project that was both visually appealing and fun to play with was a new experience and something I am very proud to have finished. There are still plenty of things to learn and I look forward to continuing my journey in unity.

Files

WebGL.zip Play in browser
Sep 28, 2022

Leave a comment

Log in with itch.io to leave a comment.