top of page

Sophomore Year Game Project

Fire Chicken Number 1
(Sep 2017 - July 2018)

FireChickenNumberOne is 2D platform action side-scroller where the player plays as a warrior named Sosa. He is tasked to head to the temple to give offerings to a relic residing in the temple known as the "Fire Chicken".

The player has to navigate through the forest and the temple's traps to reach the relic. But he is not the only one after it, Numba Wan seeks the relic for his own evil purpose. 

Fire Chicken Number One: Bio

The Team

Jonathan Jerome

Technical Lead

Mitchell Lee

Producer

Shu Hui

Lead Designer

Gui Ming

Programmer

Zhong Xian

Artist

Fire Chicken Number One: Team Members

GAM200/250

Our Sophomore year project was developed by 4 programmers and 1 artist over a 6 month period.

Editor and Engine

As technical lead, it was my job to plan the architecture of our game engine and code base. As this was the first time I had undertaken such a task I started of by reading Jason Gregory's book "Game Engine Architecture", which I highly recommend to any CS student. Then I began selecting the APIs we would be using like FMOD for sound, XML for serializing data, OpenGL for graphics and ImGUI for the editor overlay. Lots of research and many mistakes were made at the start of this project and we even failed our first attempt, scrapping by with a D after 3 months of work. Undeterred however, our team continued improving our engine, looking to more established engines like Unity and trying to implement their features in our own. In the second attempt, we were praised for our substantial improvements and quality of life features that we passed GAM200 with an A.

Engine_FC_overall.PNG

Component Based

C++ was the language used to create this engine and the features of this language such as inheritance and polymorphism as well the extensive STL gave us some very valuable tools. We were able to replicate Unity's <Game Object/Component/ Scene> style structure of content creation by utilizing the aforementioned features. Splitting the engine into system's and components also allowed multiple team members to add different features to the engine while minimizing conflicts when merging branches.

Engine_FC_tile.PNG

Designing a Platformer

Some features were only added after development of the game itself had begun. For example, a tiling feature and snapping tool were added as designers found it tedious to align items manually. An undo/redo system that I took a whole week to implement paid of tremendously because it now allowed designers to make mistakes without worry. We also bound keyboard short-cuts for those familiar with Unity and added more as the requests came in.

Engine_FC_sprite.PNG

Scripting

I attempted to bind a scripting language to our engine to allow for faster iterations and hot-loading. This meant that we would not have to compile the entire engine every time a script was changed. I chose "Angel Script" as it was very similar to C++ and began binding the engine's functions to the scripting language. In the end however, it proved to costly a feature to maintain. We simply did not have the time to do the necessary updates and checks whenever we added a new feature (which was almost every day!). With IncrediBuild allowing for compilation times as low as 10 seconds, we decided to scrape the idea and code everything in C++.

Engine_FC_system.PNG
Fire Chicken Number One: Services
FireChickenNumberOne_1_hires.jpg_raw=tru

Download Fire Chicken Number 1 for PC

Fire Chicken Number One: Files
bottom of page