top of page

OTHER PROJECTS 

 
 

This page showcases my other projects such as tech demos, graphics programming, digital drawings, digital audio. The projects are still being updated slowly.

Unreal Engine 5

 

01 | My First Unreal Engine Project

 
 
 

​Exploring the game engine:

  • Viewport navigation basics

  • Creating a new level

  • Creating a floor

  • Adding a playable character

  • Layout the level using the cube grid

  • Adding the starter content pack

  • Using static meshes

  • Creating a roof for the house

  • Applying materials and UVs

  • Level instance blueprint

  • Adding lights

  • Creating a blueprint to make a door that opens with key F 

 

I am currently exploring Unreal Engine 5 and learning more about the game engine...

 
 
 

AI for Games

 

01 | A showcase of AI steering behaviour

 
 
  • Seek (+ Arrival)

Agent that actively move towards the target (Seek).

  • Flee

Agent that actively move away from the target (Flee).

  • Seek vs Pursuit

Two agents that move towards the same target. One seeks, another pursues.

 
 

Seek With Arrival Scene

 
 

When seek agent reaches the target destination, an orange circular particle effect is triggered to indicate that it has reached.

 
 
 

Flee Scene

 
 

A bright yellow colour is used when flee agent is actively fleeing.


A darken yellow colour is used when the flee agent is idle.


A green colour is used when the flee agent is moving back to its origin.

I added a red region that will trigger the flee agent to go back to its origin if it is located within the region. But, it is provided that no target exists at that moment, then only the agent will return to its origin. This is implemented to avoid the agent from hitting the walls.

 
 
 

Seek vs Pursuit (Mouse) Scene

 
 
 

By clicking the key "Spacebar", the agents are spawn from the centre of the screen, Vector2(0.0f, 0.0f) using AgentsSpawner script.
They begin to move with an initial velocity direction that can be decided by the user. If the user did not decide an initial velocity direction, the agents will move upwards, Vector2(0.0f, 1.0f) by default.


Within the first 3 seconds after spawning, the user can control the agents initial velocity direction by holding down 'A', 'S', & 'D' depending on which direction. 
Hold 'A' to go leftwards
Hold 'S' to go downwards
Hold 'D' to go rightwards
If the user did not change the initial velocity direction then the agents will be going upwards(Vector2(0.0f, 1.0f)) by default.
 
After 3 seconds upon spawning, the agents will only start going towards to the target. Mouse velocity is calculated as mouse cursor is the target. Mouse delta (mouseDelta = currentMousePosition-lastMousePosition) is used to calculate the mouse velocity and the lastMousePosition will be updated every frame.
The agents are destroyed when they collide with the mouse cursor.

 
 
 

Seek vs Pursuit (Keyboard) Scene

 
 
 
 

Similar to the previous scene, just that in this scene the user controls the target (a game object) using keyboard controls instead of using the mouse cursor.

02 | A showcase of AI pathfinding algorithms

 
 
  • Dijkstra Pathfinder

  • A* Pathfinder

  • Best First Search (BFS) Pathfinder

 
 
 

AI pathfinding algorithms video

 
 
 
 

The video above shows Dijkstra, A*, and Best First Search (BFS) pathfinders with and without heuristics.

In the showcase:
Start Tile = Red color

Goal Tile = Green color

Wall Tile = Grey color

Sand Tile = Orange color

Dijkstra = Blue line

A* = Pink line

Best First Search (BFS) = Red line

 
 
 
 

03 | A 2D virtual aquarium

 
 
 

The virtual aquarium is populated by big and small fishes. Big fishes need to be fed, small fishes swim around in the background as a group.

Player can drop food, spawn big fishes and "tap the aquarium".

 
 
 

AI in 2D virtual aquarium video

 
 
 
 
 

Unity Visual Scripting is used for state machines. Big Fish State Graph and Small Fish State Graph are used in the project.

