Skip to content
joticarroll edited this page Jan 1, 2013 · 13 revisions

## Introduction In this document I'm going to try and explain how to use or alter some of the more obscure elements of the demo content and engine changes. Many of the changes were designed for the installation at the Cube and actively work against the presentation of a fast well rounded demo. Hopefully the worst can be demystified and save people from wasting too much time in seeing the features.

Prefs Explained

// Used to switch the old demo hud back on. We stopped supporting it but it'll still let you
// see each view of the content up close. The customised scoping code needs some additions to
// make it work fully again. Web pages may crash on any view but the first; I may fix it.
$Pref::Cube::demoMode = 0;

// This will let you choose a view in the demo and is safe but you'll need to load the content
// again to see the result.
$Pref::Cube::demoView = 0;

// Dirty hack to rotate the caustic postprocess because the GF580 ran slower in portrait mode for a while.
$pref::Cube::causticsXUp = 0;

// This indexes every computer in a rendering cluster by name to allow custom changes to be made on each
// node.
$pref::Cube::clientID0 = "RC-STEM-WM";
$pref::Cube::clientID1 = "Cube-z1t01";
$pref::Cube::clientID10 = "Cube-z2t05";
$pref::Cube::clientID11 = "Cube-z1p01";
$pref::Cube::clientID12 = "Cube-z2p01";
$pref::Cube::clientID13 = "RC-STEM-023193";
$pref::Cube::clientID2 = "Cube-z1t02";
$pref::Cube::clientID3 = "Cube-z1t03";
$pref::Cube::clientID4 = "Cube-z1t04";
$pref::Cube::clientID5 = "Cube-z1t05";
$pref::Cube::clientID6 = "Cube-z2t01";
$pref::Cube::clientID7 = "Cube-z2t02";
$pref::Cube::clientID8 = "Cube-z2t03";
$pref::Cube::clientID9 = "Cube-z2t04";

// This is the current clientId and is set by code when a node name is matched.
$pref::Cube::clientIDCurr = "13";

// Each node can have it's own window config.
// The format is "width height fullscreen depth hertz antialiasing positionx positiony chromeless".
$pref::Cube::clientMode0 = "1024 910 false 32 60 false 0 0 false";
$pref::Cube::clientMode1 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode10 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode11 = "1920 1751 false 32 60 false 0 0 true";
$pref::Cube::clientMode12 = "1920 1751 false 32 60 false 0 0 true";
$pref::Cube::clientMode13 = "2160 960 false 32 60 false 0 0 false";
$pref::Cube::clientMode2 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode3 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode4 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode5 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode6 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode7 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode8 = "2160 1920 false 32 60 false 0 0 true";
$pref::Cube::clientMode9 = "2160 1920 false 32 60 false 0 0 true";

// Reef specific delaying the start of cinematic animations until all nodes have joined.
// May not be needed any more but was for a long time.
$pref::Cube::delayForClients = "100000";

