Unannounced SinglePlayer AA First Person Shooter
Due to the project not being released and NDA restrictions, I am not able to post any footage of the work I have done. Specific details throughout sections may include descriptions of work that is re-imagined rather than exact descriptions of the games content.
Responsibilities
-
Designed and implemented enemy AI from concept to final gameplay.
-
Developed AI using Blueprints, C++, Animation Blueprints, and State Trees.
-
Developed scripted boss AI encounters using Blueprints, C++, Animation Blueprints, and State Trees.
-
Created prototype VFX for enemy AI and other gameplay elements.
-
Built engine tools to improve workflow efficiency and resolve engine-blocking bugs.
-
Designed and implemented enemy combat encounters.
-
Supported the level design team with boss encounter setup and bug fixing.
-
Collaborated closely with the level design and design teams for effective feedback and balancing of enemy AI.
-
Balanced enemy AI in conjunction with player weapons, providing well-balanced gameplay.
-
Investigated and resolved C++ bugs in custom-built systems.
-
Collaborated with the animation team to develop missing animations, enhancing the AI experience.
-
Rapid prototyping of various gameplay mechanics using Blueprints, outside of enemy AI.
-
Data-driven "gibbing" setups for enemy AI.
-
Extensive EQS query design and optimization, ensuring highly responsive AI navigation across various environments.
Role overview
At Awe Interactive, I worked on an unannounced first-person shooter, progressing from Junior Technical Designer to Junior Gameplay Programmer. My primary responsibility was owning the design and implementation of enemies and boss AI. From core systems to advanced behaviors, delivering fun and engaging combat experiences.
Due to the nature of my role, I also supported many other areas of development. This ranged from fixing engine-breaking bugs, building custom engine tools and even providing 1:1 mentoring to non-technical colleagues.
AI Devleopment
-
Blueprints - Scripting enemy logic and interactions.
-
C++ - Optimized and refined core AI systems.
-
State Trees - Creating complex, intelligent behaviour State Tree logic.
-
EQS - Desiged responsive and efficient navigation queries.
-
Animation Blueprints - Integrated animation and IK support for better enemy AI fidelity.
Using the elements laid out above, I built AI enemies from prototype stage through to final implementation, ranging from generic, common enemy types to highly specific, scripted boss encounters. My work covered both high-level behavior design and low-level system optimization, ensuring the AI felt responsive, believable, fun, and performent.
Generic Enemy AI
One of the enemies I developed was a standard cannon-fodder unit, designed as one of the first enemies the player would encounter. The goal of this enemy was to be easy to eliminate, while still applying pressure if the player was mispositioned or facing multiple enemies at once.
The enemy used multiple layers of state logic to create a sense of “intelligence” This included the ability to:
-
Reposition to better locations for improved line of sight or tactical advantage.
-
Calculate grenade trajectory paths, with slight error tolerance based on difficulty to allow for missed throws.
-
Use a multi-layered combat system, switching between primary and secondary weapons.
-
Perform standard AI behaviors such as follow, fallback, attack, idle, taught and die.
This also involved extensive work with Animation Blueprints to drive animations based on AI actions, including grenade throws, hit reactions, staggering, and even full IK systems to procedurally place barriers between the player and the AI.
Boss Enemy AI
One AI I developed was a boss enemy the player would encounter at a later stage of the game. This was one of several bosses I built for the project, and it's a good example of the design and technical work involved.
NOTE: due to NDA restrictions, I'm unable to describe the actual boss from the game. The following is a re-imagined version, illustrating the kind of design and systems I worked on without disclosing confidential project details.
This boss was designed to provide a fun challenge through a multi-layered encounter that kept the fight engaging, capable of performing melee or ranged attacks depending on its distance from the player.
The boss featured multiple stages, triggered either by remaining health percentage or dynamically based on the current "skill" being performed.
Some of the abilities the boss could use included:
-
Bullet Barrage - The boss would reposition somewhere in the arena and fire a barrage of bullets into the sky. These were physics-based projectiles that arced and landed nearby the player, causing splash damage.
-
Claw Swipe - If the player moved too close, the boss would perform a claw swipe, dealing frontal AOE damage, pushing the player back, and applying debuffs and damage.
Combat Encounters
I was responsible for designing and implementing enemy encounters alongside the level design team, together we defined the moment-to-moment gameplay experience. Working with the AI I had developed, leveraging the full capabilities of the enemies.
This was a strong collaborative process. Through direct communication with the level design team, we were able to make informed decisions about how encounters should play out based on the AI’s functionality. I also received real-time feedback, which allowed me to refine and improve the AI systems where needed.
Together we have built encounters ranging from generic encounters to boss battles.
I was also responsible for providing one-on-one support to level designers, offering both technical guidance and implementation support. This included explaining AI behaviour, assisting with Blueprint scripting for events, and implementing requested features using Blueprints, level scripting, and scene directors.
Tool Development
Beyond AI development, I created a range of essential tools for the game’s production. Whether specifically requested by the level design team or developed to resolve engine-breaking bugs. All tools were designed to significantly improve workflow efficiency and reduce development time. Examples include:
Level Loading Tool:
Using Unreal’s Utility Widgets, I developed a tool that allowed developers to quickly swap and open levels, regardless of size or complexity of the level being loaded. This significantly reduced the risk of GPU crashes when loading content-heavy levels, helping avoid unnecessary delays and removing the need to spend 20+ minutes reloading after a crash.
I achieved this by creating multiple ASYNC tasks to handle level unloading and loading in a controlled and safe way.
Helper Tools:
Using Unreal’s Utility Widgets, I created and improved custom helper tools that were used daily by the development team to increase efficiency and reduce development time.
-
Placement Tools: AI placers, AI spawners, AI volumes, and other utilities to speed up level setup and creation.
-
Content Visual Toggle Tools: A set of pre-made buttons that allowed developers to toggle all specific actors on or off in the level. These were visual-only toggles designed to reduce view-port clutter and make development easier. For example toggling bounce cards.
Rapid Prototyping
A big part of my role was rapidly prototyping a wide range of gameplay mechanics and AI behaviours. This was a common task I was assigned, as well as something I often did independently to create proof-of-concept ideas before commiting my time into a system. for AI and gameplay systems.
Minigame Prototyping:
One of the prototypes I worked on was a mini-game the player had to complete in order to perform certain actions. This was a UI-based mini-game focused on reaction time. The system supported varying difficulty levels, allowing the challenge to scale based on gameplay needs, and interacted with the game world by triggering in-world events based on the outcome of the mini-game.
AI Enemy Prototyping:
This was a common part of my workflow. When starting work on a new enemy, I would build a range of quick prototypes to explore the best approach and design for that given AI. Once I was satisfied with a prototype, I would move it into full implementation.