I managed to make a complete video game long ago back in 2019 (BBQ Pork Noodle King) and haven’t worked on a new video game project for a long time. The problem is that I frequently get into analysis paralysis on analyzing the most effective app or game ideas to spend my time working on.
Eventually I realized that people don’t just make something good on their first try, the process is always trial-and-error and involves a lot of course corrections. Even developers of well known video games like Doom, Mario, .etc. made many games before they made a hit.
So instead of being stuck thinking about what to build and trying to come up with something original, I just decided to start building something, keep making improvements and see if I can make something fun and potentially commercially viable.
I chose the platformer genre as I have always been fond of platformers. I have fond memories of playing Super Mario Bros, Megaman, Adventure Island, etc. Even now I still enjoy playing Rayman and Mario games.

For a start, the project is made in Unity Engine as I have most experiences working with it in the last project, also with a full time job and as a father I just don’t have much time to study another Game Engine. Unity also uses C# as its main scripting language which is nice as I am most experienced at C#.
The first step is to build enough of the game engine to make any sort of platformer games, so arts from Mobile Buncha are used as placeholder arts while the game scripts are developed.

Development is done on two machines as per usual. The Surface Pro works as a all-in-one portable machine that can be used for drawing arts and programming in a single portable machine when I’m out and about, albeit a bit slow. With 16GB of RAM, it can barely run Unity Editor and Visual Studio Code with some browser tabs. However for the scope of this simple 2D game, it does the job.

And at home I use a powerful gaming laptop with big screen and a big screen tablet for arts :D.

The “game” progress
- Players can move the main character left, right. The character can jump and shoot projectiles.
- Enemies create damages if touching the player, some enemies also shoot projectiles that deal damage if hitting player.
- Player can jump on platforms.
- Player has HP, and can also collect coins (like in Mario).
The interesting things about how games are developed in Unity Engine is that all the behaviors are implemented as reusable and composable Unity “Component”.
For example, the player has the following components
- Money Stats (for number of coins collected).
- HP Stats for health points.
- Four Direction Waling Animations: to show different animations depending on the current direction the player is moving.
- Shoot on Button Press: allows player to shoot projectiles when the Shoot button is pressed.
- Four Directions By Action: allow player to change facing direction when moved.
- … and many more.

This is component based architecture, in which instead of having big objects with complicated logics, each separate logic is implemented as a component. The complex object is then constructed using many such components working together.
The components are reusable, so it’s very easy to use the components to assemble new player or new enemy types, which are called “Prefabs” in Unity Engine.
By breaking the objects into multiple smaller and simpler components, the code becomes easier to maintain. Of course, this applies for any kinds of software projects and not just games and interactive applications.
The behavior of an object can be changed even at runtime, as components can be removed or added during runtime to change the behavior of the object. For example, a player may stumble upon a powerup like a melee weapon (for example, a hammer). By switching out the “projectile” component with a “hammer” component, the Attack button will result in a melee attack instead of a projectile being shot.
The background is implemented as a simple old school tilemap, which can be used to design levels. Platforms can be created and more complex images can be formed using multiple smaller tiles.
Unity Engine already implement a physic engine, so collision detection is already taken care of :D.

Once the necessary features are implemented, the development will then be switched to level design and tweaking to make a fun game, of course with finalized arts, music and sound as well.
Of course I’m just learning and doing as I go along, and the code is probably not the most efficient, but it’s fun at the very least and the design can always be enhanced as I learn more about Unity development.