// These settings are used for defining different views for each node. When we only had
// four touch screens we switched between views using hud buttons.
// The format is "demo" @ viewId @ "Offset" @ clientId = "left top right bottom rotation";
$pref::Cube::demo1Offset0 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo1Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo1Offset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::demo1Offset11 = "0.0 0.0 0.5 0.836864 0";
$pref::Cube::demo1Offset12 = "0.5 0.0 1.0 0.836864 0";
$pref::Cube::demo1Offset13 = "0.0 0.836864 0.2 1 0";
$pref::Cube::demo1Offset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::demo1Offset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::demo1Offset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::demo1Offset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::demo1Offset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::demo1Offset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::demo1Offset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::demo1Offset9 = "0.8 0.836864 0.9 1 0";
$pref::Cube::demo2Offset0 = "0.0 1.0 0.0 1 0";
$pref::Cube::demo2Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo2Offset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::demo2Offset11 = "0.0 0 0.5 0.836864 0";
$pref::Cube::demo2Offset12 = "0.5 0 1.0 0.836864 0";
$pref::Cube::demo2Offset13 = "0.2 0.836864 0.4 1 0";
$pref::Cube::demo2Offset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::demo2Offset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::demo2Offset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::demo2Offset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::demo2Offset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::demo2Offset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::demo2Offset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::demo2Offset9 = "0.8 0.836864 0.9 1 0";
$pref::Cube::demo3Offset0 = "0.0 1.0 0.0 1 0";
$pref::Cube::demo3Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo3Offset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::demo3Offset11 = "0.0 0 0.5 0.836864 0";
$pref::Cube::demo3Offset12 = "0.5 0 1.0 0.836864 0";
$pref::Cube::demo3Offset13 = "0.4 0.836864 0.6 1 0";
$pref::Cube::demo3Offset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::demo3Offset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::demo3Offset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::demo3Offset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::demo3Offset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::demo3Offset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::demo3Offset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::demo3Offset9 = "0.8 0.836864 0.9 1 0";
$pref::Cube::demo4Offset0 = "0.0 1.0 0.0 1 0";
$pref::Cube::demo4Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo4Offset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::demo4Offset11 = "0.0 0 0.5 0.836864 0";
$pref::Cube::demo4Offset12 = "0.5 0 1.0 0.836864 0";
$pref::Cube::demo4Offset13 = "0.6 0.836864 0.8 1 0";
$pref::Cube::demo4Offset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::demo4Offset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::demo4Offset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::demo4Offset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::demo4Offset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::demo4Offset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::demo4Offset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::demo4Offset9 = "0.8 0.836864 0.9 1 0";
$pref::Cube::demo5Offset0 = "0.0 1.0 0.0 1 0";
$pref::Cube::demo5Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo5Offset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::demo5Offset11 = "0.0 0 0.5 0.836864 0";
$pref::Cube::demo5Offset12 = "0.5 0 1.0 0.836864 0";
$pref::Cube::demo5Offset13 = "0.8 0.836864 1.0 1 0";
$pref::Cube::demo5Offset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::demo5Offset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::demo5Offset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::demo5Offset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::demo5Offset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::demo5Offset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::demo5Offset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::demo5Offset9 = "0.8 0.836864 0.9 1 0";
$pref::Cube::demo6Offset0 = "0.6 0.7 0.7 1 0";
$pref::Cube::demo6Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset10 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset11 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset12 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset13 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset2 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset3 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset4 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset5 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset6 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset7 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset8 = "0.0 0.836864 0.1 1 0";
$pref::Cube::demo6Offset9 = "0.0 0.836864 0.1 1 0";

// Out of date now but did offset a less obtrusive set of button for each demo view
$pref::Cube::DemoViewButtonPosition0 = "-4 5 -2.9";
$pref::Cube::DemoViewButtonPosition1 = "-4.4 5 -3.1";
$pref::Cube::DemoViewButtonPosition2 = "-2.6 5 -3.1";
$pref::Cube::DemoViewButtonPosition3 = "-0.8 5 -3.1";
$pref::Cube::DemoViewButtonPosition4 = "1 5 -3.1";
$pref::Cube::DemoViewButtonPosition5 = "2.8 5 -3.1";
$pref::Cube::DemoViewButtonPosition6 = "-5.7 5 -3.6";
$pref::Cube::DemoViewButtonScale0 = "0.05 0.05 0.05";
$pref::Cube::DemoViewButtonScale1 = "0.01 0.01 0.01";
$pref::Cube::DemoViewButtonScale2 = "0.01 0.01 0.01";
$pref::Cube::DemoViewButtonScale3 = "0.01 0.01 0.01";
$pref::Cube::DemoViewButtonScale4 = "0.01 0.01 0.01";
$pref::Cube::DemoViewButtonScale5 = "0.01 0.01 0.01";
$pref::Cube::DemoViewButtonScale6 = "0.05 0.05 0.05";

// Offsets for the audio listener for each view in the installation. Allowed each speaker set under
// the touch screens to get accurate sound falloff.
$pref::cube::earOffset0 = "-6.3189 8 -3.2";
$pref::cube::earOffset1 = "-4.9147 8 -3.2";
$pref::cube::earOffset10 = "0 5 1";
$pref::cube::earOffset2 = "-3.5105 8 -3.2";
$pref::cube::earOffset3 = "-2.1063 8 -3.2";
$pref::cube::earOffset4 = "-0.7021 8 -3.2";
$pref::cube::earOffset5 = "0.7021 8 -3.2";
$pref::cube::earOffset6 = "2.1063 8 -3.2";
$pref::cube::earOffset7 = "3.5105 8 -3.2";
$pref::cube::earOffset8 = "4.9147 8 -3.2";
$pref::cube::earOffset9 = "6.3189 8 -3.2";

// Set by the code, convenient at the time and still there.
$pref::Cube::monitorRotation = 0;

