Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Citizen Pain | First Person Action Prototype in Unreal Engine 5

A topic by Alessandro "Ordnas" Capriolo created Mar 26, 2023 Views: 9,155 Replies: 197
Viewing posts 1 to 197
(1 edit) (+5)

Hello everyone! As a personal project in my spare time I’m developing a prototype of a first-person action game, project codename is Citizen Pain.

Here is a prototype on enemy mechanics. In the video I show some of the progress I made last month:




  • Added Lunge attack, triggers as a running attack;
  • Added Wild Swinging attack, as a follow-up to Lunge attack;
  • Added Hit Blocked Stun, a state in which the enemy’s hit is blocked by the player;
  • Enemy Hit animation;

This month I started making a greybox of the first map. I was inspired by the Boletaria level from Demon’s Souls, trying to understand how the gameplay mechanics are integrated into the level design:



I added rooms and passages, almost completed the stairwell leading to the first shortcut to the beginning of the level.

Added stairs, torches to illuminate dark areas, bridges, obstacles, and dangerous bridges without barriers where the player can risk falling if not careful about spacing during fighting.

Also in the greybox I am careful to make sure that the weenies are visible (the starting point, various buildings etc.).

Not barely halfway to the planned level, but I am already very happy with the result.

I will try to post updates weekly!

This week I continued to work on the level design.

I’m probably more than halfway through the planned level. I finished the second tower with the stairwell, and I had quite a bit of fun putting in areas with columns, torches to illuminate and guide the player, put in various props like barrels and boxes as obstacles and to make the room more interesting, and even a couple of balconies.




Also this month I plan to continue the level greybox.

I am building the second part of the level, where it will rejoin the starting point via a shortcut. I think I've gotten better at greyboxing. I'm hurrying a little bit and probably I am a little less consistent with the placement of props (barrels, crates etc.) so some rooms may seem a little more empty.

When I finish the greybox I'll have to place enemies and to set some traps, it will be a lot of fun and I'm looking forward to it, but for now I have to focus on finishing the level.

The map got quite big.

(+1)

Last stair tower in the map, it will be quite high, lots of stairs to place.

This past week I continued the greybox level design. I got to the final stages of my greyboxing, where all I need to finish is the boss room, and then I'll move on to iterate on the layout and enemy positioning.

I had fun making a very large hall with columns, made a bridge, put a last tower with stairs where it takes you back to the beginning of the level (and to the boss area), and place the usual lights to guide the player. 

Also in Unreal Engine thanks to Lumen is very convenient to be able to see the bounce of lights in dark areas right away, without having to do the usual slow bake lighting of static lights.

I also had to move a whole portion of the level to get the last tower to be near a particular area, but the fact that each room is a Group actor (each room is a group of walls, floors, lights and props), moving each room is like moving Lego blocks, it's very modular, and it took me just 5 minutes.

(+1)

And with the boss room I’m done with adding new rooms. It will be time to start placing enemies.

I had to fix the stairs because the AI can’t walk on the stairs (when I had started greyboxing I had made them too high).

Navmesh fixed!

This past week I continued with greyboxing level design, completing the boss room. 

I started placing enemies in the map. To test the mechanics of the enemies, I am recreating the Boletaria level from Demon Souls. I put in Navmesh and redid some stairs, as they were too tall and narrow and the default Navmesh would not take them (I made them at least 100cm wide and 0.25 high). I positioned the enemies and tweaked their sight radius (some enemies should not trigger from a distance, so as to catch the enemy off guard for example). 

 Next step will be to create destructible props so it can hide behind various things (enemies, secret passages, traps etc.)

Destructible, I add a fracture, to be blown up with a Field system when you hit it with an attack.

Placed destructibles in the level. Also implemented a simple enemy logic: if the enemy has an obstacle in front, the enemy must destroy it with an attack. Simple and effettive.

Greyboxing level design continues, this time with the implementation of destructibles. I made destructibles as fractures. 

They can be destroyed when the player attacks them. Same logic was done for enemies, with the addition that if AIs have a destructible in front of them they always have to hit it. Also, I changed the player dash again. I had lowered the dash speed since it was too fast, creating a lot of motion sickness. Prevously, to prevent motion sickness, I had lowered it too much and the dash was very boring. I raised the dash speed again, but this time eliminating the motion sickness by greatly reducing the dash time (from more than half a second to ¼ second), I was inspired by the dash in Doom Eternal. 

Faster dash could make you too much stronger, so I greatly increased the consumed stamina for dash, now you can't dash 2 times in a row, and you have to wait 1-2 seconds before you have the stamina needed to dash again. Also I tweaked the Lunge attack, since this also was creating motion sickness due to the combination of high speed and dash time.

I had to stop a bit with greyboxing, I have some performance issues to reach 60fps because of too many lights in the level. I am putting in various triggers for switching the lights only when the player enters the area.

(1 edit)

I am adding a new enemy, a soldier who shoots from afar.

I'm still implementing the soldier throwing arrows, fixing the arrow collider. I'm not sure if the size of the collider is right, a little too big.

I positioned the soldier with the crossbow, shooting the player from above while the 2 melee enemies attack the player. Also I placed a hole, there is a collider that kills on collision at the bottom when someone falls into it.

I’m adding new destructibles.

This week I stopped with the greybox to implement some gameplay things.

I added a new enemy, a soldier who shoots arrows from a distance. The arrows also destroy destructibles.

I also made some improvements to destructibles, including removing the collision with the player and enemies right after it's destroyed. Plus you can now destroy destructibles using dash.

I placed a hole in the level, where there is a collider at the bottom that kills the player and enemies.

I spent the rest of the time placing various destructibles in the level.

New destructibles: tables and chairs.

I am implementing a new enemy, the soldier swordsman:

