top of page
Ember Point Logo.png

Ember Point is a combat-focused, third-person action game. Play as a disgraced defector from a militaristic mega-corporation, Gravitus, who is stuck cleaning up the terrible mess his former employers left behind — all while wielding a top-secret “cure” for a gruesome disease. I am the combat, enemy designer, and gameplay programmer on this. It is also my college capstone project. 

Platform |  PC                                     Engine | Unreal Engine 5          Duration |  Sept 2022 - May 2023          Team Size | 11
Playtime | 10 Minutes                         Download |
 Link                        Roles | Combat & Enemy Designer, Programmer              


  • Led the design and implementation of gunplay, melee combat, cinematic executions, and camera behavior using animation montages and Unreal Blueprint.

  • Took ownership of Vulkan boss battle implementation and designed all close and long-range attacks.

  • Designed and scripted all enemy archetypes and behaviors in collaboration with level designers to create intense encounters. 

  • Adjusted various attack animations to match combat's theme and tone in-engine by focusing on frame data. 

  • Prototyped a system that detects the direction of player attacks, and hit-stop values for responsive directional enemy hit reactions. ​​

  • Designed and implemented wave gun from concept to completion. 

  • Collaborated with the audio designer on player and enemy attack sounds. 



Let’s start off by discussing Ember Point’s melee combat and the intentions behind it. Our goal was to craft a gruesome grounded combat system inspired by God of War 2018, we wanted to encourage a combination of ranged and close-quarters combat. The biggest challenges we faced were the camera system, enemies, and melee combat.



I personally wanted to challenge myself since I had been working on traditional stylish action games that were Devil May Cry inspired; most of the feedback I received regarding my projects involved my approach to camera work. I was eager to branch out by testing a new third-person camera that seamlessly transitioned between aiming and close-quarters combat while also responding to its surroundings. 


My process went as follows: 


  • Determine the character's aim and idle states using a state machine for seamless animation transitions and locomotion.


  • Consider the field of view, and the speed of transition from the combat camera to the aiming camera. 


  • Behavioral interactions when colliding with walls or objects. 


  • Study influence of movement-dependent camera on melee combat


We first need to visually and responsively communicate the difference between the combat and aiming states. I prioritized setting up a state machine and two animation blend spaces to allow the player to transition between states using a boolean check. That boolean check is determined by holding the LT button; if the button is held, then the player is in an aim state; when released, we’re in our combat state. The graph looks a bit complicated, but I just want readers to pay attention to the “Idle/Run” and “Aim Idle/Run” states. Both states also determine movement speed. All speed values are public for me to tweak in order to prototype rapidly. 

I then had to consider the camera transition between both states. To alleviate the over-utilization of different cameras, I manipulated the player character’s spring-arm component to be located to the right of the screen. This solves two issues:


  • Players will be able to identify enemy reactions when performing melee attacks, resulting in fewer visual obstructions. The back of the character doesn’t block the enemy. 


  • Designers can depend on one position rather than a second to set the field of view when aiming. Meaning we can just control one parameter rather than translate the camera to a different position. 


Finally, I scripted a timeline that determines the rate at which the camera zooms into the player; timelines are powerful since they help increment or decrement float values over a period of time. Our current camera takes 0.25s to zoom into the desired field of view. 

CameraBoom .png


I was responsible for implementing all gunplay and melee combat, so let's get into the nitty-gritty. The wave gun has two firing modes: a heat bullet and a wave bullet. Many factors must be considered to ensure we are nailing our game feel for the wave gun in general: aiming, distance, and damage values. ​

bandicam 2023-02-20 13-17-19-631.png

Let's start with aiming; one of the essential factors behind well-designed ranged combat is user experience. Usually, third-person shooters have a UI reticle in the middle of the screen — many games like Gears of War and Uncharted use this approach. However, while in aiming mode, Ember Point takes inspiration from Resident Evil 4's laser sight, accompanied by Dead Space's movement system. Part of what makes Resident Evil 4 scary is the field of view on aim; it is so close that Leon's head and weapons obstruct most of the screen's boundaries, leaving players unaware of their surroundings, adding that with Dead Space's ADS movement gives leeway for players to distance themselves from enemies since they move tremendously quick in our game. 


Wave Gun Actor 

Aim Animation with re-edit bones in-engine

The Wave gun is a separate actor created with its logic. It contains a cylinder component with an emissive material to imitate a laser and an end-point particle. The end-point's location is determined by a ray cast which fires every frame and will translate at the site where the ray cast has been hit. Therefore, the end-point will constantly reposition itself wherever the ray cast hits. The wave gun actor is attached to our player character's hand socket as a child component and is rotated or translated to our liking to match our game feel goals. Since our wave gun is attached to the hand socket of our player character's skeleton, I realized it was essential to also edit our aiming animation's spine bone in-engine to match the position of our laser sight to be in the center of the screen. 

Our intended target audience for Ember Point is fans of third-person action games like God of War and horror shooters like Resident Evil 4 or Dead Space. Still, we needed to offer accessible gameplay features to audiences interested in these genres but have never played them. I had to consider that some beginners might have difficulties dealing with enemies.  I programmed an aim assist and implemented a large collider sphere so bullet shots could still be detected slightly out of bounds. The aim assist uses the raycast logic I discussed previously but will snap to the target depending on whether or not it hits the collider sphere for a specific duration; the collider sphere is essential since it also makes shooting enemies a bit easier since they move pretty quickly. After implementation, I focused on making sure things felt accessible, and easy to use. 


Now let's get into the distance and damage values; since I was also responsible for programming the gameplay, I did my best to create highly versatile tools for both the wave gun's projectiles -- the heat bullet and the wave bullet. Our gunplay values are all driven by editable variables in our player character, and they help us control many factors that drive the heat bullet's behavior and feel. The values control the following: 

  • The bullet's radius. (we are using a spherical and elongated ray cast to have more lenient hit windows)

  • Shot length (to what extent should our shot's distance be?)

  • Cooldown (how repeatable is it per x seconds)

  • Damage 

  • Ammo loss amount 

When initially testing these values, many playtesters didn't bother using the heat bullet of the wave gun since it wasn't inflicting enough damage on enemies. So we had to consider making bullet shots stronger, longer, quicker, and more costly on the player's energy meter. 

bandicam 2023-02-20 16-33-12-503.png


I'm working hard on polishing melee combat and enemy AI. I'll add additional documentation to this page regarding these two critical areas. I thought I would write down how I implemented the wave gun and its overall aiming properties since this was my first time working on gunplay. 



bottom of page