ÚÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄ¿ ³ USA/FLT United Software Association USA/FLT ³ ³ Fairlight PC Division ³ USA-DoX Department Proudly Presents Complete Virtual Reality Studio Dox From ³ ³ ³ USA/FLT Domark USA/FLT ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ INTRODUCTION ~~~~~~~~~~~~ To Load from a floppy drive, insert the disc labelled with the proper graphics format for your system into the floppy drive. Type STUDIO and press Enter to load, then answer the on-screen prompts. To install on a hard drive, insert the disc labelled with the proper graphics format for your system into the floppy drive. Type INSTALL and press Enter, then answer the on-screen prompts. To load from a hard drive, from your C: or D: prompt, type STUDIO and press Enter. (This will change your computer into the subdirectory where the Virtual Reality Studio files are). Type STUDIO and press Enter and the program will load. The system allows you to represent a virtual world that you can move around and interact with. This world is represented in three dimensions, known as X, Y and Z. X is equivalent to left and right Y is equivalent to up and down. Z is equivalent to near and far. AREAS: ~~~~~~ The world is divided into regions known as AREAS. Each are is like a box and has a set size of 8192 (x) * 8192 (y) * 8192 (z) units. These units area an arbitrary form of measurement that could easily be thought of as being millimeters, centimeters or meters. One unit is the smallest distance that you can move through. XYZ: ~~~~ A co-ordinate of x=0 y=0 z=0 (View:0000,0000,0000) represents the nearest bottom, left hand corner of an area. The world is seen from a single viewpoint which occupies on unit, looking in different directions. The direction is represented bye 3 angles: x rotation represents looking up or down (pitch) y rotation represents looking left or right (yaw) z rotation represents looking sideways (roll) These rotations are measured in degrees and 360 degrees means that you have turned full circle. On the PC rotations are limited to multiples of 5 degrees steps. There can be up to 254 different AREAS defined by the user. An AREA can be used to represent a room of a house or an outdoor region. You cannot travel beyond the boundary of an area. AREAS have no geographical relation to each other, but are tied together by ENTRANCES. An ENTRANCE has a position and view direction. The user can then be placed at an ENTRANCE position in a specific AREA by some form of trigger. OBJECTS: ~~~~~~~~Objects can be placed into an area to make the environment. These are solid and, as such, cannot be passed through when moving. Objects can have different sizes, in x, y and z directions. There are several basic object types, PRIMITIVES, which can be re-sized and combined to make larger, more complicated, objects such as buildings, trees, etc. The primitive objects consist of: Cuboids, Pyramids, Rectangles, Lines, Triangles, Quadrilaterals, Pentagons, Hexagons, Sensors. Objects can exist in three states: Visible, Invisible or Destroyed. Visible - The object is present in solid form Invisible - The object in not present but can be made present by being made visible. Destroyed - Once destroyed and object is invisible and can not be made visible again. Each side of an object can have a different shade. A shade is made up of a mixture of colors available on the computer used. The first shade (number 0) has a special property in that it is not drawn. The can be used to improve the speed of drawing the 3D world when used on object sides which are never see. Bye painting all of the sides of an object with shade 0 it is possible to have an object which cannot be seen but which is solid and cannot be moved through. In order to conserve memory, common objects may be stored in a reserved area known as the GLOBALS AREA ( AREA 255). These objects can be placed in any area by using the GLOBAL option in the editor. Events or reactions can be caused by interacting with object within the environment. Objects may be triggered to respond to being shot, activated, collided with or walked on. In order to shoot or activate an object, a sight mode is selected (by pressing the space bar) whereupon a cross-hair appears and is controlled by using the normal movement keys or joystick. After targeting an object, the fire button or 0 key will shoot at that object. To activate a targeted object the A key is pressed. However, an object will only be activated it the object is within a predefined distance know as the ACTIVE RANGE. A SENSOR is a special type of object that will detect your presence if you are within a set distance from it. This allows a reaction to occur when approaching an object. A sensor can also be set to respond by firing back at you at a given rate. CONDITIONS - THE FREESCAPE COMMAND LANGUAGE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In order to interact with objects, checks and actions have to be defined in the form of short programs called CONDITIONS. FCL has a very simple but powerful set of commands which allow you to manipulate and respond to any occurrences. There is also a bank of memory which can be used by the user to store and view information relating to the environment and events. Each memory cell is call a VARIABLE. A variable can store a value between 0 and 255. There are 128 of these cells and they are numbered 0 - 127. The first 112 are free for the user to use whilst the last 16 are defined and used by the system. There are various categories of instructions in FCL and they are as follows: Variable manipulation: This set of instructions acts upon values stored in the variable memory cells. These include commands to add to and subtract values, comparisons of values and setting a value. Object manipulation: This set of instructions can alter the attributes of a specified object. There are instructions to visiblise, invisblise, destroy and swap the visibility of object. Vehicle commands: This set of instructions affects the type of movement you have within the environment. They allow you to set movement to crawling, walking, running, and flying. A command is also available to move the user to a specified ENTRANCE in a specified AREA. Condition instructions: This set of instructions allow the execution of segments of programs depending on the outcome of specific checks Miscellaneous commands: This set of instructions deals with functions such as printing messages, setting colors, playing sounds and setting the TIMER. The timer is a device that can be set to trigger a set of conditions at a defines interval of time. CONDITION ROUTINES: ~~~~~~~~~~~~~~~~~~~ General conditions: These are a set of conditional lists which are executed all the time. Conditions used in this form are useful for checking for end game situations. The first condition in this set is only executed when the environment is reset. This allows you to initialize any variables, etc. Local conditions: This is a set of conditional lists which are also executed all the time. However, there is a set of local conditions for each AREA. Only the set of conditions associated with the current area will be executed. Local conditions are useful for checking and acting upon collisions, etc. Instruments: An instrument is a device which display information to the user, instruments are not visible whilst in the editor, but are visible on the test screen or in a standalone environment. There are 2 types of instrument: Bar: Bar instruments are used to display the value held in a variable as a bar of a length. Numerical: Numerical instruments are used to display the value held in a variable as a decimal figure. Text: Text is used to display messages or print commands in the specific text window. LIMITATIONS TO FREESCAPE: ~~~~~~~~~~~~~~~~~~~~~~~~~ As freescape uses extremely complex math algorithms to represent the 3D world, there are a few limitations: Objects should not overlap. The bounding cube of one object should not occupy the same space as any other. The number of visible objects in any one AREA is limited due to memory. Excess objects are not drawn. MAIN SCREEN: ~~~~~~~~~~~~ The main screen is divided up into the following areas: Menu selector: This is the top text line which contains the heading for the various menus. To access one of the menus simply move the mouse over the desired heading and the relevant menu will open. Moving the mouse over the options within the menu will highlight them and then pressing the mouse button will select the option. Moving the pointer out of the boundary of the menu will cause it to retract. View window: Below the menu selector you will see the view window. This area is always used to display the current freescape view as seen from whichever camera is currently selected. Information bar: Below the view window is the information bar. This initially reads area 001 pos:4000,0300,4000 rot:000,000,000. This shows the current area your present viewpoint co-ordinates and the angle of view. When in edit mode this line will change to read the object name you are editing, its position and its size. The information will be useful when animation or other more advanced uses of the system are required. Mode/Freescape icons: Below the information bar you will see a series of icons. These are the mode and freescape icons. The mode icons are on the left of the screen. Excl is useful when editing object. Clicking on this icon will exclude all background information and leave the currently selected object to be edited. Just to the right of this you will see highlight or highlight which when activated all highlight the selected object for ease of identification. Just to the right of these you will see a set of small icons in the form of arrows. These icons are very useful. When an object is selected, if these arrows are activated they will lock onto the current object from the front, rear, either side, or top and bottom. Alongside these you will see two further icons which are mode and step. Mode toggles between walk, fly1, fly2, cam1 through cam5 and lock, and step toggles between user and fine. User is the standard speed of operation movement which is initially set by the preferences menu which is found user general on the menu bar. Fine is used for fine work when only a small movement is required in editing or movement. WALK allows you to move along the ground, with the restriction of gravity, you can climb onto objects and fall off them. Your height above the floor is restricted to between 64 and 280 units, corresponding to a crouched and standing position. FLY1 removes restrictions on gravity. You can now fly as if you were in a helicopter with complete freedom in 3 dimensions. Forward motion is restricted to a horizontal plane, so that you can fly forward and look down at the same time. FLY2 is very similar to FLY1, except that you can now fly in exactly the direction you are looking, as though you were in an airplane. CAM1 through CAM5 controls 5 cameras which can be placed anywhere. Control is similar to FLY1, except that the cameras are allowed inside objects and outside the area. When you change to another view the camera's position is saved, so that on returning to that camera the view position is retained. WALK, FLY1 and FLY2 have collision detection built in; they will not travel through solid objects. There modes are the only 3 possible within a runnable program or the test screen. To the right of the mode icons you will find the freescape icons. The first of these is a set of arrows which are used for your movement within the environment. Using these arrows you can move left, right, forwards, backwards, rotate left, rotate right, make a complete u-turn, move yourself up or down and toggle the cross-hair cursor on and off. To the right of these you will see the rest of the freescape icons which control your view movement. These allow you to look up, down, roll and clicking on the center icon will return your view to the center view. Note that the edit and freescape icons remain on the screen and can be used at most times during editing. Below the mode and freescape icons you will see the shortcut icons. These icons are marked, SELECT, COPY, CREATE, EDIT, TEST, RESET, COPY, CREATE, EDIT, TEST, RESET, CONDITION, DELETE, ATTRIBUTES, and COLOR. These are shortcut icons which duplicate the more commonly used functions which are also available from the menus. THE USER INTERFACE: ~~~~~~~~~~~~~~~~~~~ File selector: The file selector will appear when SAVE DATA, LOAD DATA, LOAD OBJECT or LOAD BORDER is selected from the file menu at the top of the view window. The first files in the current directory will be displayed. Alert boxes: During environment creation there will be instances where something you have attempted to do will be either not possible or irrevocable. In these instances and alert box will appear with information about the function request. If the function is irrevocable, the alert box will give you the chance to reconsider the action. Dialog boxes: These are various parts of the environment creation which will require input from you to set parameters relating to the current function. Text editing: Text editing is used to change commands and usually takes place in the lower half of the screen directly below the view window after selecting any of the icons which bring up the text window. The text window will come up if you are editing either conditions or animations. An inverse square will indicate you current cursor position. TEXT EDITING CONTROLS ~~~~~~~~~~~~~~~~~~~~~ (left arrow) move cursor left one space (right arrow) move cursor right one space (up arrow) move cursor up one space (down arrow) move cursor down one space (page up) move cursor up one page (page down) move cursor down one page (return) insert a line (b.space) delete the character before the cursor (delete) delete the character under the cursor (home) move cursor to start of text (end) move cursor to end of text (esc) cancel edit (shift + return) accept edit (f1 to f10) insert some of the more common functions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- FILE MENU OPTIONS ~~~~~~~~~~~~~~~~~ Save data: To save all the data in memory to disc as a datafile. Load data: To load datafile from disc. Save object: To save a single Object or Group to disc for reloading reloading later ( or into another area or datafile) Load object: Load a specified Object or Group into the current data. Load border: Load a picture file from disc to use as a border in the TEST screen. Make: To make a stand alone environment from the data in memory. Clear all: To clear the current data from memory and replace with the default area. Delete file: Deletes an unwanted datafile from disc. About: Displays credits Quit: Exit program GENERAL MENU OPTIONS ~~~~~~~~~~~~~~~~~~~~ Preferences: Set up specific parameters used in the studio to your own preference. Reset: Resets the game/environment to the initial position as set in the defaults. Create condition: Create a new general condition. General conditions are executed each frame regardless of the players position with the exception of the initial condition specified in the defaults section. Edit condition: Edit a general condition. Delete condition: Deletes a gener condition. Defaults: Set up the default game variables. 1. the climb ability 2. the safe fall distance 3. the activate range 4. the timer frequency 5. the start area 6. the start entrance 7. the initial mode 8. the initial general condition number Controls: Set up the controls that are used in the test screen. Create instrument:Allocate a new instrument. Must edit to be displayed. Edit instrument: To edit the various parameters associated with instruments. Set view window: To set the size and position of the view window in the test screen. Test: Go to the test screen allowing the environment to be tested. AREA MENU OPTIONS ~~~~~~~~~~~~~~~~~ Create area: Create a new area. All new areas contain an entrance near the centre (001) and a base (cuboid 001). if these are not required they may be delete. Edit area: Displays a list of areas and allows the user to edit the area specific information. You may edit OBJECTS, ENTRANCES, and ANIMATORS Delete area: Delete a specified area. Goto area: To move viewpoint to another area. Area colors: To re-color the solid base colors in the current area. Create condition: To create a new area condition, which are executed each frame in the current area. Edit condition: Edit an area condition. Delete condition: Delete a selected area condition Create entrance: Create a new entrance in the current area. The new entrance will contain the position and view direction of the viewpoint at the time of its creation. First look in the desired direction, then select create entrance. Edit entrance: Allows you to edit an existing entrance. You can edit name, position and rotation. Delete entrance: Delete a specified entrance. Goto entrance: Move to a entrance within the current area. Create animation: Create a new animator. Edit animation: Allows editing of animation commands. Delete animation: Delete a animation. OBJECT MENU OPTIONS ~~~~~~~~~~~~~~~~~~~ Create object: Create a new object in the current area. A group of objects can be created by selecting group. Edit object: Edit a specified object. Point: Alters to position of the point on the info  bar. Turn: Rotates the object in the direction of the arrows though 90 degrees. Shrink: Decreases the size of the object in the direction of the arrows. Stretch:Increases the size of the object in the direction of the arrows. Move: Move the object in the direction of the arrows Undo: Undo any editing made prior to selecting another object or using the okay icon. Select: Provides the option to select another object. Okay: Commit all editing and return to main screen. Delete object: Delete a specified object. Select object: Choose a new selected object for use in highlight, exclude or lock. Copy: Create a duplicate of an object or group. Condition: To edit the condition on an object. Attributes: Alter the position and status of an object. NAME, SIZE, POSITION, STATUS, INITIAL STATUS, ANIMATED RANGE, SPEED, DIRECTION, EFFECT. Color: Color objects in the current area. A color editing panel will be displayed at the bottom of the screen displaying available colors. Base colors are combined to give various shades. The small 'l' in the box for color 0 indicates that color 0 is invisible. Invisible facets are not drawn. Sides of objects that can never be seen should be colored invisible to increase efficiency. Edit group: Alter the contents of a specified group. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- THE FREESCAPE COMMAND LANGUAGE (FCL) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Object Conditions: These commands are executed when some sort of ~~~~~~~~~~~~~~~~~~ interaction with the specified object takes place. The interaction options are: SHOT, ACTIVATED, COLLIDED. Area Conditions: These commands are executed each frame while the ~~~~~~~~~~~~~~~~ viewpoint is within the confines of the specified area. General Conditions: There commands are executed every frame regardless of ~~~~~~~~~~~~~~~~~~~ the viewpoint position. CONDITIONS ~~~~~~~~~~ ACTIVATED? (ACT?) - Class trigger interrogator ~~~~~~~~~~~~~~~~~ Format: if ACTIVATED? then commands... else commands... endif Function: Check whether the selected object has been activated. This happens when the cursor is over the object and the right button is pressed. The selected object must be within the activate range to be affected. ADDVAR (ADD) - Class variable command ~~~~~~~~~~~~ Format: ADDVAR (P1,P2) Function: Perform addition on 2 supplied values, the p1 is added to p2. if p2 is a variable specifier then the addition is stored in p2, else the result is lost but the flags are still altered. AGAIN - Class loop command ~~~~~ Format: loop (p1) commands.... AGAIN Function: Used to terminate a loop section. AND - Class condition command ~~~ Format: if condition AND condition then commands endif Function: combines the result of 2 or more condition checking commands, returns TRUE only if all of the checks are TRUE ANDV - Class variable command ~~~~ Format: ANDV (P1,P2) Function: Performs a logical AND on the 2 values supplied, p1 is anded with p2, if p2 is a variable the result is stored in p2. COLLIDED? (COL?) - Class trigger interrogator ~~~~~~~~~~~~~~~~ Format: if COLLIDED? then commands... endif Function: This checks the collided flag DELAY - Class time command ~~~~~ Format: DELAY (P1) Function: Halts all functions for the specified time. p1 is in 1/50 sec DESTROY - Class object commands ~~~~~~~ Format: DESTROY (P1 [,P2]) Function: sets the destroyed flag of the object (p1) in area (p2) DESTROYED? - Class object interrogator ~~~~~~~~~~ Format: if DESTROYED? (P1 [,P2]) then commands... else commands.. endif Function: Checks to see if an object is destroyed ELSE - Class conditional statement ~~~~ Format: if condition then commands ELSE commands endif Function: exists only as part of if/then/else/endif. It marks the start of commands to execute only if the previous condition was false. END - Class condition command ~~~ Format: if condition then commands else commands END Function: exits the entire command list process on a specific condition ENDGAME - Class player command ~~~~~~~ Format: ENDGAME Function: To reset the environment, and end the game ENDIF - Class condition statement ~~~~~ Format: ENDIF Function: terminates a conditional section of logic EXECUTE (EX) - Class branch command ~~~~~~~~~~~~ Format: EXECUTE (P1) Function: Terminates command execution, and continues with the command list on object (P1). Note flags and position of original object are still used for the object commands GOTO -Class player command ~~~~ Format: GOTO (P1 [,P2]) Function: Move the player to the defined entrance P1 at the defined area P2 IF - Class condition statement ~~ Format: IF condition then commands endif Function: Marks the start of a condition statement INCLUDE - Class animation command ~~~~~~~ Format: INCLUDE (P1) Function: This command is animation specific. The command includes the specified object into the animation list. This command should be used at the very beginning of an animation before the START command. INVIS (IV) - Class object command ~~~~~~~~~~ Format: INVIS (P1 [,P2]) Function: Sets the invisible flag on object P1 in area P2 INVIS? - Class object interrogator ~~~~~~ Format: if INVIS? (P1 [,P2]) then commands endif Function: Checks the invisible flag for object P1 in area P2. LOOP - Class loop command ~~~~ Format: LOOP (P1) Function: Marks the start of a loop section. The commands between the loop and again will be executed P1 times MODE - Class player command ~~~~ Format: MODE (P1) Function: Alters the current movement mode: 1 - walk, 2 - fly1, 3 - fly2 MOVE - Class animation command ~~~~ Format: MOVE (P1,P2,P3) Function: Moves the members of the current animation specified by the include command by x,y, and z MOVETO - Class animation command ~~~~~~ Format: MOVETO (P1,P2,P3) Function: Moves the members of the current animation specified by the include command to position x,y, and z. NOTV - Class variable command ~~~~ Format: NOTV (P1) Function: Performs a logical NOT on P1 OR - Class condition command ~~ Format: if condition OR condition then commands endif Function: Combines 2 or more condition checking commands, and returns true if any of the conditions are true. ORV - Class variable command ~~~ Format: ORV (P1,P2) Function: Performs a logical OR on the 2 values specified. GETXPOS,GETYPOS,GETZPOS - Class object interrogator ~~~~~~~~~~~~~~~~~~~~~~~ Format: GETXPOS (V1,P2 [,P3]) - variable, object, area Function: Store the position of an object P2, in area P3 along the x,y and z axis in the variable V1. PRINT - Class instrument command ~~~~~ Format: PRINT ("message...",P1) Function: Print a message to a defined text window RESTART - Class animation command ~~~~~~~ Format: RESTART Function: Reset the animation to the position set by the START command or the start of the animation. REDRAW - Class instrument command ~~~~~~ Format: REDRAW Function: Force a redraw of the freescape view window REMOVE - Class animation command ~~~~~~ Format: REMOVE(P1) Function: Remove the P1 object from the animation. SOUND - Class sound command ~~~~~ Format: SOUND(P1) Function: Perform the sound P1 SETVAR (SET) - Class variable command ~~~~~~~~~~~~ Format: SETVAR (P1,V2) Function: Sets the variable V2 to the value of P1. SHOT? - Class trigger interrogator ~~~~~ Format: if SHOT? then command endif Function: Check to see if an object has been shot. START - Class animation command ~~~~~ Format: START Function: Marks the beginning of the animation command list. STARTANIM - Class animation command ~~~~~~~~~ Format: STARTANIM (P1[,P2) Function: Start an animation controller going. STOPANIM - Class animation command ~~~~~~~~ Format: STOPANIM(P1,[P2]) Function: Stop an animation controller. SUBVAR (SUB) - Class variable command ~~~~~~~~~~~~ Format: SUBVAR (P1,P2) Function: Perform a subtraction on the 2 values, P1 is subtracted from P2. SYNCSND - Class sound command ~~~~~~~ Format: SYNCSND (P1) Function: Execute the sound P1 in sync with the next complete frame update. THEN - Class condition statement ~~~~ Format: if condition THEN commands endif Function: Checks the status of True on the condition above. Executes commands following then and before else and/or endif TIMER? - Class trigger interrogator ~~~~~~ Format: if TIMER? then commands endif Function: Checks the timer flag, returns a true if a timelapse of the amount specified in the setup section has passed TOGVIS (TOG) - Class object command ~~~~~~~~~~~~ Format: TOGVIS(P1 [,P2]) Function: Toggles the visibility of P1 object in P2 area. TRIGANIM - Class animation command ~~~~~~~~ Format: TRIGANIM (P1) Function: Sets the trigger flag for use in the WAITTRIG command. Useless unless waittrig command is used. UPDATEI - Class instrument command ~~~~~~~ Format: UPDATEI(P1) Function: Update instrument P1 in the test screen VAR=? (V=?) - Class variable command ~~~~~~~~~~~ Format: if VAR=? (P1,P2) then commands.. endif Function: Compare P1 and P2 and return true if P1 = P2 VAR>? (V>?) - Class variable command ~~~~~~~~~~~ Format: if VAR>? (P1,P2) then commands.. endif Function: Compare P1 and P2 and return true if P1 > P2 VAR75 then drown v53 x coordinate at the beach head when going to the island. v54 inventory list indicator. 0 - not showing 1 - first object 2 - second object, etc. v55 object carried counter for inventory list. v56 inventory request. 0 - not requested 1 - requested 2 - currently showing v57 in sea (island) 0 = no, 1 = yes v58 number of frames spent in the sea v61 giant nose shot? 0 = no, 1 = yes v247 speed trap, 0 = off, 1 = on v248 cheat on? 0 = no, 1 = yes v249 used to check whether the player is on the sea or not 0 = no 1 = yes v252 x viewpoint position, used for locking out movement when animating the viewpoint in area 003, same for v253 and v254 v253 y viewpoint position v254 z viewpoint position APPENDIX ~~~~~~~~ Default key controls "O" move forward "Q" turn left "K" move back "H" move left "P" look up "J" move right "R" move up (rise) "N" tilt left "F" move down (fall) "W" turn right "I" face forward "1" save game position "L" look down "U" u-turn "2" load game position "M" tilt right "A" activate object "esc" quit game "B" select mode "V" change mode (walk/fly) "C" center cursor on/off "space" FIRE! -=USA/Fairlight=-