Blog

> Unity3D - Clear the Way!

October 06, 2019

Overview

Project Information
Unity: Clear the Way!

Progress

  • Finished my first original gamel
  • Topics learned include: Camera, object, and scene manipulation + Saving scores/settings + Scene/Map toggling

Project Links

Reflection

My first original game! Push obstacles off the world for points, gobble up treats, avoid fast-moving eaters, and get pushed around by plowers in this hectic 2-player competitive game. Originally a test project to learn how to operate multi-camera views, and interact with in-game objects. Includes player settings and game menus.

Wow, Unity and C# has been an insane learning curve the past few projects, but so worth it! I'm so happy to finally understand a little bit more about how developers use Unity for game development. And knowing that I also have the knowledge and ability to do so as well is invigorating.

The following keyboard settings are available during gameplay.

General Settings:

  • 1 - game view
  • 2 - side view
  • 3 - topdown view
Player 1 (left):
  • WASD - move
  • L-SHFT - toggle mini-map
  • CMD+L-SHIFT - toggle mini-map fullscreen
Player 2 (right):
  • Arrows - move
  • R-SHFT - toggle mini-map
  • CMD+R-SHIFT - toggle mini-map fullscreen

Title Menu

Instructions Menu

Levels Menu

Game View
(Camera 1)

Side View
(Camera 2)

Topdown View
(Camera 3)

Mini-Map Options

Design Sketches

Lessons Learned

  1. User testing improves the product! The game currently only spawns a specific number of obstacles, treats, and eaters, depending on the level selection. After showing the game to my friend, he suggested putting the game on a timer and varying the speed of object spawns depending on level selection, rather than just keeping it to a static number of objects. He brought up a good point that players may lose incentive to play after a certain threshold is passed if there is just a static number of objects available each round. This is definitely a future update for the game version. I'm pleasantly surprised and grateful for my friend's constructive criticism!
  2. Projects can, and will, organically evolve. This project was initially just a test/throwaway project for me to learn how to toggle different camera angles (for a different project). But the more I played around with the available Unity functionalities, the more the project just naturally evolved into something bigger. I've also been incredibly inspired by various game development videos online recently, so the more I explored, the more the ideas organically manifested itself into different parts of this game.
  3. When in Rome, do as the Romans do. While learning Unity, I was also concurrently learning C#. Through watching video tutorials, I tried to pick up as many habits and recommendations from the professional developers as I could regarding naming conventions and file organization structures. For example in Python I'm used to using snake_case, whereas in C# you tend to use camelCase. Same with learning to adapt to different IDEs.
  4. Plan out your project before diving in to code. In my defense, I had no idea this MultiCamera throwaway test project was going to become a game. However as the game grew, the number of specifications and requirements also grew. Because of my lack of initial planning, the code became a huge mess with pointers and objects connecting inconsistently throughout various files and data types. It became so difficult trying to make even the most minor of changes without accidentally breaking another function. Keep your code clean. Plan ahead. Document. You won't regret it. Please.
  5. Personal Note for Future Dev: I removed the Custom and 1-/2- player selection options from the currently deployed version of the game. These options were both partially implemented. The reason Custom option was not fully implemented was because I ran into a weird issue where the slidebar UI was not updating the integer values. Other TODOs are written in the github README.

    Player Selection (deprecated)

    Custom Leveling (deprecated)