Game Sample & Final Review
This game sample uses the custom engine I developed through the semester, incorporating Caroline's input system and Samuel's collision system.
​​​
Game Sample Showcase​

This game sample is quite simple. The player controls the cube as the pawn to dodge the red rocks falling from sky. The player aims to collect the green coin to win the game. When the player loses, the background turns into black and the game exits in 3 seconds. Similarly, when the player wins, the background turns white and the game exits.​
​
Custom Engine Features
1. Terrain generation system by me (Skylar)
The game's terrain is generated dynamically by the terrain generator.
2. Input system by Caroline
The pawn and camera movement is realized by Caroline's input system.
3. Collision system by Samuel
The detection of collision between the pawn and the rock/coin is realized by Samuel's collision system
4. Game object and rigid body
The movement of the pawn, rocks, and coin is realized by the game object system with rigid body. The system was implemented in previous work.
5. Graphics system
The rendering of game objects was implemented in previous work.
6. Maya plugin
The meshes of the cube and sphere are created by Maya. A custom plugin was implemented in previous work to export the Maya model to mesh files which te graphics system can read.
​
Reflection on my work
The interface to submit data from the game project to the grapics project is easy to use and accommodative. The Maya plugin played an important role perfectly.
The struct of game objects can be better. Currently, it contains a rigid body pointer to move around and a collision box pointer to detect collision. However, not all game objects are collidable. It's better to use a ECS architecture, and consider the rigid body and collision as components. The game object struct can hold a list of components.
I implemented such architecture in anoter project.
​
Suggestions for my colleagues' work
Caroline's input system is easy to use and customize. It could be better to allow y-axis movement.
Samuel's collision system works well but can have more documentation. I'm a bit confused about how to use the manager's update function, and how to teleport the collision box. I think the collision box can have some attachment feature, and moves along with the object that it is attached to.
​
Review on my learning outcome for the semester
I learned quite a lot this semester. The organization of the assignments are great and guided me through the process of creating an engine system. Though this is not a graphics class, I learned a lot about rendering on OpenGL/D3D. I also learned from practice of how a game engine is structured, and how different systems work together.
Personally, I like to design the code structure before implementation. However, in most of my practice, the pre-design needs much improvement. There can be many cases that I as an engineer didn't consider before implementation. I believe it's good to have an overview of the code strucutre in advance, but also keep an open mind to modify it later.
​
I'm considering to extend this engine project to fulfill some more specific functionalities. I want to make it into a tool with GUI that people with no coding background can use and produce a simple game. I hope to make it happen.