Jello-cam

From OniGalore
Revision as of 21:58, 4 January 2017 by Iritscen (talk | contribs) (/cat)
Jump to navigation Jump to search

"Jello-cam" is a feature of Oni's engine which makes walls semi-opaque when they block the player's view of Konoko. The term came from an interview with Design Lead Hardy LeBel here. This simple feature allowed Bungie West to keep the camera locked behind Konoko, as opposed to most third-person games which move the camera out of the way of intervening walls. If Oni's camera collided with walls, it would disrupt the player's aim while moving and firing weapons. Keeping it locked to Konoko's line of sight also allows the mouse to control both aiming and the camera, obviating the need for the kind of manual "camera management" that burdens players in other third-person games.

The jello-cam created a problem for Bungie West, however, when they realized that allowing the camera to escape the room would show not only the intervening walls and the adjacent room, but other unintended scenery like the skybox or other parts of the level in the distance. The solution to this problem was surprisingly low-tech, but high-labor. The story of the solution was originally told by Hardy on OCF here, then re-told in more detail in a YouTube video here: someone had to create black boxes around every part of a level where the jello-cam might allow the player to peer outside the level. This task fell upon one of the level designers, Dave Dunn, who put in long hours to create the boxes; the other designer, Sean Turbitt, was probably no longer around, as he left the team at the end of 1999.

The best way to understand the "jello fix" solution is to look at some screenshots. First, here is a wire-frame view of the first level. The floor grids are highlighted to help orient you.

JelloFix-wireframe model.jpg

Keep in mind that the level model is a combination of the rooms from CHAPTER 00 . COMBAT TRAINING and CHAPTER 01 . TRIAL RUN. Notice that the training rooms were placed on a plane below the Warehouse. The starting room in Training is closest to the camera. Now here is a hidden-line rendering of the same view:

JelloFix-solid model.jpg

As you can see, the level is grouped into boxes, including one box for the entire Training area. Here's what that box does in-game:

JelloFix-normal cam.jpg

When the camera escapes the room, anything beyond the room is blackness. That's not because the renderer knows better than to show the skybox; it's because you are literally looking at the inside of a black box textured with "TXMPBLACKNESS"! The boxes were placed at a sufficient distance from the outer level walls to still contain the camera when Konoko got close to a wall and pushed the camera through it; since Oni's camera never exceeds a maximum distance from Konoko, which is 33 world units (11 feet), the required size of the boxes could be known in advance. Here's what happens when you use cm_distance to increase the camera's maximum distance to 200 units:

JelloFix-distant cam.jpg

Now we have escaped Training's jello-fix box and can see what BWest never wanted players to see.

For modders, the relevant BSL commands are cm_jello, a function that toggles "Jello mode", cm_jello_amt, a variable that determines the opacity of jelloed quads, and cm_jello_radius, a variable that determines how large of a visual space to clear in the quads between the camera and Konoko. In the Windows-only AGDB data, the black boxes are named with the suffix "_jello_fix"; since AGDB names are applied by OniSplit to quads when it exports a level model from the Windows game data to Collada format, the jello-fix boxes can thus be distinguished from the rest of the level.