Hey folks,
During March and April we've been working on:
- shooting
- picking up and moving bodies
- enemy AI
Shooting
Despite how easy it might sound, these are the things we had to take care of:
- is it trace or projectile?
- how to make a big weapon not clip with the character model
- should the trace go from the actual muzzle or from the third person camera
- what about a camera shake for impact
- what about vfx (and why doesn't it work properly?)
- should you go into melee combat while having a gun when the enemy gets to close, and if yes - what happens to the gun
etc
So far the technical side of the shooting works, what's left is to add hit reactions. Without them it's hard to understand if it's a hit or miss.
Early iterations:

Later iterations:
Picking up bodies
We did it. And then we decided to switch to a universal animation library for all the characters, and it broke the feature completely. So we'll have to do it again.

At early stages of development it looked hilarious.
Enemy AI
One of the biggest systems we worked on so far is the AI re-make.
We did have an AI module before via UE blackboards, that already had sight and sound detection. However, we encountered some inflexibility of the system (and bugs) that didn't allow us to implement a more complex AI behavior.
So we switched to a State Tree:
Detection Meter

The scheme above is an NPC guard's field of vision in Kvasir, represented by colored zones and associated states:
Alerted State: Closest to the NPC is a small red zone indicating the "Alerted" state. If the player enters this zone, the NPC becomes immediately aware of the player's presence.
Investigation State: Beyond the red zone, there is a larger yellow zone that triggers the "Investigation" state when the player enters it. This state is likely less aggressive than the "Alerted" state, suggesting the NPC is suspicious but has not yet confirmed the player's presence.
Investigation Gauge: At the periphery of the NPC's vision is the green threshold, which is the trigger point for the "Investigation Gauge" to begin filling. This suggests a mechanic where the NPC becomes gradually more suspicious the longer the player stays in this area. The closer the player is to the yellow zone, the faster the Investigation Gauge fills up, increasing the risk of detection.
Visibility Impacts NPC Thresholds: factors like lighting or the player's stance (standing, sitting, running, etc.) would affect how easily the NPC notices the player.
This is how it ended looking under the hood:

Our early mockup of state visualization for enemies (when a certain state is active):

And the in-game implementation. It's pretty cool that we can now play animation on switching states - as in this case the guard let's out a small ghasp.
Waking up stunned opponents
Another thing we did in this iteration is the guards are finally able to wake up each other (placeholder animations).

We studied player feedback on MGS and Splinter Cell AI complexity, and we're looking forward to making AIs smarter in how they react to threats, also based on their class in future iterations.

That's all for now. Stay tuned for more updates next month!
[ 2025-04-23 09:52:29 CET ] [ Original post ]