Now the soldier can throw the firebomb:

More tweaks on firebomb throwing behavior.

This week I implemented a new enemy, the Soldier Swordsman. These enemies have much more health than the normal enemies. They have a chance to throw a Firebomb, which creates an area damage.

At the moment their attacks consist of two slow horizontal swings, and a side step where they can block player attacks (not implemented for now).

In addition, I created other destructibles such as chairs and tables, and placed them in the greybox level together with the Soldier Swordsman.

I added a health bar above the enemies, to show how much damage you do to them and how much health they still have left.

(+1)

Hi there, Alessandro(or Ordnas if you prefer!). This looks interesting indeed-is there a backstory to this game just yet, or is that still TBD? Either way, this looks like it could be fun. Will subscribe for future updates. =)

Thank you for your interest! For now no backstory yet, I'm focusing all on gameplay for now, ll definitely introduce a story later in development :)

Added support for showing multiple health bar, 3d widgets above each enemy.

I am implementing the Strong Attack. I did a lot of level design in my game that I forgot how much data I need to take into account for frame data.

For some frames I lengthen the weapon during the strong attack in order to reach farther range.

The strong attack does twice as much damage as the light attack, but it also consumes more stamina.

This week I devoted it completely to gameplay. I introduced a visible health bar above enemies, with a second yellow bar to indicate the damage of the last attack.

Also, I added a strong attack, which, besides being an attack with a higher range, does much more damage.

I need to finish tweaking the attack, as it's too safe for me, since you can charge the attack from a distance with a nice range. Probably the charge of the attack will happen during a small dash forward, so that it is more unsafe to use it.

Also, I made several tweaks to the enemy balance, changing the health of enemies so that the Strong Attack damage has a significant impact, and reduced the hitbox of some weapons since enemies tended to hit you a little too much from a distance.

I started implementing the backstab mechanic, to be triggered when the player is +/- 60 degrees behind the enemy.

Backstabbing logic implemented, including enemy damage. Need to finish other things, including animations and enemy throwing.

For now I’ve put an animation for the backstab, it’s temporary but for now it may be okay.

Added hit backstab animation for the enemy as well.

Tweaked the camera shake and decreased the FOV a bit during animation.

Today I’m going to start implementing the parry.

After the parry it is possible to frontstab the enemy. I was going to post a picture very similar to the backstab (but with the enemy turned instead of his back), so I thought I would do a series of screenshots with highlights.

I finally managed to post a new video about my progress! These weeks I implemented a couple of gameplay mechanics. I added the Parry, since in a serious combat system I think it’s an important mechanic.

The parry is active in the first 10 frames of the parry animation, in which any attack is parried, leaving the enemy in a state of knowback and possible counterattack by doing a Frontstab.

For the Parry animation, I edited an animation via keyframe inside Unreal Engine so that the player’s left arm moves to the left.

For the frontstab instead, I added some camera shakes, adding some forward-backward spring shakes, some rotational swings, and a slight camera zoom by tweaking the FOV.

Backstab mechanics, on the other hand, work similarly to Frontstab but must be done behind the enemy. To be valid, the player must be no more than 60 degrees behind the enemy.

So far I have used the same animation as Frontstab, but with an addition of an enemy throw. I don’t really like the enemy throw animation (a sort of a forward roll), I’ll probably replace it with a throw animation.

In the future I will fix the animation of the stabbed sword, I would like the hand to turn the sword in the flesh of the enemy, kind of like what happens in the Backstab animation of Demon’s Souls.

In addition, I changed the animation of the Hit Block knockback of the enemy, so that it is more distinguishable from when the enemy received a parry.

This week I’m returning to level greybox. I am placing a soldier who throws firebombs at you from above while you’re fighting a skeleton.

Placed one soldier firing firebombs from above, and another ambushing you around the corner.

I am prototyping a trap, a rolling boulder.

This past week I implemented the rolling boulder, one of the traps in the level. It's a cinematics instead of being a physical object, because I wanted full control over its movement.

Then I made a modification to the Soldier Swordsman, some soldiers are throwing firebombs instead of going at the enemy. They are often placed in high areas to endanger the player in certain areas.

I also made changes to some parts of the level, such as widening the stairs where the rolling boulder will have to fall and finished placing enemies in the first tower of the level, especially enemies that throw firebombs at you.

In the gameplay video I didn't include the rolling boulder since I haven't finished adding it in the greybox level yet, it will be for the next video.

Rolling boulder placed in the greybox level.

I start implementing a new enemy, the Soldier Spearman.


Attack animation for the Soldier Spearman.

Spearman’s lunge attack, has a very long range.

I finished with the Spearman, I start implementing a new enemy, the Knight.

I have included a new enemy, the Soldier Spearman. Compared to the normal Soldier, he has a spear that allows him to strike from a greater distance. He has 3 attacks: the Quick Jab, a Heavy Attack and a running attack.

In addition, I have started to implement another enemy, the Knight, but I am still in the early stages.

I have also added the Rolling Boulder in the Greybox map, moving it using a Sequence, and placed more enemies in the map.

I have fixed various various bugs, but I still need to fix some of them (also visible in the gameplay video).

The Knight during the Thrust attack animation.

Knight’s Heavy Attack. Compared to the Thrust Attack which has a 40% chance of performing the attack only from far distance, the Heavy Attack can be performed more often but only at close range.

Close-up of the Knight during the Swing Combo attack.

Added the other animations that were missing (like the hit stun). There is still a lot to do for the Knight, his moveset is more complex, as he is almost a mid-boss.

Launch animation after a frontstab, where the knight is thrown to the ground.

I start implementing stunlock, when an enemy’s attacks causes you to temporarily be paralyzed, leaving you vulnerable to consecutive hits.

