top of page
Search

Naja Medjai

Updated: Mar 29



Steam Link: Click Here

GameX: Click Here


Introduction

As part of my MSc Game Development program, I worked on Naja Medjai, a 3D platformer inspired by Souls-like combat and set in a mythical version of Ancient Egypt. Developed by our team at Jaster Studio.



Game Overview

Naja Medjai is a family-friendly Souls-lite 3D platformer set in a mythical Ancient Egypt. Play as Rosetta, a Medjai warrior blessed by Apophis and Anubis. Battling through corrupted temples and protecting humanity from divine destruction.


Team Members

  1. Junlachak Juntasilp

  2. James Sherlock

  3. James Doran

  4. James Crockett

  5. Jacob Thompson

  6. Jack Finch


My Role

Gameplay Programmer


Core Mechanic that I created


Player Controller

Originally, the Player Controller script was a simple, unsystematic design using basic logic. This made it prone to bugs and difficult to fix.


Upon realizing this, the script was changed to a Finite State Machine (FSM). This simplifies adding various systems to the player, such as grappling, and makes modifications easier because the different systems are separated into individual code snippets. This also facilitates easier debugging and team sharing. The combo/combat system, in particular, was a major problem to fix before the code was changed to FSM. The FSM system has many other uses. For example, when a player dies, Anubis will appear, which is triggered by the "PlayerDeadState" script.


Figure 1: The PlayerDeadState script is written to connect to the FSM (Player Controller System).
Figure 1: The PlayerDeadState script is written to connect to the FSM (Player Controller System).

Figure 2: Anubis will appear when the player dies or when the player restarts the game.
Figure 2: Anubis will appear when the player dies or when the player restarts the game.

Camera Systems

This project uses Cinemachine, a Unity tool, where the player's camera is split into two. The first camera, a third-person perspective camera called the Player Camera, tracks the player. This camera allows for adjustable FOV (Field of View) and uses a collider to prevent the camera from penetrating walls when the player is near them.



The second camera, called the Targetlock Camera, is used to lock onto targets when the player uses the middle mouse button. This makes it easier to lock onto and eliminate enemies when playing with a controller. However, there are limitations; enemies outside the player's range will not be locked onto. This camera can also be integrated into a grappling system. The Targetlock Camera also features a vignette effect when the player locks onto a target. Furthermore, switching between the player's and target cameras is smooth using the "DynamicDampingController" script, which increases the camera's damping.


Figure 4: Targetlock Camera on action

Cinemachine was also used to decorate video game menu by changing the camera and adding horns to show atmospheric scenes in video games.


Figure 5: Cinemachine was used to decorate video game menu

Grappling System

The Grappling system, or Grappling Hook, is designed to work with the player controller's script. It is a Finite State Machine (FSM) system, renamed FSMGrappling. This system works in conjunction with the Targetlock Camera and appears in the second phase of the game, where the player must use grappling to avoid damage from water.


Figure 6: Grappling system on action
Figure 6: Grappling system on action

This is not standard grappling aiming; it uses "Raycast" to detect targets. If the player is behind a wall, the system would not lock onto them. This system also integrates with Target Lock to lock onto enemies. Once a target is locked, visual indicators show the glide point. These indicators remain facing the player for clear visibility.


When the player presses Grappling, a visual connection displays a rope (LineRenderer), and the player is pulled. A "SmoothDamp" system ensures smooth movement. Upon reaching a certain point, the player will float for a short distance. The camera will lock onto the closest target, not the same target previously grasped. If a new player continues to grapple, they will fall until they reach the ground, at which point the Targetlock Camera will be deactivated, and the system will revert to the Player Camera.


This system also includes security features, or bug prevention. If a player grapples for too long, exceeding a set limit, a timeout will occur to stop the grappling. There is also a spam prevention system to prevent repeated button presses, and finally, a point cooldown. Once a player grapples to a certain point, that point's tag will be temporarily changed to "UnGrapplingPoint" to prevent players from grappling there again immediately.


Combo / Combat System

In the combat system, there are two main types of attacks: knife throwing and slashing enemies. Both systems work in combos. Starting with knife throwing, you have three knives. After throwing the last knife, the system starts a countdown to regenerate the remaining three knives. When an enemy is hit by a knife, it increases the hit combo value. As the combo increases, the system calculates power to grant two buffs: a Damage Buff that increases attack power by a percentage (+10%, +25%, +40%) per knife hit. Heal On Hit buff that restores health (+3, +5, +8 HP) per knife hit. This combo has a time limit, and when the time runs out, the combo resets.


Figure 7: Knife cooldown system

All information is displayed via a real-time UI. It is recommended that players prioritize hitting targets with their knives to accumulate combos and receive buffs (attack power/health regeneration), before engaging in melee combat to maximize damage.


Figure 8: Real-time UI and Combo showcase

Input system / UI

This project utilizes an input system to support players who prefer to play with a mouse, keyboard, and controller. It also simplifies the writing of the Rebind system. Furthermore, it can incorporate new systems, such as controller vibration, when the player takes damage. On the UI side, it allows for adjustment of music and sound effects using Unity's AudioMixer tool for in-game audio adjustment.


Figure 9: The input system used in this project.
Figure 9: The input system used in this project.
Figure 10: The Rebind system for keyboards and controllers.
Figure 10: The Rebind system for keyboards and controllers.

Information about the game

  • Release Date: 19 June 2025

  • Published on: Steam (Free to Play)

  • Tags: Souls-lite, PVE, Ancient Mythology, 3D Platformer


Tools Used:

  • Unity 2022.3+

  • HacknPlan

  • Github

  • Github Desktop


Steam Link: Click Here

GameX: Click Here



 
 
 

Comments


bottom of page