Jello-cam: Difference between revisions
m (link fix) |
m (wording) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
"'''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 [https://web.archive.org/web/20040109125028/http://www.insidemacgames.com/features/view.php?ID=4&Page=2 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 | [[Image:Jellocam 1.jpg|right|thumb|The jello-cam allows Konoko to still be seen when a wall intervenes between her and the camera.]] | ||
"'''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 [https://web.archive.org/web/20040109125028/http://www.insidemacgames.com/features/view.php?ID=4&Page=2 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 aiming at enemies, a common problem in video games. Keeping it locked to Konoko's line of sight allows the mouse to control both aiming and the camera, doing away with the manual "camera management" which burdens players in most 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 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 adjacent room, which was considered acceptable, but also unintended scenery like the skybox and 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 told by Hardy in a YouTube video [https://www.youtube.com/watch?v=4v_elVuwx0c&t=698s 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 | The best way to understand the "jello fix" solution is to look at some screenshots. First, here is a wire-frame view of the level geometry from level1_Final. The floor grids are highlighted to help orient you. | ||
[[Image:JelloFix-wireframe model.jpg|700px]] | [[Image:JelloFix-wireframe model.jpg|700px|center]] | ||
Keep in mind that the | Keep in mind that level1_Final contains the environments for both {{C0}} and {{C1}}. 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: | ||
[[Image:JelloFix-solid model.jpg|700px]] | [[Image:JelloFix-solid model.jpg|700px|center]] | ||
As you can see, the level is grouped into boxes, including one box for the entire Training area. Here's | As you can see, the level is grouped into boxes, including one box for the entire Training area. Here's the effect of that box in-game: | ||
[[Image:JelloFix-normal cam.jpg|500px]] | [[Image:JelloFix-normal cam.jpg|500px|center]] | ||
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: | 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: | ||
[[Image:JelloFix-distant cam.jpg|500px]] | [[Image:JelloFix-distant cam.jpg|500px|center]] | ||
Now we have escaped Training's jello-fix box and can see what BWest never wanted players to see. | 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. | 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 that fall 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. | ||
[[Category:Engine docs]] | [[Category:Engine docs]] |
Latest revision as of 14:06, 12 May 2024
"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 aiming at enemies, a common problem in video games. Keeping it locked to Konoko's line of sight allows the mouse to control both aiming and the camera, doing away with the manual "camera management" which burdens players in most 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 adjacent room, which was considered acceptable, but also unintended scenery like the skybox and 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 told by Hardy 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 level geometry from level1_Final. The floor grids are highlighted to help orient you.
Keep in mind that level1_Final contains the environments for both CHAPTER 00 . COMBAT TRAINING and CHAPTER 01 . TRIAL RUN. 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:
As you can see, the level is grouped into boxes, including one box for the entire Training area. Here's the effect of that box in-game:
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:
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 that fall 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.