PLAYER CONTROLS:
MOUSE LEFT CLICK: Drop food at mouse cursor position.
MOUSE RIGHT CLICK: Tap the aquarium glass, making any fish (big or small) within radius to flee.
KEYBOARD 'SPACEBAR' KEY: Spawn a big fish! (Orange Color Fish)
KEYBOARD 'W' KEY: Spawn more small fishes! (Pink Color Fishes)

There is also an Info button at the top right of the screen that can be clicked to learn what can be controlled by the player in the game.

The bar below the big fish is its hunger bar.

 

SMALL FISH:

Got 2 states:
1. Flock
-flock behaviour is the small fish default state. It requires the flock controller to process the flocking behaviour of all flockmates.

2. Flee 
-small fish will flee when aquarium is tapped and if the tap is within the radius
-once the aquarium is not tapped, small fish goes back to flock behaviour.

 

BIG FISH:
Got 5 states in BigFishStateGraph:
1. Wander
-The big fish's default behaviour is wandering, when big fish is not hungry or starving it is always wandering.


2. Seek
-Seek behaviour is triggered when big fish detects food within its radius and the hunger bar value is less than or equal to 70 but more than or equal to 30.
-The fish food detector uses a script that is called fish food radar to detect if there is/are any food in the radius or not. The radius can be visualized because I used a circle sprite renderer with low alpha to show the zone where food can be detected.
-The fish food detector is attached to the big fish gameObject, so it is a child of big fish gameObject.
-This is a seek with arrival behaviour, so the big fish slows down as it reaches the targeted fish food. 

3. Pursuit
-Pursuit behaviour is triggered when big fish detects food within its radius and the hunger bar value is less than 30 but more than 0.
-The fish food detection is used the same way as seeking behaviour which is the fish food radar script.
-Pursuit doesn't have arrival, so the big fish doesn't slow down when it reaches the targeted fish food.

4. Flee
-big fish will flee when the aquarium is tapped and if the tap is within the radius, no matter how hungry it is
-once the aquarium is not tapped, big fish goes back to wandering behaviour

5. Dead
-Dead behaviour is triggered when big fish hunger bar value is less than or equal to 0.
-the fish belly points up, moves upwards, and self destruct after 3 seconds after it dies

-Big fish has a hunger bar below it, the lesser it is the hungrier it is.
-Hunger bar reduces 5 every 2 seconds
-Hunger replenish 20 per food

Both big and small fish uses wrap around script.

Inside the fish food radar script:
OnTriggerEnter2D
-add every food that enters the trigger using a List
-check if the entered trigger object is a food?
   -if yes, tell the fish a food entered

OnTriggerExit2D
-add every food that exits the trigger using a List
-check if the exit trigger object is a food?
   -if yes, tell the fish a food exited

OnTriggerStay2D
-check if the stay trigger object is a food?
   -if yes, foodExistInRadar boolean is true

In Update
-check if food is null in the list
   -if yes, remove the element in the list to avoid missing gameObject found and set foodExistInRadar boolean to false because food is gone

FISH FOOD:
-fish food moves down slowly because it has a gravity scale of 0.05 as if it sinks in the water for the fish to eat.
-fish food disappears after 5 seconds if not eaten.

 

 
 

Digital Drawing

 

Using Adobe Photoshop & Graphic Tablet:

  • Object Painting

  • Environment Painting (landscapes & interiors)

  • Character Painting (portraits & figures)

  • Promotional Art

 
 
 

Digital Audio

 
 

PROJECT CIRCLE

 
 
 
 
FinalMix_ProjectCircle
FinalMix_ProjectAkira

PROJECT AKIRA

 
 
 
 
 
LMJ_FX_GuyJumpingOut_SS.PNG
LMJ_FX_GuyJumpingOut

FX_GuyJumpingOut

 
 
 
 
 
LMJ_FX_Teleport_SS.PNG
LMJ_FX_Teleport

FX_Teleport

 
 
 
 
 

More projects will be updated slowly...

 
 
 
 
 
 
bottom of page