top of page
HeroImageKickstarter(Logoless).png
PryizmLogo_Full.png

Climb, vault, fight—repeat. In Pryizm: Multiplayer, every wall is an escape, every ledge a killshot. Move fast or the Abyss might swallow you whole.

Pryizm is a WIP third-person sci-fi arena-shooter with a heavy emphasis on movement, strategy, and hair-trigger reflex. Hone your skill and rise through the ranks of a competitive shooter like no other.

ABOUT MY EXPERIENCE

Pryizm is a multiplayer arena TPS built in Unreal Engine 5, running on dedicated servers, with EOS as the online back-end and a managed server fleet for matchmaking. Fast, vertical, traversal-heavy movement; multiple competitive objective modes; a team of roughly 6 full-time developers and ~4-6 part-time/freelance at any given time.

I joined during the movement rework and stayed through the AI and tooling work. Over 14 months, I worked across four disciplines: gameplay systems, AI, editor tooling, and the designer facing layer that connects them. In most cases I was the sole owner of the systems I built.

Team: 6+ | Role: Lead Gameplay and Technical Designer | Tools: UE5.6 to 5.8, Rider/VS C++, Adobe Suite, Figma, Google Suite, PostgreSQLSt| Release Status: Early Access (Late Alpha)

*UNDER N.D.A., PROCESS WORK LIMITED* 

RESPONSIBILITIES

GAME DESIGN DOCUMENTATION

Created and iterated upon a >60 page GDD with charts, diagrams, and visual aids that outlined the design of Pryizm at each level to form a holistic and coherent vision throughout the project. Also created comprehensive documentation for all my owned features and implementations

MULTI-DISCIPLINE COORDINATION

Coordinated and directed multiple designers, developers, and artists across our studio in order to achieve a technically, visually, and thematically cohesive game.

TUTORIAL GAMEPLAY SYSTEMS

Created a full tutorial level system. Framework included adding primitive target practice bots, A unique gauntlet timer system set up to speak to a global leaderboard, trigger zones with multifunctional use to activate popups, open locked doors, strip/give ammo, set respawns, and overall drive the tutorial gamemode.

ADVANCED MOVEMENT AND COMBAT CONTROLLER

Responsible for redesigning and programming an advanced movement and combat system featuring a unique wall running/climbing feature, as well as integration with a charged melee system and projectile-based gunplay.

AI/BOT INRFASTRUCTURE

Designed and programmed Behaviour Trees, Blackboard, and C++ Based Behaviours to drive bot logic and provide deadly NPC competition for players in small lobbies.

UI and HUD Design

Designed thorough menu styles and an in-game HUD featuring a scoreboard, weapon tracking widget, scorekeeping, and a zone control widget for King of the Hill.

GAME-MODES

 

Designed/Iterated on 7 game modes that pay homage to classic arena-shooter formulas while adding a twist that synergies with the combat and momentum that makes Pryizm unique.

DEVELOPER CAMERA SUITE

Designed and programmed a comprehensive developer camera suite that allowed developers and our Marketing/CD team to capture smooth in-game footage. Features smoothing, server replication, a command suite, and more.

System and Economy Design

Managed ecoomy and system design for a skill-tree style battle-pass system, including the narrative and cosmetic design that went into the reward structure, creating a unique emerging narrative through a UI-based progression system.

PROCEDURAL ANIMATION

Designed and implemented a dynamic, behaviour driven animation system for the "Wallcrawler" arms that leverage the power afforded by Unreal Engine 5's Control Rig system and optimized location checks that make the arms feel alive.

GAMEPLAY TELEMETRY PIPELINE

Designed and Implemented developer tool suite to look at player telemetry and heuristics, drastically increasing balance pass efficiency.

Community Direction and Kickstarter Planning

I was responsible for the economy, graphic design, and reward tiers for the project's Kickstarter campaign, providing our marketting and community directors with a solid base to work off of.

AT A GLANCE:

01

Engagement:

July 2025 - August 2026 (14 Months)

03

Contribution:

344 Commits, authored ~29,000 lines of C++

05

Disciplines:

Gameplay Design, Gameplay programming, AI programming, Tools/tech programming, Technical Design

02

Stack:

C++ and Blueprint, dedicated server networking, Steam, EOS, managed server fleet, Postgres

04

Scale: 

4th Highest committer of 12 on the project

06

Ownership:

Game design documentation, movement rework, melee overhaul, telemetry mapping, new game modes, bots, multi-limb IK animation, developer camera, HUD design

CASE STUDIES:

Bot and AI Navigation

Gamemodes and Objectives

Gameplay Telemetry Pipeline and Designer Dashboard

HUD, UI, and Menu Design

Advanced Movement Controller

Tutorial

Procedural Multi-limb IK Director

