ADAM WOLF
Game Programmer
Discord: lord_sarr | Steam : sarr50
Email: Adam-wolf@hotmail.co.uk

Notice: session_start(): Ignoring session_start() because a session is already active in /var/www/html/content/portfolio.php on line 2


My name is Adam, and I'm the Lead Programmer at Feral Computing.

With over 9 years of working experience utilizing Unreal Engine 4/5

Studied Software Engineering for 4 years at Staffordshire University

QA Tester for GBTN for over 7 years

CV : Link
Unreal Marketplace : Feral Computing

Currently Available to Work Remotely!


Strongest Skills:

  • Prototyping

  • Gameplay Programming

    • AI

    • Combat Systems

    • Cover Systems

    • Character Progression

    • Construction & Crafting

    • Quest Systems

    • Physics Systems

    • Animation Systems

    • UI, HUD and Menus

    • Debugging, Refactoring, and Optimisation

    • Rewrite blueprints in C++

    • Multiplayer Implementation

    • ...and many more!

Skills:

  • Level Design

  • 3D Modelling and Texturing

  • Game Design

  • Server Backends

  • SQL (Databases)

  • Python scripting

Software Skills:

  • Adobe Fuse

  • Autodesk Maya

  • Unreal Engine 4/5

    • Blueprints and C++

      Custom Editor Tools Creation

  • Substance Painter

  • Photoshop

  • Source Control (Git, Perforce, SVN, Plastic)

UE4 - Multiplayer Bot AI

Back to Portfolio

For this piece of work, my task was to:

Create Multiplayer capable Artificial Intelligence
The AI should be able to use weapons, crouch down, capture objectives etc. just like player can.
The AI should respond to enemy behavior.

For this I've used the EQS (Environment Query System) , and I've created a set of queries which spawn a grid of points onto the navigable area, and score each based on rules.
The scoring I used uses, Distance to Nearest Objective, Distance to Nearest Enemy, and Optimal Position to Attack Nearest Enemy (based on line of sight, and distance from.it, and weapon used. (if bot runs out of ammo, he will attempt to melee)




The Bot chooses few best scored points, Based on the scores returned, the Bot decides whether to move towards enemy, retreat, or move towards an objective.

There is logic implemented to handle and resolve scenarios where AI may block each other (eg. two bots trying to enter doorway at same time) This is done by checking if the bot has a target location, but hasn't changed its velocity in x amount of time, if this statement is true, we execute "unstuck" routine, which makes the bot walk slightly back (with a random deviation) and then continue its path. In every case, this eventually resulted in the AI getting past the block and continuing its path.