Check out my projects!

These are the major projects that I have worked on

Mythical Dateline

Mythical Dateline

Work in a event's company filled with mythical creatures.

(Final Year Project 2)

Now Boarding

Now Boarding

A hidden objects game where you play as the airline staff handling people's boarding pass.

(RedGames Jam 2025)

Rapture Reign

Rapture Reign

An ASEAN mythological hack and slash made for mobile devices.

(Game Project Studio 2)

The 7th Seal

The 7th Seal

A Lovecraftian rougelike with a solitaire twist.

(Game Project Studio 1)

Mythical Dateline

Mythical Dateline is a visual novel with management simulator elements.
It is my Final Year Project that I have worked on with my team.
I was the sole lead programmer for the team. This made me be responsible for all the technical aspects for the game.

Below are the main features that I have worked on the game:

Management Gameplay system

  • Spawning of work and rest blocks
  • Interactions between blocks and the schedule grid
  • Character stats that change and persist between in-game weeks
  • Schedule grid layout changes and differs depending on the in-game week

Get the column and row position of the grid where mouse is hovering

Get the world position of the from the column and row

Stat varaibles for the tile

Function created to spawn the tiles for the player to use

Mouse events for showing tile stats to players when hovering over them

Selects the tile when clicked

Movement of tile and allow snapping to grid if able to be placed

Rotates the selected tile

Locks the tile to the grid when placed

Dynamic Event System

  • Random events(Positive, Negative and Neutral) have a change to occur during the management section
  • Event type to occur are determined by thier weightage
  • Certain events have subsequent linked events which have a higher chance to spawn based on certain choices
  • Game also keeps track of how the player is doing to adjust the difficulty
  • Difficulty adjustment makes the game easier/harder by spawning more positive or negative events

Variables that help to make up an event

Function to check if the max amount of events has been reached in order to spawn more

Dynamic difficulty adjustment based on certain values of the game(Character stats, work progress)

Continuation of the dynamic difficulty adjustment functions

Change the weightage of certain events appearing after dynamic difficulty adjustment

Reset the weightage to original values after an event chain ends

Function to randomize the type of event to occur(Positive, Negative, Neutral)

Function to randomize the stat values that the event will change

Dialogue System

  • Learnt to use the framework Yarn Spinner to help my Game Designer to add story and dialogue into the game more easily
  • Created the custom display for dialogue with assets from artists
  • Added functionality to the dialogue system to showcase dialogue history

Modified the Yarn Spinner dialogue system to be able to display the sprites of the characters by detecting thier name

Another modification to allow the system to save the dialogue and display it as dialogue history

Third Person Movement System

  • Simple movement system for when the player explores the office
  • Players can interact with the NPCs to progress the story

Move and look is called during update and checks for player input in order to move player character

Look logic for the player character and also shows how the player handles collision when needing to interact with another character

Challenges and reflections

As the project had relatively simple gameplay, I had to help our designer find a way to enchance the gameplay experience.

I was also the only programmer on this project which caused this to be a bit of a challenge on my end.

However, I also took this as a learning experience to create something new with minimal guidance.

By doing so, I was able to create the Dynamic Event System that can be found in the game which creates various events to add variety to the gameplay.

I also managed to add different weightages to each event which will maniuplate the chances of a specific event spawning.

Using the weightages, I was able to maniuplate them to create a Dynamic Difficulty Adjustment for the game too

This specific feature of my game was the thing I was really proud of.

While I may be really proud of the above, I also have some regrets about the game.

The first is I wish I communicated better with my team, as I was unable to implement some of the assets they made proprely, and I wished I could have done more to showcase thier work better

The second was I wish I could have channeled more efforyt in to other parts of the game to polish them more, to make the whole game more well-rounded in general

Now Boarding

Now Boarding is a hypercasual hidden object game made for browsers.
It was made as a submission for RedGames Jam 2025 with my FYP team members.
The game was selected as one of the Top 10 games of the jam.

As the main programmer of the game I have programmed the following systems:

Hidden Object Gameplay

  • Hidden Object (which are character features) to be found will be randomly selected from an array of objects
  • Characters with theses features will enter and bounce around the screen
  • When the player clicks on a character, it will check if the character has said hidden object
  • Game will keep track of how many objects found
  • If player manages to find all objects before time limit, go to next stage otherwise show game over screen
  • Every subsequent level will increase difficulty by increasing number of objects to find and speed of characters

Setting up the game by calling the revelant functions

More functions to reset the game state after a level has been completed

How the game handles interactions from the player to check if it matches the object to find

How the game handles interactions from the player to check if it matches the object to find

Updates the bounds of the level for the objects for when they move into the scene and when they need to be contained

Random Character Creator

  • Create characters from a preset of objects(Head, Face and Body)
  • System will create a set amount of characters based on the required number of hidden objects to find
  • These set amount of characters will have the feature to find
  • Once the characters with said features are generated, other characters will be randomly generated by mix and matching presets
  • These characters will choose to appear from either 4 sides(Top, Bottom, Left, Right) from outside of the screen
  • Thier angles which the appear from will be randomized too to add variety.

Function to randomly generate the character based on an array of sprites

Modified function to spawn the minimum amount of characters needed that has the object to be found