I add the Stunlock to the Player’s FrameData datatable (110 frames of stunlock, Dash can cancel it).

Animation for the Stunlock, compared to the Parry I moved the shield more upward (than sideways) to emphasize the stun, and I will move the sword behind so that I emphasize that you can’t attack.

This past week I implemented the Stunlock: in particular cases (like when the player’s stamina is over), an enemy's attacks causes you to temporarily be paralyzed, leaving you vulnerable.
 
Stunlock time is about 2 minutes, but it can be canceled with a Dash (reducing the Stunlock by half a minute), so you can dodge some of the enemies' attacks at the last moment.

I put a slight camera shake and an animation where the sword and shield disappear on screen to emphasize the Stunlock.
In addition, I added a new enemy, the Silver Knight. It will be a kind of mid-level Boss, and there will be only one in the game.

It has 3 attacks: Heavy, Thrust and a Swing Combo attack. He often walks, but if the player gets too far away, he starts running.

It's not completed yet, I'm just finishing implementing a couple more features (like the ability to send you into Stunlock and the ability to heal himself when his life is low).

Silver Knight animation for the Shield Bash attack, which breaks the player’s guard.

Shield Bash attack.

Implementing the Heal for the Knight: once injured, he will try to heal.

Implemented Knight behavior that, if the player is too close, tries to back away before healing.

The Knight when advancing always has the shield up to block attacks.

Knight’s block with particles:

I am adding a Knight counterpart, which is more dangerous and uses spear and shield.

Winding thrust attack, powerful but slow attack, so easier to avoid.

Running spear attack that hit multiple times:

I continued to implement running spear attack, now it should hit three times in a row:

(1 edit)

I introduced a new enemy, the Green Knight, who is a stronger version of the Silver Knight, but uses a spear instead of a sword.

He has different attacks: a running attack where he strikes multiple times and a winding overhead thrust, which has a long but slow range, and finally a forward thrust.

Also, as with the Silver Knight, it shares blocking attacks with shield, a shield bash attack and a cure animation.

The block has a probability that it can be followed by a Heavy attack or a Shield Bash.

The Shield Bash is a shield attack that puts the player in stunlock. In this state the player can only cancel the stunlock animation with a dodge.

The cure happens if the Knight is with less than 50% health. The less health he has the more likely he will try to cure himself. The cure restores about 75% health. If he is too close to the player he will try to move away.

The cure animation is just over a second long so the player can hit him before he can cure himself. If he get attacked during the heal, the Knight will not try to heal after few attacks, and then he will try to heal again.

Also, I placed the Silver Knight in the Greybox map and tested it.

The Green Knight is ready to be placed in the level greybox.

I went back to iterate on the greybox level, I’m fixing the stairs since the enemies couldn’t walk on them (steps too narrow, navmesh didn’t like it).

Placed enemies in the first tower.

New enemy: soldier axeman. He is almost identical to the swordman, with the difference that he has more health and and hits harder.

(+1)

Soldier Axeman overhead attack.


New enemy: Knight with Claymore. He has no shield but does much more damage with every attack.

Overhead attack at the end of a 3 hit combo:

Placed Knight with Claymore in the greybox level:

(1 edit)

This weeks I implemented 2 new enemies.

The first new enemy is the Soldier Axeman. Like the Soldier Spearman, the Axeman is a variation of the Soldier that uses a battle axe with a shield. The Axeman has similar attacks to the Swordman but has slightly more health and an overhead attack that can perform at the end of a combo or while running. The Soldier Axeman can throw firebombs like other soldiers.

The second new enemy is the Silver Knight with Claymore. It is a variant of the Silver Knight. He does less damage and has less health, but has a greater attack range and performs an overhead smash attack, which if parried sends the player into stunlock. I made sure that if the player goes into stunlock the Knight can only perform a slow attack (like an Overhead) so that the player has time to perform a dodge at the last moment (the stunlock can only be cancelled by a dodge).

I also placed various enemies in the greybox level and fixed stairs inside the first tower, as the steps were too high and did not work well with the Navmesh,