Developer and Spectator Cam

Below are some of the most interesting features and problems I solved over the course of my time working at Sickware Studios.

CASE: 1 - Bot and AI Navigation

Bot and AI Navigation

Skills: AI Programming - Technical Design

A blue team bot contesting an objective point, outnumbered three to one.

THE PROBLEM

The game had no bots. Playtests needed full lobbies, matchmaking needed backfill, and designers had no way to validate a map without organising a full session. The hard part was not decision-making. It was that this game's movement is vertical. Bots that could only walk would be permanently locked out of most of every map, and would be seen as broken rather than as easy opponents.

THE APPROACH

I built the bots on top of the same pawn and the same server-authoritative combat and movement APIs that human players use. The AI layer never bypasses combat validation, never writes positions directly, and never gets a private code path. A bot fires a weapon through the same call a player's input does. This was a deliberate constraint: it means bots use the real systems during playtests, so a bug they hit is always a bug players would hit.


Decision-making is a behaviour tree fed by perception. I wrote 8 services (combat range and ammo state, threat assessment, self-assessment, pickup scoring, objective selection) and 11 tasks (fire, reload, weapon swap, melee charge, grenade throw, retreat, patrol, objective, pickup, zone holding). Perception runs target acquisition; the services write to a blackboard; the tree chooses between patrol, chase, combat, objective, hold, and retreat states.


An early version of the bots behaviour tree structure. Logic confidential - nodes blurred.
An early version of the bots behaviour tree structure. Logic confidential - nodes blurred.

THE IMPLEMENTATION

Vertical traversal via the navigation mesh, not the behaviour tree. Rather than write a "climb wall" task, I built a custom off-mesh navigation link actor that designers place in a level. It registers its entry and exit with the navmesh as a connection the pathfinder can cost like any other edge. The result of this is that a plain "move to this location" call routes a bot up a wall automatically whenever doing so shortens the path. No AI wiring, no special cases, and level designers extend bot mobility by easily placing actors.


Facing and Detection. Bots were flickering between combat and chase states 40 transitions in a single measured session. The cause was that the AI controller overwrites control rotation every frame from its focus point, and the path-following system publishes a focal point along the path on every update, so anything a service wrote that frame was deleted. Worse yet, releasing facing whenever a branch deactivated meant a momentary line-of-sight blip swung the bot away, which dropped the target out of its sight cone, which dropped sight again. I moved facing onto the engine's focus system at a priority that outranks path following, and reduced the release of facing to one place: the single point at which a target stops existing. A grace period bridges the natural sight flicker around cover, which the previous debounce would never cover.


Failure handling that does not punish the team. A climb that times out blacklists that link for that bot only, for 15 seconds, so it re-routes instead of walking back to the same wall. One bot's bad luck must not deny a good route to everyone. It takes two failures inside a 30-second window, because a single fluke should not cost a working route. Repeated blacklist entries at one link are a level-authoring signal, which is exactly what the my logging suite is designed to surface.


Three-strike stuck recovery. A bot is stuck only when it both failed to move and failed to close on its goal. The second test exists because a bot strafing around a target barely changes position but is not stuck. So it escalates: re-path, then break contact with a jump and a lateral step, then abandon the goal entirely. The third strike is there for a reason: a bot carrying an objective is hard-blocked from climbing, so if it gets routed over cover, abandoning the goal is

its only escape.


The Jump Script. The navmesh bakes jump links over cover, but with no smart-link object attached, so the engine creates the connection and then never propels anything across it leading to bots appearing stuck on waist high cover. I wrote the crossing behaviour myself, splitting at chest height a mantle, driving climb input into the obstacle so the character's existing mantle behaviour (which I also authored) can find the edge; above that it is a jump; below 20 cm it is a drop-down that is just walked off. Four things had to happen for either to work, and the second pass fixed all of them (suspend crowd steering, set an aim override, feed movement input every frame, and add a one-shot forward boost on leaving the ground, because bots were landing back on the near side).


Crowd avoidance. I swapped in the crowd-following component so bots avoid each other, then suspended crowd steering for the duration of every traversal. The crowd manager only skips *falling* agents, and a wall climb is a custom movement mode, so otherwise two systems write velocity simultaneously. The suspend resets on possession so a bot that dies mid-climb cannot respawn permanently un-steered.

OUTCOME

Bots that really play the game: they path, take cover routes, climb walls the pathfinder chose for them, contest objectives per mode, score and claim pickups, engage at weapon-appropriate ranges, retreat when hurt, and recover from getting wedged. Spawned and removed by console command with team-balancing flags, and exposed to Blueprint for game-mode use. Level designers extend their mobility by placing actors, with an in-editor visualizer for authoring the routes.

CASE: 1 - Bot and AI Navigation

bottom of page