Functions to initialze the generation as well as destruction of the characters

Challenges and reflections

This game was the result of joing RedGames Jam 2026 while working on our FYP.

We took this as an opportunity to take a short break from our FYP while continuing to hone our game development skills further.

The main challenge I encountered was the time limit for the game jam.

Due to the time constraints of the Game Jam, I was unable to implment all the features that my designer had planned out for the game.

This made me realize that I needed to have better time management in order to be able to complete a game in such a small timespan.

While certain things could be better in this project, there was also great things that came out of the game.

The first one is that our game managed to place Top 10 among all the game in RedGame Jam 2026 which was a huge acheivement.

The second is I learnt quite a bit on how to dynamically generate and spawn objects, a concept which I would then use in my FYP for the Dynamic Event System found in it.

All in all, this game was a good side project to help us realign ourselves during our FYP and I learnt a lot from it

Rapture Reign

Rapture Reign is a hack-and-slash action game for Android mobile devices.
It was my Game Project Studio 2 game made with my semester classmates.
Due to the size of the team, I have chosen to focus on VFX programming.

What I worked on:

  • Learnt how to use Unity's Shader Graph and VFX Graph.
  • Worked together with team's artists to incoporate 3D models with the VFX.
  • Made fullscreen VFX(Game becomes Greyscale and Outlines applied to character and monsters)
  • Made VFX for both player and monster actions(Attacks, parries, damage effects)

The shader graphs for implementing cell shading + adding outlines to an object to create a toon shader

Shader for the shield parry effect to make the shield glow

Shader graph made for the flame attack of the player

Sand attack shader made for one of the monsters

A fullscreen shader made to turn the game greyscale when the player enters the attack phase

Challenges and reflections

This game for our GPS2 subject was the first time that I had worked on a mobile game.

This was also the first time that I worked in a large group consisting of 16 people.

One of the challenges I faced in the production for this project is learning how to create visual effects in Unity.

Therefore, I had to spend time and effort to learn about Unity's Shader Graph system, VFX Graph system and Particle System and how to use them.

Another problem I encounetered while making the game is adapting it for mobile, I had to make sure that these effects would be able to run on mobile.

Because of that I had to pivot from using VFX graph to the Particle System as VFX graph had issues on mobile.

This whole project was a bit rocky but was overall a unique learning expeirence in stepping out of my comofrt zone and coordinating with a lot of people.

One thing I wished I have done in this project was helping in other technical aspects of the game that I could help with.

This is because I felt everyone was working on thier own small portion of the game instead of working together.

If we worked on certain parts of the game together, I believe the game would have been in a better state.

All in all, this project was a unique learning experience in regards to creating a mobile game.

The 7th Seal

The 7th Seal is a rougelike card game with a solitaire twist.
It was my Game Project Studio 1 game made with my teammates.
The game is the first major game that I have worked on.
I was the lead programmer on the game and worked together closely with co-progammer.

What I worked on:

Card Generator Prefab

  • I made a Prefab that dynamically generates a card based on what hand the game generates for the player
  • Amount of card prefabs will be generated based on the player's hand
  • The players hand contains an array of info about the card(Suits and Number)
  • The game goes through this array and copies the values to the prefab
  • The prefab then generates the card from this info by pulling art assets related to the values stored

Function to create the card based on a randomized value passed to the function

Card Placement and Detection

  • Since the game has a solitaire twist, the placement of cards were important
  • Therefore, a system that makes sure the cards were placed properly was created
  • The game has slots above enemies where the cards are played and the player has to fill up these slots to damage the enemy
  • When a player places a card on the slot, the slot saves the info of the card
  • These value will be used to influence other slots on the enemy to make sure, the cards played follow the correct number and color sequence
  • Placing the card on a compatabile slot will lock it in
  • Placing the card in an incompatible slot/outside the slots will return the card to the player's hand

Function to manipulate the appearence of the slots based on the type of the card that has been placed

Function to reset all the slots after a player manages to damage the enemy

UI Implementation

  • I helped the team's artists to implement the UI assets into the game
  • The notable parts of the game UI that I have worked on were the main menu and shop UI
  • Worked on making sure shop UI was responsive after player buys an item

Some functions created to manipulate the UI in the shop depending on the item that the player decides to buy

Functions that I have created to change the UI for the player health and shield

Challenges and reflections

This was my very first real game project in Unity as well as the first time that I have worked with a team of designers, artists and other programmers on a proper game.

Therefore, my code in this particular project may not be as clean as later projects as I was mostly learning how to use C# and Unity as an engine.

This was also my first time using version control for a project as I was working with another programmer on the game.

Therefore, I had to learn quite a bit in order to be able to contribute to the project.

Another challenge I had to face was learning how to communicate with designers and artists.

I had to learn how to communicate properly with them to help them understand what can be done or cannot be done for the game.

As this was my first actual experience in a semi proper development enviroment, I have learnt a lot of stuff from this project.

Looking back, there was a couple of things that I would have done differently if I could.

These things would have been to focus on learning the essestial parts of Unity for the game, as I still struggled with it towards the later half of deveopment.

And also, I would have communicated differently with my teammates as it would probably have helped to streamline production.