Good Morning, {Employee Name}
← All work

Good Morning, {Employee Name}

Shababeek Labs / Unity / Steam · Quest · PICO · PSVR / 2025–26

A narrative horror game set inside the offices of the Consolidated Dynamics Corporation, a company that is very pleased you have joined it. The fiction is cassette-futurism: CRT terminals, dot-matrix readouts, laminated procedure cards, and cardboard employees who are always smiling.

What makes it hard

The game ships to Steam, Quest, PICO and PSVR from one codebase. Those four targets don't share a frame budget, a rendering path or an input model, and the cheapest of them, standalone Android-class hardware, is the one that decides what the game can contain. So everything below was designed against the standalone budget first and allowed to look better on PC, rather than the other way round.

The second constraint is authorship. A narrative game is a very large number of small, specific interactions. A drawer that only opens after a phone call. A stamp that has to land inside a box on a form. A tape that has to go in the right way round. If each one of those needs a programmer, the game doesn't get finished.

Interaction layer

The game runs on the Shababeek core system, a ScriptableObject-driven event and variable layer with a VR interaction framework on top of it, sitting directly on OpenXR primitives rather than XR Interaction Toolkit. For a game like this one the parts that matter are the interactable lifecycle, hand-pose constraints, and the socket and multi-socket systems.

In practice a level designer builds a working interaction in the inspector. Drop in the interactable, pick the hand pose, wire the socket it accepts, bind the event it raises. There are no scene references between systems and no singletons, and nobody waits on an engineer. The GripCraft case study covers that architecture in more detail; GripCraft is the same framework, packaged for other teams.

Rendering the fiction

The in-fiction terminals needed to look like actual dot-matrix LED panels rather than textures of them. In VR, at reading distance, the difference is obvious. I wrote a URP shader (Shababeek/DotMatrixDisplay) that takes arbitrary render-texture content and rasterizes it into an addressable LED grid with per-cell bleed and falloff, so any UI canvas in the game can be routed onto a panel and still read as hardware.

Holding the frame budget

A set-piece-heavy horror game wants dramatic lighting, and dramatic lighting is where standalone VR budgets tend to die. The work here is unglamorous and it is most of the job: deciding what gets baked and what stays realtime, cutting shadow-caster draw calls, tuning cascade configuration, and setting per-scene budgets the team checks against during development instead of discovering at submission.

Beyond the build

I lead a cross-functional team of engineers and designers on this project and own the technical strategy across it and our other concurrent work. The game also carries an in-fiction marketing series, twenty-seven short episodes of The Consolidated Way, which are corporate training videos from a company you should not trust. They share the game's shader and brand systems.

Desk-level detail. The art direction sets the interaction vocabulary.
Desk-level detail. The art direction sets the interaction vocabulary.
Consolidated Dynamics corridor. Baked lighting doing the work at standalone cost.
Consolidated Dynamics corridor. Baked lighting doing the work at standalone cost.
Office interior. The CD mark doubles as in-world wayfinding.
Office interior. The CD mark doubles as in-world wayfinding.
Cardboard employees standing in for staff.
Cardboard employees standing in for staff.

Next

Talaire