There are a couple of visual bugs in the gameplay video (such as weapons staying in the air and animations getting stuck), which of course will need to be fixed. Also I need to fix the framerate, which I can no longer stay on 60 fps on my machine, it seems that there are too many enemies active at the same time in the level (I'm CPU-bound), I guess I'll have to optimize a bit.

I am continuing the placement of enemies in the greybox level.

I am beginning to implement an NPC, which will be encountered in the game. If you save him from enemies he will give you a reward.

For the NPC for now I will use a model very similar to the soldier (except for the cloak and different weapons).


Prototyping the behavior of the AI NPC. During patrol he can fight other enemies. I’d like to add some new animations for the NPC, but for now it is ok

(1 edit)

Enemies placed on the last bridge. There are many of them so that the player does not pass easily.

(1 edit)

I have implemented an NPC and some key features:


1. NPC Character:

   I introduced a non-playable character (NPC) into the game. This addition serves multiple purposes, introducing the potential for additional interactions within the game, making it more engaging.

 

2. Simple AI:

   The AI for the NPC is intentionally kept simple. It primarily involves two main functions:

   - Navigating from one point to another within the game world.

   - Engaging in combat when necessary.

   - The simplicity of this AI design streamlines development while still achieving the desired gameplay elements.

 

3. Mesh and Animations for the NPC:

   - Initially, I focused on setting up the NPC's mesh and animations. I opted for a mesh design similar to that of a soldier enemy for practicality, although it presented some minor challenges.

   - The NPC wields different sword and shield compared to the standard soldier enemy, signifying its enhanced strength.

   - I used a moveset identical to the soldier for the time being, though it will require modification. This change is essential to make the NPC a more formidable opponent, especially if the player chooses to engage in combat.

   - Implementing evasion maneuvers, such as dodges, is also on the to-do list.

 

4. Small Quest Involving the NPC:

   - I introduced a mini-quest where the player is tasked with rescuing the NPC from a group of monsters. Once rescued, the NPC proceeds with their quest.

   - I plan to incorporate dialogue or text-based interactions to provide clarity about the quest objectives and enhance the overall narrative.

 

5. Patrol Logic:

   - The NPC is programmed with a patrol logic. It will attack enemies if it detects them within its vicinity.

   - The NPC will turn hostile if the player attacks it excessively.

 

6. Continuous Level Design Iteration:

   - I have been consistently refining the game's level design, ensuring that it is engaging, balanced, and visually appealing.

 

7. Additional Traps and Enemy Placement:

   - I expanded the gameplay by adding new traps, such as obstacles involving boulders, to create diverse challenges.

   - I strategically positioned enemies within the game world to keep the player engaged.

I started to implement a very large enemy with the purpose of being an environmental hazard.

(+1)

I started to implement the logic attack of the environmental hazard

I am testing the flame attack hitbox and the aim offset of the head following a target. A bit worried about tweaking the fire particle, but I will think about much further into development.

The monster sleeps until you get close enough. When it wakes up, its startup is about 10 seconds before it attacks, so player can escape (the monster’s roar should make the hazard clear).

I placed the monster in the greybox map. I made it much bigger to make it more threatening from a distance.

Positioned enemy around the corner, in the Soulslike tradition. With that I should have finished the level placement for now. I’ll have to implement some levers that open doors.

Implemented lever and logic that opens the door. I reused a couple of prototype blueprints, it was simple enough. The lever is a bit ugly, but being a prototype it will do for now.

Added cinematic that starts after used the lever to open the boss gate. So far it’s just a simple shot with the door opening, nothing spectacular but it shows to the player which door has opened (since it’s away from the player).

I fixed the destructibles, which seemed broken after upgrading to UE 5.3. Resaving the blueprint seems to have fixed itself.

Over the past few weeks, I've implemented some gameplay mechanics, with a primary focus on the environmental hazard, which I had some fun, as it's represented by a massive monster.

 

1. Environment Hazard:

- The Environment Hazard is represented by a giant monster; I adjusted its size to make it appear threatening to the player.

  - This monster serves as a challenge to cross a bridge, taking inspiration from Demon Souls by populating the area with numerous enemies to emphasize that the environmental hazard can affect a broad area.

  - Deciding on the monster's size and position was a bit challenging. I scaled it enough to cover at least a third of the screen, creating a sense of threat without making it too large, which could become confusing.

  - The placement was also a decision point. I chose to position it slightly above and at an angle to cover the entire bridge with its attack. The distance is set so that its fire attack appears as a moving beam, indicating that it's mobile and can be evaded.

  - Currently, the monster cannot be killed, but I'm still thinking about it.

 

2. Environment Hazard Trigger Wakes from Afar:

  - I've implemented logic that allows the monster to wake up only when the player gets sufficiently close.

  - It remains in a dormant state to indicate that it's not active.

  - Upon waking, it emits a roar to signal an impending attack (sound to be added in the future).

  - There's a 10-second delay from the moment it wakes up to when it unleashes its fire attack, giving the player time to cross the bridge.

 

3. Fire Attack:

  - I haven't added the VFX for the attack yet because I want to focus on the logic first to save time.

  - I've included a debug red line to denote the attack's area.

  - The attack has a range from left to right.

  - It inflicts substantial damage, capable of eliminating enemies in a single strike, but not the player. However, it deals a significant amount of damage.

 

4. Door Lever Logic:

  - I've also implemented levers that, when activated, open previously closed doors.

  - Additionally, there's a logic for triggering a cinematic that I use to showcase unlocked doors that are far from the player's current location.

 

5. Boulder Trap:

  - The boulder trap triggers when the player is descending from an incline.

  - To escape the boulder, the player must run and reach a passage in the wall.

  - I'm not entirely satisfied with this trap, and I'm considering modifying it as there is a risk of it feeling a bit unfair since the threat comes from behind.

Started implementing the boss. It is very large, inspired by the iconic boss from Demon’s Souls.

This week I am optimizing the game, because I can no longer reach 60fps on my machine. Epic’s Paragon characters are very detailed but the materials are a bit heavy on my machine, I’m optimizing them (reducing effects you would only see up close). It is a slow process, but it will be worth it.

Optimization of the game will continue for this week as well. I am testing the asynchronous spawn of actors, now I don’t have the stutter caused by enemy spawn anymore. I still need to fix some minor bugs in the allocation/deallocation of actors.

By profiling I found about ten things slowing me down to reach 60fps, including Global Illumination (when there are more than 10 characters on screen Lumen starts to get a bit heavy on my machine), Temporal Super Resolution (I’ll have to switch to TAA), and a few Enemy Ticks to optimize.

I decided to move the Greybox to the Unreal default Level Template to be able to check the performance of the game with shadows turned on.
I must say that graphically it looks much better! Although I personally like to prototype with as few graphical effects as possible so that I can focus on gameplay (and not be distracted by the pretty graphics).

Improved performance of destructibles, decreasing the number of fractured pieces (from about 100 pieces per object to about 10-20 pieces) and continuous collision after fracture that caused intensive CPU usage indefinitely (solved by forcing fractured pieces to sleep so they don’t use the CPU after a while).

Boss prepares for a Spear Swipe attack.
I replaced boss weapon, spear instead of axe, so that it has a greater range of attack.
Attacking downward was harder than expected, I had to modify the attack animations to be able to direct the attack downward (since the Boss is much larger than the player).

Boss Spear Stab attack. It is performed when the player is far away. Tracking during startup animation is very long, so that the player must necessarily dodge to the side or back away.

Boss Spear Throw attack. When the player moves away and cannot be reached, the Boss throws his spear toward the player. The attack is very predictable, so the player can avoid it from a distance (hiding behind walls, dodging etc.).

Boss Back Jump attack. It is performed when the player stands behind the Boss. I need to finish implementing the backward movement, but so far it’s the easiest implementation among the Boss attacks.

Shield Slam attack. Boss will raise the shield and slam it on the ground, causing Area of Effect (AoE) damage. Performed when the Player is near the Boss. The attack can be avoided by doging away.

Added particle for Slam Attack. It’s not the correct particle, but it’s just to give a visual clue about the radius of the AoE damage. Although visually I find it nice.

(1 edit)

I started the implementation of the boss battle, intending to challenge the player as a final test to ensure mastery of the game mechanics.

The boss character is designed to be imposing, emphasizing its strength through high health and powerful, long-range attacks.

Boss attacks:

• Spear Sweep: The boss performs a sweeping attack with its spear when the player is in front, covering a significantly large area.
 • Spear Stab: Executed when the player is at a distance, this powerful attack has an extended targeting duration, requiring the player to dodge at the last moment for successful evasion.
• Spear Throw Attack: When the player moves out of reach, the boss resorts to throwing its spear toward the player.
• Back Jump: This move is executed when the player stands behind the boss, adding a surprise element to the battle.
• Shield Slam Attack: The boss raises its shield and slams it on the ground, causing Area of Effect (AoE) damage. This move is performed when the player is near the boss.

I may temporarily halt the development of the boss battle to return to it later, I need to focus on player mechanics and prototype some new gameplay elements.


I am implementing usable items, starting with potions. I put a temporary UI, an icon in the bottom left corner with text indicating the number of potions available.

The item icon overlaps with the shield (which why I had to put the icon a little bit higher), I don’t like it very much, I will think at a later time how to solve this problem.

(1 edit)

Added animation while using a healing item. I’ll have to put an item in the character’s hand, but I’ll do that later.

Added potion icon to be used in the game HUD. I think it’s better than the placeholder I was using before, it’s clearer that it could be a healing item. I would like to fix the edge of the window box because is not very visible.

I am implementing a new gameplay mechanic: the staggered and recharge healing items. There is a probability that the enemy, before dying, will go into a staggered state. During this state, the player can perform a frontstab to the enemy and recharge healing items if they are finished.

The probability of the enemy going into a staggered state is around 10%, but I would like to give the possibility to increase the staggered probability through upgrades.

I am experimenting with a modification to the backstab mechanics: it is possible to backstab only if the enemy’s health is below 50%. When it is possible to backstab, an icon appears on the enemy’s health bar indicating that it is possible to execute a backstab on the enemy (this also applies to frontstab).

I am introducing this to decrease backstab abuse and increase face-to-face combat. Also, backstabs refill potions, so it’s something that should balance the potion refill mechanics.

I am implementing a new ability: the Invisibility Cloak. This ability makes the character invisible to enemies. Invisibility is removed after 10 seconds or if the player attacks or is damaged. The skill can be recharged by killing enemies. I want to introduce this skill to give the player the opportunity to play in stealth, move to a more strategic location or decide to run away from enemies.

I am implementing a new gameplay mechanic: possession, an ability that allows the player to merge corporeally with enemies and control them. During possession, the player can use the possessed enemy and use its attacks against other enemies. The possess lasts 10 seconds or if the host dies, and the player returns to the original body.

I am adding a crosshair to be able to aim and cast the possession ability. The crosshair turns red when it is over an enemy. The crosshair contrasts poorly on light backgrounds, I’ll try adding shadow to the crosshair background.

I am adding an animation for the possession ability. During the startup of the animation the player has to aim at the enemy to be possessed. Startup takes a while, so it can be risky to activate it while an enemy is attacking you.

Since last month, I've begun implementing new gameplay mechanics:

Healing Mechanic:
  - I've introduced the use of healing, which restores approximately 1/3 of the player's health.
  - An UI indicator displays the number of healing potions available (starting with 3).
  - There's a startup animation before the healing takes effect.
  - Once potions are depleted, players can recharge them by executing a backstab or frontstab on an enemy.

Enemy Stagger Mechanic:
  - Enemies can go into a stagger state before dying.
  - Attacking a staggered enemy automatically triggers a frontstab (or a backstab), useful for recharging potions.
  - The probability of causing an enemy to stagger is low (around 10%).
  - Enemies remain staggered for only a few seconds, and if not attacked during this time, they recover. This can add complexity to frontstab attempts when facing multiple enemies simultaneously.
  - Upgrades will  offer the chance to increase the likelihood of causing an enemy to stagger.

Backstab and Frontstab Conditions:
  - Backstab and frontstab moves are executable only when the enemy's health is below 50%.
  - An icon appears next to the enemy's health bar to indicate its vulnerability to backstabbing.
  - This mechanic aims to mitigate the exploit of circling around an enemy and eliminating it with a single blow, encouraging more face-to-face combat.

Invisibility Cloak:
  - I've implemented the Invisibility Cloak, rendering the player invisible to enemies.
  - The cloak is removed after 10 seconds, upon attacking an enemy, or sustaining damage.
  - The cloak can be recharged by killing enemies.
  - This mechanic offers the opportunity to stealthily attack and eliminate enemies or skip an area (in case an enemy is too strong).

There are still more mechanics I plan to implement, including Possession (already in progress), where the player can control possessed enemies and use their attacks against other foes. I hope to showcase updates on these new mechanics soon.

Added Possession UI indicator in the lower left corner. Progress bar indicates how much time is left before Possession ends. The icons, like the rest of the HUD, are still work in progress.

Tweaked camera location for the enemy’s possession using a over-the-shoulder style. I think it’s the right camera if I want to use strafe movement, and visually the one closer to a first person camera, so that the transition between the main charater and the enemy is not too alienating.

Enabled possession for the Soldier Swordsman as well. Light attack triggers sword strike, while Heavy attack throws a bomb. Also disabled HUD items that are not needed/not used during possession (potions, stamina bar etc.).


I am continuing the implementation of possession. I just finished the Soldier Spearman enemy, where with the Light Attack command you execute the stab and with the Heavy Attack command you execute a sweep.

Possession of the enemy Knight. In the screenshot while I was attacking a Soldier I am about to be hit from behind by a Skeleton enemy.

I put in camera effects when you have possessed the enemy: zoom in to the enemy, color desaturation, and a green tint, to make it clear that you are in the Possession state.

For now I’m done with Possession, tomorrow I’ll start implementing a new mechanic taken from horror games.

The creature that will be featured in the horror section of the game.
To unlock the shortcut, the player will have to get past a small horror section where without weapons will need to escape from a creature. The horror section will be very much inspired by the scarier parts of games like Resident Evil and Dead Space.

Layout of the small horror section, a simple go from point A to point B, where you have to pick up an object at point B and bring it back to point A. The creature will at some point appear in the middle of the level and follow the player. The goal is to activate the elevator to escape, without getting caught by the creature. Passing the level will unlock the shortcut.

I tweaked the lighting to make the atomosphere more horror. The main mechanic works (creature chasing you and the player has to reach the elevator without getting caught). I’m trying to wrap up the prototype horror section as quickly as possible, but the temptation to add more stuff is always around the corner.

Operating the lever opens the elevator door. The door opens very slowly as the creature will come closer and closer to the player. I am implementing this mechanic to increase the tension before the end of the horror section of the game.

I am implementing the Level Up UI screen (in the screenshot still work in progress).

Level Up is available as an option while resting at the hub area. When leveling up, one spends accumulated souls to invest points into one of 5 stats. They can be increased up to a level of 3.

I am continuing the implementation of the Upgrade Stats UI screen. I added buttons to increase parameters, various info about owned souls and costs, and animations to open and close the UI screen.

Linked the Player Stats UI screen to the Player Stats component, so that increased stats are saved in the Player. Also reiterated on the UI screen graphics (icons, text etc.). Next I need to implement the Player parameter level logic (so that if Vitality is at level 3 the player has more health).

I am implementing the Skill Tree UI screen, that features both passive and active abilities. Players can unlock abilities, but they must have enough Special Items to apply the ability. Each node enhances additional stats and grants various effects, such as increasing the maximum number of Potion uses, expanding the Possession ability and many more.

In the Skill Tree UI screen, I added a window in the lower left corner with skill information when selecting a Skill Tree node. Each node has an Ability ID, so you can easily find all the info about the ability (e.g. text description and texture image).

I have implemented side quests, these are given by NPCs. Sometimes the side quest will be collecting items, other times it will be killing a particular enemy. The NPCs have a friendship system, which increases with the completion of the side quest. If the friendship is high enough, the NPC can help you during a boss fight.

I implemented a small Dialogue Manager, when you talk to a character it shows the text of the current dialogue. During dialogue the controls are locked (as opposed to Souls-like where you can move the character freely), in first person in my opinion it’s preferable but I might change it. Initially I didn’t plan to implement any dialogues, but with the introduction of side quests it was almost obligatory (otherwise the player doesn’t understand what needs to be done).

I am implementing the Player Inventory screen. It has 2 rows, one for usable items, and one for important items for quests. Under it I’ll have to put a window with the name and description of the highlighted item.

In the inventory I added a description text on the highlighted item. In addition, the effect of consumables is briefly described (under Use Effect).

For now I am done with the UI, this week I will implement the last new mechanics of the game, it will be complicated but let’s see what comes out.

I am implementing a new gameplay mechanic: the character’s health affects the weather conditions and will have an impact on enemies. The lower the player’s health, the worse the weather conditions will be. For example, the player will be able to use traps that would only work if it is raining, and lightning could fall on enemies. This introduces a risk-reward mechanic, so that the player could be pushed to stay low on health and take advantage of the weather.

First prototype of Weather System linked to Player Health. The lower the Player Health, the worse the weather (up to heavy clouds and rain). Next step will be to add lightning that can strike enemies and hazards dynamically created by rain.

I am implementing the slippery puddle, a trap for enemies that appears if it rains. If an enemy runs over it, it goes into stagger. I’ll probably leave the testing blue mesh for now, as I have a lot of other prototypes to do (e.g. lightning falling on enemies).

I’m iterating on a new greybox level, which will replace the testing greybox I’ve been using so far. It’s a citadel, so there’s town surrounded by the castle walls and there is the fortress at the top of the hill. For the design of the streets and squares as references I am taking inspiration from games such as Bloodborne, Dragon’s Dogma and Lies of P.

I’m currently focus on the spatial communication of the Citadel, iterating on how to motivate player movement.

For example within the market square, exits aren’t immediately visible due to the maze of market stalls obstructing the view. Players are forced to navigate the space actively, uncovering more information as they explore and mentally chart the area.

As they walk to the other side of the square, a clear exit is revealed. This different perspective allows for strategic planning, enemy spotting, and anticipation of rewards, making exploration less boring and giving a reason for exploration.

The greybox reiteration of the new level continues. I completed the lower part of the citadel, consisting of the town. The player, starting from the main gate in the lower area, must make his way through the city streets to reach the castle in the upper area. The next step is to create the castle rooms.

Fight combat against 2 Skeleton enemies. Destructibles can be useful as obstacles against enemies and be able to manage spaces better. In the future I'll have to do a pass on the destructibles in the boxes, they don't always shatter completely.

Fight against Soldier enemy. Strong attack and parry followed by a front stab. I love parries in action games, so I'm glad I included it in my game.

I’m starting the level design of the castle, with the walls and the shortcut tower that takes you back to the bonfire.
As soon as the player starts the level, the castle is shown in the distance to give the player a clear objective. Weenies (in this case the castle) are little clues to tell the player where to go.

The level design of the castle is progressing quite fast, although it will take me all month. I’ve completed the left side of the castle, the garden area, where continuing will lead to a plaza where you’ll have the choice of climbing the walls or entering the dungeon.
Sometimes I waste a little too much time on the aesthetic details, I shouldn’t since it’s a greybox, there will be time for that when I put in the real environment.


The Green Knight is one of the strongest enemies in the game because of its high damage. This knight can be too strong to fight at the beginning, as will easily kill you in 1 -2 hits. However I will still have to reiterate on the enemy, movements are still a bit too predictable.

I’m doing the stairs going down into the dungeon. I like that they are narrow and go downward to give a feeling of tension as you go down (there will be torches on the wall since it will be dark).

In the second screenshot you can see how I placed the slanted ceiling, I tried to keep the same distance from the floor. I placed it a little quickly but it will be done more carefully when I put the models in.

I am continuing the level design of the castle greybox. I put up the section of the castle walls. I’m leaving out a few things (missing floors and walls), I will fix them when I put the environnement.


Fight against Soldier enemy. Destructibles can restrict player movement, in these cases breaking them (e.g., using a dash) is a good idea to get more space.

Almost finished the level design of the last rooms, the greybox is coming along quite well. I almost finished the main square of the castle and the section of the castle wall.

The heavy attack does a lot of damage but the startup is slower than a light attack. There is a small chance that the enemy get staggered, it is an opportunity to be able to make a front stab.

Fight against Skeleton enemy. Often the best strategy is to block the enemy’s attack and take advantage of its knockback recovery to do a back stab. I still need to finish adding and polishing the animations (so some enemy recovery animations are incomplete).

Using Possession Ability the player can take possession and control enemies. Enemies will attack possessed enemies, so we should be careful of other enemies around. I'll have to keep working on many of the enemies' animations, during Possession these come out a bit broken.

Today started the facade of the gate leading to the boss’s room. Also fixed some broken things in the level like the gate that unlocks the shortcut. I was a little tired today so I didn’t make much progress.


Fight against a Soldier enemy. After a Heavy Attack, I do a back dash to avoid its attack and then perform a Lunge Attack. On its last attack, I perform a parry and a front stab to finish it.

(1 edit)

Fighting a Skeleton enemy. If the Skeleton is some distance away it could perform a running attack. I blocked its attack and took advantage of its recovery animation to go behind it and do a back stab.

I continued to iterate the blockout, the level design is at a good point. I did the corridor leading to the boss room and finished the castle facade and other rooms. After almost a year of greyboxing, I can finally start the first art-pass.


Some enemies drop rare items when they are killed. The gems are used to unlock abilities. At the moment, the knight animations are still prototype, should be fixed at a later time.

I am starting the first (of probably many) art-pass, focusing on the level opening. Placed floor, sidewalk, buildings and some crates. The street pavement material, although I find it nice, I think I will change it to something more rocky blended with mud.


The possession ability is also useful when there are too many enemies; one strategy is to possess an enemy and use it as bait. I will have to work in being able to cancel the possessed enemy’s attacks, at the moment the combos do not work as they should.

I am adding the art assets of the stairs leading to the square. I also iterated on the floor material, I did some vertex painting using a stone pavement, a soil mud and a mossy stone as materials. There is some repetition in the floor, which I will fix by placing some plants growing between the tiles, pieces of tiles coming out etc.


I’m focusing on the plaza, I added a fountain with a statue on top and some stairs. Also I am experimenting with various floor materials, I am trying some stone tiles with some displacement, I like the tesselation it creates. I would like to try soon some decals like ground and plants.

Maybe right now the floor is a little too defined compared to the rest, I’ll have to make the buildings and the props more defined otherwise it might clash with the style.


When there are many enemies, strong attack can be useful to hit more enemies in a straight line. One must be careful not to miss the target, as the recovery time of the strong attack is very high.

Enemies have slight tracking during the attack, so that it is not too easy to avoid the attack by going behind the enemy. The tracking is only on the orientation of the attack and not on the distance to the player, so spacing is an important element in this combat system.

I am continuing to add 3d models, I placed the gate with stairs leading to the upper part of the city and a square with a fountain. I’m also experimenting with a different lighting, a different sun orientation and a higher intensity, I think the warmer colors go better with the walls and floor. However the floor is too flat and I’ll have to fix it with some modeling.


I am continuing to place mesh to replace the blockout, adding one of the last areas before the castle, such as 2 indoor areas and a few roads to the castle. The more I continue, the happier I am to see my blockout turn into a medieval town, but on the other hand, I’m starting to worry about the amount of work that will await me in making it polished, it’s going to be tough.

Archers are weak enemies, you defeat them with a few attacks, but they can prove troublesome when fighting other enemies.
When enemies are many and health is low, the invisibility cloak can prove useful for an escape.

Fighting against 3 enemies. Spearman Soldiers can attack from a distance and have a wide range of attack, which makes them very troublesome especially if there are more than 1 of them.

I started placing the 3d assets of the castle on top of the citadel, starting with the walls. It’s very nice to see the castle no longer as a blockout. The castle is going to challenge me quite a bit, like placing assets in rooms and underground dungeons.

It's a good strategy to use Heavy Attack to hit multiple enemies at once. Also, Heavy Attack has a higher attack range, which allows you to attack enemies from a long distance. You just have to be careful to take into account the high recovery time.

I am focusing on placing the 3d assets in the initial area of the castle. Here the player can take different paths, for now I’ll focus on the one that leads to the first shortcut. Doing the interiors has its challenges, adding walls and floors without messing up the rooms next door makes me busier than when I was doing the streets in the citadel.

Today I did a performance optimization pass, including lowering the sampling quality of volumetric clouds and reducing the quality of global illumination. I can again stay around 16.6ms /60fps on my target machine (i5/RTX 3060 at 1080p). Also for aesthetic tweaked the lighting to make it brighter and also tweaked the fog since it was blocking the view too much.

I am adding 3d assets in the castle area. I changed the layout of the original greybox a bit to fit the stylistic side of the setting, it doesn’t affect the gameplay so I think it was a good decision. I’m changing a little bit the workflow of how I’m placing the 3d assets, so for now there might be a difference in the detail between the castle and the city, I’ll fix it in the next art-pass.

(1 edit)

By using the Invisibility Cloak I can make myself invisible so enemies don’t detect me. It’s useful when there are enemies in the rear, for example soldiers equipped with crossbows. I need to remember to update that enemy character model, it’s currently a placeholder.

Often using Possession Ability as the only way to kill the possessed enemy can be a good alternative strategy. The slowdowns you see in the video were before the optimisation, they don’t happen anymore fortunately (for now).

I am focusing on the last section of the castle garden. This square is larger to accommodate 4 enemies without restricting the player’s movement, as this is not intended as a difficult combat.

Fighting a skeleton enemy. They are among the first enemies you encounter in the game. If they see you from a distance, they start running and perform a running attack. Relatively easy to kill when alone, they are not to be underestimated when there are many of them.

I have finished with the dungeon for now, replacing most of the dungeon greyboxes with 3D assets. The dungeon covers a good part of the area below the castle. Compared to the greybox I decided to raise the ceiling of many rooms but fortunately I did not encounter any major problems as overlaps with other rooms.

The Silver Knights are the first enemies that can give the player a hard time at the beginning of the game. Their attacks can kill the player in a few hit. A good strategy is to strike them from behind, for example by using the invisible cloak skill.

I placed the 3d assets of the part that takes you to the high area along the castle wall. There is an enemy soldier with a crossbow at the top who shoots the player on sight. There are covers along the way where the player can take cover from the arrows.

In indoor areas the brightness is low, so I added a small light around the player, very similar to the light in Dark Souls. I’ll probably remove it, in a first person view it doesn’t look good especially if you have an enemy in front of you, the light illuminates the enemy in an annoying way. I’ll place more torches to increase overall visibility.

An enemy soldier throws firebombs from a distance. The way to the enemy is blocked by boxes, which makes the enemy harder to reach.

Fighting a Soldier Swordsman is more complicated with a Soldier Spearman performing ranged attacks. Performing a strong attack can work but you have to aim accurately to avoid missing. When I shot this video there were many rooms still in a greybox state.

I fixed a problem with lighting, where in build the lighting was much higher than what I was seeing in editor. I found that it was a problem related to the volumetric clouds, I removed them since they were a bit too heavy for performance anyway. I will be working on the castle again soon, I am in the final stages of the first art pass.

Axemen are a variation of soldiers who fight with an axe and shield. The main difference is that they have more health and do not go into stunlock if you block their attacks. Only parry can make them go into stunlock.

Possession is a useful skill when there are many enemies. You can possess an enemy to use it as bait and gather enemies in one spot and then attack them all at once.

I’m focusing on the wall area, where the player will have to walk to reach the top of the tower. I was thinking of adding a boss battle at the top of the tower. I still have to finish writing the game script, but I already have clear ideas about what needs to happen in this section.

The backdash can be followed by an attack so that a lunge attack can be performed. It can be used to avoid the enemy attack and attack immediately afterward.


(+1)

This week I am focusing on implementing some VFX, starting with the Bonefire. I’ve been tweaking the fire particles, especially the lighting intensity. A bonfire produces lighting intensity in the value of between 10,000 and 50,000 candelas. I used these values to get a more physically realistic illimination.

This week I am focusing on the UI. I am implementing the main menu. I added some logic such as highlights on mouse-focused UI elements and some transition animations between the main menu and loading screen.

One of the traps in the game are the rolling boulders. Besides hitting the player they can also damage enemies. For now, the rolling boulder is in the prototype stage, it has no textures and collisions still have some problems.

Today I am focusing on the UI Options menu. Among the things implemented are the Tab Selector at the top of the page and a runtime creation of list entries from a DataTable. The page is still placeholder, there are graphic things to adjust (like colors, slider shape etc.)

Blocking, like attacking and running, will consume stamina. Blocking an attack that empties your stamina will break your guard and temporarily stun you.


Fight against 2 spearman soldiers. Their sweeping attack has a wide range but is not very fast. Since there are 2 of them better to use a dodge to avoid being hit.

(+1)

Prototyping a section with various enemies. The soldiers throwing arrows are protected by the soldiers in front. This makes them difficult to reach unless the soldiers in front are eliminated first.

I'm testing various environments for Chapter 2, right now this is the one I like the most because of the composition and it conforms to the game's story. I am also experimenting with implementing a Perfect Block (like in Stellar Blade) and some tweaks for the enemies.

I have yet to bring the various lighting and VFX tweaks I made to this new map. What do you think so far? Do you like the environment?

I went back to one of my old environments, tweaked the lighting and added a hitstop on the parry.

In my opinion visually it is better than my previous video. What do you think?

I replaced the skeleton enemy with a new character since the pirate theme didn’t quite fit the game’s overall vibe. Visually, I think the new design is on par with the pirate (though I was a bit attached to him, haha).

What do you think? Does this one work better, or did you prefer the pirate?