top of page

Third Person Shooter

“After bonding with a mysterious power you’ve been taken to a secret test facility and prodded by scientists. Use the newfound power to escape, at any cost.”

About the project

This is our seventh group project, second game we make using our engine. Our reference game was Max Payne 3.


Production time:

  • 14 weeks 50%


  • Group Engine "Dog Engine"

My Contribution

- In this project I made all the AI. We have two offensive enemies that want to kill the player and one passive that roam around and panic when the player come to close.

- Keycard feedback in hud.

Black Ops and Hazmat Suit

Patrol Points

All enemies has a container with a zero to x amount of structs. The struct contains a position of one patrol point and a bool stating if the enemy should stop and idle at that point for a while. The ememy uses these positions in order to move around.

Tactical And Shooting Points

When the player aggro the enemy, the enemy will chose one tactical point that is not in line of sight of the player. The enemy then runs to the point for cover. Close to all tactical points are x amounts of shooting points. The enemy will chose the one closest to the player that has line of sight. He will alternate between the shooting points to get the best shooting position as possible.

Placement for Points with Raycast on Plane

cover & shooting points

We use a raycast on plane tool to place positions in the world like patrol and tactical positions. To determine the height of the plane we use a slider in the editor. After raycasting we can drag and drop the position.


The enemies use raycast bullets. Raycasting a short distance forward at a time until it hits something. The bullet spawns at the "weapon" joint. The weapons are data driven so we can adjust the size of the shoot burst, bullet trail, muzzle flash, etc.To simulate the bullet trail I scale a cylider mesh, that has a shader, between the weapon joint and the bullet position.

When a bullet hits an obstacle it spawns a bullet hole decal and a dust particle at the hit position.

Squad Features

Enemies in groups are a squad. Placing them through the editor we can group them. They will then react together. Shooting one enemy will trigger them all.

Lab Coat


Using squad ids we can despawn and spawn different groups when the player enters certain trigger boxes.

Here you can see our Lab Coat wandering around.

The Lab Coat has a square infont of him where a random position is spawned to were he will go. He has an adjustable circle in which he has to stay inside. 

Idle and Panic


The Lab Coat runs in panic to his panic point were he begs for his life.

When the player gets close to the Lab Coat he tries to run away. He runs to a panic point, "yellow sphere", which is placed in the editor. 

PollingStation Component

Instead of having a singleton polling station for the whole game, I used a polling station component. There can only be one per scene of that type of component. The idea is that you can have a set of unique settings per scene.

I used it to get specific data for our enemies, for example player position and to activate different group commands.

The component has all the tactical points so the AI easily can get the closest one. Such a thing as tactical points is good to have in a polling station component , because they are unique to the level that you are in.

It is possible to set out different areas where it will spawn or despawn different enemy groups.

Event system

I also used some kind of event system to tell enemies when special things happened, for example when the player died.



Normal Bakery



  • Filip Tynell

  • Jesper Jöneros

  • Jonathan Salling

  • Markus Nilsson Robert

  • Simon Broqvist

  • Viktor Back


  • Jacky Coh

  • Rebecka Karlsson

Graphical Artists

  • Alexander Molested

  • Alfons Nordblad

  • Teddi Andersson

  • Ditte Frederiksen

Level Design

  • David Haddad

  • Marcus Svensson

  • Svante Liven

  • Alfred Carlsson

  • Andre Johansson

  • Leonard Cronholm

Sound Design

  • Alfred Carlsson

  • Ellen Jacobson

Voice over

bottom of page