Reveal

© Marie Lazar

Click Here to Download Game!

Art Game

April 2012-May 2012
Role: Programmer

Reveal is a surreal art game where you peel away layers of a confined room, starting with magazines on the wall and working your way through wallpaper, boards, and other stuff you'd expect to find behind walls. I can't say much more than that as my client has requested I avoid spoilers. What I can tell you about my part in it is that it involved a plethora of destructible objects, all of which had very specific criteria and a somewhat complicated relationship.

Features that I Programmed

Key Technical Design Points

Custom Events

Destructible Objects

Reveal is a single room that's incredibly dense with multiple layers of destructible objects. I programmed each of them to have custom behaviors per the designer's specifications, including:

Custom Events

Multi-tiered "Reveal" system

The ability to interact with objects at each layer of the room is restricted by whether or not the player has cleared the previous layer. IE - All the magazines need to be removed before you can start on the first layer of wallpaper. All the wallpapers need to be removed before you can start on boards, et cetera. I programmed the Revealgame script to manage this process and provided kismet events that fired in conjunction with each layer.

Optimization

None of these assets are enormously expensive in themselves, but together they're extraordinarily costly and cause a drop of roughly 30 frames per second when collected in such a small space. Therefore, three measures were taken to optimize the scene.

First, all of these actors startin a "ground state" that is extended from a less costly class. The boards, of which there are more than a hundred, start as staticmeshactors rather than KActors, as do the Wallpapers. Only the magazines and pipes start as KActors, as the magazines move directly into the player's hands via the grabber system and it's easier to just have the pipes just wake up.

When struck or interacted with, the actors then are deleted (or hidden, with collision off) and replaced with an alternate actor that presents the expected physics. The boards delete themselves and are replaced with a number of "splinter" objects, for instance. The magazines and wallpapers are replaced with cloth-enabled skeletal mesh actors, and the physics mode of the pipes only switches to rigidbody when struck. This conserves a great deal of processing during the ground state of these objects.

Second, all of the debris and splinters turn off their collision when woken up, therefore removing themselves from a potential rat's nest of processing on their geometry.

Third, all of the objects in Reveal are self-cleaning. After being "activated" (IE turning to cloth, splintering to pieces, etc.), all the "debris" objects are on a five second timer, after which they delete themselves--but ONLY if they're off-camera. The player therefore never sees them disappear and may experience the debris for as long as they wish. One way or another, though, every action in Reveal is designed so that the player has to get close and take a good look at what they're interacting with--therefore something will always be offscreen, getting cleaned up.

All of this allows the game to run at a reasonable framerate despite the density of destructible objects.

Grabbable Objects

Reveal uses the same grabbable object mechanic as I programmed for Sira, with a few changes. The player needed to be able to get a close look at the magazines; therefore different holding distances were marked out for different objects based on their actor class.