Unity is a third-party game engine created by Unity Technologies and is considered well known across the gaming community alongside other popular game development software. It allows game developers to create a variety of games ranging from 2D/3D games to simulations and can support development across multiple platforms, such as PC, console, and mobile.
For my first personal Unity project, I created a “Bullet Hell” game. This genre of shooter game involves the player safely navigating waves of enemies where numerous enemy projectiles are fired all at once. Because this game is derived from Jeremy Gibson Bond’s Space SHMUP from “Game Design, Prototyping, and Development”, I have placed heavy emphasis on implementing additional features during this project’s development.
There were two goals in the development process. The first goal was to implement all required objects, such as the player, enemies, and bullets, using C# object-oriented programming and Unity’s built-in object creator. Experience with the Unity engine prior to making the game was acquired and developed through various online sources (YouTube, Unity documentation), as well as a college-level instruction which uses Jeremy Gibson Bond’s “Game Design, Prototpying, and Development” as its material.
The second goal was to implement a design pattern known as “object pooling”, which recycles unused objects, (in this game’s case, dead enemy ships and projectiles) instead of destroying them. By using this design pattern, the game can minimize the number of times it needs to create and destroy and object, thereby minimizng memory consumption and improve performance dramatically.
This project incorporated all the lessons and concepts related to object-oriented programming (C#) learned throughout the Fall 2020 semester. The biggest hurdle encountered in this project was implementing object pooling as it required modifying collision-related code for all applicable objects, such as enemies and bullets. Other hurdles include developing a bullet spawner with various behaviors to create uniqueness for each enemy type.
Though much more can be implemented to the game, I was able to learn some important game design concepts, particularly the object pool design pattern. Though optimization should be considered after implementing all core features of the game, I beleive it should have some priority for games that require numerous amounts of processing, such as the bullet hell genre.
Source: Jeremy Gibson Bond - Game Design, Prototyping, and Development
Status: Completed (December 2020)