OVERVIEW
PASSING GATE is an action adventure 3D-platformer. The player will be face diverse platforming challenges, wielding a new and unique toolkit for each of the game’s levels.
Engine: Unreal Engine 4
Team size: 6
Time in development: 4 weeks
Genre: Action Adventure Platformer
MY CONTRIBUTIONS
AI PROGRAMMING
My main responsibility during this project was to develop the enemy AI. I started programming the AI during the second week of development, and wrapped it up two weeks later. This task took up most of my time. Because I had limited time to develop several AI I opted for Unreal's Character class as a base for the AI, which adds some basic out of the box functionality to build upon.
CODE SAMPLES
SNIPER
After looking at different solutions I found that the Environmental Query System (EQS) would be my best bet to make the sniper position itself well given the limited development time. EQS is a system that the AI can use to query the environment given a certain task, and then calculate a position given certain variables.
Visualization of an EQS query for finding a suitable position for the sniper to the left to fire from.
The query returns all positions where the sniper has Line Of Sight (LOS). This is done by performing a trace between each position and the player. All of the positions marked in blue have failed the trace test and are discarded. The rest of the positions are each given a weight by assessing several variables, such as distance from the current position. In the picture above the best spots have been marked with green.
This way the snipers reposition themselves to keep the player within line of fire, while avoiding shooting at each other or other objects that are in the way.
The AI runs the EQS query from its behavior tree, and then moves to an appropriate position. It constantly reevaluates whether it should run the EQS query again, or keep firing at the player.
CODE SAMPLES
GHOST
The ghost is a simple AI enemy that rushes down the player and self destructs to deal damage.
CODE SAMPLES
CHARGER
More info will be available here soon!