top of page
Forsaken is a Dark Messiah of Might and Magic inspired FPS Project intended to showcase my capabilities within the fields of Game Design, Technical Design and Level Design.
It was developed over the course of 7 weeks (half-time) at TGA in Malmö.
Establishing a First Person Template with an intricate melee combat system
Devising melee combat AI with enough reactivity and variance to make gameplay challenging and satisfying
Recreate the magic of Dark Messiah's first person melee combat as much as possible
Template - 5 weeks
Level - 2 weeks
Unreal Engine 5
Photopea & Photoshop
Creating interesting combat spaces
Showcasing the Template's features
Giving the Player some relevance within the gameworld through a simple narrative structure
I initially sought to craft a Dishonored-style experience, with an emphasis on stealth, magical powers and first-person melee combat.
However, the project would soon become a collaboration with two other talented level designers; Jonathan Mårtensson and Hannes Wäst.
Jonathan desired a Skyrim-style template with some basic swordplay, and I was happy to oblige, as I figured I could purpose the template for my Dishonored-style experience as well as help Jonathan craft his.
Hannes saw the potential of the Template and soon became interested in using it for his portfolio, and envisioned a level in which you play as a Dwarf.
Throughout the course of the project, I would take requests for gameplay additions such as these and do my best to implement them.
As the project grew, it started to resemble Dark Messiah of Might and Magic more and more, and I soon decided to scrap the Dishonored approach entirely.
My focus was now on creating a solid melee combat system, with emphasis on good feedback and an intricate enemy AI.
Creating the Template
Creating the Template
I set out to begin working on the template by formatting the Player's viewmodel animations.
This would give me a good base to build the combat on top of, as much of it would have to be formatted through the state machinery and animation notifies.
Showcase of the Player's viewmodel animations.
I wanted an animation set that was realistic and grounded, with a good semblance of weightiness without feeling clunky.
For the animation set, I created a variety of animations with the intent of providing functionality for:
- Heavy Attacks
Later during development, I added animations for the crossbow, upon request.
With the animations in place, I began formatting out the traces that would provide melee functionality.
With each attack animation, a series of CapsuleTraces are drawn around the Player's weapon, which deal damage upon collision.
If a CapsuleTrace is blocked, it induces a hit response animation on the Player. If a CapsuleTrace is overlapped, a hit animation is not triggered, but damage is still delivered.
This ensures that if the Player fights in close quarters, hitting geometry such as a wall does not cause the Player to produce a hit animation, which would interrupt combat and be unsatisfying.
This webbed mess is the State Machine driving the Player's viewmodel animations.
Showcase of the State Machine in action.
It was very important for combat to have a nice feel and flow, so emphasis on a proper State Machine was of the highest priority.
Each State and the blends inbetween are fine-tuned for optimal responsivity.
The Player is able to conduct light and heavy attacks, block, kick and fire their crossbow intuitively and satisfyingly.
I wanted as little animation locking as possible, and for Players to easily be able to queue actions and produce the expected output. The end result reached satisfactory parameters.
This function calculates the Player's Walk Direction, which factors into the type of heavy attack animation that gets queued.
This system emulates functionality from Dark Messiah of Might and Magic.
Block & Parry
These states provide blocking & parrying functionality.
While "Block_Enter" is active, the parry window is open. This will mitigate all damage, and stun enemies.
When transitioned into "Block_Idle", the Player is no longer able to parry, though the Player may still block enemies attacks and reduce damage taken.
Showcase of the Blocking & Parrying system in action.
Note how if the Player times their block with the enemy's attack, they will parry, and stunlock the enemy for a short time.
Also note how if the Player is blocking, there is an increased chance that the enemy will Heavy Attack. This breeches the Player's block and causes the Player to become stunlocked. Timing is essential.
The Player is able to engage their mighty foot, and kick enemies.
During combat, this will interrupt most enemy attacks, providing a valuable window of attack for the Player as well as pushing the enemy back.
If an enemy should stand close to a ledge, they will ragdollize and tumble to their likely doom.
Enemies take variable fall damage depending on their velocity upon impact.
They will stand back up after a time, if their ragdoll's velocity is close to zero.
A series of Traces dictate whether an Enemy is to be ragdollized, or not.
A backwards Trace is made, the length of which dictates the start position of multiple downward traces.
If three or more downward traces should not return a hit, it would indicate the Enemy is in front of a gap, and they will ragdollize.
Example of a kick not producing ragdollization due to the Enemy standing too far from the edge.
A wall causes the backward Trace to shorten, influencing the positions of the downward Traces.
A gap is produced to showcase how this system can allow the Player to kick enemies down gaps despite the presence of a wall.
The backwards Trace is also used to check for specific Actors, such as spike boards, which Players should be able to kick enemies into.
If a collision with such an Actor is registered, it will cause ragdollization.
The Player can use their crossbow to fire a bolt which lodges into geometry and inflicts a decent amount of damage.
A sneak attack with the crossbow instantly kills an enemy.
The crossbow can help give the Player an advantage in and out of combat.
Supplementing the combat is a brutal and satisfying Blood System, which helps gives the combat weight and viscerality.
Blood Atlas - Splats
Blood Atlas - WallTrickle 1
Two variants of blood trickling animations when a blood drip impacts with a wall.
Blood Atlas - WallTrickle 2
Two variants of blood trickling animations when a blood drip impacts with a wall.
Blood Atlas - Splats
Blood may drip onto the floor and form blood drip decals. If subsequent blood drips onto a blood decal, it increments the frame in a blood atlas texture and eventually forms into a pool of blood. This pool of blood scales up with each additional blood drip, up to a point.
The texture atlases which produce the effect.
This system helps produce some very brutal and satisfying scenes.
Should a blood particle impact a wall, it gives the appearance of trickling down the surface.
Largely inspired by games like Painkiller and Hitman.
Crates and Barrels can be picked up and thrown onto enemies.
Thrown items cause immediate ragdollization of Enemies, if their velocity is high enough.
This gives the Player another advantage in combat.
Barrels are destroyed on impact, rendering them a one-use item.
Awnings are large wooden platforms with two destructible supports.
When the supports are destroyed, the items atop of it come tumbling down.
If an unlucky enemy is located underneath, they will be subject to the onslaught of the falling items.
Spike boards are gratuitously satisfying elements, into which Players can kick unlucky Enemies and instantly kill them.
Upon killing an enemy, a constraint is formed with their ragdoll which causes them to stay impaled on the spike board.
Chandeliers can be suspended sideways and fastened to a nearby attachment point.
When the attachment point is attacked, it causes the chandelier to become physically simulated.
This will cause heavy damage to anyone who comes into contact with it, including the Player.
It was of utmost importance to create an Enemy AI that would be responsive, dynamic and challenging.
I desired to keep my scope simple, and create only one enemy type; centered around melee combat.
The AI needed to be tailored to the Player's abilities, as well as environmental influences that could change the flow of the combat, and allow for combat sequences to feel emergent.
NPC mesh provided by DJmaesen under the (CC BY 4.0) license
I keyframed out an animation set for the NPCs, intended to provide functionality for locomotion, attacking, dodging and hit reactions.
The rig used by human characters is created by me prior to beginning this project.
Showcase of the Enemy animation set.
The main Behavior Tree driving Enemy AI.
In their idle state, NPCs can either remain stationary, or patrol along a series of patrol points. They will stop for a variable time at each patrol point before moving on to the next.
If NPCs are alerted to the Player, by either sight or sound events, or by a nearby enemy becoming combat active, they will begin to engage the Player in combat.
The NPC's combat skill dictates how quickly they spot the Player.
If NPCs lose sight of the Player, they will after a while begin to search for the Player.
If the search fails, they will return to their idle behavior.
The combat assessor is the main task governing an NPC's combat behavior.
This task is responsible for reading the Player's inputs and distance to the NPC, and based on these variables, producing an appropriate combat action.
An NPCs combat effectiveness is dictated by the variable "CombatSkill", and is factored into the calculations to give NPCs a variance in their combat aptitude.
Inside the Combat Assessor.
This branch of the Combat Assessor is responsible for queuing combat actions, such as attacking, blocking or dodging.
The first set of checks produce some variance depending on the Player's distance from the NPC.
A second check is then done upon the Player's current combat action.
Depending on the Player's current combat action, a variable set of combat actions are queued by the NPC. This gives the effect of the NPC being intelligent and responsive to Player input.
Combat actions are undertaken via RNG, where an NPC's CombatSkill dictates how difficult a given roll is.
If a roll succeeds, the combat action is undertaken.
Here is an example of an NPC responding to a Player that is currently blocking.
The response is comprised of upward to three actions.
The most viable action for the situation
Fallback Action 1
The second most viable action, if the primary action should fail
Fallback Action 2
The third most viable action, if the other two fail
If all actions fail to queue, the NPC remains unresponsive for that tick.
This graph dictates a given Combat Action RNG roll.
This is what's responsible for whether an enemy undertakes a specific combat action at a given time, or not. In other words, it governs their combat effectiveness.
Should a Combat Action succeed, it is communicated to the NPC.
This is an example of what a "Light Attack" looks like when it is performed.
The NPC's walk speed is minimized, and an attack animation is played.
Animation notifies dictate when sphere traces are to be drawn, which upon colliding with the Player will induce damage.
The system comes together to produce a melee combat system that has variance, provides challenge, and is satisfying.
Creating the Level
Creating the Level
Lord Barruq's Manor
Heinous red magic threaten the lands of Yoris.
At its forefront; the deranged Lord Barruq conducts forbidden rituals inside his mountain home, attempting to manifest an evil triumph.
You are Urzul Gormog, hailing from the land of the Orcs. In the name of justice, you set out to rid the lands of this treacherous venom, before the corruption can spread.
Overview - Floor 1
For this level, I wanted a linear layout where the key focus would be interesting combat spaces, with little in the form of branching paths or variance. This would allow me to create a satisfying level within the time constraints that I had.
Most spaces are designed to be introduced immediately as combat spaces, with little doubt as to what the intended path is toward the next key location.
Sewers & Catacombs
The catacombs are filled with the ancient dead, residing deep beneath Lord Barruq's evil reign.
Urzul begins her journey in the sewers; the most viable approach into the manor.
She soon encounters one of Barruq's henchmen, and a prompt incites the Player to kick him to his doom.
An enemy meets his match at Urzul's hands. He has a low combat skill, allowing the Player to get a feel for combat easily.
Urzul braves the catacombs and ventures forth.
A prompt incites the Player to pick up some items blocking the path. They are taught that they may be used offensively during combat.
The dungeons are dark and treacherous, and Barruq's men are plentiful here.
A prompt incites the Player to destroy a few awnings. A hapless enemy is dispatched before this feature can be tested.
Urzul arrives at a guard's barracks, and fends off the assaulters.
At an underground intersection, a few enemies meet their match.
Barruq's defiants are tortured here, as punishment for their perceived insolence.
Urzul vanquishes Barruq's men, using the environment to her advantage.
Those brave enough to defy Lord Barruq's regime are jailed here.
The henchmen are no match for Urzul; victory abound once again.
Barruq's evil wine is stored here, said to be made from the blood of his many victims. It's probably just rumour, though.
Urzul makes herself drunk on the fires of battle, leaving the wine where it is.
Overview - Floor 2
The Player exits the underground and converges onto the Manor.
There, Lord Barruq, and the ensuing boss fight, lies in wait.
In the kitchen, an assortment of evil foods are prepared for Lord Barruq. Bunny roasts and Ortolan buntings are on the daily menu.
Urzul serves up a dish of vengeance, and slays her enemies with impunity.
The manor is where Lord Barruq makes his keep.
His reign is to be proven short-lived.
Urzul crosses the yard, facing little resistance.
Urzul battles her way through the manor, making use of a swinging chandelier to vanquish her enemies.
The time has come to end Lord Barruq's reign.
Upon her approach, a red magic barrier is erected around the ritual area, providing a spontaneous battle arena.
It's an epic battle for the ages, and with great skill and determination, Urzul manages to best the evil Lord Barruq.
With Lord Barruq's death, is ended the spread of corruption.
bottom of page