Platform
Xbox One, Xbox Series X, PC
Published
Stray Bombay, 2022
Overview of Work
- Game Design – Helped on initial weapons design, enemy design, and combat design.
- Level Design – Concept, blockout, gameplay, and scripting for ten levels.
- Art – Final geometry, UVs, first pass lighting, fx, and post processing for multiple areas.
- Code – Implemented suite of networked world objects such as doors, panels, shields, elevators, triggers, etc.
Level Design Process
My ideal level creation process is best represented in the write-up for Doom.
Technical Design
On this project I created a suite of networked world objects in blueprint such as:
- Destructibles
- Doors
- Elevators
- Toggleable Emitters, Meshes, Lights, Sounds
- Fans
- Jump Pads
- Meters
- Panels
- Triggers and Trigger Volumes
- And a bunch more!
Each of these actors implemented a simple “activation” blueprint interface so they all could interact with each other in some form. For example, when a door has completed opening it could activate any of these other actors. Or if an elevator started or reached its destination it could activate any other actor. Many of these actors supported 1-4 players including player bots. Besides the above I created a set of Utility actors to help in the creation of any blueprint actors as well as a set of editor utility scripts to help with various level design & environment art related tasks.
Below are links to a sample set of blueprint for a system that enables the trampling & folding of foliage.
- Event Graph of a player component
First it checks to see if any foliage exists in the world, and if so enable this interaction system. “Space force” is an internal term for a 360 energy pulse mechanic that pushes back enemies. If this ability is in use the tramplers grow to match the bubble, flattening foliage from the energy pulse.
- CheckToSpawnTrampler
- Event Graph of BP_FoliageTrampler
- Quick Delete of BP_FoliageTrampler
- Shrink of BP_FoliageTrampler
- Vertex shader section of foliage material to bend from nearby MDF meshes.
This shader looks for nearby MDF to bend foliage, this method is fast and allows any unique shape to bend foliage. Being a fast GPU shader was vital for this game which can spawn 50+ enemies and 4 players.
This function runs through a series of checks to see if its ok to spawn a “trampler”. This object spawns a hidden mesh which utilizes mesh distance fields (MDF), the foliage material I created does MDF checks to appropriately bend foliage.
The tramplers have a lifetime and eventually shrink & disappear. Initially I built a trampler manager in BP to track & limit them to a pool, eventually we moved this into C++ for a more efficient sub system.
If the pool hits a limit the tramplers have a method to quick delete upon request where they shrink and remove before their lifetime expires.
Player spawning tramplers, leaving a trail through foliage.
Arbitrary shapes bending foliage.
Tramplers in action.
Below is a sample networked actor.
- Networked Door Event Graph
Door implements activation interface to be triggered by any actor. Door can be activated or set to auto mode to open & close based on proximity.
- OnActivate
- OpenDoor
- OnRepStatePosition
This function runs on each client whenever the variable is changed.
- ProcessOpening
Processing of opening door on each client. Runs from tick which is temporarily enabled when the door is moving.
Screenshots of Work
All comparison shots below I owned concept, composition, blockout, partial world building, and final gameplay & optimization.
(NOTE: May need to reload page when done loading to see above images.)
All screenshots below are areas I did final world building, partial mesh creation, lighting/fx/decals, gameplay & optimization