Official website: https://www.urbisthegame.com/ (Update: Down as of 19th Jan 2020)
Developers: Austella in collaboration with Pixelpup
Role: Lead Systems Programmer
Shipped: No
Status: Shelved
Platform: VR (TBC)

Urbis: Containment Zone is a VR PvP Multiplayer Shooter with gameplay inspired by fast arena shooters such as Quake, Doom, and Call of Duty. Originally starting out development as a PvE wave shooter, it found it’s calling as a PvP title through play-testing.
When I last worked on the game it supported up to 16 VR players (tested with 8 via Steam with clients in various locations including UK and America), had a standard Deathmatch mode, multiple weapons, and a polished arena map.
The game prototype won multiple awards for best VR game at developer meetups in America.
The game was primarily developed for Oculus Rift, however it was also ready to support HTC Vive.
As Lead Systems Engineer on Urbis: Containment Zone, I wrote almost the entirety of the code base and features for the game. This included:
- First person VR gameplay with full motion controller support and smooth locomotion.
- A weapon system that allowed for easy creation of new weapons.
- Subtype polymorphic architecture.
- The primary weapon subtype that was focused on was an instant (same frame) gun system, however the architecture of the system allowed for throwables, projectile based weaponry, and melee options to be implemented with ease.
- Weapon attachment system.
- Again subtype polymorphic – allowed for the creation of any weapon attachments we wanted to add including magazine types, scopes etc.
- Steam multiplayer.
- Lobby system.
- Full game loop.
- Main-menu/lobby, wait for players to join, pre-match timer, core gameplay, post-match scoreboard, timer to next game.
- Stat tracking
- Tracking for kills with each weapon, damage for each weapon.No serialisation externally beyond the end of match due to limitations of budget.
- Weapon hold types
- Includes one handed weapons, two handed weapons and hybrid. The player was able to use their motion controllers to hold weapons in different ways.
- One Handed applied to guns such as pistols, allowing them to hold 2 pistols at once (one in each hand).
- Two handed weapons required the user to hold both “hold points” in order to function the weapon. This included the minigun needing both motion controllers to hold their corresponding handles in order to fire.
- Hybrid weapons allowed for the player to hold the weapon type as a one handed or two handed weapon. For instance, a sniper rifle or SMG could be held with two hands in order to manipulate the forward vector of the barrel (and gain dexterity and accuracy as a result).
- Damage, health, and armour systems.
- Full networking support.
- Steam, lobbies, replication of all relevant actors and variables.
- Pickups such as Armour, Health, and Weapons.
- Respawn system.
- Death camera (third person perspective)
- For clarity, not a kill-cam.
- Full UI Programming
- Main menu, Lobby, Pause Menu, in-game health, armour, ammo, kills, deaths UI, scoreboard.
- Game Mode Programming
Technical Insight:
From the beginning, I created the game with subtype polymorphic design in mind. Almost everything that was created shared super class types that allowed for easy manipulation, and expansion throughout the development. Without stating the obvious, this meant that any time we created new guns we could just use the super class that handled all the weapons behaviour, and the designers could just go in and tweak the mesh, weapons stats, and animations.
This design approach allows for a very quick iteration process, and allows for designers to make quick changes without the aid of the programmer (me!).
Throughout the development process, I aimed to make the code-base easy to use (for existing team members and future programmers joining the team) by commenting code thoroughly, using sensible names for classes, functions, and variables, and creating accompanying documentation where appropriate (for example, summaries of the architecture and key notes for working with any system).
I also worked closely alongside the designers and artists to ensure that all appropriate variables were exposed to them, and any tools they required during development were created. This resulted in a smooth development experience for them, improving efficiency and removing reliability from the technical team members.
From a technical standpoint, the development was a success. There is a strong code base that allows for easy expansion across the architecture, allows for easy changing of gameplay variables and functionality. The design of the code also allows for easy porting to new projects that require similar or same functionality (such as sequels, or same genre titles).
But don’t just take my word for it – head on over to the testimonials page to hear more on what the Austella team thought of working with me! (To be added).