// Reef specific because they kept changing the aspect of the screen
$pref::Cube::mosaicCameraPositionOffset = "0 0 0";
$pref::Cube::mosaicCameraRotation = "1 0 0 7.9";

// The fov of the whole scene. Actual fov differs per node based on above offsets.
$pref::Cube::mosaicFOV = 49;

// The distance in front of the camera the Reef HUD elements are created
$pref::Cube::mosaicInteractionPlane = "5";

// The near clipping distance for the Reef content.
$pref::Cube::mosaicNearClip = "1";

// Was going to be the final installation view offsets but we used the demo values for view 1
// instead. I'll probably clean this up at some point but it may still be referenced.
$pref::Cube::mosaic1Offset1 = "0.0 0.836864 0.1 1 0";
$pref::Cube::mosaicOffset0 = "0 0 1 1";
$pref::Cube::mosaicOffset10 = "0.9 0.836864 1.0 1 0";
$pref::Cube::mosaicOffset11 = "0.0 0 0.5 0.836864 0";
$pref::Cube::mosaicOffset12 = "0.5 0 1.0 0.836864 0";
$pref::Cube::mosaicOffset13 = "0 0 1 1";
$pref::Cube::mosaicOffset2 = "0.1 0.836864 0.2 1 0";
$pref::Cube::mosaicOffset3 = "0.2 0.836864 0.3 1 0";
$pref::Cube::mosaicOffset4 = "0.3 0.836864 0.4 1 0";
$pref::Cube::mosaicOffset5 = "0.4 0.836864 0.5 1 0";
$pref::Cube::mosaicOffset6 = "0.5 0.836864 0.6 1 0";
$pref::Cube::mosaicOffset7 = "0.6 0.836864 0.7 1 0";
$pref::Cube::mosaicOffset8 = "0.7 0.836864 0.8 1 0";
$pref::Cube::mosaicOffset9 = "0.8 0.836864 0.9 1 0";

// The virtual pixel size of the clusters screens. We had 20 HD screens in portrait with 4 HD
// projectors above that with overlap.
$pref::Cube::mosaicResolution = "21600 11769.193";

// A new mode we through in last minute for a one off view for the museum.
$Pref::Cube::QueenslandMuseum = 0;

// For convenience and safety we made the touch IDs unique so they could be sent to the server.
$pref::Cube::touchIDOffset0 = "0";
$pref::Cube::touchIDOffset1 = "10000";
$pref::Cube::touchIDOffset10 = "100000";
$pref::Cube::touchIDOffset11 = "110000";
$pref::Cube::touchIDOffset12 = "120000";
$pref::Cube::touchIDOffset13 = "120000";
$pref::Cube::touchIDOffset2 = "20000";
$pref::Cube::touchIDOffset3 = "30000";
$pref::Cube::touchIDOffset4 = "40000";
$pref::Cube::touchIDOffset5 = "50000";
$pref::Cube::touchIDOffset6 = "60000";
$pref::Cube::touchIDOffset7 = "70000";
$pref::Cube::touchIDOffset8 = "80000";
$pref::Cube::touchIDOffset9 = "90000";
$pref::Cube::touchIDOffsetCurr = "120000";

// These settings are tuned for a LAN with large packet support and should provide enough through put
// for a 60 FPS update for about 300 ai. We wanted more but we never quite had time to understand the
// code completely.
$pref::Net::LagThreshold = "16";
$pref::Net::PacketRateToClient = "128";
$pref::Net::PacketRateToServer = "128";
$pref::Net::PacketSize = "8000";

// Linked to the FMOD functions for speaker offsets. Not a great implementation because if a speaker
// isn't defined it will be disabled.
$pref::SFX::FMOD::speakerPositionFrontLeft = "-0.425 0 1";
$pref::SFX::FMOD::speakerPositionFrontRight = "0.425 0 1";

// Played with underwater turbulence but it wasn't what we wanted.
$pref::TurbulenceFx::enabled = "0";

// Expanded window mode to handle position and chromeless windows.
$pref::Video::mode = "2160 960 false 32 60 0 0 0 false";

// Early on I added multi window support with a playGUI for each. The code is commented out but should
// still function. I wanted to have a context per monitor but it wasn't making things faster under
// windows so I stopped supporting it.
$pref::Video::mode1 = "1024 1280 false 32 60 0 0 0 false";
$pref::Video::mode2 = "1024 1280 false 32 60 0 0 0 false";
$pref::Video::mode3 = "1024 1280 false 32 60 0 0 0 false";

more coming soon

Clone this wiki locally