Sandbox User Manual V1.1 FC Editor
User Manual:
Open the PDF directly: View PDF .
Page Count: 188
Download | |
Open PDF In Browser | View PDF |
1.1 Version USER MANUAL CryEngine® Sandbox Far Cry™ Edition CRYENGINE® SANDBOX – FAR CRY™ EDITION User Manual CryEngine® Sandbox - Far Cry™ Edition Crytek GmbH Coburg • Germany Table of Contents INTRODUCTION ACKNOWLEDGEMENTS NAVIGATION i ii iii MAP CREATION Other Objects 26 Lighting 27 Dynamic Lighting 27 Static Lights 28 Walkthrough 30 Terrain 1 Automatic Terrain Generation 2 ARTIFICIAL INTELLIGENCE Height Maps 3 Placing AI Objects 32 Direct Terrain Editing 4 Controlling AI Actions 33 Surface Texture 6 Anchor Points 33 Terrain Layers 7 AI Paths 33 Surface Texture 8 Restricting AI Movement 36 Layer Masks 9 Movement in Non-Standard Areas 37 Layer Painter 10 AI Vehicles 39 Lighting and Environment 10 Land and Sea Vehicles 39 Vegetation 12 Concluding Words 44 Walkthrough 14 Animals 45 Pigs 45 Walkthrough 46 OBJECTS Object Placement 17 Placing Standard Objects 18 EVENTS Grouping and Linking Objects 19 Simple Events 49 Object Management Toolbar 20 Triggers 50 Placing Area Objects 21 More Complex Events 50 Organising Objects 22 Adding Impulse 50 Layers 22 Elevators 51 Select Object Window 22 Walkthrough 53 Hide by Category 23 The Entity Library 23 INTERNAL AREAS Destroyable and Physicalized Objects 24 Floors and Ceilings 55 Doors and Switches 24 VisAreas and Portals 56 Particle Effects 24 Walls 58 Elevators and Flying Foxes 24 Doors 58 Lighting 59 CUT SCENE EDITOR Dynamic Lights 60 Introduction 94 Radiosity Lights 60 Key Concepts 94 Fake Lights 61 The Sequencer Tool Bar 95 Creating Holes in the Terrain 62 Creating a Cut Scene 96 Walkthrough 63 Placing objects for the scene 96 Moving Objects 96 Cameras 98 99 MULTIPLAYER MAPS Free For All and Team Deathmatch 67 Animating Objects Spawn and Spectator Points 68 Directing 100 Adding Weapons 69 Playing your Cut Scenes 100 Vehicles 70 Walkthrough 101 Assault Maps 71 Spawn Points 71 MODDING Objectives 73 Scripting 104 Other Options 75 Creating New Entities 105 Buildable Objects 75 Setting Entity Properties 105 Walkthrough 77 Creating Methods and Events 106 Example Entity Script 107 Particle Effects Editor 111 Materials Editor 112 Appendix A: Map Creation Tables 115 Appendix B: Object Property Tables 117 Appendix C: AI Tables 159 Appendix D: Events Tables 162 Appendix E: Light Types 168 Appendix F: Music Engine Data 174 Appendix G: Scipting and Editing 176 SINGLE PLAYER MISSIONS Setting Up 79 Mission Scripts 80 HUD instructions 81 Game Instructions 83 Movie Instructions 83 Console Commands 83 Miscellaneous 83 Save Points 84 Walkthrough 85 SOUNDS Sound Spot 87 Sound Presets 87 Area Sound Presets 89 Sound Preset Object 90 EAX Sound Presets 90 Music Engine 91 Walkthrough 92 F A R C R Y ™ Introduction The remit of this user manual is to explain the workings of the CryEngine Sandbox editor, in terms of level editing within the domain of the Far Cry™ game. The documentation is designed to enable the user to create multiplayer maps, levels and combinations of levels that are as complex and detailed as any of the levels or multiplayer maps released with the game. That means that the user should, with the skills learned from using the manual, be able to produce multiplayer maps and levels of the quality of anything provided with the game, but only if that user has the requisite level design skills. What the manual does not provide is information that explains how to modify the game engine itself, so that it performs differently to that which is provided. Therefore only limited information is provided in the main documentation that relates to such aspects of modifying games as scripting, importing models, etc. These aspects may be commented on in the documentation, but only in so far as it relates to the creation of levels within the remit already specified. This does not preclude the inclusion of appendices to explain such aspects of the game’s design. There are nine walkthroughs in this manual, eight of which form part of a series and must be followed in sequence to be completed. This series of walkthroughs creates a level where the player must chase two buggies around the beach of an island, and destroy them, and includes elements from each of the first nine chapters, except for the Multiplayer Maps chapter which has a self-contained walkthrough that is separate from the rest. The final chapter does not include a walkthrough. Also included in this documentation is the Demo level, created by Alex Werner, which exemplifies many of the aspects of the editor outlined in this user manual. This example level should be used to see how common elements from the game are actually implemented, and can be found in the Demo folder of the Levels directory on the CD. Throughout the text there will be references to this demo level in the margin of the page, with dark blue text that will indicate an object that is included in a set on the level that will help you understand that part of the chapter better. If you press Control-T, in the editor, to show the Select Objects window, you can locate and double-click the named object to select it. Then just select Goto Selection from Modify menu to find it on the map. To learn more about the way the level editor works, outside what is explained here in this document, or just to see how things work in practice, it is a really good idea to open up the already created levels for the game. The demo level in particular is very helpful in understanding how to set up particular object combinations, and includes many useful tips in the comments. i F A R C R Y ™ Acknowledgements While this user manual is the written and editorial work of the named author, it would not have been possible without the help of many of the skilled people working on the Far Cry™ project. This acknowledgements page recognises the great contribution of these people in the making of this document. The key contributors will be listed here, but there will be many more whose incidental assistance was invaluable. In alphabetical order: Ben Bauer; Internal Levels chapter, elevator operation, materials editor, and Events and Lighting appendices. Steve Blezy; Sounds chapter. Marco Corbetta; Scripting appendix. Sebastien Couture; Multiplayer Maps and Artificial Intelligence chapters, and Objects appendix. Owen Flatau; original documentation, particle editor, additional diagrams and appendices. Sten Hübler; Objects and Events appendices. Michael Khaimzon; Cut Scene editor section. Petar Kotevski; Modding chapter. Robert Peterson; original documentation. Alex Werner; Demo level and Single Player Missions chapter. Also thanks to Timur Davidenko, Chris Natsuume, Richard Tsao, and many others for checking the documentation, and offering assistance, corrections and updates. ii F A R C R Y ™ Navigation Before you can do anything with the editor, you need to know how to get around it. The sandbox has an intuitive interface, which mirrors how you would navigate about the map in the game, at least in the more commonly used Perspective view. The menu systems are standard windows drop down type, and you will find everything as you might expect it in a windows application of this kind, except where it is specifically explained otherwise in the text of this user manual. The first thing you will want to do is create a map, or load one from file. You can create a map by selecting New from the File menu and entering a name for your new level. Before you click OK, you will want to select your Heightmap Resolution and set your Meters Per Unit. These two parameters set the size of your map. For example if you set a resolution of 1024x1024 with a meters per unit of 2, which is fairly standard for most levels, you will get a map size of two square kilometres. You can have maps of up to a theoretical limit of 65536 x 32 meters per unit, making for a map of over two thousand square kilometres. Whether your system can realistically manage such a map size without crashing, and other performance considerations, should dictate what you choose. Tip: if these views aren’t available for some reason when you run the editor, you can select the horizontal split screen view by selecting Configure Layout from the Display menu. Once you have started the map, you will be presented with an empty ocean, which you will later want to fill with terrain, objects, etc. The default interface presents you with two windows, the Perspective and Map views. Both are displayed in two windows by default when you open the editor. You will likely find that you want to work with one or the other at any one time, and so you can switch between them easily. Double-clicking on the top bar of either of the windows will maximise it, and allow you to work on that window alone. Double clicking on the top bar of a maximised window will bring back the dual window view, and allow you to switch to the second view. This method of switching between single and multiwindow view works for all display formats in the game, and not just the two window view. The perspective view of the map can be navigated through the use of standard FPS keys and mouse interface, with a few differences. The W, A, S and D keys will move you forward, backward left and right respectively. You can rotate the view iii F A R C R Y ™ by holding down the right mouse-button on the window, and moving the mouse in all directions. Zooming in and out of the view is achieved using the mouse's scroll buttons, with a forward roll zooming you out and a reverse roll zooming you in. You can alter the speed at which you move through the map by changing the Speed parameter in the bar at the bottom of the navigation window. Tip: a camera icon on the Map view shows you in which direction you are facing in the Perspective view. The Map can only be viewed from the top-down perspective, and is therefore controlled more simply, without the need for the keyboard. Holding down the right mouse button will allow you to scroll the map around by moving the mouse. Using the scroll button on the mouse will allow you to zoom in and out. In opposition to the Perspective View, the scroll button zooms in when rolled forward, and zooms out when rolled backwards. This is the means by which you navigate through all the other flat view windows, such as left view and top view, which can be accessed using the Configure Layout option in the Display menu. One very useful navigation tool that the editor offers is the ability to save and recall points on the map. You can save any point that you are working on in the map by holding down the control key and any of the function keys from 1 to 12. You can similarly recall yourself to that same position by pressing the shift key and the same function key that you saved this position to. When you are working on multiple sections of large maps, it can be very easy to get lost in the 3D view, and so having these buttons to move you quickly from one place to another can save you a lot of time and headaches in your work. 4 F A R 1 Chapter C R Y ™ Map Creation This chapter describes the process of creating the terrain, from the first grey scale height map to the painting of vegetation brushes and applying light. C reating a basic map for any level consists of several processes, terrain, textures, lighting and vegetation. While this chapter can teach you the tools you need to create a map, the real hard work for this will come from how you use the tools to implement the map which is in your own imagination. Terrain There are three ways that you can generate terrain. You can generate it automatically, with the Generate Terrain option in the Terrain window, you can import a grey scale height map, or you can alter the terrain directly using brush tools contained within the editor. Using the Generate Terrain option is the easiest, and quickest, means of creating believable looking terrain, but it doesn't allow for much in the way of control. Height maps allow for much more control, but this takes longer than automatic generation and doesn't provide a great deal of fine detail. The use of brush tools in the editor requires a lot of skill and time to create the perfect map, but it allows for the greatest amount of control, and is the preferred means of terrain generation for experienced level designers. 1 F A R C R Y ™ Automatic Terrain Generation Figure 1.1 Use the Terrain Window to create height maps for your level. If you click the Terrain icon, you will be presented with a window with a map containing nothing but sea. From the menu at the top, you can select the Generate Terrain option to quickly create a landscape to work on. The option will present you with a number of parameters, which you can use to influence the way in which the function generates the terrain. - Feature Size Frequency; determines the amount of "noise grains" to be applied to the map by the noise function. Bumpiness/Noise; affects the bumpiness of the terrain. Detail; determines the number of times the noise function will be applied. Variation; random seed. 2 F A R - C R Y ™ Blurring; sets the number of times the smoothing filter is applied to the noise function. Cover; not used Sharpness; not used Sharpness; not used. The key parameters are Feature Size Frequency, Bumpiness and Blurring. The Feature Size Frequency affects the amount of land that is created, while Bumping and Blurring affects how bumpy or smooth the land that is generated will be. The Variation parameter is also important, and provides the random seed for the function. Maps generated with the same random seed will tend to follow similar patterns. Changing this value can dramatically alter the way the map looks. Note The default settings will create an archipelago of islands with jagged mountain tops. To create a more solid continent based map with smoother edges, increase the Feature Size, Variation and Blurring parameters. Height Maps The terrain is based on a grey-scale, with pure white being the highest point on the map, and pure black being the lowest. Shades of grey in-between give differing heights. Thus a spectrum of grey shades from pure white to pure black will give a shallow slope, and pure black next to pure white will give a long sheer cliff face. This means that you can paint the map that you want, using a grey scale template. You can create this template with the height map editor provided with the CryEngine Sandbox editor, or import it from one of your favourite paint packages, like Paint Shop Pro. Figure 1.2 Terrain Window Tool Bar The height map editor allows you to paint the terrain with a brush, the size of which you can choose from the different sized circles on the tool bar. Next to this on the tool bar you can select your brush, which is either a plain brush, a height brush, or a noise brush. The plain brush paints a smooth surface terrain, the height brush paints a grey scale of the exact height you choose, and the noise brush makes 3 F A R C R Y ™ the terrain more random and spiky. You can also alter the pressure by which the brush is applied, by altering the opaqueness of the brush. The opaqueness is set by choosing from the three grid shapes on the left of the tool bar. The more compact the grid pattern, the less opaque the brush, and the harder the brush is applied. Note Imported image files must be in windows bitmap (.bmp) format. Direct Terrain Editing Tip: use the wireframe option to give you a clearer picture of the terrain heights when editing in perspective view. The most powerful method of terrain editing is to create the terrain yourself, in the map and perspective view, using the editor tools for raising, lowering and smoothing the terrain. This method gives you the greatest control over the landscapes created, as well as allowing you to see much more clearly what you are producing. However, it also takes the greatest amount of time. While this is the preferred method of terrain editing by those who are more experienced with the CryEngine Sandbox editor and level editing in general, it may be better for less experienced editors to use either automatic terrain generation or a height map, and to only use the terrain editing tools to fine tune the end product. Figure 1.3 The Perspective View is excellent for navigating through your map. 4 F A R C R Y ™ Tip: you can alter the sea level by clicking the Terrain icon, and selecting Set Water Level from the Modify menu. To edit the terrain you can switch to either perspective or map view, although perspective view is usually preferable. Once you have an area of the map you wish to edit, click on the terrain tab of the RollupBar and click the Modify button. In the Modify Terrain window that appears you will be able to select between Flatten and Smooth terrain. Flatten raises or lowers the terrain under the brush to bring it towards the value set in the Height parameter. The Height parameter can be set to any value between 0 and 255, although values over 150 are not all that common in most maps. One thing to consider when setting the height is the water level, which defaults to a height of 16. Anything above the height set for the water level will obviously be above sea level, and anything else will be below. Tip: you can automatically reposition objects on the map as you edit the height of the terrain by checking the Reposition Objects check box. For both the Flatten and Smooth brush you can alter the size of the brush, and the pressure at which it is applied. The Radius parameter defines the size of the brush's radius in Game Units, and the Hardness parameter determines how quickly the terrain will rise or fall to meet the new Height value. Higher values for Hardness will result in cliffs being produced, while lower versions will make for shallower slopes. The Flatten brush can also include Noise, with the Enable Noise check box ticked. With noise added, you can alter the Scale and Frequency parameters of the noise function, to alter the how bumpy the painted terrain looks. If you switch to the Smooth brush, it performs the exact opposite function, removing the bumpiness from the created terrain. For the Smooth brush, the Noise function is obviously not available. When working on heights there are a number of very useful hotkeys you can use to speed up your editing. You can increase and decrease the size of the brush radius with the + and - keys. You can also increase and decrease the height parameter with the * and / keys. Even better than this, however, is to alter the height parameter by sampling a height from the current terrain. If you want to change the height of the surrounding terrain to the same height as the area you are working on, you can hold down the Control key and click the area of the map that you want the height sampled from. 5 F A R C R Y ™ Surface Texture Figure 1.4 Untextured surfaces will be covered in red Replace Me tiles. You will notice that your landscape is covered in red Replace Me squares. These are your surface textures, and you will need to, as advised, replace them with something of your own choosing. The surface textures are the basic elements that cover the map, like grass, sand and rock. You can include vegetation when you are painting these surface textures, but most of your vegetation will be added later as brushes. When using the Generate Surface When you have finished adding your textures, you Texture function, you will need to select must remember to select the Generate Surface the texture dimensions. The greater the resolution, the better the image quality, Texture option from the File menu. It is worth but the greater the CPU requirements. waiting until you have a significant amount of texture to generate before selecting this function, as it can take several minutes to create. 6 F A R C R Y ™ Terrain Layers Figure 1.5 Use the Terrain Layers Editor to create the beaches, grass plains, etc. for your map. The terrain surfaces in the Far Cry™ editor are generated as layers, one on top of the other. To edit these layers click on the Texture icon on the tool bar, or select Texture from the Terrain menu. This will bring up the Terrain Layers Editor window, and from here you can create all the terrain textures you need for the map. There are four windows in the Terrain Layers Editor, Layers, Static, Layer Mask and Preview. The Layers window lists the names of all the layers in the map. The Static window displays the actual texture, and allows you to edit its finer details, such as the noise it makes when walked upon. The Layer Mask Auto Generation window sets the altitude and slope range that the layer will be applied 7 F A R C R Y ™ to, and the Preview window shows you what the map will look like based on the settings currently chosen. Tip: you can create layers that won't be used to auto-generate texture, but instead will be specifically for painting with the Layer Painter tool. This tool will help you perfect your terrain. The Layers window displays the layers you are using in the order in which they will be placed on the map when you run the Generate Surface Texture function. That means that the first texture layer will form the base, and each subsequent layer will be placed on top of it. For example, if you want a sand layer to appear on top of your default rock layer, then you must make sure that the sand layer comes after the default layer in the list. The icons at the top of the list of layers allow you to add new layers, delete existing ones and move them up and down in the order. If you want to rename the layer, simply double-click it. Surface Texture Next to the Layers window is the Static window. This allows you to select both the surface type, and the surface texture itself. In the preview box you will see the currently selected surface texture for the layer. To change this, click on the Load Texture button, and select a suitable texture from the terrain directory. If you want a different surface type to the Default, which isn't the best, then you will want to create a new one. To do this click on the Edit Surface Types button and a new window will pop up. Note You are only allowed a maximum of seven surface types, so use them wisely. The Surface Types window allows you to define the surface type of the texture, for example how it sounds when you walk on it, what it looks like close up in detail, and what vegetation will appear on the texture when it is applied. To create a new surface type, simply click the Add button under the Surface Types list, and give it a name. After that you will need to give the surface type a material, which you can choose from a drop down list of settings, for example you might want to choose the mat_sanddry material for a beach. The material defines how the surface responds to being walked on, shot at, etc. You will also want to define a detail texture. This texture is for when you zoom in close to a texture layer. Without the detail, when you zoom in close to a texture layer you will see a nasty red ReplaceMe graphic. You can set the detail texture by clicking the "..." icon and choosing a suitable detail from the detail directory. The detail texture doesn't necessarily have to be the same as your surface texture, as long as it works in combination. For example you can have a snow texture, with rock as the detail. 8 F A R C R Y ™ Also in the Detail Texture window is the projection settings. When a texture is applied, it is applied from a certain direction, the default being from above, i.e. the Z axis. This can result in tiles getting stretched across surfaces that have long sheer faces, like cliffs. For certain textures, like those applied to steep slopes, you may wish to change the default projection axis from Z, to X or Y. The size of the texture's tiles is determined by the X and Y Scale settings. Decreasing the value of the X and Y Scale increases the size of the tile on the X and Y axis. If you experience tiling then you may wish to decrease this value to make the tiles bigger, but if they look stretched, then you may wish to increase the values. Finally you can add objects to your textures, so that certain objects will be painted onto every occurrence of the texture on your map when generated. For example, you may wish to have flowers appear wherever you have a default green surface texture. To add objects, simply click the Add button, and pick one from the objects/natural/details folder. You can add as many objects as you like to the list, and every time the texture generating function creates an instance of the layer, it will add the selected objects too. It should be noted that this is a somewhat rough means of applying objects to the map, and placing them manually is usually preferred by experienced editors. Layer Masks Underneath the Static window is the Layer Mask Auto Generation window. From here you can select where on the map the new texture layer will be applied. To do this you need to create a mask, which you can do automatically using the altitude and slope range sliders, or manually through the use of an imported mask. To create a mask manually, you need to uncheck the Auto Generate Mask check box, and import a mask image from file. Mask images work in the same way as height map images, using a grey scale to determine where the texture is applied. The texture will be applied to anywhere that is pure white, but nowhere that is pure black. Any grey-scales in between will be blended accordingly. For auto-generated masks, the altitude and slope range sliders do all the work for you. The altitude range slider sets the range of altitudes across which the layer will be placed. For example, a sand layer can be placed across a layer that is just above and below the altitude at which you have set the water, say 10 to 20. To set the start range for the altitude, move the slider and click Set Start. To set the end range for the altitude, move the slider and click Set End. You can also set the start and end altitude values by entering these into the two edit boxes under the slide bar. The slope range slider works in the same way, only it allows you to define the range of slopes that the layer can be applied to. For example a rock layer can be applied to a range of slopes that are close to vertical, say from 200-255. Note Slopes are not measured in degrees, but as a ratio of 90 degrees, where 0 represents 0 degrees from the horizontal, and 255 represents 90 degrees. 9 F A R C R Y ™ Layer Painter Every layer that you can use in the layer painter must first be created in the Terrain Layers Editor, as described in that section. However, instead of generating the layer automatically, un-check the "Auto Generate Mask" box, and the layer will appear in the layer painter list for selection. To actually paint this layer onto the map, simply select the layer from the list, and apply it like any other brush. Just like other brushes you can alter the radius and hardness of the brush, which alters its size and the strength at which it is applied. You can also alter its value, which changes how much of the layer is applied when you paint. Instead of painting, you can also "smooth" the layer texture, which results in the applied texture being blended with the existing layers to make it look more natural. You can switch between painting and smoothing with the drop down menu at the top of the layer painter. Lighting and Environment Figure 1.6 The Terrain Lighting window allows you to alter basic lighting configuration for the map. The first place you will want to go in order to change the lighting effects in your map is the Terrain Lighting window, which can be accessed via the Lighting icon on the tool bar. The key changes you can make here affect where the sunlight shines from. You can alter the direction the sunlight shines from, and also from 10 F A R C R Y ™ what height. For height the lowest setting is dawn/dusk and the greatest setting is midday. You can also set the colour of the sun and sky, which again affects the lighting in the map, but also the colour tints of the terrain surfaces and objects. Remember that if you want to see the effects of your changes to the sun and sky's colour, you need to regenerate the surface textures. However, the effects of changing the direction and height of the sun can be seen immediately. Shadows are also an important factor in lighting your map. From the Terrain Lighting window you can change the Blur and Intensity of the shadows that affect your surfaces. The intensity of the shadows determines how dark they will appear on the map. You may also turn Terrain and Object shadows on or off. Terrain shadows are cast by mountains and other landscape features, while Object shadows are cast by objects placed on your map like vegetation and vehicles. Having these turned on significantly increases the amount of time it takes to generate textures, so you may want to turn them off until you have completed the design of your map terrain. You can add some finishing touches to your terrain and the environment in the Environment window of the RollupBar, under the Terrain tab. Here you can alter the sun and sky colour, just the same as from the Terrain Lighting window, but you get a number of other options too. In addition the Environment settings allow you to alter the environment colour, EnvColor, and the ambient colour, OutdoorAmbientColour. Both of these settings affect the colours on the entire map, and setting either of them to a very dark colour will block out most of the colours on your terrain. They are best set to light colours, unless you want a dark map, say for a night mission. The fog settings also affect the colour of the map, and how much of the map players can see. Fog is the environment effect which obscures objects beyond the view distance set for the map. You can set the colour of the fog here, as well as how far away from the player it starts and ends. The ViewDistance parameter defines the point at which objects start to become invisible to the player. There are fog effects for underwater too, and the fog colour and fog distance can be set for the "Ocean" in the same way as it can be set for on the land. This allows you to add a gloom to the underwater sections of the map, to make it look more realistic. In addition to the colours and lighting effects upon the environment, there are a number of other useful settings in the Environment window. Probably the most dramatic effect you can change here is the SkyBox parameter. From here you can select what the sky looks like, from the sunniest of clear blue days with fluffy white 11 F A R C R Y ™ clouds, to the most foreboding of stormy blue twilights, with dark brooding thunder clouds on the horizon. Pre-storm skies will likely require a fair bit of wind blowing through the trees, and so you can alter the WindForce settings to reflect this. The more WindForce the greater the degree to which the vegetation bends, and works in conjunction with the "Bending" parameter that you can set for your vegetation when painting it onto the map. Note See Appendix A for more details on the parameters of the Environment window. Vegetation Once you have a convincing looking landscape, you will want to add a layer of vegetation over the top to make it look like a living world, rather than a dead planet. You can place individual vegetation objects onto the map, and this will be explained in the next chapter on objects, but the first layer of vegetation you will want to put down will be with the Environment Brush. The Brush can be located under the Terrain tab on the RollupBar, by clicking on Vegetation. This will provide you with a list of available vegetation objects to be painted, along with the tools to paint them onto the landscape. The first thing you will want to do is to add vegetation to the list of available objects to be painted. You will likely be starting from scratch, and so you will want to add vegetation to your brush list. You can do this by clicking on the left most icon in the Vegetation toolbar, the blue plus symbol. Once added you can click on the object in the list, click the Paint Objects bar at the top, and proceed to apply the vegetation brush to your map. If you add another vegetation type to the list, you can select them both by holding down the control key, this allows you to paint both objects at the same time. You can do this for as many objects as you like; all objects to be painted will have the red circle by their name. The tool bar has a number of functions that give you a lot of power over your vegetation creations. Apart from adding and cloning objects, you can create new categories to work in. This allows you to select whole groups of vegetation types to paint with, or to delete completely. When it comes to deleting your vegetation, you can either remove it completely, which removes it from both the map and the object list, or you can replace it. Replacing a vegetation object swaps the selected vegetation object in the object window list with 12 F A R C R Y ™ another chosen from file. This results in all instances of that previously chosen object being replaced on the map. For example, if you painted one type of grass onto a patch of terrain, and didn't like the look of it, you can swap all of the grass that you have painted to another kind by using this option. All of the vegetation objects have a number of settings. These settings are applied universally to all instances of the object that you paint with this object selected. Therefore, if you use the instance of the object in the object list to paint a beach shrub on every beach on the map, then when you alter the particular parameters for that object instance, all the beach shrubs on all the beaches of your map will be affected. If you don't want to alter all the settings for all instances of a particular vegetation object on your map, then you will need to create two or more instances of it in the object list, so that you can paint them as individual brushes. TIP: you can quickly change the settings for an entire group of vegetation, by selecting the category rather than the individual objects. For example, if you have a category set up as "trees", and you want to make all the trees sway at the maximum rate, you can select the "trees" category and alter the value of "Bending" universally for that category. The settings have a number of key parameters that greatly affect the way the vegetation looks on the map. Size, clearly, alters the size of the object that is painted. Altering the value of Size scales the object so that a value of 1 is the default size and a value of 2 is double. The SizeVar parameter allows you to set the variance of the object's size as it is painted on the map. By default this value is zero, and means that all objects will be the same size. To give the map a more natural look it is necessary to alter the variance of the vegetation sizes on the map. With SizeVar set to a value other than zero, the objects will be painted onto the map with a size which varies from the norm by a percentage defined this variable. For example, if SizeVar is set to 2, then vegetation objects will be painted with a size ranging from the norm to 200% larger than normal. For other values, 0.5 gives 50%, 1 gives 100%, 3 gives 300%, etc. Note Shadows make for more realism, but can lower FPS rates. You can also affect the way the vegetation appears on the map by changing its density. The value represents the number of game units, thus a value of 10 will set a density of one object per 10 game units, which means the lower the number, the greater the density. There are a number of lighting parameters too, allowing you to set whether the object receives shadows from other objects, or casts them itself. It should be noted that shadow settings can bleed the CPU of resources, and so are best applied sparingly to keep the FPS rate high. In addition to the lighting, you can also change the brightness of the vegetation object directly in the settings. One final set of parameters that won't affect the way your vegetation looks, but will help you in painting the objects only in the locations that you want them, are the elevation and slope delimiters. The elevation delimiters are useful in preventing 13 F A R C R Y ™ you from painting trees under the sea, and coral on mountain tops. The slope delimiters ensure that you only paint objects onto slopes within a range of your choosing. This can help if you don't want to paint trees onto the sides of sheer cliffs, or if you don't want your wall climbing vines stretched across flat beaches. Note that as when you were creating layer masks, the slope angles are not defined in terms of degrees, but as a ratio of 90 degrees, thus a value of 255 is 90 degrees. Walkthrough This walkthrough creates a useable landmass for the level, with terrain and lighting effects. 1. Start a new level. Select New from the File menu, and call the new level Walkthrough. Set the heightmap resolution to 256 x 256, and the meters per unit at 2. Click OK. 2. Create a landmass. Click the Terrain icon from the tool bar, and select the biggest round brush for the Terrain editor. Click repeatedly in the centre of the heightmap, until you have a circular landmass about half the width of the map. Click OK. 3. Locate your new island. Find the island on your map, and select Wireframe view from the Display menu to make it easier for you to see what you are doing in the next step. 4. Hollow out the centre. Select the Terrain tab on the Rollup Bar and click Modify. Choose Flatten, a Radius of 50, a Hardness of 0.5 and a Height of 18. Then place the brush over the centre of the landmass, and hollow out the center, so that it becomes a ring donut shape. Switch off Wireframe view. 5. Create a beach. Change the Radius to 25, the Hardness to 0.2, and create a long wide flat beach all around the outside of the ring shaped landmass. 14 F A R C R Y ™ 6. Create a texture layer for the beach. Select the Texture icon from the tool bar, and click the square icon in the Layers menu to create a new layer and name that layer “sand”. 7. Give the sand layer a texture. Select the sand layer, and click on the Load Texture button in the right hand box. From the /terrain directory, choose the sand_bright texture file. 8. Create a Surface Detail for the sand. Click the Surface Types button, and then click Add to add a new type. Select the new SurfaceType1 and then Rename it to “sand”. From the Surface Type Settings drop down menu select mat_sand, or any other available material. Click the “…” icon next to Detail Texture, and select the detail_sand file 15 F A R C R Y ™ from the /detail directory. Click OK, and then select the new “sand” Surface Type from the drop down menu in the Static box. 9. Create a height and slope mask. From the Layer Mask Auto Generation box, move the Altitude Range slider bar to 20 and click Set End. Similarly move the Slope Range slider to 50 and click Set End. Click OK 10. Make it midday by moving the sun overhead. Click the Lighting icon from the tool bar. Move the Sun Height slider bar completely to the right. Click OK 11. Generate the surface texture. Select Generate the Surface Texture from the File menu, and select Yes when asked if you want to continue. Choose the 4096 x 4096 resolution, and click OK. 16 F A R 2 Chapter C R Y ™ Objects This chapter discusses some of the most important objects in the editor, and examines how they are placed, manipulated, and organized. O bjects are the living part of your world, and include all the vegetation, buildings, people, animals, vehicles, boxes, etc. that you will want to place around your map. There are two categories that objects can be divided into dynamic and static. Dynamic objects, referred to by the editor as “entities”, can be changed during run-time, e.g. they explode, move, etc. Static objects, however, are, like rocks, immovable. Most objects are of the standard drag-and-drop variety, like trees and buildings, but there are a number of non-standard objects, such as shapes like the Forbidden Area that delimits where an AI can travel. There are also a number of special objects that act as triggers for events, waypoints for AIs, and other tasks. There are so many, and so many different, objects in the game that it is impossible to discuss them all in this manual. However, you can review a list of all available objects and their properties at the time of this revision, in Appendix B. Object Placement There are ten object groups, and you can place them onto the map either by drag-and-drop, or by point-and-click, depending on the object group. Although that may seem nonsensical, you can tell which type of placement method is required by the type of list you are presented with. If you see a file management type menu, then you can use dragand-drop to move objects onto the map. If you see a simple list on a grey background, then you need only click on the object, and then move the object around on the map to place. 17 F A R Tip: you can quickly set the locks and snaps by using the keys 1 through 5. The 1, 2 and 3 keys lock the X, Y and Z plane respectively, and the 5 key locks the XY plane. Pressing 4 sets the placement to snap to the terrain and toggles between snapping to objects or not. C R Y ™ Placing Standard Objects Another way you can make placement easier is by using the "snap to" options. You can snap the placement of an object’s locations to a grid, the spacing of which you can define yourself. In the image above, the icon second from the right is a toggle, but also a pull down menu. You can toggle the grid by clicking the icon, and change the grid spacing by clicking on the arrow on the right of the icon. From there you can either select from a range of values, or set up the grid/snap values yourself. Setting up the grip/snap values yourself also allows you to alter the number of degrees the angles will snap to. The default value is 5 degrees, but you can change that to anything you want. The icon on the far right of the tool bar shown above toggles whether angle snap is on or off. Object Movement and Manipulation Once you have placed the object on your map, there are a number of ways you can fine tune your placement. First you must select the object using the arrow tool. Simply clicking on the object, or dragging a box around all or part of the object, will select it. Once selected you can select the second icon from the left to enable you to move the object around the map. You can use the same movement lock icons as described above to assist placement. In addition to moving the object, you also have two more placement options for fine tuning. First you may rotate the object along any plane, and you may also scale the object to any size you desire, big or small. On every object you select there will be what is referred to as a "gizmo", as seen in the image above. You can use this device to move your object around, but also to scale and rotate. On the gizmo, the blue line indicates the Z axis, the red line the X axis and the green line the Y axis. Clicking on any of these lines turns it yellow, and means that all The Gizmo is used to move and movement, rotation or scaling of the object will be along manipulate objects. that axis. At the centre of the gizmo there are three planes for each of the axes. Again, clicking on any of these planes selects it, and you can move, rotate and scale along them. If you want to move, rotate or scale while following the terrain, then click on either of the toggles for terrain lock with the object selected. 18 F A R C R Y ™ Note You can alter the relative projection of the gizmo on the screen by changing the relative view for it from the drop down menu to the left of the object selector icon. Tip: if you want to concentrate on one selection, and not accidentally start working on nearby objects, you can "lock" the selection by using the toggle next to the axes fields below the Perspective window. If you really want to fine tune your object placement to the last micron, you can use the axis fields beneath the perspective window. You can use this for moving, rotating and scaling, although when scaling it won't matter which of the X, Y or Z axes you change, as the change is applied to all three. For moving and rotating functions, changing any of the values in the X, Y and Z axes results in exact changes in their position and rotation on the map itself. For scaling the X, Y and Z axes are replaced by a single figure representing the scale of the object, set at 1. Increasing this value increases the size of the object, in relation to the objects original size, so a value of 2 will double its size. Grouping and Linking Objects You can easily work on multiple objects at the same time, say a set of barrels, by grouping the objects together. This can be achieved by dragging a selection box around every object you want in your group. Once lassoed in this way, you can move, rotate and scale the objects as one. You can add and remove objects from the group by holding down Ctrl and clicking the object; this toggles their inclusion. The group can be made permanent by selecting Group from the Group menu, and giving the group a name. Similarly the group can be disbanded by selecting Ungroup from the same menu. Tip: you can quickly generate multiple objects at the same time by pressing Ctrl and C while having an object selected to clone it. It is also possible to link and unlink objects, using the link and unlink icons on the tool bar, to the right of the undo and redo icons. Linking objects is similar to grouping them, only the first object is linked to the second object in a parent-child relationship, where any action taken on the parent, such as rotate, will affect the child, but any action taken on the child will not affect the parent. Linking works by clicking the link icon, and dragging a red link line between the child object and the object you want to be its parent. To unlink objects, click on the object you want unlinked and click the unlink icon to remove all links to it. 19 F A R C R Y ™ You can add objects from these permanent groups by selecting the group you want to add to, selecting the object you want added, and then selecting Attach from the Group menu. Detaching objects from permanent groups is a little more difficult. First you must open the group, by selecting the group and clicking Open from the same menu. Then you must select the object to be detached from the group, and finally click Detach. You can then close the group again by selecting Close from the Group menu. This prevents you from clicking on individual objects within the group by mistake. Object Management Toolbar TIP: snapping to an object is very useful when you are trying to place objects upon other objects, such as a ladder on the side of a tower, or a weapon pick-up on the top of a table. You can manage objects in the Select Objects window, which can be opened by selecting Select Objects from the Edit menu, or pressing Control-T. This window lists all the objects in the map. If you want to jump to a particular object, select it from the list by double-clicking it. The window will disappear, and you can click the Go to Selected Object icon, on the left of the Object Management Toolbar shown above. From the list, or by using the two icons on the right of the Object Management Toolbar, you can freeze and unfreeze objects or groups of objects. Freezing objects means that you can no longer perform any actions on them at all, you can’t even select them. The Select Objects window allows you a number of ways of displaying and filtering your objects, making them easier to manage. In addition to the icons mentioned already, the Object Management Toolbar allows you to align selections to objects, align them to the grid, or set the object height. Aligning the selection to the grid will force the object to snap to the grid layout that you have selected. Aligning the selection to object, will cause it to become aligned to the next object you select. Setting the object height gives the object a height above its placement of the number of game units that you enter as a value. This value can be positive or negative, and moves the object in relation to its set position on the map, and is not an absolute value. 20 F A R C R Y ™ Placing Area Objects Figure 2.1 Create area objects by clicking each vertex point on the map. Most objects are graphical entities of some kind, or at least a simple shape, that can be placed on the map without any consideration for boundaries. Some objects, however, are area based, and follow different placement rules to simpler objects. If you place an area object on the map, such as the objects in the Area list of the Objects window, or the Forbidden Area of the AI list, then you will need to define the object’s boundaries. You do this by placing a start point on the map, and then indicating each vertex of the shape by clicking where you want it on the map. When you have finished defining the area of your shape, either double-click the last point to automatically close the shape, or click the starting vertex. Each point on the area shape can be placed like any object, and can use the same locks. It is usually best to lock the placement of vertices to the terrain. All area objects have a height value, but it is not usually necessary to give them a particular height, as a height of 0 means it’s only calculated as a two dimensional shape with infinite height. Assign a shape a height only if you want to limit it in the third dimension, which will be not necessary for most outdoor shapes. A two dimensional shape is preferred to save speed. To give the area a height, simply enter a value in the Height parameter of the object in the RollupBar. Once placed, you can also edit the area object in the same way as other objects. You can move, rotate and scale just like any other object placed on the map. In addition you can edit any of the vertices of the area shape. To do so click the Edit Shape button in the Shape Parameters tab of the Objects window. Note that the vertices are at the base of the area object, and so if they are under the terrain you will need to raise them up before editing, or turn collision detection off. 21 F A R C R Y ™ Organising Objects You will find as your levels get bigger that you will create large numbers of objects all over the map, and keeping on top of them can become difficult. To help prevent you from becoming lost in a sea of objects the editor offers several ways of organising and viewing them. It is possible to organise your objects into multiple layers, to view, sort and select them in list format, and to hide objects on the map by their type. With careful planning, and appropriate use of these methods of organisation, it is possible to keep even the most complex of levels in a manageable state. Layers Layers can be organised in any way you feel suits your map, for example you can have a layer for each section of the map, like opening beach, hilltop battle, etc. You can create new layers in the Layer Settings tab of the RollupBar by clicking the plus icon and entering the layer's name. Once you have created a new layer, you can then lock the layer, so you can't edit it in any way; you can even hide it from the map completely. Hiding objects you aren't currently working on can increase the speed of the editor significantly, and is a real boon when you have object heavy maps. To add objects to your newly created layer, you can select the object, or group of objects, and in the Objects tab of the RollupBar click the multi-coloured three tiered layer icon and choose the layer of your choice. For example, if you want to add all the icons on a beach to a Beach layer, drag a box around all the items, click the layer icon, and select Beach from the list. Select Object Window The object list window is also a powerful way of organising, and manoeuvring through, your growing array of objects. You can access this object list by either clicking the three lined icon to the right of the snap to grid and angle icons on the tool bar, or by selecting Select Objects from the Edit menu. The Select Objects window allows you to sort your objects by name, type and layer. You can select multiple layers, and hide them or freeze them, or bring them back to normal editing status. You can also filter out certain object names, and quickly search for them using the Fast Select option. Possibly the greatest function of the Select Objects window is locating particular objects in huge nests of objects on large levels. If you click on the object you want to locate on the map in the Select Objects window, click ok, and then click the Go to Selected Object icon on the left of the toolbar. 22 F A R C R Y ™ Note If you jump to the select object window with an object or group of objects selected, they will automatically be highlighted in the object list. Hide by Category One final way of keeping the map from getting clogged up with objects that you are not working on, or are not interested in dealing with, are the Hide by Category options in the Display Tag. These allow you to hide objects by classification on your map, such as Entities, AI Points and Volumes. So, if you wanted to work on the placement of scenery objects on a section of your map, without the complicated links and tag points of the AI, you could switch all of these off. This window also allows you the opportunity to switch off rendering features on the map. This can give you a clearer view, but can also significantly increase the performance of the editor when the level becomes object heavy. The Entity Library Figure 2.2 The Entity Library is an excellent source of ready to go objects. Many of the commonly used objects are stored, with appropriate parameters, in the Entity Library, which can be accessed by clicking Show Database View in the Window menu. The database will show up as a window on your work screen, and can be shut down again once you have finished with it. The database is very useful for quickly applying objects to your map that can be difficult to get to work because they require particular parameters. The database provides ready-made "cookie-cutter" objects of almost everything that you might want in a Far Cry™ level, including particle effects, destroyable objects, doors and switches. To access these objects, click on the folder icon in the database, and open any of the files in the EntityLibrary folder. These will then automatically be listed in the Archetype Entity list on the Object tab of the RollupBar for easy access. Once you have 23 F A R C R Y ™ opened all the libraries you want, close the database to create more room for your work. Destroyable and Physicalized Objects Demo: Comment5 Demo: Comment38 Demo: Comment37 Part of the dynamic object set is the destroyable and physicalized objects. The destroyable objects consist of plain breakable objects, computer screens, and explosive objects. All three types can be simply placed on the map, and will work as is. Consideration only need be given the explosive objects, as you don't want them killing or destroying objects and entities that you need for your mission to be successfully completed. Physicalized objects have physical properties that allow them to move about the map realistically. This means that you can push them, shoot them, drop them in water, and they will react like they were in the real world. Empty barrels float, cans dance when shot, and cobwebs flutter when you brush past them. There are also animated objects, like flames and fans, and even a coconut that you can shoot. Doors and Switches The doors and switches folder provides you with two quite different objects. The doors can be just dropped onto the map, and they will work as expected, automatically, with a push, or only with a key card. You will obviously want to make sure the door opens up onto something, and that there is a building for the door, one that also fits its shape and design. The switches are objects that the player, or even the AI, can activate in order to set off an event, for example to set off an alarm. These switches are no use on their own, and need to be linked to an event, such as the alarm switch triggering an alarm sound, a flashing red light, and the sending of reinforcement troops to the area. Events will be described in a later chapter. One thing to consider when placing switches, or doors that require key cards, is to trigger a message when the player goes near, advising them of how to operate the switch or door, for example "press f to turn on the alarm". Particle Effects Some of the finer touches to your level design can be added by the use of particle effects. The CryEngine Sandbox provides you with a number of ready-made effects for your map, including fire, smoke, spark, steam and water effects. These will add dynamism to your maps, but will usually need to be used in conjunction with other static objects. For example, you may want to use the steam with a broken pipe, or the sparks near some broken computer terminals. Some of the effects, like the cigarette smoke, are particular to one kind of action, and so will probably require a trigger to activate them, in order to work properly. The cigarette smoke won't look any good unless there is a soldier standing by it pretending to smoke one. See the chapters on AI and Events to learn how to put these two things together. Elevators and Flying Foxes Demo: Comment48 The elevators in Far Cry™ are complex, but also very flexible, beasts. They take a lot of event programming in order to work properly, but you can have a very simple one up and running in a couple of minutes. First place an AutomaticElevator object on the map, from the Elevator directory of the Entity objects list in the Object tab of the Rollup Bar. This Elevator object will be 24 F A R C R Y ™ invisible, so you will need to change it from the default "lift" model. To do this click on the Model parameter, and then click the folder that appears to select a different lift model. You then need to make sure that the correct material is used, by changing the MaterialDefault, MaterialUp and MaterialDown parameters to reflect the new model. To do this you need to change the file names in these parameters to include the new name. For example, if the lift is lift_3x3x3m, then you need to change the Material file from lift or research_lift to lift_3x3x3xm. If you now test the lift, it should start moving up the moment you enter it, but there is a problem. With the current release the lift will revert back to its original starting point the moment you enter the vehicle before moving upwards. That starting point defaults to zero, unless you reload the script, so click the Reload Script button now before you do anything else. The speed at which the lift moves, and the distance it moves can be altered by setting the MovementDistance and MovementSpeed parameters. If you want to change the direction the lift moves, then change the Z value in the directions category of parameters to -1, for down, or 1, for up. You can even make the lift go sideways, or diagonally, by changing the values of the X and Y axes from zero in the same category. Note There are far more parameters than this, and it requires a lot of programming to get the lift to work with AIs and doors, but for now this will be enough to give you a working lift. Later on, once you have learned about AI and events, you will feel happier about investigating the deeper aspects of lift design. Flying Foxes are another way of changing altitude in Far Cry™, at least in the downward direction, and are a lot simpler to set up than elevators. To create a Flying Fox slide, you need a Flying Fox object from the same directory as the AutomaticElevator above, and a tag point. Drag and drop the Flying Fox on top of the place you want the player to be able to get down from, and place the tag point at the bottom, where he will get off the Flying Fox. Give the tag point a name, and copy that name into the destination parameter of the Flying Fox - this will tell it where to fly to. If you now test this, your player will be able to activate the Flying Fox and it will descend to the tag point destination. It will look strange, because it will have no cable or wire, so you will need to select one from one of the Brushes, and align it so that the Flying Fox careens down it from start to finishing tag point. 25 F A R C R Y ™ Other Objects Demo: Comment8 There is one final set of interesting objects on the Objects tab, and that can be found in the Others directory of the Entity file list. These include a variety of fascinating object types that fulfil a number of different functions. Probably the most interesting of them all is the Chain object, a physicalized object which can be used to hang other objects from. There are also DIY constructs for destroyable objects, breakable objects, etc., that can be used as a base for your own creations, as well as proximity damage objects, shoot targets and a number of other interesting things. The Chain can be implemented fairly easily, for simple objects, but gets a little more complicated when you want to start attaching the chains to complex objects, like dead bodies, where you need to connect to individual bones. Chains can be attached to pretty much any object, as long as it has physical properties, like weight. What they can't be attached to are living objects, like animals and soldiers, and the chain will just fall to the ground if you try this. To attach an object to a chain, copy the name of the object you are attaching and place it in the AttachTo parameter of the chain. It is best to move the attached object close to the chain, and have the chain actually hanging from something, rather than thin air. The chain will attach to the nearest part of the attached object, and you can attach as many chains to the object as you like. Note You may find it easier to group chains and their attached objects together in order to move them around the map, but you will find that if you leave them grouped together, they will no longer work properly. You can, however, link objects together to move them, and they will still work as expected. DIY objects, like breakable ones, can be customised to your own designs. For example, you can take the DestroyableObject entity from the Other directory, and change its Model to, say, an ammo_crate. Then you can change the ModelDestroyed box to ammo_crate_open to create a whole new destroyable object. You can also modify almost every aspect of its behaviour, including the amount of damage it causes the player, its explosion radius, and the sound that the explosion makes. Other objects, like Proximity damage objects can be simply placed on the map. The ProximityDamage object can deal out damage to the player as he comes near to it. It can be used for fires, or even schools of piranha fish. 26 F A R C R Y ™ Lighting There are two kinds of lighting that can be applied in the editor, dynamic and static. Dynamic lighting is calculated in real-time, while the game is being played, and is therefore highly expensive in terms of the computer's resources. Static lighting is pre-calculated, and while it doesn't look as realistic, it reduces the processing overhead considerably. Because of the ease at which dynamic lighting can be placed on the map, and the dramatic effects it can produce, it can be very tempting to throw them down everywhere. However, carefully planning and a good balance between static and dynamic lighting is necessary in order to ensure the level runs on machines that aren't powered by super-cooled parallel processors. Dynamic Lighting Demo: DynamicLight212 The Dynamic Light object has a number of parameters that can affect its properties, the most important of which are those that affect how it projects light. After all, what is the point in using dynamic lighting if you aren't going to show of its greatest strengths by having it plaster fluorescent pulsating light on every corner of the room, while swinging violently around its axis. The simplest parameters you can change are the dynamic light's colour and style. The default colour and style is boring white and a plain direct beam. You can change the RGB value of the light in the Specular parameter, for example to pink. In the LightStyle parameter you can change the light style from a steady beam to various kinds of pulsating, flashing or strobing lights. Note See the Objects Properties listing in Appendices B and E for a more detailed look at the Dynamic Light object’s parameters and types. Figure 2.3 Dynamic lights add amazing realism to your maps. 27 F A R C R Y ™ In addition to strobes and pink flashes, you can also make the light swing about its axis, or even swing wildly in orbits around its axis. To do this you need to set the light to shake. This can be achieved by setting the shakeRefreshTime parameter to anything but zero, which is the default. The light will then automatically shake every time the parameter is reset, thus the larger the value you enter for shakeRefreshTime the less often the light will shake. The degree by which the light shakes is determined by shakeAmount, which defaults to a rather large 100. You can reduce the shaking by increasing the damping parameter, or increase the shaking by increasing the max_step_time parameter. By default the light is set to the first model type, which is usually an invisible box. You can alter the model type by either pointing to a different model type, 1, 2, or 3, with the lighttype parameter, or by changing the model types themselves. Note You need to reload the script after changing the light-type, by clicking the Reload Script button. If you don't, then the light may not look as it should, and may rotate around a very eccentric axis. One final parameter of dynamic lighting is the lightshader parameter, which can dramatically affect the appearance of the light. You can choose a shader from the Select Shader window - light shaders usually start with the word Light, for example LightFlicker_flare2. There are many different shaders, but they mostly fall into these groups: beam, flicker, pules, and sway. Beam directs a strong direct beam of light from the source, flicker makes the light source flash on and off, pules creates a pulsing light source, and sway moves the swings the light source slowly from side to side, like a hanging lamp that has just been pushed. There are many of these effects, some of which are not detailed here and some that are combinations of effects. You will need to experiment to discover the properties of them all. Static Lights Static lights and objects can have their light and shadows “mapped” before the level has even been started, thus saving valuable processing power. The light map itself is a static texture, and should only be applied to static objects. You can apply it to dynamic objects, but if they should move during the game, the static lightmap texture will remain, making the scene look unrealistic, with the light source acting as if the object was still there. To produce the lightmap texture, all lighting must be pre-calculated using the Generate Lightmaps function in the Game menu. When creating lightmaps the generator uses the following parameters of each object to calculate the correct texture: - CastLightMaps; sets whether an object casts lightmap. RecvLightMaps; sets whether an object receives light from light casting objects (ignored for lights). Usually both parameters are set to true. 28 F A R C R Y ™ When you are ready to generate your lightmaps, call the compiler with the Generate Lightmaps function. Figure 2.4 The Lightmap Compiler generates all the non-dynamic lighting for your map. There are a number of settings to consider before running the compiler, the first of which being the quality of the lightmap. In the quality box is a Texel Size slider and a Subsampling check-box. A texel is a ratio of the size of lightmap to the world map. The smaller the size of the texel the greater the quality of the texture, but the greater the demand on the computer's resources. Larger sizes result in poorer quality graphics, but greater speed. Subsampling determines whether shadow antialiasing is applied, which again improves image quality, but drains processing power. As subsampling can be turned off by the user in the options, you can turn it off yourself for testing purposes, and then turn it back on for the final product, to keep the testing environment from becoming too sluggish. In the Misc box you can set the Texture Resolution. The resolution you will want depends on both the size of the objects that are being light mapped, and the size you have set your texels. If the texture size is set too low, you may find errors occurring during compiling. If it is too big, you will waste texture memory. You will need to strike a balance which will create the best texture for the least resources. In addition to the Texture Resolution, you can set whether the compiler uses sunlight and shadows in its calculations, by setting the appropriate check boxes. 29 F A R C R Y ™ When you have finally configured your pre-compiler settings, you will want to run the compiler itself. There are three options for compilation, Selection, Changes and All. Selection will only calculate light maps for the objects you have selected. To get the correct shadow casting with this option, you may have to select more objects than you need to calculate for. The Changes compilation option reviews the map for changes in light source properties, and recalculates the light map for only the objects that need it. Finally the All option recalculates the light map for all objects. This creates a completely new light map file, unlike the Selection and Change options, and can take several hours to complete. This compilation time means that is best reserved only for finished levels where it can significantly increase rendering speed. Walkthrough This walkthrough creates a start point for the player, a burning fire, several exploding tanks and a buggy. 1. Place a spawn point. So that you can test out your map, you will need to place a spawn point for your player. Locate an area on the inside of the ring that surrounds your new island, click on the Objects tab of the Rollup Bar, and open up the TagPoint object list by clicking on it. Select a Respawn object, click on the Follow Terrain icon in the tool bar at the top of the editor, and then place the Respawn point on the ground close to the inside wall. 2. Place a fire. Click on Brush in the Objects tab, and from the directory select outdoor and human_camp. Select the campfireb object, click on the Follow Terrain icon, and place the campfire on the ground close to the spawn point. 3. Set the fire alight. On its own the fire will not burn, so you will need to place a particle effect animation on it. Click on Entity in the Objects tab, and select Particle. Select the ParticleEffect object, and click the Follow Terrain and Snap to Objects icon. Place the ParticleEffect over the fire wood, and enter the particle effect name fire.camp_fire.a into the ParticleEffect property. Once you do this, you should be able to see the fire effect. If not, click Reload. You will need to move, rotate and scale the particle effect until it looks right, using the object manipulation icons on the tool bar. Press Control-F1 to remember this point. 30 F A R C R Y ™ 4. Place a buggy. Move from the spawn point to the other side of the island terrain wall. Click on Entity, and select a buggy from the Vehicle folder in the list. Place this on the beach, and rotate it so that it faces down the beach. 5. Place exploding fuel tanks. To bring up the Entities Library, select Show Data Base View from the Window menu. From the Entities Library, click on the folder icon to load a library, and double click the Destroyable_Objects file. From the Explosive_Objects folder that is now displayed in the database view, select the Explosive_Fueltank and drop it onto the beach. Press Control-C to clone the object, and place them all around the island, so one can be seen from any point on the beach. 6. Make the fire hurt. Press Shift-F1 to return to the fire that you built earlier. Click on Entity in the Objects tab of the Rollup Bar, and select a ProximityDamage object from the Others directory. Give the object a Radius of 1, and place the object over the top of the fire, so that it covers it completely. Press Control-G to test the level, and try walking over the fire. 31 F A R 3 Chapter C R Y ™ Artificial Intelligence A guide to placing and controlling Artificial Intelligence entities in your levels. A rtificial Intelligence entities include ordinary soldier units, like mercenaries, mutants, vehicles, like attack boats and gunships, and animals, like the pig. While they do have a large degree of autonomy programmed into them, you need to tell them what to do, in order for them to do it. If not they will tend to stand around and wait for something to happen, before filling it with a ton of lead. Placing AI Objects Tip: in order for your AIs to respond correctly when under fire, they need to know which objects they can hide behind for cover. For every object on your map which an AI can hide behind effectively, make sure that the Hideable property is ticked and set to True. There are two ways of placing AI objects on the map, the easy way and the hard way. The easy way is simply a matter of dragging and dropping pre-designed AI objects that are all set up to run and gun. The hard way is to drop an unfinished AI object, and set up all the parameters yourself. The former is obviously quicker, but the latter offers you more control over the behaviour and properties of the objects you place. To quickly place AI objects on the map, simply select the pre-designed AI object from the Archetype Entity list of the Objects window in the RollupBar. For example, a MercLeader_Defensive_M4_ will provide you with a Mercenary Leader who will protect a defined point, and will carry an M4 gun. To place an undefined AI object on the map, select one from the Entity list, and set its properties. Use the Object Property tables in Appendix B to assist you. When placing AI entities close to each other, you may want to consider grouping them together. You can do this simply by ensuring that each AI you want in the same group has its groupid set to the same value as every other member of the group. When AI entities are grouped together they behave differently to when they are on their own, especially if you include a Leader type AI. Unless specified otherwise, the AI group will not react until it spots an enemy, at which point the leader takes over, and the individual members follow their respective roles. For example, a defensive leader will move to defend a pre-defined spot on the map, while the Merc_Cover entities will provide cover for the AI entities that try to flush the enemy out. It is important to consider what members you include in your group, as a well balanced 32 F A R Tip: you can quickly change the group number, or any shared parameters of a group of objects. Selecting multiple objects shows you the parameters they share with each other, in the case of AI entities you can change their group number when selected together, and every entity selected will be given the same group number. Demo: Comment14 C R Y ™ combination can result in effective AI, but badly combined groups can result in bumping and confusion. Note To create a point on the map for a defensive leader to protect, then place an AI Anchor on the map, and set its property to AIANCHOR_PROTECT_THIS_POINT. Make sure that the Anchor point is not in a place that is inaccessible to the leader, such as inside a Forbidden Area, or behind walls and objects that are impassable or too complicated for the AI to calculate a path through. Controlling AI Actions Anchor Points If you don't tell the AI entities otherwise, they will stand around doing nothing until they spot an enemy. To give the AI a more realistic look, you will want to program them to do something. The simplest way of creating actions is to place AI Anchors on the map near to your AI entities, and set the Anchor's property to some form of action or other. For example, you can place an AI Anchor down, and in the Actions property of the object, select AIANCHOR_SMOKE. When you test the AI, remembering to Generate AI Triangulation first, nearby idle AI entities will walk towards the anchor and start smoking a cigarette. You can learn more about the different AI Anchor Actions in Appendix C. Note The AI Anchor can be found in the Objects window of the RollupBar, in the AI listing. To access its Action property, click the parameter value, and then click the three dots that appear next to it to select an Action property from a list provided. AI Paths A more complex means of getting AI entities to move around your map is to make your entities follow paths. The simplest path you can create for your AI is to set down a number of AI Anchors, as in the previous chapter, and to set the AI Anchor property to INVESTIGATE_HERE. Then set the AI Behaviour property of the AI entity that you want to control to Job_Investigate. After generating the AI triangulation and testing the AI, the AI entity should wander between the AI Anchor points at random, until interrupted by the spotting of an enemy. 33 F A R C R Y ™ Figure 3.1 Create paths for the AI to patrol using only tag points. Demo: Comment12 Instead of using Anchor points, you can gain even more control by using Tag Points from the TagPoint list in the Objects window. In order to get the AI to follow your tag points, you must name the tag points and the AI correctly. Each tag point that is to be followed must follow the naming convention name_Pn, for example you may have three tag points called beachpatrol_P0, beachpatrol_P1 and beachpatrol_P2. Then the AI entity that needs to follow these tag points must share the same name of the tag points. In the example we are using here, the AI entity following the path must be called beachpatrol. Simply giving the AI entity the same name as the tag points isn't enough on its own, as it also needs to know how to negotiate the tag points. Once the tag points and AI entity have been named, set the AI Behaviour property of the AI entity to Job_PatrolCircle, Job_PatrolLinear or Job_PatrolNode. All of these patrol behaviours result in the AI entities walking from one tag point to another, however the style influences the walking. A circle patrol results in the AI looping through the tag points 1, 2, 3, 1, 2, 3, etc., linear will have the AI cycling through the tag points 1, 2, 3, 2, 1, etc., and node will simply result in the AI entity wandering at random from one tag point to another, with no particular route at all. 34 F A R Tip: be careful about the constituents of your group, as they will influence the way in which the group forms and moves from tag point to tag point. For example, a Merc_Rear will take up the rear of the group, and if you place him initially in front of the group, he will get in everyone's way as he makes his way to the back of the group. C R Y ™ Figure 3.2 Once grouped, AI entities will play follow the leader, taking up their positions as accorded by their roles. It is possible to use the tag points to create a patrol group, where a leader forms a group that wanders from one tag point to another. To create a patrol group, follow the instructions already given, but instead of giving the AI entity an AI Behaviour property of Job_PatrolCircle, etc., choose one of Job_FormPatrolCircle, Job_FormPatrolLinear, or Job_FormPatrolNode. These are exactly the same as for single entities, but they cause the entity to be followed by other entities in the same group. The entity with the form patrol group behaviour does not have to be a leader, as long as the entities that you want to follow have the same groupid as the patrol former, and have their AI Behaviour properties set to Job_Observe. Figure 3.3 AI entities can also be programmed to follow strict paths. 35 F A R Tip: when AI entities become “idle” on a path, they will go to nearby “idle” action anchors and perform actions such as smoking. C R Y ™ When using tag points, the movement between the points is not exact, and the AI can wander somewhat from the route. If you want the AI entity to follow an exact path, you can create an AI Path. To do this select AIPath from the AI list in the Objects window. Then click on the map where you want the path to start, and follow that by clicking on all the points on the map you want your AI to go to. When you are finished, double click the last point, and the loop will automatically be closed. Then, similarly to the tag point patrol, name your AI Path by the following convention, name_PATH, for example beachpatrol_PATH. Then ensure that the AI entity that needs to follow this path has the same name, e.g. beachpatrol. The AI entity also needs the correct AI Behaviour, and you can choose between Job_PatrolPath and Job_PatrolPathNoIdle. Both options result in the same patrol route, but with NoIdle the AI will not pause at each point in the path. Restricting AI Movement Demo: ForbiddenArea_Isl and03 Figure 3.4 Keep AI entities caged and controlled with Forbidden Areas. Tip: make sure that forbidden areas do not overlap each other, otherwise the newest forbidden zone will be cancelled out by the zone already created. When wandering randomly between tag and anchor points, or when responding to enemy movement, the AI entities can stray from their positions and go places where you don't want them to, such as wading into the sea, getting stuck on rocky outcrops, or falling off cliffs. In order to prevent them from doing this you need to create Forbidden Areas. Forbidden Areas can either prevent an AI entity from entering, or from leaving, depending on whether the area is created with the AI inside or outside. To create the forbidden area, simply click on the ForbiddenArea option from the AI list in the Objects window. Then, on your map, click points to outline the area that you want to make into a forbidden area, before double clicking the last point to automatically enclose the area. You will want to lock the placement of the forbidden area to the XY axes, in order to not have it being placed unevenly. 36 F A R C R Y ™ Movement in Non-Standard Areas In certain areas of the map, such as on objects like bridges, and inside buildings, the AI can get confused, or even refuse to enter. To solve this problem we need to treat such areas differently to others. We also need to create Forbidden Areas to prevent the AI walking into these zones by accident, and risking getting in a mess, and also to create means by which the AI can move into the forbidden area correctly. To do this we need to create an AI Navigation Modifier zone, to isolate the non-standard area, as well as creating exits and entrances for the AI to move into the area safely. These entrances and exits need to be linked to AI Waypoints, to enable the AI to navigate its way through the non-standard area. The Waypoints can also be augmented by Hide Points, to give the AI somewhere to seek cover when under fire. Figure 3.5 Allow AI entities to walk onto bridges, and into buildings, etc., using AI Navigation Modifers. In order to facilitate movement in non-standard areas, you must first create an area called an AI Navigation Modifier. To do this select the AINavigationModifier option from the AI list in the Objects window. Then click on the map to outline the area you want covered, just as with the forbidden area, double-clicking the last point to automatically close it. When creating the AI Navigation Modifier it is vital that the area overlaps the area where the AI is allowed to walk, such as a forbidden zone enclosing the AI. It needs to overlap these areas where the AI can both enter and exit. You will want to be careful to keep the Navigation Modifier area flat, by locking the XY axes from the tool bar. 37 F A R C R Y ™ Figure 3.6 Guide the AI around the Navigation Modifier, by placing way points in a path from entry to exit. Demo: AIPoint865 Once the AI Navigation Modifier has been created, place an AI Point on the overlaps where you want to place an exit and entry point. Set the Type property on these AI Points to Entry Point and Exit Point. It is important where you place these as the AI will enter and exit an Entry Point, but only leave from an Exit Point. With these points set, you want to place AI Points in all the places inside the non-standard area that you want the AI to be able to move to. For each of these points that you set, you want to set the type to Waypoint. Once placed you must then link all of these points together. You may link them in any way you choose, but there must be a continuous and uninterrupted link of waypoints from the Entry Point to the Exit Point; if there is a gap in-between, the AI won't enter. Figure 3.7 Way points must link in an uninterrupted path, from entry to exit. 38 F A R Tip: it isn’t necessary to use an Exit Point, unless you want to create a one way door that the AI can’t get back out of. C R Y ™ The points can be linked by clicking Pick, underneath the Linked Waypoints list on each Waypoint, Exit Point, Entry Point and Hide Point, and then clicking on the next point you want to link. You can link as many points as you like, and all points that you link will automatically update their own Linked Waypoints list, so there is no need to back link objects. In addition to the link types already explained you can also augment the AI's behaviour with Hide Points. You can place and link these in the same way as the other points detailed, and they will allow your AI somewhere to hide when needing to find 3.1 Placement of Hide cover from enemy fire. Hide points have an arrow which Diagram Points. can be used to point in the direction from which fire has to come in order for the AI to hide behind, this prevents the AI from hiding in front of an object and taking fire. These Hide Points must not replace way points in the continuous link between Entry and Exit points, or the AI will refuse to enter. AI Vehicles Land and Sea Vehicles Figure 3.8 Place driver and gunner near to the vehicle they will pilot. There are a number of land vehicles in the game, and they all follow similar rules when setting their behaviour. Like AI entities, vehicles can be given paths to follow, or attack instructions, but they are obviously inanimate objects by themselves. That means you need to give them drivers before they can do anything. To give the vehicle a driver, place an AI entity by the vehicle, like a Merc_Cover_M4, and give the two objects the same group number. That way the soldier will enter the vehicle when it is activated. As well as drivers you can add gunners and passengers in the same way. For as many places there are on the vehicle, the number of AI entities you place in the same group nearby will enter the vehicle in the various available positions. So, for example, if you place six soldiers 39 F A R C R Y ™ near a Humvee and place them all in the same group as the Humvee, they will all enter the vehicle as driver, gunner and passengers. Figure 3.9 Use Pick New to link the trigger to the vehicle. To activate the vehicle, you need to set up a trigger which will send an instruction to the vehicle to start a specific behaviour. There are a number of triggers, with two commonly used ones being the Proximity and Area triggers. The proximity trigger can activate the target object whenever a player passes nearby. To program the trigger to do this, first place a Proximity Trigger on the map where you want the trigger to occur. You will find the Proximity Trigger in the Triggers directory of the Entity list in the Objects window. Once the object has been placed, click the On Enter event in the Proximity Trigger tab of the Object window. When you do this, you will see the Pick New button become available. Click this button, and then click the vehicle that you want to trigger in the map work window. Underneath On Enter you will now see the name of the vehicle, followed by the default trigger in brackets. You will likely want a different trigger, so right click on this new entry, and choose the trigger you want, such as GoPath. 40 F A R C R Y ™ Figure 3.10 Area linked to area trigger linked to vehicle. Tip: you may want to put the Area Trigger out of the way of the area that triggers it, to make the map clearer and avoid confusion. The Proximity Trigger has an area the shape of a square or rectangle, which can be set by altering the DimX, DimY and DimZ values in the object's parameters. Note that changing the size of the area with the scaling tool doesn't alter the area which is triggered through proximity, and so you must use the X, Y and Z values. Due to the limitations of this shape, you may sometimes want to use a defined area to trigger the response. Instead of a proximity to the trigger activating the vehicle, you can have the player's entry into an area of the map activate the trigger using an Area Trigger, and the trigger in turn activating the vehicle. To do this, create an area on the map with the Shape object in the Area list of the Objects window (see Object Placement chapter). Give the Shape object a height, and move it so that it covers the area you want triggered, without a gap. Finally click the Pick New button under the list of Target Entities, and click on the Area Trigger that you want to activate. Program the Area trigger in the same way as you did the Proximity Trigger. One of the simplest triggers you can send to the vehicle is GoChase, which will result in the vehicle giving chase to the player as soon as it enters its view. Make sure to set the vehicle's sight range to a value that will cause it to respond to the player when he passes. The vehicle will give chase until either it is destroyed or the gunner is dead. To get the vehicle to follow a path, you need to give it a GoPath or GoPatrol trigger. These two triggers are very similar, and can be set up in the same way, but differ in the way the vehicle reacts to sighting the player. With GoPath 41 F A R C R Y ™ the vehicle will continue to follow the path until the gunner is killed, but with GoPatrol, the occupants of the vehicle will exit the moment they spot the player. Figure 3.11 You can set up paths for buggies in a similar way to mercenaries. To set up a path, place tag points on the map like you would with a walking soldier. For vehicles there are no naming conventions to follow, except for making sure there is a number at the end of every tag point name, and that each tag point has the same name. For example, you can have three points on a path called buggypath0, buggypath1 and buggypath2. To get the vehicle to follow this path you need to edit the pathname parameter in the vehicle’s properties. Change the name to whatever you named the tag points, minus any numbering, for example to buggypath. You will also need to tell it which number to start at, and how many steps there are in the path. In the example given the path start would need to be set to 0, and the number of steps set to 3. One thing you need to be wary of when setting up paths for land vehicles is the sight range of the vehicles and their occupants. As the occupants of a vehicle on Patrol will exit when the player enters the vehicle's sight range, the sight range of the vehicle and the occupants needs to be the same, otherwise you will get a situation where the occupants will exit the vehicle when the player is far away, and then stand around idle, because they can no longer see him. If the sight range of the vehicle is too far, it can even result in the drivers getting into the vehicle upon being triggered, only to exit again immediately as they "spot" the player in the distance. Usually it is best to reduce the sight range of the vehicle to the same as the soldiers driving, to avoid bizarre behaviour. 42 F A R C R Y ™ Figure 3.12 You can leave the pilot and gunner for a boat swimming in the water. Sea vehicles, like boats and Zodiacs, can be activated in the same way as land vehicles, with a few considerations for the environment. Firstly the soldiers you group with the boat will often have to be placed in the water, so you will want to make sure that you don't put more soldiers down than can fit in the boat, otherwise they will be left swimming uselessly. You also don't want the swimming soldiers to be discovered by the player without first being activated, else they will likewise be completely helpless. The only major difference to the methods described in the previous chapter is the way that boats are programmed to attack and give chase. Boats don't have a GoChase trigger, instead they have a GoAttack trigger, but apart from that they are practically identical.Aircraft Figure 3.13 Place passengers and gunner, just like you would for a land vehicle. 43 F A R C R Y ™ There is one other AI vehicle type to consider in Far Cry™, and that is aircraft. There are two key aircraft, and these are the Gunship and the V22. Both work almost exactly the same way, and both can be programmed to work in the same way as both land and sea vehicles, with a few minor behavioural differences. The key role for the Gunship and V22 is in re-enforcement. You can use the Reinforcement event for any passenger carrying vehicle, but the aircraft perform this role the best, as they do not have to worry so much about difficult terrain, and can reinforce from almost anywhere on the map. The V22 is set up to reinforce in a special way, unlike any other vehicle in the game. In order to get the Gunship to reinforce, simply set up a trigger, as with other events, using the Reinforce event. Place a Tag Point where you want the reinforcement to take place, and make sure in the Gunship properties the pointReinforce value is changed to match the name of your reinforcement tag point. The V22 works in exactly the same way, except that instead of landing troops, it drops them via ropes. These ropes need to be placed on your map, or soldiers will not drop from the vehicle. You can find the ropes in the Entities list of the Objects window in the RollupBar. It doesn't matter where you place the ropes on the map, but you must place three of them, and name them exactly as they appear in the three RopeName properties in the entity's parameters. These default to Rope0, Rope1 and Rope2. Concluding Words Figure 3.14 Be careful where you tell your vehicles to go. One final consideration when placing AI vehicles on the map and getting them to behave as you wish, and that is the terrain. All the vehicles operate with different physics, for example the Boat has a small turning circle, and so you can set up path points very close to each other. The Humvee has a much wider turning circle, and so placing tight path points can result in the Humvee missing its target. If you 44 F A R C R Y ™ place path points over shallow water, the boat can get stuck, and if you place path points for the Humvee near water it can crash into the sea. Air vehicles have fewer problems with terrain, but even they can get stuck, so it is necessary to consider the route between them and their target when deciding where to place them on the map. Animals In order to populate your world with more realistic creatures than just grunts and mutants, you will want a variety of believable fauna, like pigs and birds. There are animals for land, sea and air, and there are animals that can be placed on the map and work as they are, like pigs, and others that must be triggered, like birds flying from the undergrowth. There are even sharks. All AI wildlife can be shot and killed, and all can be programmed to follow paths and other behaviour that both human and vehicle AI can do. Pigs Figure 3.15 Gets pigs sniffing around by giving them investigation points to go to. The pig is one object that can just be placed on the map, and it will automatically start doing something. That default behaviour is to head towards the player. It will keep coming at the player even if it shoots it. You can change this behaviour to anything you like, although if it hasn't got the animation it might not actually do what you tell it. For example, you can lay down a number of AI Anchor points and set them to INVESTIGATE_HERE, and the pig will walk between the AIs investigating them. You can also give it path and patrol jobs to follow. 45 F A R C R Y ™ Walkthrough This walkthrough places two buggies on the beach, and instructs them to chase around the beach following tag points. 1. Place two buggies. Select the buggy on your map, and clone a couple more, placing them a short distance in front of the first one. 2. Place the AI drivers and passengers. Click on Entity in the Objects tab, and select a Grunt from the AI folder. Place a grunt on either side of each of the two new buggies. 3. Group the AI. For each buggy, drag a box around it and both of the grunts nearby to select them all. With all selected, change the groupid property of the selected objects to 1 and 2, for the first and second buggy respectively, then press return. When this is done each buggy, and its driver and passenger, should have the same group number as each other, and each buggy should have a different group number. Double check the groupids to make sure you changed them all to the correct number. 4. Place the path points. Take a TagPoint object and rename it buggypath0. Place this on the map, and then use clone to place 9 more at 46 F A R C R Y ™ even gaps around the map, so that the tag points are numbered buggypath0 to buggypath9. Make sure that the tags make a complete path around the island, and that there is a direct line of sight from one tag point to the next. 5. Program the buggies. Hold down control, and select first one buggy and then the next, so that they are both selected. Change the pathname property to buggypath, the pathstart property to 0, and the pathsteps property to 10. 6. Trigger the buggies. From the Triggers folder in Entity, place a ProximityTrigger over the first buggy you placed, which will be the one that you drive. With the ProximityTrigger selected, scroll down the Objects tab, and under the Input/Output events click On Enter. Click Pick New and then select one of the AI buggies, and a new event will appear underneath On Enter. Select this new event, right-click it and choose GoPath as the event to send. Repeat this for the second AI buggy. 7. Test the buggies. Click on AI/Physics button on the bottom bar of the view screen. Select the proximity trigger object on your level, scroll down to the events, and select the On Enter event. When you click the Send button the buggies should chase the tag points around your beach. If they don’t, then check their groupid numbers, and their path settings, and try again. 47 F A R 4 Chapter C R Y ™ Events This chapter describes how to control the actions triggered in many of the objects in Far Cry™. E vents are the nervous system of a Far Cry™ level. They control everything, and can be strung together to form complex relationships that work like a program or script to pull everything together and bring the level to life. We touched upon events in the previous chapters, but there's far more to events than simply waking up AI entities or opening doors, for they can be used to power an interactive storyline to its conclusion. Events glue the objects together into an interactive whole, rather than as an experience made up of interacting with individually activated components. Events can turn a walk through a tunnel, into an Indiana Jones style adventure, ducking booby traps, placing bombs, shooting down chains, and escaping thundering boulders. Figure 4.1 Objects can trigger objects that can trigger triggers that can trigger objects.... Events can apply to any kind of entity: archetype entity, AI entity, simple entity, etc., but not to brushes, tag points, areas, etc. Entities can both receive and send event signals, and the signals that they can receive are the same ones as they can send. Therefore, if you need to know what events a particular object can send, you 48 F A R C R Y ™ can look at the object itself and see what kinds of events it can act upon to find the answer. As you will have probably learned from earlier chapters events can be activated by selecting the object that you want to use to trigger the event, and picking the object that you want an event triggered in, using the Pick New tool underneath the Input/Output Events list in the RollupBar. You’ll need to select an event signal that you want the picked object to act upon, and the event you want triggered. For example, you could select the On Enter event signal from the Proximity Trigger and pick an explodable gas canister to send the Explode event signal to. Note Many events can only receive or send signals, while others can both send and receive. For example Die can receive an event that results in a mercenary dying, but On Die will not function to send a signal upon the death of the mercenary. You will need to use OnDeath for this. Simple Events There are a number of simple events common to many objects that can be readily understood and used. First of all there are the simple enable and disable events, which enable and disable entities until you want them to function. For example, if you have a proximity trigger that explodes a building only upon the player having safely exited it, you would want to have the trigger disabled as the player enters the building, and then enable it with an event signal once the he is inside, so that when he exits the building it will work, but not as he enters it. You may also want to enable and disable objects that aren't in view, because they are a heavy drain on the processor, like dynamic lights. The explode event itself is very simple, and can be used to propagate another event, for example once you have exploded the object in the building, you may want to play a mission hint upon the On Explode event being triggered for the object. Some other simple events are Hide and Unhide. These events do exactly as they describe, and hide and unhide objects from the player's view. This can be particularly useful when using AI entities, like mercenaries. You may, for example, want to have a scene where the player is exiting from the building that has just blown up, and he is intercepted by some mercenaries. You don't want these mercenaries being there, or being seen by the player, until after he has been in the building, so you may want to have them hidden, and then send the unhide event signal once the explosion in the building has been set off. Mercenaries themselves have a number of simple events, in addition to those mentioned in the AI chapter. You can kill an AI, by issuing a Die event, or act upon that death by sending an event signal to another object when the mercenaries On OnDeath event is 49 F A R C R Y ™ triggered. For example, you may want to send an event signal to trigger a mercenary’s buddy to say "what the...?" when he sees the mercenary die. Triggers The more complex mechanics behind events that can allow you to run them more like a script or programming language, than a series of interconnected actions, are the triggers. Triggers operate independently of objects, and can fire an event without any object being affected in any way. Objects can be triggered by the fact that a player enters a particular area, because a player is exiting the trigger, or simply because another trigger has triggered the trigger. Triggers can also trigger themselves, or have another entity trigger them, such as a mercenary walking into an AI Trigger, or an explosion sending an Input Trigger to a Delay Trigger. Demo: Comment18 Demo: Comment35 The Multiple trigger allows you to delay the triggering of an event until the trigger has received the event as many times as defined in its parameters. For example, you may have several tasks you want the player to complete, each one sending an event to the same Multiple trigger, and when each completed event has been triggered, the multiple trigger can then open the door to the next level. Like the Delay Trigger, the Multiple Trigger is set off with the Input Trigger, and likewise you must send the signal for the next event On OutputTrigger. The number of times the Multiple Trigger needs events sent to it is defined by the NumInputs value. Once the Multiple Trigger has counted that many Input Triggers, it will shut down and no longer be active. More Complex Events Some of the events triggered in the game take a little more setting up than the ones discussed earlier in this chapter, like AddImpulse. Some objects have events that need to be chained together in order to get the whole system to work properly, like the Elevator. Some objects, like the elevator, have events that aren't immediately apparent in their use. We will discuss a few of the more difficult, and commonly used, events like these here, but for the rest you will have to work them out for yourself, by looking at the already coded game levels for inspiration, or through trial and error. With the events themselves being so flexible, you will likely invent your own ways of doing things anyway. Adding Impulse You can easily add impulse to many objects, simply by sending the AddImpulse event to those objects that will accept it. In most cases, however, this will simply result in the object wobbling slightly, or not even moving at all. That is because the default impulse for objects is 1, 2, 3 in the X, Y and Z axes. In order to get the AddImpulse to work more flexibly, and to get objects to catapult themselves over great distances, you will need to use specific objects and set them up in a specific way. To create your own impulse parameters, you won't be able to use pre-made entities like Archetypes, you will have to choose a simple entity and code the physics yourself. 50 F A R C R Y ™ First place the simple entity on the map that you want to launch, say a locker from the indoor/furniture/cabinets folder. Then change the physics properties to turn it into an object that can be pushed around the map. In the object’s parameters, first check the RigidBody box, to give the object a physical presence, then give the object a mass that reflects what it is. The default weight is 700, which is far too much for something like a coconut, which is better off with a mass of about 2. Then, in order to get it to move somewhere when you add impulse, you will need to change the X, Y and Z axes of the Impulse parameter. Adding impulse on the Z axis will push the object up in the air, and the X and Y axis will give it forward momentum. All you need to do then is connect it up to something that can send it an AddImpulse event, like a Proximity Trigger, and you can test launch the object. Demo: Comment19 Note There is a specialised trigger for launching objects, called the AddImpulse trigger. Tip: if you move an elevator, you will need to reload the script, or it will think it is still in the last area it was located. You will also need to do this when first placing it, as the last area a new elevator object was located was 0, 0, 0. Elevators The elevator’s events need a little explaining, as they don't seem altogether clear at first viewing. opened 2 The most confusing events are Close, Closed, close Open, and Opened, as these appear to be pretty much the same thing. To understand these events better, take a look at diagram 4.2. The default position for the elevator is stationary, at open its starting point. When the player sets the elevator in motion, the Open event is triggered, 1 and hence to get the elevator moving you must closed closed trigger it with an Open signal. Once the Diagram 4.2 Events as Lift moves from default elevator reaches its secondary point, which is position 1 to 2 and back. above or below the starting point depending on how you set the lift up, it sends the Opened signal. Once it has reached its destination, it will eventually return to its starting point. When it starts this return journey, it will send the Close signal. Again, you can get the elevator to start this journey by sending the Close signal to it. Once the elevator finally returns to its starting point it will send the Closed event signal. 51 F A R C R Y ™ Figure 4.2 Link doors to elevators to cause them to move up or down. Demo: Comment42 The Open and Close signals are enough to get a basic elevator moving backwards and forwards, but a real elevator is going to need more than that. Real elevators have buttons that you need to press in order to get them started. Real elevators won't start moving until the door has closed completely. You will need events to make an elevator work like a real one. For example, you may want to set the doors so they send Open and Close events to the elevator when they close, so that the elevator will only move in response to a door closing, rather than having it respond automatically. You can also put call buttons on each floor that will send the same events to the elevator, to cause it to move to the floor the player is on. Even more can be done for the elevator, including changing its materials depending on its direction, changing the light, and allowing the elevator to be accessed with a key card. Note The AutomaticElevator is set to automatically move to its next point by default, the moment a player enters. You will want to turn off the automatic option in the parameters if you want to control it with events. 52 F A R C R Y ™ Walkthrough This walkthrough will create triggers that will blow up a fuel tank when all AI buggies have been destroyed. 1. Place a multiple trigger. Take a multiple trigger from the Entity objects, and place it above the two AI buggies. Next, change the NumInputs property to 2. 2. Set up the triggers. For each buggy, select it and then scroll down to the Input/Output Events table on the Objects tab. Select On OnDeath, click Pick and then select the Multiple Trigger above the vehicle. Change the event to InputTrigger. Repeat for both vehicles. 3. Trigger the explosion. On the Input/Output Events table for the Multiple Trigger select the OutputTrigger event, and then click Pick. Select the nearest exploding fuel tank, and change the event that is sent to the tank to Explode. 4. Test the trigger. Turn on the AI/Physics, and select the first buggy. Select the On OnDeath event, and click the Send button. Repeat for the second buggy. If you have set up everything correctly, the fuel tank should explode on the second event. 53 F A R 5 Chapter C R Y ™ Internal Areas Not all levels are set out in the open, so you will need to learn how to create levels inside buildings and underground. A lthough Far Cry™ has been designed to create impressive outdoor environments, no game would be complete without the ability to create indoor areas. The actual creation of the indoor scenes is as simple as building the rooms with wall, floor, ceiling and door objects. However, there are some technical aspects involved in making sure that a player, as well as AIs, can see inside these areas, as well as special considerations for lighting, particularly in terms of how it affects the enclosed areas and the portals that allow you to see into these enclosed spaces. Some consider interior level design to be almost completely separate from outdoor environments. Figure 5.1 A four window layout will make it easier to see what you are placing. When laying the foundations for your indoor level, you will be best served by changing from the usual viewing layout that you use for outdoor environments. 54 F A R C R Y ™ To better see what you are placing, switch to the four square layout from the Configuration Layout option in the Display menu. This will allow you to view the actual design, as it will appear in the game, along with top down, left side and frontal views, to help you better see the positioning of floors/ceilings, ceilings, walls and doors/portals respectively. Either work with all four windows at the same time, or click on one to concentrate on that window, and give yourself more space to work. Floors and Ceilings Figure 5.2 Clone objects to place them more quickly. Tip: change the grid to the largest size possible when laying floor objects, for ease of placement. To place your floors, grab a floor object from the Brush object list. You will find a lot of useful floor objects, as well as doors, etc. in the glm directory, for example the floor4x4y from the ww2_indust_set1 folder. Place the floor objects to your liking, making use of the Clone object function (Control-C) to build floor areas quickly. Once you have completed the basic floor layout, you may want to freeze the floor objects, so that you don't accidentally move them about as you build the rest of the level. You may also find it easier, with the large number of objects needed for indoor levels, to turn off the names displayed for each object. You can do this by going to Preferences from the Tools menu, and disabling Text Labels in the Viewports folder. Ceilings can be placed in the exact same way, but you may want to leave these until last. 55 F A R C R Y ™ VisAreas and Portals Figure 5.3 Check Portals and VisAreas after placement to make sure they are at the correct height. Tip: while VisAreas should be placed with the largest grid, Portals are best placed with the smallest. Demo: Comment45 VisAreas define areas of visibility, but also occlude areas from being viewed from outside. Portals allow those outside VisAreas to view inside, and those inside the VisAreas to see out of the one VisArea and into another. You can work without VisAreas and Portals, but you risk problems with light seepage, and other serious issues, if you neglect them. They are considered best practice, and avoid problems later on in your interior design. To create your VisArea, place the VisArea as a shape object, clicking each corner until they join up. It is vital that you push the VisArea to the very edges of the floor, so use a zoomed in top view to ensure this. Once you have created the VisArea, you will need to check its position and height. Make sure that it is placed just underneath the floor and covering the maximum height of your building. Remember that any object, like floor tile or wall block, will not show if its centre is outside the VisArea. 56 F A R C R Y ™ Figure 5.4 Vis Areas, in orange, with connecting Portals, in green. Demo: Comment44 Portal placement needs to be very exact, and even after placing the object, you will probably have to alter its size and height a few times to ensure that it doesn't occlude any object that you place nearby. Place the points of the Portal between the two VisAreas, like you placed the points of the VisArea itself. Keep the Portal as narrow as possible, and push its edges as close to the VisArea as possible. While the Portal must traverse both VisAreas, you must not have the edges of the Portal touching the edges of the VisArea. Use the provided image as a guide. Once you have placed the base of the Portal, using the top view and smallest grid, you will need to check the height to make sure that it covers as much of the gap between the rooms as possible, without touching any edges. Move the Portal if necessary. The interaction of objects and portals can be problematic. If you have an object that traverses two VisAreas, through a portal, the player may not be able to see it. If the centre of the portal Object is inside the VisArea that the portal links Player the player too, as in Diagram 5.1 above, then the player will not be able to see the VisArea Portal object, even if it is inside his field of Diagram 5.1 Object occluded when centre is outside of view, if the portal moves outside his field portal in other VisArea, and portal no longer in player's of view. To fix this, any object that FOV. traverses two VisAreas, must have the centre of its bounding box inside the Portal. This means that great care must be taken when placing objects around portals, especially objects like walls that are placed close up to the edges of VisAreas. Try to ensure that wall objects finish at the edge of one VisArea and that the next one starts in the next VisArea. This will help obviate significant problems later on in your design. Player’s Field of View 57 F A R C R Y ™ Walls Figure 5.5 Use the VisArea and portals to guide your wall placement. It makes life easier when placing walls to choose ones of the same size as the floor objects you placed earlier, i.e. 4x4 floor objects and 300x400 wall objects. Walls need to be comfortably within your VisArea, and so you will want to place them about half a meter in from the edge of your floor. Like with the placement of floors, you will find it easier to clone blocks of walls, rather than place lots of individual pieces. If you work within the VisAreas, you will want to switch the Brush Selector so that it selects only Brushes, otherwise you risk moving the VisAreas and Portals about. If you find it too dark inside the building to see what you are placing, then increase gamma by entering the console command r_gamma 2 into the log command line. Doors Figure 5.6 Use door frame pieces to cover the gaps around doors. 58 F A R C R Y ™ Doors are probably the trickiest element to place, as you are unlikely to find a door that perfectly fits the gap you have left between the walls. Instead you will have to fit one together from the individual pieces that you can find in the directories. You will find the industrial ones are relatively easy to work with, and you will find pieces named _sidestraight, _topstraight, _corner, etc. in the same folder as the walls and floors. If you find you have any gaps between the door and the walls, you should have enough play from the gap you left between the wall and the outside to manoeuvre the objects into a perfect fit. Once you have fitted the door, or jigsaw door pieces, into the gap, you will need to check that the portal is the correct size to accommodate the new doorway. If the portal is too big, then it will waste processor resources, and if it is too small, you will find that parts of the door will disappear. Again, like the VisArea, you must make sure that the centre of any object is within the portal for it to be seen. You can test whether the door object will be seen or not by de-selecting the portal and viewing the door objects that you have placed. Change the height, or even the position, of the portal until everything shows correctly. Note If the middle point of a door bounding box is inside the portal it will actually disable the portal while it is closed. Lighting Tip: it is a good idea to place the basic object layout in your room before testing the lights, so you get an idea of how it looks when finished. Demo: Comment43 For indoor areas lighting is vitally important, and there are a number of light types that you will want to consider when designing your indoor levels. You can see a selection of settings for common types of these lights in Appendix E. 1. Dynamic Lights 2. Radiosity Lights 3. Dynamic Fake Lights 4. Non-Dynamic Fake Lights 59 F A R C R Y ™ Dynamic Lights Figure 5.7 Note where the light ends. Dynamic Light won't normally pass through portals. One key aspect of Dynamic Lights to consider when designing interiors is that the light from these objects won't normally pass through portals, which can lead to very unrealistic looking rooms. You can set the Affect This Area Only parameter to false, but this is bad practice, as it is costly in terms of processor overhead, and can result in light seeping into the wrong areas. Better than this is to be careful in your placement of dynamic lights, making sure that they either don't shine into portals, or only a small amount that can be blurred by floor textures or light maps. Radiosity Lights Figure 5.8 Place radiosity lights on the ground to fill the light volume gaps left by dynamic lights. You will find that dynamic lights can fail to light up certain areas, due to the way in which they work, and so you will need radiosity lights to cast light maps onto the areas that dynamic lights cannot reach. Usually you will place the dynamic lights on the ceiling, and the radiosity lights on the floor, but it will depend on the room itself. You will often need several radiosity lights to cast light around the side of 60 F A R C R Y ™ large objects and into corridors. See the example in the picture above, for an idea as to how these lights should be placed. Radiosity Settings for Dynamic Light Object: - Fake Radiosity: True Light Type: 1 Use in Real Time: False Low Diffuse Multiplier : 0.1 (or any similarly low number) Cast Light Map: True To see the effect of any radiosity lights you place on your map, you will need to generate light maps, by using the Generate Lightmaps function in the Game menu. See the Map Creation chapter for more details on this. Fake Lights Figure 5.9 Place fake lights in corridors to help blend light between VisAreas. Tip: decrease the size of the Helper parameter, when dealing with small objects that get obscured by the objects editor frame. You can also create "fake lights" with the Dynamic Light object. Fake lights cast a shader, such as a beam of light, but don't create light which is used in the more complex calculations which result in the rooms ambient and refractive light. Because of this they use less processing power than full dynamic lights, but can create a similar effect. Note You can read more information on lights, and see some example settings for their creation, in Appendix E. 61 F A R C R Y ™ Creating Holes in the Terrain Figure 5.10 With the Hole Brush, the red square denotes the area that will be cut from the terrain. In order for you to be able to interface the interior designs with the outside world, you will need to place your internal objects inside the terrain and link them with the external objects through a terrain hole. To create a hole you will need to use the Hole Brush from the Terrain tab on the RollupBar. From there you will see that you have a brush, just like when you are editing the terrain, only this time there are red squares under the circle. This shows you the size and shape of the hole you will cut, because the hole is square, and not round like the brush. You can change the size of your brush, the same way as you change the size of your terrain brush. Figure 5.11 Cut holes can be replaced with the Remove Hole brush. To cut a hole, simply make sure that the brush selected is Make Hole, and click anywhere on the terrain. You can similarly patch holes by selecting the Remove Hole brush, and clicking in the same place. You can switch quickly from one 62 F A R C R Y ™ mode to the other by holding the Control key down. Cutting a hole allows the AI and players to pass through, but the polygons that created the cut terrain are still there, they just aren't drawn, or calculated during collision detection. To interface the cut hole with your interior level, you must place the entrance to the internal building next to the hole, and use a portal to allow the players and AI to see into the VisArea of the interior. Walkthrough This walkthrough will create a tunnel from the player’s starting spawn point to the buggies. 1. Set up the view to create indoor areas more easily. From the Display menu, select Configure View and select the four squares display. Turn collision detection off, to allow you to place objects inside the terrain, by clicking the collision detection icon to the left of the AI/Physics button on the bottom panel of the view screen. 2. Manoeuvre the view to the correct location. Navigate with the four windows, until you can see both the internal island objects and the beach objects on the Top View window. Do the same for the Front and Left View windows, to make sure you are building at the right height. 63 F A R C R Y ™ 3. Place the floor tiles of the tunnel. Set the grid size to 4, by clicking the Snap to Grid icon next to the right of the axes lock icons on the tool bar. Choose a floor4x4y object from the glm/ww2_indust_set1/floors directory of Simple Entities. In the Top View, place three tiles in a row near to the player’s buggy. Select all three tiles, and then clone them to place them row upon row, from the buggy to the objects on the inside of the island. 4. Place the sides of the tunnel. Using the pull down menu on the Set Grid icon, select Setup Grid and make an angle snap of 90 degrees, and Grid Lines Every 0.5 metres. Select one of the floor tiles, clone it, and in the Perspective view rotate it so that the surface makes a wall. Clone it again, and copy it across to the other side, rotating it again so that it faces inwards. Using the Top View, make sure that the walls are 0.5 metres (one square) in from the side. Select both wall objects using the Control key, and then clone them the length of the tunnel. 5. Place the tunnel ceiling. Take one of the floor tile objects, and rotate it around completely so that the surface texture is facing the floor. Place three of these across the start of the tunnel, and then use the Top View to clone them the length of the tunnel, just like with the floor pieces. Use perspective view to fly through the tunnel, and check for any irregularities that you need to fix. 6. Cut holes in the terrain. Line up the tunnel with the terrain by selecting all the objects in it and raising or lowering it until it is flat with the beach. Don’t rotate it. Select the Terrain tab on the RollUp Bar, and click Holes. 64 F A R C R Y ™ Click Make Hole, and then move the Brush Radius slider all the way to the left, to make the smallest hole possible. Go inside the entry to the tunnel, and remove only the terrain necessary to see from one end to the other. If you make any mistakes, patch it with the Remove Hole button. Hide the holes and extruding tunnel with cst_ objects from the natural/coastal_objects directory of the Brush folder in the Objects tab. 7. Hide the Rocks. Go to the Select Objects window, by clicking on the list icon to the right of the Snap Angle icon. Select all of the cst_ objects that you placed to cover your entrance, and click Hide Selected. Press OK. 8. Place VisAreas and Portals. Click Area on the Objects tab of the RollUp bar, and select the VisArea object. On the Top View, click four points at the corners of your tunnel, making the VisArea just slightly larger than the tunnel size. Click once for the first three points, and then double click the fourth point to close the shape. At one entrance to tunnel, create 65 F A R C R Y ™ a Portal. To do this select Portal from the same Area list, and then click four points at the entrance, just like with the VisArea. Make the portal very narrow, and have it just inside the walls. Look on the front view, and make sure that the VisArea and Portal are at the same height as the tunnel. Move the VisArea just underneath the tunnel. Set its height to five, then change its height to 4.4, to make it just shorter. Clone this Portal and place it at the other end of the tunnel. 66 F A R 6 Chapter C R Y ™ Multiplayer Maps With all the knowledge you have gained up to this point, you will no doubt be itching to create your first level. The easiest place to start is with a multiplayer map. Tip: if you want to fully test the multiplayer aspects of your game, like the Assault checkpoints, then you will have to export the level to the game and set up a multiplayer game to run it in the actual game itself. M ultiplayer maps are a lot easier to set up than single player, as they don't need AI, save points, cut-scenes, and are in general a whole lot simpler to implement. Of course, the fact that multiplayer maps don't need the likes of AI mercenaries doesn't restrict you from including these in your creations if you want. Multiplayer maps are standalone levels that run over a network, and come in three flavours: Free For All (Deathmatch), Team Deathmatch and Assault. Free For All and Team Deathmatch are essentially the same from a design point of view, and can happily run on the same maps, but Assault is a brand new style of multiplayer gaming unique to Far Cry™, and requires a little extra complexity in the design. Both, however, are fairly straightforward, and if you have a map already designed, it should only take a few minutes to implement multiplayer, although it will obviously take you a lot longer to perfect it. Free For All and Team Deathmatch The first thing you will need to do when creating any multiplayer map is to create a multiplayer "mission". You can do this by selecting New from the Mission men, and calling it FFA or TDM. Being as you can play these two game types on the same map, you may as well create a mission for both. The best way to do this is to create your FFA map, and when you have completed it, save it, and then duplicate it with Duplicate from the Mission Menu, giving it the name TDM. If you forget to save before duplicating, you will end up with a copy of what the map looked like when you last loaded it, which will likely not be what you want. In that case you will need to delete it, using Delete from the same menu, and try again. 67 F A R C R Y ™ Spawn and Spectator Points Figure 6.1 The yellow arrow on spawn points shows the direction the spawning player will be facing. To give your players a way of joining the map, you will need to create a number of spawn points. You will need as many spawn points equivalent to the maximum number of players that can join your map, otherwise you might get players spawning on top of each other. To create a spawn point on the map, take a ReSpawn object from the TagPoint list in the Objects tab of the RollupBar. You will need to name each one of them "players" - no number is necessary. In placing them you will want to consider a few things, such as height and location. You won't want the spawn point too far off the floor or the spawned player will die, you also don't want to lump all the spawn points together, otherwise players will be spawning into a bloodbath. Well, that is unless you want a bloodbath. Figure 6.2 Spectator will join at your spawn points at random. 68 F A R C R Y ™ In addition to spawn points for the players, you will also want to add spectator points so that players can view the action. You can place spectator points in the same way as spawn points, using the same object. Name the spectator spawn point "spectators". Players will spawn at a spectator point at random; the same as ordinary spawn points. You can control the direction that players face when they spawn, at either type of spawn point, by altering the direction of the yellow arrow on the gizmo. To change the direction a player will face on spawning select the rotate pointer, and rotate the object around its X, Y and Z axes until a suitable direction is found. Adding Weapons The map will be no fun with just spawn points, and so you will need to add some weapons so that players can kill and maim each other. There are two ways of giving players weapons, either as pickups on the map, or in their starting inventory. Pick-ups are placed just like any other object, and should be dropped liberally around the map, usually near spawn points, as you don't generally want the player running around for ever searching for a decent weapon. You will likely want to place pick-ups for weapons, ammo, health and armour around the map, as well as special items like binoculars or cryvision goggles. Consider carefully the items you place, for example you might not want to place cryvision goggles on sunny maps and sniper rifles where there is nowhere to snipe from. Finally, make sure that all your pickups can respawn by setting the RespawnTime parameter to a value other than 0. Figure 6.3 Set up equipment packs to give your players weapons to start the game with. 69 F A R C R Y ™ You may also want your players to start with a weapon, possibly something basic like a machete. In order to do this you will need to edit the Equipment Packs for the mission by selecting Edit Equipment-Packs from the Mission menu. From this window click Add, and give your pack a name, like FFA, before adding whatever weapons you want the players to start with. When finished click OK, and then select Mission Properties from the same menu. Click on Player-Equipment pack and then select the pack you have just created, say FFA, from the pull down list at the top and press OK again. Your players should now start with all the weapons you included in the equipment-pack. Figure 6.4 Pick the right equipment pack for your map in the Mission Properties window. Vehicles Demo: Phoenix1 To add even more fun and dynamism to your levels, you may want vehicles on your map, in addition to weapons and other pick-ups. Vehicles, like weapon pickups, can simply be drag-and-dropped onto your map. Also like pick-ups, vehicles usually need to respawn, after they have been destroyed. Vehicles, however, have a slightly more complicated respawn procedure to weapons. In order to make a vehicle respawn you will need to make use of the Phoenix object that can be found in the Multiplayer directory in the Entity objects list. Place both the vehicle and the Phoenix object on the map, and then create an event link from the vehicle to the Phoenix object, so that the Phoenix object is reset when the vehicle's OnDeath event is triggered. Do this by clicking on the vehicle, scrolling down to the Input/Output Events list in the object's properties and selecting On OnDeath. Then click pick, and select the Phoenix object. Make sure to set a RespawnTime in the Phoenix object's parameters, so that it will respawn at regular intervals after it has been destroyed. 70 F A R C R Y ™ Assault Maps Figure 6.5 Airfield is typical of Assault type multiplayer maps. Assault maps work by having three points which teams of players must capture and defend. The attacking team has a set amount of time to capture all three points, in order. When they capture one, the action moves to the next point, until the game is over. While you can set up Assault maps on Deathmatch maps, it is likely you will want to create separate maps especially for these, as there are many differences in strategies and objects required. To create a new Assault map, all you need to get started is to create a new mission. Select New from the Mission menu, and name the mission ASSAULT, which will tell the game that this map can be played as an ASSAULT variant. If you have already created the map, you can just rename it, as a new mission will remove all the objects you have already placed. Demo: Comment20 Spawn Points Spawn points are required in assault maps too, but they differ in their type and placement. Instead of using ordinary ReSpawn objects you will need to take one of the special ASSAULTCheckPoints from the Multiplayer folder of the Entity objects list. So that the game will know that this is a spawn point, and not a check point, you will need to change the Visible setting to False. This will make it not show up on the map. In addition to this, you will need to uncheck either AttackerSpawnPoint or DefenderSpawnPoint, depending on whether it is a defender's spawn point or an attacker's. Remember that this is a team map, and you don't want your players spawning in the enemy's camp, or they won't be very happy. 71 F A R C R Y ™ Figure 6.6 It is best to group spawn points for defenders and attackers separately, close to their allies and far from their enemies. You can name your player spawn points whatever you like, and place them where you like, but you should arrange them so that they are grouped both by their team members, and near to the objective they are attacking or defending. You will need three groups of defender and attacker spawn points, one for each objective, and to make sure that players spawn at the correct point for the objective, you will need to set the CheckPoint_Number to 1 for the first objective, 2 for the second and 3 for the last. You will want as many spawn points at the first objective as there are players in the game, as they could all spawn at the same time. Later objectives can make do with far less, maybe half as many. Note Spawn points for spectators can be set up in the exact same way as in deathmatch maps. 72 F A R C R Y ™ Figure 6.7 Players need to complete three check-point objectives on Assault maps. Objectives Once you have the spawn points set up, you will need the objectives themselves. Objectives utilise the same object as the spawn points, only these are visible. You will also need to make sure that the AttackerSpawnPoint and DefenderSpawnPoint parameters are set to false, as these are not spawn points at all. Place the ASSAULTCheckPoint objects where you want the objectives to be, and name them whatever you like. For the first objective, set the CheckPoint_Number to 2, the second to 3 and the last to 4. One final consideration is the warm up time, which defines how long it will take before the objective can be captured by the enemy. The longer the warm up time, the more time the defenders will have to prepare. Demo: Comment22 Demo: Comment21 In order to let your players know what is going on, you will need to advise them when an objective has been captured, and what they need to do next. To do this you need CurrentMission objects, which can be linked to the objectives, and triggered when they are captured, to present the player with an acknowledgement and a message. You will need four CurrentMission objects, the first will be linked to an attacker spawn point for the first objective, and the remaining three will be linked to each of the objectives, in order, with the final object giving the victory message. You must name these CurrentMission0 through CurrentMission4. 73 F A R C R Y ™ Figure 6.8 Place CurrentMission objects on the objectives and link them from attacker spawn point to closing CurrentMission object. Place the first of these objects on the map, preferably near the first objective if you want the radar beacon to work properly, and name it CurrentMission0. You can link it to any of the attacker spawn points - it doesn't matter which as long as they are spawn points for the first objective. Link the two by selecting the attacker spawn point, and selecting the On Spawn event from the Input/Output Events list. Then click the Pick icon, and click on the CurrentMission0 object. Next, give the attackers and defenders a message, by editing the MissionTextAttacker and MissionTextDefender parameters, for example tell the defenders to "defend the tower". You can also add a sound for both teams, to indicate the game is underway. You will want to place CurrentMission1 near the next objective, and link that to the first objective. Link the two by selecting the objective and selecting the On Spawn event from the Input/Output Events list, and then picking the CurrentMission1 object in the same way as before. CurrentMission0 CurrentMission1 CurrentMission2 Spawn Point Objective 2 Objective 3 Diagram 6.1 Connection set up, from spawn point to final objective. 74 Objective 4 CurrentMission3 F A R C R Y ™ Note On Spawn works the same for both Objectives and Spawn Points when activating the CurrentMission objects, as the Objectives can't spawn anything. Other Options You might want to link up the objectives to events, in addition to the CurrentMission objects. Many of Assault maps link a pulsing particle effect to the objective, so when it is captured by the attackers it gives a visible alert, along with the message and sound. You can achieve this by selecting the ParticleEffect object from the Particles directory of the Entity objects list, and placing it at the top of the objective's mast. Then make an event link between the objective and the particle effect, by causing a Pulse event in the particle effect, when the objective Spawns (On Spawn -> Pulse). You can also set it to alert the players in a similar way, for when it is under threat of capture, by triggering a signal on the objective's On Capturing event. Figure 6.9 Buildable object base and selected unbuilt object. Buildable Objects Demo: Comment28 One more vital component of an assault map is the buildable objects, such as walls and turrets that the engineer can build and repair. To create a buildable object on your map, first drag-and-drop a BuildableObject from the Others directory of the Entity objects list. This will be the base that the engineer will build the actual object from with his wrench. For this first object, give it the model_building and model_unbuilt of whatever it is you are intending to built on that spot, for example if you want a wall building, give it a model such as unbuilt_wall.cgf. You won't want any models for the other build statuses, as you want the first object to be invisible at those points. Once that has been placed, you will need the actual 75 F A R C R Y ™ building that will be constructed, and for that you will need another BuildableObject, the same as before. Note Wall models can be found in the multiplayer/buildables/ folder of the objects directory. You will need to give it a different model, for every model parameter except model_unbuilt, as you don't want anything displayed on the map before an engineer starts constructing it. You will also want to choose models from the same family as you did for the first BuildableObject, for example wall_building, wall_built, wall_destroyed and wall_repairing, for the building, built, damaged and repair model parameters respectively. Once you have set this BuildingObject up, give it an amount of health points that you think reasonable, and link the first BuildableObject to the second via the On Building and On Built event triggers. From these send a building and built signal to the second BuildableObject (OnBuilt -> Built). Finally, you will want weapons and other objects on your map for the players to use. Unlike in the deathmatch maps, you won't want to be placing weapons around the map, as the players can only use the weapons that are associated with the particular class they chose at the start of the game, for example an engineer can carry a wrench. Because of this you will need to place a special weapons pick-up object, called the ClassAmmoPickup, from the same Pickups directory as you found the others. You can still place other objects on the map like the cryvision goggles, as these are not class based. 76 F A R C R Y ™ Walkthrough This walkthrough shows you how to create a buildable wall for an Assault map. This walkthrough is not part of the series, and can be used on its own. 1. Place the built walls. Click Brush in the Objects tab of the RollUp bar. Select wall from the multiplayer/buildables directory, and place one on your map. Press Control-C to clone the object, and place the new wall to the left of the old one, so that there is enough room for a third wall piece in between the two. 2. Place the unbuilt wall. Click Entity and select the BuildableObject object from the Others directory. Place the object on the map - it probably looks like a giant yellow duck. To turn the BuildableObject into a buildable wall, change the object’s properties as shown. 77 F A R C R Y ™ 3. Place the wall constructor. Place another buildable object on the map, some distance away from the wall, where you want an engineer class to construct the wall from. Change the entities properties to the same as shown 4. Set up the constructor events. To allow your engineer class to construct the wall, the constructor needs to be programmed to trigger the unbuilt wall. In the Input/Output Events for the constructor, click the On Building event, and then select the unbuilt wall. Change the event to building. Then click the On Built event, and click the unbuilt wall again, but this time change the event to built. 78 F A R 7 Chapter C R Y ™ Single Player Missions You can use the CryEngine Sandbox editor to create entire levels, and then link those levels together to create an entire game. Y our single player missions are likely to be more complicated than any multiplayer map that you create. You will need to tie a series of events together, from mission start to mission end, and update the player on what he has to do, etc., even linking one mission to another to create an entire game or sub-game. The missions are also a lot more freeform than multiplayer, and you will have to decide for yourself how things will proceed. That means that this chapter will cover as much as is necessary to create a mission, but you will have to decide what you will need for yourself. Setting Up Demo: Comment1 The first thing you will need on any map is a respawn point. You need only one respawn point, but placing additional ones at each savespot helps debugging the mission. You can place a spawn point simply by placing a Respawn object from the TagPoint list in the Objects tab onto the map. To make it work you must name it Respawn and give it a number, for example Respawn1. You need to number each subsequent Respawn point sequentially, but the numbers don't need to follow one after another, i.e. you can have a sequence of spawn points numbered 1, 2, 4, 5, 8, and they will be triggered in that order. The lowest number will always be the first one. You will also need to give the player some weapons, and tell the game what weapons will be allowed for that mission. To tell the game what weapons the player will have at the start, you need to create an Equipment Pack, the same way as described in the Multiplayer Maps chapter. After picking the equipment pack in the Mission Properties window, you will then want to tell the game what weapons can be collected on that level. To do this click on the weapons tab, and add each weapon that will be used in the mission. If you don't add the weapon, it is possible that when the player picks it up in the game, it won't show in his inventory. When you change the equipment pack the player is starting with, the weapon that is active will be the one the player is starting with in his hands. 79 F A R C R Y ™ Note The active weapon in the Equipment Pack is the one that is highlighted when you accept the weapons you have chosen. The last thing you will want to do in setting up the level is to trigger the first objective. To understand how to do this, you must first understand how the game processes the mission script. Mission Scripts The mission script is a LUA script which lists all the functions associated with the Mission Handler in the game. Each function in the Mission Handler can be actioned in the same way as an event triggered in another object. Instead of picking another object, and selecting an event to trigger in that object, you can instead invoke the Mission Handler, and select from a set of mission events instead. For example, you could set up a Proximity Trigger to set off a mission event which clears an objective from your objective list that instructed the player to reach the point the Proximity Trigger is covering. Every one of these mission events is defined within the mission script. Figure 7.1 Use the Mission Properties Window to create your own mission script. 80 F A R Tip: if you are getting compilation error messages, use the Browse button to open your script again, which refreshes the events in the mission properties. C R Y ™ To create a new mission script, select the Main tab in the Mission Properties window, and then click the Create button on the top tool bar. Mission Scripts are usually stored in the root directory of each level's directory, and given the level name, with the ".lua" extension. For example, the Fort level is stored in the Fort folder of the Levels directory, and called, simply, fort.lua. Once you have created this script, it should be listed in the script file name box. You can then click the Edit button, and you will be presented with the default script for any level, consisting of mission opening lines, and three functions, OnInit, OnUpdate and Finish. The mission script itself is simply a list of functions that create mission events for the Mission Handler. There are four types of key script instructions that you will need to create a basic mission script, and these are: 1. HUD instructions; information presented to the player on screen. 2. Game instructions; game related events like starting a new level. 3. Movie instructions; playing cut scenes. 4. Console instructions; actions console commands in the script. There are also a number of other instruction types, some that relate specifically to the game, and some that are purely LUA related. Anything of particular use will be detailed in this chapter. All mission event functions can be defined in the same way, and can include as many commands as required. First you must start the function with the following header: function Mission:Event_eventname() All you need to do is replace eventname with the name you wish to call the event; the event name will appear in the Mission Handler events list exactly as stated here. After this function header, you can list as many commands as you want, delimited by the "end" statement. The header, each command statement, and the end delimiter should all be on separate lines. You can also comment the code by using a double dash "--". Everything after the double dash will be ignored by the script compiler. Note After changing the script you have to reload the script so the changes are registered. HUD instructions Demo: Comment2 Hud instructions relate to the information presented to the player via the screen, but the instructions aren't limited to simply passing messages to the player. They 81 F A R C R Y ™ can also include setting and resetting radar points to direct a player to a new position, setting, completing, and clearing objectives. All Hud instructions are prefixed by "Hud:". The following are a list of common Hud instructions, and explanations for their usage. Hud:AddMessage("text", seconds); This instruction will pass a message, text, that will display on the players screen for as many seconds as are specified in the seconds parameter. Hud:PushObjective({}, "text"); PushObjective adds the message, text, to the player’s objectives list, the one that is accessed by pressing the Tab key. The first parameter is empty and can be ignored, although you must include the empty brackets. Hud:CompleteObjective("text"); This completes the objective by greying it out on the player's objective screen. The text must match the text of the objective that has been completed, for example if you pushed an object with the text "get here!" then you must complete it with the text "get here!". Hud:FlashObjectives({}, ""); This simply clears all objectives from the objectives list. Hud:SetRadarObjective("tagpointname"); Demo: Radar1 It isn’t necessary to have a radar point for every object, but if you want the player to know where he is meant to go, you must give him a radar point to move to. You can tell the game where the radar point is by placing a tag point object on the map, and giving it a name. There are no naming conventions for this type of object, but you will probably find life easier if you give it a name like Radar1, Radar2, etc. With the radar tag point on the map, just enter that tag point name in the instruction above to set it for the player. Setting a radar objective removes any previous radar objective set. 82 F A R C R Y ™ Hud:SetRadarObjective("nil"); Sometimes you won't want to give the player any particular objective on the radar. In that case you can clear the object, rather than changing it, by passing the "nil" parameter in to SetRadarObjective. Game Instructions There are two major game instructions that you will want to use, and both relate to starting a new level. Both are actioned by sending a particular message to the game, rather than to the player, and will both be used at the end of your levels. They are both detailed below. Game:SendMessage("StartLevelFade levelname"); This instruction starts the next level, named by levelname, and fades into it gracefully. Game:SendMessage("StartLevel levelname"); Essentially this is the same as the above instruction, only it starts the next level abruptly, without any fading. Movie Instructions You can play movie sequences, i.e. cut scenes, with the following instruction: Movie:PlaySequence("moviename"); Here moviename defines the name of the cut scene to be played. Console Commands All console commands can be used in the mission script, for example "fov=90" sets the player's field of view to 90. These console commands can be particularly useful for initialising a level. Miscellaneous There is one useful command that doesn't fit under the previous headings, and that is: _localplayer.cntSavePlayerElements(); This command, when used at the end of a mission, will save all the equipment that a player has collected in the just completed level, and allow him to use this in the next. If you have set up an equipment pack in the next mission, this instruction will override that. 83 F A R C R Y ™ Save Points Figure 7.2 Connect GameEvents to triggers to create save game points. You will want to have a number of save points in your game, and you will usually connect these up to completed objectives, as it can confuse a player to have to recomplete objectives. To save the game, you need a GameEvent object, and you need to trigger this with an event. You can use any kind of object to trigger this, even the death of a mercenary, but you will usually want to trigger the GameEvent from an area trigger that covers the point where you have placed your objective radar tag point. To place your save point on the map, simply drop a GameEvent object somewhere, it doesn't matter where, but you will likely want it close to your objective. Then place the object that will trigger it, such as an area trigger, and then link the trigger to the GameEvent by picking the Save event. To prevent the trigger from re-saving the game repeatedly, for example if the player walks back into the trigger area, you will want to make sure that the trigger's TriggerOnce parameter is set to true. In the parameters for the GameEvent object you will need to give the object a unique ID. The ID must be unique for the level, as it is used in defining the save game name. Note The GameEvent object is used as a spawn point for when the player dies after the game has been saved. Like all spawn points you can alter the direction the player is facing by rotating the arrow, this time an anchor arrow, to point in the direction you want. 84 F A R C R Y ™ Testing your Mission You will want to test your completed mission in the full game. You will want to do this even before it is finished, as some aspects of the game will simply not work in the editor, and only function properly in the full game. To test the game this way you must first export it, using the Export to engine function in the File menu. You will then need to load the full retail game, and from the main menu call up the console by pressing the ` key. From the console type the following console command: \map mapname replacing mapname with the name of your map. Walkthrough This walkthrough will create a starting point for the level, a save point, and number of mission events to display objectives, and in game messages. 1. Create the start point. Press Shift-F1 to find the respawn object you placed in the earlier walkthrough, and make sure it has the name “respawn0”. 2. Create an area to trigger the save game. Go to the other end of the tunnel from the first spawn point. Click Shape in the Area list of the Objects tab under the RollUp bar. Click out a shape that encompasses all of the tunnel exit, so that any player leaving it cannot fail to walk into your area shape. 3. Trigger the save game. From the Entity directory take a GameEvent object from the Other folder, and place that on the map. Give the GameEvent object an ID property of 0. From the Trigger directory take 85 F A R C R Y ™ an AreaTrigger object and place it on the map. Select the area at the exit of the tunnel, and Pick the AreaTrigger. From the Input/Output Events on the area trigger, select On Enter, and then Pick the GameSave object. There is only one event for the game save object, so there is no need to change it. 4. Write the mission events. Select Properties from the Mission menu, and then click Create. Save the new mission script as “walkthrough.lua”. Then, from the mission properties window again, click Browse and reopen “walkthrough.lua” to refresh the mission events, and remove the error messages. Click Edit and add the following events to the mission script, after the default functions, then save. function Mission:Event_ObjectiveTunnel() --first objective Hud:PushObjective({}, "Find vehicle at the other end of the tunnel"); Hud:AddMessage("New Objective: Find vehicle at the other end of the tunnel", 30); end function Mission:Event_KillBuggies() --second objective Hud:CompleteObjective("Find vehicle at the other end of the tunnel"); Hud:PushObjective({}, "Destroy enemy buggies"); Hud:AddMessage("New Objective: Destroy enemy buggies", 30); end function Mission:Event_LevelComplete() --level completed Hud:CompleteObjective("Destroy enemy buggies"); Hud:AddMessage("YOU WON!!!", 120); end function Mission:Event_GameSaved() --displays game saved message Hud:AddMessage("Game Saved", 60); end 5. Set up the mission events. Place an area trigger around the first spawn point at the tunnel entry, just like for the tunnel exit. This time, however, on the area trigger, click on the Mission Handler button, next to Pick New, and choose the ObjectiveTunnel event. Move to the area trigger outside the tunnel exit, and add the mission events KillBuggies and GameSaved to the On Enter event. Then select the multiple trigger that you linked to the two AI buggies earlier, and add the LevelComplete mission event to the On OutputTrigger event. Press Control-G to test the game. 86 F A R 8 Chapter C R Y ™ Sound Sounds make an enormous impact on any level, and the CryEngine Sandbox editor offers you plenty of options to create the right effect. T he CryEngine Sandbox offers powerful tools for incorporating sound into your levels, but that also means that they can be quite complex to use and understand. Sounds range from the Sound Spots, which can be placed simply, and in isolation, through environment sounds and reverbs, all the way to a dynamic soundtrack which changes the music in response to game events. This chapter details sound spots, sound and EAX areas, and the dynamic music engine. Sound Spot The simplest of all sound objects is the Sound Spot, which can be grabbed from the Sound directory of the Entity Objects list. A sound spot is simply a point that you can drop down on your map, and it will play a sound whenever a player gets near. You can set the size of the spot, i.e. the point from the centre where the player will first hear the sound, with the OuterRadius parameter. So as not to have the sound abruptly appear, you can fade it in by setting an InnerRadius parameter that is lower than its outer radius. The sound will then fade in to full volume, from outer to inner radius, until the player is inside the inner radius. You can pick a sound to play in the Source parameter, and you will find that .wav, .mp3 and .ogg sound files are supported by the editor. Sound Presets The real power of sound comes with the presets, which can be accessed via the Sound Presets option in the Sound menu. From this menu you can add and remove sound presets with the P+ and P- icons in the toolbar. Each sound preset is made up from a collection of sounds, as many as you like, and you can add and remove sounds from the presets, in a similar way to the presets themselves, with the S+ and S- icons. Each sound within the presets has its own parameters, which affect how the sounds play when they are used in the level. This comes with a dire warning: if you make any changes to any pre-existing preset in the list, this will have 87 F A R C R Y ™ a global effect, and change all the sounds in all the levels that use that preset. Obviously this is both a useful and dangerous function of presets. If you are editing the sounds in the presets, or creating your own new preset, there are a number of parameters that you need to consider. The key parameter here is Chance, which determines how likely a sound is to play at any given point. The lower the value, the less chance the sound has of being played, and the higher the value the greater the chance, to a maximum of 1000. With a value of 1000, the sound has a 100% chance of being played, and will therefore loop constantly. Obviously with a randomly played sound, you have the very real possibility that the sound will overlap. You have two ways of controlling this, either with the NoOverlap switch, or the Timeout parameter. The NoOverlap switch can force the sound to never play while overlapping another. The Timeout parameter forces the sound to not be repeated for at least as many seconds as defined, which allows you to limit the amount of overlap from a given sound preset. You will usually find the more sounds in a preset, the greater the Timeout you will need to ensure that the sound doesn't become a cacophony. There are three ways of using a preset, and all of them require an area trigger. The three areas that you can set up to trigger a preset are: Shape, AreaBox and AreaSphere. Obviously the different shape of these objects influence how the sound is generated for the player, but there is one more important aspect. The Shape object only allows sound to fade out to the sides, but not above and below the object. This means that anyone falling into the sound object, say from a glider floating above a jungle sound object, will suddenly hear the jungle noise out of nowhere, which is obviously not very realistic. The AreaBox and AreaSphere objects allow fading for approaches from above and below, but obviously they are less flexible than the Shape object in terms of the areas which they can cover. There are other advantages to the Shape object for sounds, which will be discussed next. 88 F A R C R Y ™ Area Sound Presets Tip: to work around the lack of vertical fade in Shape areas, you can stack them on top of each other. To create an Area sound object shape, select the Shape object from the Area list, and place the shape you want on the map. The object has a default height of zero, meaning that it is infinite, and the sound will stretch all the way below the object to as far high as you can get. If you change the height of the object, it will set the cutoff point for the sound. If you set a negative height, this will set the cut-off point for the sound below the object. As Diagram 8.1 Fade in zone for area object. has already been stated, the cut-off point is abrupt, and there is no fade in for height. For sideways fades, you can set the width parameter. The fade in zone is measured by the width parameter, inwards from the outside edge of the shape, as can be seen in diagram 8.1. To attach a sound to the Shape object, take a RandomAmbientSoundPreset object from the Sound folder of the Entity Objects list, and place it on the map. Then select the Shape object you have placed, and click Pick under the Target Entities box, before selecting the sound preset object that you just placed. You can attach as many sound presets to the shape object as you like, and they will all play at the same time when the player is within the specified area. You can also group sound presets, to create sounds within sounds. For example, you may want to create a jungle effect, where the noise becomes more intense GroupID = 1 GroupID = 1 the closer the player AreaID = 2 AreaID = 1 gets to the centre of it. You can do this by Diagram 8.2 Area without sound creates silent zone within sound area. placing one grouped Shape object on top of another, as seen in diagram 8.2 above. With the shapes placed you can give both shapes the same GroupID number, and then give them an AreaID to set their priority. The higher the AreaID the higher the priority, meaning that if you are in sound area 1, sound area 2 will supplant this as you enter it. Fade will work within these areas, just like when approaching from a silent no-sound area, and also in between areas, so that the lower priority area sound will fade into the higher priority area. You don't even have to attach a sound to the area, and can just leave it as a silent area within a sound area. For example, you may have a clearing at the centre of a jungle, and you can create a sound area with no sound preset attached, that is grouped with the area sound preset that is creating the jungle noise. S 89 F A R C R Y ™ Note To make this silences work effectively, you will need to play with the width of the silent shape object until the fade in area no longer creates a dead zone of complete silence within the silent area. Sound Preset Object The first two parameters of the RandomAmbientSoundPreset object sets whether the object can be heard inside or outside, both or none. What is inside and outside on a level is determined by where you place the VisAreas, as described in the Internal Levels chapter. If you place your sound areas inside, or across, VisAreas, you can toggle the effect of the sound in the VisArea with these parameters. The sounds are automatically cross faded with the VisArea object. The PlayFromCenter parameter for the sound preset object is a little different to what you might expect. For the sound preset itself, play from the centre means to play from the perspective of the player, i.e. to play as if the noise was inside his head. With play from centre for the actual sound preset object, this means to play from the centre of the sound preset object, or be an ambient background sound. EAX Sound Presets No EAX Corridor EAX Bedroom EAX For sounds inside enclosed areas, like buildings and caverns, you will want to have special effects that create reverb and echo. For this you have the EAX presets, which are created in the EAX Presets window from the Sound Menu. For more details on how to create EAX effects, you will need to check with documentation from Creative Sound Labs. To use the pre-existing EAX presets in your levels, however, is fairly straight forward. You can add the EAX preset to an area Shape object, just as you did for sound presets, except using the EAXPresetArea object. For example, you can place a building, like a hangar, down on your level, then place an area Shape around this, and then attach an EAX sound preset, using the Hangar EAX preset to create the effect you want. EAX Area There is a more effective means of using the EAX presets, however, and that is to combine them with VisAreas. As EAX presets are almost exclusively used inside, and VisAreas define which areas are internal and which external, you can use the OffWhenLeaving parameter to keep the EAX preset going while the player walks within an attached VisArea. In the Diagram 8.3 You can use EAX Areas to plug entrances to different reverb zones, rather than create entire zones for each area. 90 F A R C R Y ™ diagram above, you can see that the EAX presets are attached to areas that enclose only the entrance and exit to the VisArea. This means that with large indoor areas, for which you have already built the VisAreas and portals, you only have to add the EAX presets at the entrances and exits to the VisArea, for example the doors, rather than clicking each corner of the room and setting the exact height, etc. This can save a lot of effort, is a lot tidier, and can be used by setting the OffWhenLeaving parameter to false, meaning the EAX preset doesn't automatically turn off when leaving the attached area object. Music Engine Far Cry™ uses a music engine which can alter the music track to suit the mood, such as tense for sneaking through the undergrowth to action-oriented when the player is fighting a pitched battle against half a dozen mercenaries. The engine divides music into two forms: theme and mood. The theme is the overriding musical style for the level or area, such as jungle, and the mood is a style within that theme that will be played depending on whether the current player action is stealth, combat, etc. The six different moods are as follows: 1. Alert; AI detects the player, i.e. it hears something or catches a glimpse of the player. 2. Combat; AI detects the player, i.e. the ‘stealth-o-meter’ has hit maximum. 3. NearSuspense; AI is very close but the player has not yet been detected. 4. Sneaking; AI is out of the ‘radar zone’ and has not detected the player. 5. Suspense; AI is within the range of the player’s radar. 6. Victory; AI has been vanquished. Music plays across areas created as you would for EAX and sound preset areas. Again, like with EAX and sound presets, you can attach mood and theme selector objects to areas by picking them. You can alter what is played in that area by setting the mood or theme name in the object properties. In order to avoid abrupt changes in music you will want to set the fade in zone of the shape area objects you attach to the music and theme objects, by giving it a width. The music themes and moods themselves can be edited from the Music tab in the database view. From the music editor you can add new levels with the blue plus icon, and add new themes to these levels by clicking the pink plus icon. By right clicking on added themes you can add new moods, bridges and themes. By right clicking on the moods you can add new moods and pattern sets. You can also adjust all of the parameters for each of these elements. It is outside of the remit for this document to explain the workings of creating new music for the music engine, but there is additional information in Appendix F, which details the settings and the structure of the editor. 91 F A R C R Y ™ Walkthrough This walkthrough shows you how to create grouped sound areas. 1. Create the sound areas. Place an area shape object around the top of your inner island, so that it covers the entire space within. Give it a GroupID property of 1 and an AreaID property of 1. Place another area shape around the outside of the beach, and give this a GroupID property of 1 also, but make the AreaID 0. 2. Place the sound objects. From the Sounds folder, place a Random Ambient Sound Preset object near the outside of the biggest area shape. Give this object the sound preset of cliffwind. Place another sound preset object and give it the sound preset of shorelinedroneLP. 3. Link the area with the sound objects. Select the outside area shape, and click Pick in the RollUp Bar. Then select one of the sound preset objects. Repeat this for the second object, so that the area is linked to both. Select the inner area shape object, and click Pick again, but this time only select the sound preset object with the cliff wind sound. 92 F A R C R Y ™ 4. Give the areas a fade in zone. Select the outer area, and change the width parameter to 20. Select the inner area, and change the width parameter to 10. You might find you need to reload the scripts by selecting Reload Scripts from the Tools menu, in order to hear the newly attached sounds. 93 F A R 9 Chapter C R Y ™ Cut Scene Editor Animated movie sequences can be created with ease in the CryEngine Sandbox editor. Included in the CryEngine Sandbox editor is a powerful cut-scene editor, which allows you to sequence objects, animations, sounds, etc. into a scene which can be triggered in the game, and played either as a detached cut scene from the third person perspective, or from the first person perspective of the player as he plays the game. The system will be familiar to anyone who has used animation software like 3D Studio Max, but this brief guide will help those of you unfamiliar with cut scene editors to start creating simple scenes for your levels. Introduction Key Concepts Figure 9.1 Key concepts laid out on the sequencer. The cut scene editor is a little bit different to what you will have become accustomed to while learning the sandbox editor, and there are a few key concepts that relate to it that you need to understand, especially if you have never used a sequence editor before. These key concepts are: 94 F A R - C R Y ™ Sequence Node Track Key Timer Indicator Bar The sequence is the cut scene itself, and for each sequence you can add a number of nodes for each object that you use, including the top level node of the scene itself which is created with the camera icon on the tool bar. For each node that you have, you can have a number of tracks, depending on what kind of node it is. A camera node can only have the default tracks of FOV, Position and Rotation, plus an events track, but an animated object like a mercenary can have many more. Each track is measured in seconds, and has points marked on it to indicate where a sound starts, or where an object will be at that particular time. Each section of a track’s time is marked off by a Timer Indicator Bar, which moves across the track from left to right as the sequence is played. Any key that falls under the Timer Indicator Bar as it moves across the track becomes active. The Sequencer Tool Bar The cut scene editor has no pull down menus, although each icon does have a roll over hint to remind you what it does. The key icons to concern yourself with are the three sequence icons on the left hand side of the tool bar, the two node icons to the left of the import and export icons, the sequence control icons in the centre of the tool bar, and the add and delete key icons to the far right. The sequence icons add, delete, and set the properties of sequences respectively. The blue square add node button is accompanied by the camera icon for adding the top level scene node. The sequence control icons, that look like video controls, in the centre of the tool bar, perform the following functions, in the order that they appear on the bar: return time indicator to start, play sequence, stop play, pause play, and move time indicator to end. The play icon allows a number of different play speeds to be chosen. Finally, on the far right of the bar, the two key icons allow you to add and delete keys on the tracks. To add a key, select the Add Key icon, and click on any track. To delete, highlight a key, and click the delete key icon. You can also quickly delete keys by simply pressing the delete key. 95 F A R C R Y ™ Creating a Cut Scene Placing objects for the scene Figure 9.2 Objects and cameras ready for creating a sequence. You create cut scenes using the same tools as you use to create the level itself, with only the sequencer being the additional tool to bring the objects you place to life. Many of the objects you will use in any cut scene will already be on the map you are designing, but you will want special objects in order to create the scene. For example, if you are going to create a cut scene in the third person, you will want to include the hero of the game himself, along with the cameras that you are going to film him with. To make the design of the cut scene easier, and to keep things organised, it is best to place all of the objects that you will put into the sequencer in their own cut scene layer. Once you have all the objects ready in your scene, you will want to place cameras in order for the player to view the scene in the third person. You can drop as many camera objects as you like from the Camera objects button on the objects tab, and position them using the move and rotate tools, as any other object. An easier way to position the cameras exactly where you want them, however, is to move to the view of each camera, and position them from that camera's perspective. Get each camera's view by right clicking the top bar on the Perspective window, and selecting each camera from the Camera list. When you select the camera, you will move to its view, and you can move about the map as normal, only the camera will move with you. When you have positioned the camera correctly, switch to another camera, or back to the default camera. Moving Objects The next thing to do once the scene is set, is to call up the sequence editor window. You can do this by selecting Track View from the Window menu on the top bar. 96 F A R C R Y ™ From the Track View window, you will need to add a sequence in order to start animating the scene, and this can be done by selecting the small blue stick man icon with the plus sign, in the top left hand corner of the window. Then, for every object that you will be working on in the cut scene, you will need to create a node. The nodes are specifically for any object that you will do something with, like move or rotate, and not objects that simply make up the background of the scene. To create a node, click on the object that you will work on, and then click the blue square add node icon above the tracks, to the left of the camera icon. Do this for your cameras as well as your basic objects, unless you plan on keeping them stationary. Figure 9.3 You can move objects through the temporal plane in the main perspective view. Tip: don’t forget to turn off record once you have finished moving your object as it can completely mess up your scene. To move an object in the cut scene, like a mercenary, first make sure that the time indicator bar is set to zero, by clicking the reset icon on the play back control panel to the right of the camera icon. Then select the object in the track view listing, press the red record button on the play back panel, and then select the object you are going to move in the main perspective view. When you move this object, this will be its starting point in the animation, and its position is stored in a key placed in the objects position track at zero. Once you have done that, move the time indicator bar forward, say a few seconds, and then move the object to a new location in the perspective view. If you want to add more position points, just move the time indicator forward, and move the object again until you are finished, at which point you can add the final key, by pressing the red record button again to turn recording off. 97 F A R C R Y ™ It can be tricky to get the procedure just right for moving an object in the sequencer, but follow the simple instructions to the letter and you will get it right. Remember the following steps: 1. 2. 3. 4. 5. 6. 7. Select the track in the sequencer. Click the red record icon on the tool bar to start recording. Select the object in the perspective view. Move the object to its starting position. Move the timer indicator bar to the next position. Move the object to the next position. Repeat 5 and 6 until you have completed the object's movement through the sequence. 8. Click the red record icon on the tool bar to stop recording. Remember that if you are going to change an object's rotation that you need to set its rotation, just like its position, before you start moving it through the sequence. You can now view what you have created by resetting the time indicator bar, as before, and then pressing the play button. If you have set up everything correctly, the object will move from the first point to the last point, until the time indicator bar hits the end of the cut scene. You may want to shorten or lengthen the cut scene, having looked at where you want the object to move to, and you can do this by altering the cut scene properties by clicking the third blue stick man icon. The most important parameters you can change in this window are the start and end times for the sequence, the rest are probably best left alone, as some of them are no longer used and some are just dangerous. For example it is better to have a trigger on the first spawn point, than to set the cut scene to play at the start of a new level. Cameras Figure 9.4 You can position cameras from the viewpoint of the camera itself. 98 F A R Tip: be very careful not make the mistake of continuing to work on your scene while still in camera or sequence mode, as this will result in the camera moving all over the map and ruining your cut scene. Make sure you return to the default view before further work is done. C R Y ™ Once you have figured out how to move an object in the cut scene, then you will see how to rotate it too. In fact, you can rotate and move the object at the same time, and the track editor will automatically key both. However, you will have to remember to set a rotation for the object on the first key, by rotating it, otherwise it won't record it. Knowing this, you can now easily do the same for cameras. However, with cameras, you will want to switch to the camera view to move and rotate them, as this offers the best view for seeing how your object will look from the perspective of the player. Select the camera in the track view, as before, and then click the record icon, this time switching to the view of the camera by right clicking the top of the Perspective window, and selecting the camera you want. Move the camera to the position you want it to start in, before moving the time indicator bar forward. Follow this by moving the camera to the position you want it to be in at that point, and then turn record off to automatically set the final keys. Note If you want to preview the cut scene you do so by choosing the sequence camera, rather than the default, before playing the sequence in the editor. Animating Objects If you've sent a mercenary moving across the screen, you will find that it looks unrealistic to have a player floating from one point to another, so you'll want to add some animation. The default tracks given for an object are just its position and rotation, but you can also add others, including animation, but also for sounds, facial expressions and events. To create a simple walking animation, to accompany your mercenaries movement across the map, add a track by right clicking on the objects name in the track view, and selecting an animation from the Add Track list. To add an animation place a key on the track, you will usually want one at the start, right click the key, and from the Start Animation menu, select a suitable animation, such as awalkfwd. If you find the animation is too short for your movement, you can check the Loop Animation box to repeat the animation throughout the sequence. Note If you don't want any of the objects used in the cut scene to appear in your level, you can set up a Visible track, and make the object visible only for the duration of the sequence. 99 F A R C R Y ™ Directing Figure 9.5 A mercenary walks across the beach and enters a vehicle, while watched by two cameras. The top level node of the whole sequence is the Scene node, which directs which cameras are playing. To select which camera is playing in your scene at any particular time, drop in a key, right click in, and choose that camera from the drop down list called Select Node. Cameras selected in this way will play through the sequence camera view, when you play the sequence, and this will be the view that the player sees. The Scene node can also play background sounds and music. To get a sound in the Scene node, add a Sound track, and then click in keys for where you want sounds to play in that track. For each key right click it and choose the sound file you want to play. The sound you choose will likely be shorter than the sequence itself, so if you have no other sounds, and want it too play in the background throughout, check the Loop Sound box. Playing your Cut Scenes Once the sequence has been created, you will want to include it in your level. To do this you will have to recall how you created Mission Handler functions in the Single Player Missions chapter. Select Properties from the Mission menu, and edit the mission script. You will need to create a function, or amend an existing one, and type the following code in to get your cut scene to play: Movie:PlaySequence('sequence_name') 100 F A R C R Y ™ You can then make the sequence run from your level by placing a trigger, and running the scripted function from the Mission Handler, or by using the event from any object. Usually you will want to place a cut scene at the beginning and end of your missions, and additionally at key moments in the level to illustrate the plot better. To get more information on scripting functions and placing them in your level see the Single Player Missions chapter. Walkthrough This walkthrough shows how to create a basic cut-scene. 1. Create a new sequence. Select the Track View from the Windows menu, and click on the blue man icon with the plus symbol to create a new sequence. Enter the name “buggywalk” and press return. 2. Add the nodes to the sequence. Select the mercenary closest to the shore line, and press the blue square Add Selected Node icon on the track view tool bar. Click the Camera button on the Objects tab, and place a camera on the map called camera1. With the camera selected, click the blue square icon again. Right click on the top bar of the Perspective view, and select camera one from the Camera list, to change the view from Perspective to camera1. From this view, move the camera so it is has the view of the map as seen in the picture below, with the outer most mercenaries viewed against the sea. Finally, click the film camera icon next to the blue square, in order to add the sequence node to the track listing. 101 F A R C R Y ™ 3. Move the grunt. Right click on the top bar of the view, and switch to the default view. Select the outermost grunt that you added as a node earlier, and click the red circle record button on the sequencer tool bar. Click the position track, and then move the grunt back towards the player’s buggy behind the AI’s. Move the track bar forward three seconds, and then move the grunt back to where you took him from. Press the record button again. 4. Animate the grunt. Right click on the grunt node and add an animation1 track. Click the Add Key icon, to the left of the red cross delete key icon on the far right of the sequencer tool bar. Click the animation1 track at 0 seconds, to add a key at the start of the track. Right click the new key, and from the resulting window select the arunfwd animation from the drop down list, and check the Loop Animation box. 5. Track the grunt in the camera. Right click the top bar of the screen and select the camera1 view again. Click the red record button, and rotate the camera so that it can see the grunt standing by the player’s buggy. Move the time bar forward, so you can see the grunt run across the beach, until the bar reaches three seconds. Then rotate the camera around so that it can see the grunt’s new position next to the buggy that he will get into. Press the red record button again to end recording. Switch back to the default view again. 102 F A R C R Y ™ 6. Test the scene. Switch the view to camera1, and then move the time bar backwards and forwards to see how the scene looks. 103 F A R 10 Chapter C R Y ™ Modding This final chapter details some of the tools you need for the complete modification of the game, such as the editors and the lua scripting compiler. Up until this point we have concentrated almost purely on the editor itself, and how that relates to the game of Far Cry™. This means that you should now have the skills to create any kind of Far Cry™ level, but you will be lacking the kind of knowledge you need to modify the game. Far Cry™ is highly modable - you can modify aspects of the game, or you can delete all the scripts, materials, etc. and start completely afresh. Everything from the game rules to the head up display can be changed using the tools provided. Scripting The most powerful modding aspect of Far Cry™ is the LUA scripts. All the game logic is contained in LUA scripts, and you can use them to create an entirely new game. It doesn’t even have to be an FPS, it could be an RPG or anything that you can program the LUA scripts to do. Everything that is explained here must be understood in the context that everything can be changed, and everything is global. The means of achieving certain functionality, such as events to trigger functions in entities, are only conventions agreed by the Far Cry™ team, and not something that will necessarily restrict you in the programming of your mod. In the root scripts folder, there are several directories, which define the rules for each game type, as well as miscellaneous folders for the GUI, etc. The default directory contains all the game rules for the Far Cry™ game, and unless specified elsewhere, these are the rules that are taken by the game engine. If you create a new game type, you create the rules which affect that game type, but all shared rules need not be redefined, as it will assume the default if not otherwise stated. All entities that work specifically in that game type, for example the multiplayer spawn points, must be created specifically for that game type, or they may well not work at all. Each new game style directory must be set up in the exact same way as the default, or it will not recognise it. Only the editing of objects will be described in this User Manual, as editing other kinds of scripts is outside the remit of this document. 104 F A R C R Y ™ Creating New Entities Every new entity must be registered in the class registry script, ClassRegistry.lua. Each entity is entered into the script as follows: {“entity_type”, “name”, ID, “script_file”} Where entity_type is the folder name it will appear under, name is the entity’s name itself, ID is a unique number assigned to that entity only, and script_file is the location of the script that the entity will use. You must make sure that each entity entry is separated by a comma. An example of this script would be: {"Pickup", "PickupM4", 36, "Pickups/PickupM4.lua"} Once the entity is registered, you can then write your entity script. All entity scripts contain the bare minimum of the following: name_of_entity = { } Inside that definition you can create properties, events and methods, although again these are Far Cry™ conventions, not something that you are necessarily limited to. Properties are the parameters that you allow your entity to have, and can be set so that they are displayed to the user, or set privately within the entity script. Similarly events can be created that can be run from outside the script in the levels you design, or you can set up methods that are run only from within the script itself. Without any of these things defined, the entity will be an empty, invisible nothing that you can place on the map, but won’t ever be seen in the game. Setting Entity Properties Properties that are displayed in the entity’s property panel, to be set by the level editor, are defined within the following syntax: Properties = { } Inside the brackets you can define all of the properties that will appear in the properties tab, with the following: data_typeVariable_name = value Where data_type sets what kind of information the variable holds, such as a Boolean true or false value (see Appendix G), Variable_name is the name that you will reference the property by, and value is the data that you want the variable to be initialised with. For example you may want an enabled property, which you can set 105 F A R C R Y ™ as true or false, and initialised to false. To include this in the properties, you would need the following code: bEnabled = 0 Just as with registering entities, you need to delimit each property with a comma. To create a variable that will not be displayed in the properties list, and will be used by the script alone, you can set them up just like an ordinary lua script, without worrying about data types, as lua only has numbers and strings. For example, you can set up a variable to count the number of event inputs, like the Multiple Trigger, with the following: numInputs = 0 Creating Methods and Events Methods and events are simply functions that are defined in the script. An event differs from a function only in its naming convention, and the fact that only events can be activated by entities within the game . You can define a method in the code, by declaring a function as follows: function entity_name: function_name(parameter) Tip: to test a method, you can run it from the methods list in the RollUp bar. Where entity name is the name you defined for your entity originally, function name is the name of your new function, and parameters is the name of the value you are passing to the function. You then can call this function by simply using the functions name, with the passed value, or empty brackets if there is nothing to be passed. You will usually call it from another function in the following way: self.function_name(parameters); For example: self.OnReset(); Inside the function you will want to add some code that will actually do something. A simple change you can make is to the properties of the object. You can achieve this with the following: self.Properties.datatypeVariable_name = value For example, you may want to change the value of the enabled property to true. You can do this with the following: self.Properties.bEnabled = 1; If you are only changing the value of a variable, not a property, then you only need to mention the variable name, the same as when you initialised it. Once you have finished writing the function, you must close it with an “end” statement. 106 F A R C R Y ™ For events you need to set up the function with the following syntax for it to be recognised as an event by the editor: function entity_name: Event_function_name(parameter) The only difference here being the Event_ prefix for the function name. With the function defined thus, the event will appear in the events list as On followed by the function name. For example, if you set up a function name to reset the number of inputs in a Multiple Trigger, you could call it: function MultipleTrigger: Event_Reset() With that syntax, the event Reset would appear in the event list, and when called the code following the function would be run. One aspect of event functions that you must consider, which is not a concern when writing methods, is broadcasting the event. If you want the event you have created to propagate itself in your levels, i.e. to be able to send event signals to other entities, you need to add the following code: BroadCastEvent(self,”event_name”); This allows the event to trigger other events on an event signal sent when the event event_name is triggered. Note When writing function code, the prefix self denotes the entity that owns the script. You can use other prefixes to access any other entity in the game, for example by using the entity’s exact name or using the sender prefix to access the entity that triggered the event. Example Entity Script In order to see how entity scripts work more clearly, it is helpful to see a real working example. Here we will look at a simple script of the MultipleTrigger, which you can access by selecting it from the entity directory and clicking Edit Script. The first part of the script defines what properties the entity will have: MultipleTrigger = { type = "Trigger", Properties = { bEnabled = 1, iNumInputs = 1, ScriptCommand = "", PlaySequence = "", 107 F A R C R Y ™ }, Editor={ Model="Objects/Editor/T.cgf", }, } The first part of the script defines the properties of the entity. The first part defines the type. The second part defines the properties as they will appear in the properties tab on the RollUp bar. The following properties are defined: - Enabled; Boolean (b) variable with the default value of true (1). - NumInputs; an integer (i) variable with the default value of 1. - ScriptCommand; a text string with the default value of “”. - PlaySequence; a text string with the default value of “”. The final part of the opening section of the script defines what 3D model to be used with the object in the editor. This is used only inside the editor itself, and is defined because a trigger is invisible in the game, but needs to have some kind of icon in the editor to differentiate it from other model-free entities, like anchors. Following this opening section are the methods. function MultipleTrigger:OnPropertyChange() self:OnReset(); end The first method, OnPropertyChange, defines what code to run when any of the properties are changed, either in the editor or in the game. Here it calls the OnReset method, which is defined next. function MultipleTrigger:OnReset() self.numInputs = 0; end The OnReset method ensures that the number of inputs registered, numImputs, is set to zero. This method is called whenever you enter or exit from game mode. 108 F A R C R Y ™ function MultipleTrigger:OnShutDown() end OnShutDown is called whenever the object is deleted from a level, like a deconstructor method in C++. In this case it has no code to run. function MultipleTrigger:OnLoad(stm) self.numInputs = stm:ReadInt(); end The OnLoad method is called whenever the game is loaded, say at a checkpoint after a player has died. Here it is passed stm, which is the stream for saving and loading game data too. Everything saved to the stream must also be loaded, otherwise the stream will go out of synchronisation and the game will become corrupted. In this particular method, the trigger saves the number of inputs received to the stream, so that when a level is re-loaded, the number of inputs remains the same. function MultipleTrigger:OnSave(stm) if (self.numInputs) then stm:WriteInt(self.numInputs); else stm:WriteInt(0); end end The opposite of OnLoad is OnSave, which saves data to the stream. Here it first checks to see if the variable numInputs has been created yet, and if so, saves it to the stream. If the variable hasn’t been created, then it saves a zero value, because when numInputs is created it will be set to zero anyway. function MultipleTrigger:OnInit() self:EnableUpdate(0); self:OnReset(); end The OnInit method gets called whenever an entity is created, i.e. by dragging and dropping it into your level. The first call to EnableUpdate, tells the game engine not to enable updates for the entity. If a 1 is passed as a parameter, then updates will be enabled, and the object will be updated every frame, which is obviously a drain on processing power, and not generally recommended. The initialisation method then calls the OnReset method to give numInputs a value. 109 F A R C R Y ™ The next part of the script defines the four event triggers for the entity, InputTrigger, OutputTrigger, Enable and Disable. function MultipleTrigger:Event_InputTrigger( sender ) if (self.Properties.bEnabled ~=0) then if (self.numInputs >= self.Properties.iNumInputs) then return end self.numInputs = self.numInputs + 1; if (self.numInputs >= self.Properties.iNumInputs) then self:Event_OutputTrigger(sender); end end BroadcastEvent( self,"InputTrigger" ); end In the MultipleTrigger entity, the input trigger counts each trigger on its event, and when it reaches the amount defined in the NumInputs parameter, it fires an OutputTrigger, by calling the OutputTrigger event function. The actual code runs by checking if the internal variable, numInputs, is greater or equal to the entity property NumInputs. If this is true, then it simply returns from the triggered event and does nothing more, not even propagating the event. If this isn’t true, then it increments the internal variable numInputs by one, before checking if now numInputs has become equal to, or greater than, the entity property NumInputs. If this is now true, then it sends an event on the OutputTrigger, by calling that function with the sender parameter that was passed to it from the entity that triggered the InputEvent in the first place. function MultipleTrigger:Event_OutputTrigger( sender ) if (self.Properties.bEnabled ~=0) then if(self.Properties.PlaySequence~="")then Movie:PlaySequence( self.Properties.PlaySequence ); end -- Trigger script command on enter. if(self.Properties.ScriptCommand and self.Properties.ScriptCommand~="")then dostring(self.Properties.ScriptCommand); end end BroadcastEvent( self,"OutputTrigger" ); end 110 F A R C R Y ™ The OutputTrigger is called only when there have been a sufficient number of input triggers to require it. The script first checks whether the entity is actually enabled. If it is, then it will run the cut scene named in the property PlaySequence, if there is one defined. It will also run any script command defined in the property ScriptCommand, as long as there is anything there to run, before sending the trigger event out to whatever entity is attached on that event. function MultipleTrigger:Event_Enable( sender ) self.Properties.bEnabled = 1; BroadcastEvent( self,"Enable" ); end function MultipleTrigger:Event_Disable( sender ) self.Properties.bEnabled = 0; BroadcastEvent( self,"Disable" ); end The Enable and Disable events simply set the Enabled property to either true (1), for enable, and false (0) for disable. Particle Effects Editor Figure 10.1 Particle Effects Editor The sandbox contains a fully functioning particle effects editor, which allows you to edit effects in real time, updating changes and viewing them on the screen as you create them. You can access the editor from the Database View, which can be selected from the Windows pull down menu. When the database view appears, click on the Particles tab to access the editor. From here you can select libraries to edit, or you can create your own new library by clicking the blue plus icon on the main tool bar. 111 F A R C R Y ™ Within each library you can create new particle effects by clicking the pink plus icon, and entering the name of the new effect. If you want to create a group for it, or place it in an existing group, then enter the group name in the first box. Once you have a new effect listed in the library, you can add textures and change parameters to create it. Each parameter is listed and explained in Appendix **. If you want to combine multiple effects, you can add sub-materials to each effect you create by clicking the green plus icon to the right of the tool bar. Each sub-material will appear in your new effect in combination with all of the others. To view the particle effect as you edit it, you will need to place a ParticleEffect object in your level, and point the entity to the new effect in your library. To do this you will need to change ParticleEffect property and apply the following name convention: library_name.group_name.particle_effect_name These names will come from the library that you have just created. For example if you created a library called LevelExp, with a group called Explosions and an effect called BlowUpCar, you’d need to point to it with the following: LevelExp.Explosions.BlowUpCar With the particle effect placed on your level, you should be able to immediately see the changes you make, as you make them. If it doesn’t automatically show up, you may need to click Reload on the particle effect entity. Materials Editor Figure 10.2 Materials Editor The materials editor functions on a basic level in much the same way as the particles editor. You can also see the changes you make to the materials in real time on the object that you are working on. To get started you need to place the object whose material you are editing onto your map, like a column or wall, and then press the Get Material Selection icon, which is the third from the left on the tool bar. If no material already exists for the object, you will be asked whether you want to create a new one; select yes. Then you can create a new material or name, as with the particle editor. Once you have created the new material, you can edit the shader, texture and other parameters for each in the edit box to the right. 112 F A R C R Y ™ The shaders give you the different effects for the material surface, like gloss, reflection, glass, etc. You can see a list of basic shaders in Appendix G. The texture of the material defines what the material looks like on its surface, like bricks or iron grids. The other parameters are also detailed in Appendix G. Instead of changing the properties of the materials, you can copy them across from other objects, by using the assign icon on the left of the tool bar. When assigning materials to an object, you must be careful to ensure that the materials have the same order of material IDs, like those displayed under column2x2 in figure 10.2, else you will have to create a new material. 113 F A R C R Y ™ 114 F A R A Appendix C R Y ™ Map Creation Tables A more detailed examination of property tables related to the Map Creation chapter. Terrain Modifying Brush Property Radius: 1 to 200 Hardness: 0 to 1 Height: 0 to 255 Enable Noise: On or Off Scale: 0 to 100 Frequency: 0 to 100 Reposition objects. Explanation Changes the size of the editing brush Changes the percentile hardness of the editing brush, 1 is hardest, 0 has no effect. Sets the height to which the brush flattens the terrain. Applies noise while you flatten terrain. Adjusts the size of the noise bumps which are created by the brush while the terrain is being flattened. Adjusts the frequency of the noise bumps created by the flatten brush. Repositions any objects which are on the terrain to the new terrain position. Vegetation Object Parameters Property Density ElevationMin ElevationMax SlopeMin SlopeMax Size SizeVar CastShadow PrecalcShadow Bending Hideable Brightness: AlphaBlend: On / Off SpriteDistRatio: ShadowDistRatio: MaxViewDistRatio: SpriteTexRes: Material BackSideLevel CalcLighting UseSprites FadeSize Explanation Varies the density of the vegetation; lower numbers result in more sparsely distributed vegetation. Defines the minimum elevation at which the vegetation grows. Defines the maximum elevation at which the vegetation grows. Defines the minimum slope on which the vegetation grows. Defines the maximum slope on which the vegetation grows. Scales the basic size of the vegetation. Sets the amount of size variation between different members of the same vegetation group. Toggles whether the vegetation casts a real-time shadow. Enables calculation of vegetation shadows into terrain texture. Varies the extent to which the vegetation appears to sway. AI can use this vegetation to hide behind when under attack. 0 – 1.5 Brightness Vegetation objects can be adjusted here to match to other vegetation objects Vegetation object that use templplants shader (semi-transparent objects like bushes and grass) look better with this feature turned on 0 – 256 Specifies at which distance the object will be rendered as a sprite instead of 3d geometry 0 – 256 Specifies at which distance the real-time shadow of the object will be faded in 0 – 256 Specifies at which distance the object will not be rendered anymore 16 – 1024 Specifies the resolution of the sprite that is rendered when the object is not rendered as 3d object Here the vegetation object be assigned with a material created in the editor using the DataBaseView Material Editor 0 – 1 Specifies how much darker the back side of the vegetation object is (to simulate shading on big objects like trees) If set to true the vegetation object gets darker if it is inside shadow areas from mountains or other vegetation objects All objects by default turn into sprite when seen from distance here the feature can be turned of (alphablended grass for example does not need to have sprites turn them off and set maxviewdistradio to 0.3 to blend them in like detail grass) When vegetation objects fade in from invisible to visible in the distance this feature is used (set to false if not needed) 115 F A R C R Y ™ Environment Properties Property Fog Color Start End ViewDistance Shaders SkyBox Water SunLensFlares Shore SunWaterRefl EnvState EnvColor WindForce OutdoorAmbiantColor SunColor SkyBoxAngle SkyBoxStretching Ocean ShoreSize SurfaceTranspRatio SurfaceReflectRatio SurfaceBumpAmountX SurfaceBumpAmountY BorderTranspRatio FogColor FogDistance BottomTexture Caustics HeightMap GeometryLODRatio TextureLODRatio DefaultZoomTexture Explanation Color of the fog Distance at which the fog start to appear. Distance at with the fog will no longer be transparent. Maximum view distance above which nothing is drawn by the editor. The image used as a backdrop for the sky. Water surface shader. The effect when a player looks directly at the sun. Shore shader. How the sun is reflected onto the water shader. Everything outside is imbued with this color. Strength of the wind for flags, soft body, vegetation and hang-glider. Will add a color tint to everything except Terrain and Ocean. Will add a color tint to Entity Sets the angle, in degrees, of the rotation of the skybox relative to the world, for example 180° will put the sun directly opposite 0°. Stretches the texture of the skybox to make it bigger. Defines the size of the surf crashing on the beach shore. The transparency of the water surface; from 0 (completely transparent) to 1 ( completely obscure). The reflectivity of the water surface; from 0 (non-reflective) to 1 (totally reflective) The ‘bumpiness’ of the water surface in one direction (x); 0 bump in x and y gives a calm surface. Bump of the waves on the Y axis Specifies the transparency of the water surface if the player stands next to it; 0-1. Color of the fog under water. Distance of the fog underwater Set the texture at 0 elevation and outside the heightmap area. Defines if caustics is used in the water. How the level of detail of the terrain geometry is handled; 1 = normal resolution, 0.x = lower resolution, 1.x+ = higher resolution. Same as Geometry but for texture The default detailed texture used by the editor when none is specified. 116 F A R B Appendix C R Y ™ Object Property Tables A detailed list of all the known properties of objects at time of documentation. BUTTON AI AIPath: defines a path for AI entities. Naming convention: n_PATH Parameter Width Height AreaID GroupID Closed DisplayFilled Explanation Unknown for this tool. Sets height of path; must be zero for path to work. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Range T/F T/F ForbiddenArea: defines the area where an AI can or can’t walk. Parameter Width Height AreaID GroupID Closed DisplayFilled Explanation Unknown for this tool. Always 0 Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Display closed area filled. Range T/F T/F AINavigationModifier: defines an area within Forbidden Area to allow AI entity to traverse it. Parameter Width Height AreaID GroupID Closed DisplayFilled Explanation Unknown for this tool. Sets height of Area. If 0 and closed it will generate a space where the AI will work as if indoors, with waypoints, etc. If it has a value it will generate this space at this height. Everything above or below will be considered outdoor. Everything inside will be considered indoor. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Display closed area filled. AIHorizontalPlane: defines a plane for the ocean and water that the AI will see as “soft-cover”. That means a plane will block the AI’s view, like dense foliage. 117 Range T/F T/F F A R C R Y ™ Parameter Width Height AreaID GroupID Closed DisplayFilled Explanation Unknown for this tool. Unknown for this tool.. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Display closed area filled. Range T/F T/F AIPoint: point for AI navigation within an area, usually NavigationModifier area. Parameter Waypoint Hide Point Entry Point Exit Point Explanation Defines object as being used as a point for the AI entity to move to. Defines object as being used as a point for the AI entity to hide at. Defines object as being used to allow the AI entity to enter or exit a NavigationModifier area. Defines object as being used to allow the AI entity to enter or exit a NavigationModifier area. Range Radio Radio Radio Radio AIAnchor: action modifier for nearby AI entities. Parameter Action Explanation Determines he action carried out by AI entity. 118 Range List F A R C R Y ™ BUTTON Area Shape: defines an area to be used in conjunction with another object, e.g. area trigger. Parameter Width Height AreaID GroupID Closed DisplayFilled Explanation Unknown for this tool. Sets height of shape. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Range T/F T/F AreaBox: same as shape, but with a fade property and a set rectangular shape. Parameter AreaID FadeInZone Width Length Height GroupID Explanation Unknown for this tool. Determines if there is a fade area inside the box. Sets width of the zone. Sets length of zone. Sets height of the zone. Unknown for this tool. Range AreaSphere: same as AreaBox, but a set sphere shape. Parameter AreaID FadeInZone Radius GroupID Explanation Unknown for this tool. Determines if there is a fade area inside the box. Defines radius of sphere. Unknown for this tool. Range WaterVolume: defines a volume of water. Note: must be used in conjunction with Database material editor for water specifications. Parameter Width Height AreaID GroupID Closed DisplayFilled Shader Speed TriMinSize TriMaxSize AffectToVolFog Explanation Unknown for this tool. Sets height of water; must be negative as volume goes below surface. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Defines shader used for surface texture. Defines how fast the water will flow. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range T/F T/F File VisArea: defines for the engine what are internal areas. Parameter Width Height AreaID GroupID Closed DisplayFilled AmbientColor DynAmbientColor AffectedBySun ViewDistRatio SkyOnly Explanation Unknown for this tool. Sets height of area; must not be zero. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Defines ambient colour within the VisArea Defines the dynamic ambient colour wiith the VisArea. Determines if area is affected by the sun. Defines the view distance within the area. If a player is inside the VisArea,, determines if only the sky will be rendered. Used for some kind of windows at ceilings. 119 Range T/F T/F RGB RGB T/F T/F F A R C R Y ™ Portal: defines a view area for internal/external areas. Note: must overlap a VisArea. Parameter Width Height AreaID GroupID Closed DisplayFilled AmbientColor DynAmbientColor AffectedBySun ViewDistRatio SkyOnly UseDeepness DoubleSide Explanation Unknown for this tool. Sets height of water; must not be zero. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Defines ambient colour within the VisArea Defines the dynamic ambient colour wiith the VisArea. Determines if area is affected by the sun. Defines the view distance within the area. Unknown for this tool. Unknown for this tool. Enables or disables viewing from both sides of portal. Range T/F T/F RGB RGB T/F T/F T/F T/F OccluderArea: defines an area that will not be drawn until player is in actually in area. Parameter Width Height AreaID GroupID Closed DisplayFilled AmbientColor DynAmbientColor AffectedBySun ViewDistRatio SkyOnly UseDeepness DoubleSide Explanation Unknown for this tool. Sets height of water; must not be zero. Unknown for this tool. Unknown for this tool. Determines if area is closed, i.e. no gap. Unknown for this tool. Defines ambient colour within the VisArea Defines the dynamic ambient colour wiith the VisArea. Determines if area is affected by the sun. Defines the view distance within the area. Unknown for this tool. Unknown for this tool. Enables viewing from both sides of portal. Range T/F T/F RGB RGB T/F T/F T/F T/F FogVolume: UNKNOWN TOOL Parameter Width Length Height ViewDistance Shader Color Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range File RGB 120 F A R C R Y ™ BUTTON Brush Generic Parameters: all objects have the following properties by default and can be resized Parameter Prefab OutdoorOnly CastShadowVolume SelfShadow CastShadowMap RecvShadowMap CastLightMap ReceiveLightMap Hideable LodRatio ViewDistanceRatio NotTriangulate LightMapQuality Explanation Defines 3D model of object. Determines if the object is only seen outdoors. If the object belongs outdoors, it will be forced outside even if physically inside. Determines if object casts a volumetric shadow. Determines if the object can cast a shadow on itself. Determines if there will be a shadow texture of the object cast on the environment. Determines if the object can receive shadow textures from other objects. Determines if the object can cast a light map upon other objects. Determines if the object can receive a light map cast by other objects. Determines if the object can be used by AI entities to hide behind. Defines the distance at which the object reverts to low detail. Defines the distance at which the object will no longer be visible to the player. Determines if object will not be included in AI triangulation. If set the AI will disregard the object. Determines the quality of the light map cast. 121 Range File T/F T/F T/F T/F T/F T/F T/F T/F T/F F A R C R Y ™ BUTTON Entity Generic Parameters: all objects have the following properties by default and cannot be resized Parameter CastShadowVolume SelfShadow CastShadowMap RecvShadowMap CastLightMap ReceiveLightMap LodRatio ViewDistanceRatio SkipOnLowSpec HiddenInGame Explanation Determines if object casts a volumetric shadow. Determines if the object can cast a shadow on itself. Determines if there will be a shadow texture of the object cast on the environment. Determines if the object can receive shadow textures from other objects. Determines if the object can cast a light map upon other objects. Determines if the object can receive a light map cast by other objects. Defines the distance at which the object reverts to low detail. Defines the distance at which the object will no longer be visible to the player. Determines if the object will appear on low spec computers. Determines if the object will be invisible in the game. Range T/F T/F T/F T/F T/F T/F T/F T/F AI Folder AISphere: UNKNOWN TOOL Parameter InnerRadius Explanation Determines radius of the AI Sphere Range CreatureGenerator: spawns a number of AI entities. Parameter CreatureType MaxCreatures Explanation Name of creature to be generated. Defines the maximum number of creatures to be created. Range Text Explanation Determines if the weapon starts in the grunt’s hand. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Determines if the AI will affect the radar. Names the animation pack the AI will use. Names the equipment the AI will drop upon death. Names the equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Unknown for this tool. Points to the 3D model of the AI. Unknown for this tool. Names the tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. Names the sound pack the AI uses. Unknown for this tool. Determines if the AI takes proximity damage. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. Defines the speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. Defines the speed at which the AI can walk forwards. Range T/F File T/F T/F List Grunt: basic soldier. Parameter GunReady HelmetModel HelmetOnStart HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack DropPack Equipment GroupHostility HasArmor KEYFRAME_TABLE Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility TakeProximityDamage Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed 122 T/F Text Equip Equip T/F Text File Text T/F Text T/F T/F List F A R C R Y ™ Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species AniRefSpeeds SpeedScales Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. Sets the number of the first path node. Defines the number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. 0-360 Text Gunship: Helicopter attack ship and troop carrier. Parameter Behaviour Groupid Sightrange Soundrange AttackAltitude BendForce DropPack DmgScaleBullet DmgScaleExplosion FadeEngineSound FlightAltitude FlightAltitudeMin GroupHostility GunModel IgnoreCollisions IsKiller KillDist Model Pathloop Persistence SoundOutdoorOnly SpeciesHostility StartDelay Trackable Attackrange Back_speed Character Commrange DropAltitude Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps PointAttack PointBackOff PointReinforce Responsiveness Species Vertical_fov ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin GunnerParams AttackRange Horizontal_fov Responsiveness Sightrange Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. The height from which the helicopter AI will attack from. Unknown for this tool. Unknown for this tool. Damage modifier for the helicopter’s gun fire. Damage modifier for the explosions from this helicopter. Sets whether the engine sounds fades in and out with the distance of the AI from the player. Sets the maximum altitude for the helicopter. Sets the minimum altitude for the helicopter. Unknown for this tool. Defines the 3D model of the gun mounted on the helicopter. Determines if the helicopter can ignore collisions. Unknown for this tool. Unknown for this tool. Defines the 3D model for the helicopter Determines if the helicopter will loop at the end of its path. Unknown for this tool. Determines if the you will only hear the sound of the object outside of buildings. Unknown for this tool. Unknown for this tool. Unknown for this tool. Sets how close the AI must be to target before it will start firing. The speed at which the AI can move backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. Unknown for this tool. The speed at which the AI can move forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Defines the name of the tag point that the helicopter will attack once ordered. Defines the name of the tag point that the helicopter will return to after finishing its job, losing its pilot, or taking damage. Defines the name of the tag point that the helicopter will reinforce once ordered. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Sets the vertical field of view for the helicopter. Settings for the explosion caused by the helicopter’s destruction. Damage caused when the helicopter is destroyed. Unknown for this tool. Unknown for this tool. Defines maximum radius of explosion. Defines minimum radius of explosion Settings for the helicopter’s gunner. Sets how close the gunner must be to target before it will start firing. Defines the horizontal field of view for the gunner. Responsiveness of the turret to enemy movement. Defines the sight range of the gunner. Range List T/F File T/F T/F File T/F T/F T/F List 0-360 Text Text Text Text 0-180 0-360 MercCover: mercenary soldier that provides cover for other soldiers when grouped. Parameter Explanation Range 123 F A R C R Y ™ GunReady HasLight HelmetModel HelmetOnStart HelmetProtection Behaviour Groupid Sightrange Soundrange SpecialInfo AffectSOM AnimPack AwareOfPlayerTarget DamageMultiplier DropPack DumbRocket Equipment GroupHostility HasArmor HasShield Invulnerable KEYFRAME_TABLE MeleeDistance Model Persistence ReinforcePoint RocketDamageOverride RocketSpeed RushPercentage SOUND_TABLE ShootSmartRocketForward SleepOnSpawn SoundPack SpeciesHostility TakeProximityDamage Trackable Accuracy Aggression Attackrange Back_speed Character Commrange CustomParticle Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Determines if the weapon starts in the grunt’s hand. Determines if the Mercenary holds a light or not. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. Unknown for this tool. The name of the animation pack the AI will use. Unknown for this tool. Unknown for this tool. The equipment the AI will drop upon death. Determines whether the merc can fire a rocket. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Determines if the AI has a shield. Determines if the AI can be killed. Unknown for this tool. Defines the melee range of the merc. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if the merc can fire a seeker missile forward of its position. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Determines if the AI takes proximity damage. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. T/F T/F File T/F T/F List T/F Text T/F Equip T/F Equip T/F T/F T/F Text File Text T/F T/F Text T/F T/F List Text 0-360 Text MercRear: mercenary soldier that defends the rear of a group. Parameter GunReady HelmetModel HelmetOnStart HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack DropPack Equipment GroupHostility HasArmor Explanation Determines if the weapon starts in the grunt’s hand. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. 124 Range T/F File T/F T/F List T/F Text Equip Equip T/F F A R C R Y ™ KEYFRAME_TABLE Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility TakeProximityDamage Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Unknown for this tool. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Determines if the AI takes proximity damage. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. Text File Text T/F Text T/F T/F List 0-360 Text MercScout: mercernary soldier that plays the role of scout for a group. See MercRear MercSniper: mercenary soldier that plays the role of sniper for a group. See MercRear MutantBezerker: not known to work Parameter HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack DropPack Equipment GroupHostility HasArmor HelmetModel HelmetOnStart KEYFRAME_TABLE MeleeDamage MeleeDistance Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility Trackable Accuracy Aggression Attackrange Back_speed Explanation Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Unknown for this tool. Defines the amount of melee damage caused by monkey. Defines the range of the melee attack. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. 125 Range T/F List T/F Text Equip Equip T/F File T/F Text File Text T/F Text T/F F A R C R Y ™ Character Commrange Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. List 0-360 Text MutantCover: not known to work Parameter HelmetProtection Scale Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack DropPack DumbRockets Equipment GroupHostility HasArmor HelmetModel HelmetOnStart KEYFRAME_TABLE MeleeDamage MeleeDistance Model Persistence ReinforcePoint SOUND_TABLE ShootSmartRockets SingleMeleeKillAI SleepOnSpawn SoundPack SpeciesHostility Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Explanation Determines if the grunt receives protection from a headshot. Unknown for this tool. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. The equipment the AI will drop upon death. Determines whether the mutant can fire a rocket. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Unknown for this tool. Defines the amount of melee damage caused by monkey. Defines the range of the melee attack. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the mutant can fire a seeker missile. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. Range T/F List T/F Text Equip T/F Equip T/F File T/F Text File Text T/F T/F T/F Text T/F List 0-360 Text MutantMonkey: not known to work Parameter Helmet Protection Behaviour Explanation Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. 126 Range T/F List F A R C R Y ™ Groupid Sightrange Soundrange AffectSOM AnimPack DropPack Equipment GroupHostility HasArmor HelmetModel HelmetOnStart JUMP_TABLE JumpAngle KEYFRAME_TABLE MeleeDamage MeleeDistance Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed GravityMultiplier Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the amount of melee damage caused by monkey. Defines the range of the melee attack. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Unknown for this tool. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. T/F Text Equip Equip T/F File T/F Text Text Text File Text T/F Text T/F List 0-360 Text MutantRear: not known to work Parameter HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack AwareOfPlayerTarget DropPack Equipment GroupHostility HasArmor HelmetModel HelmetOnStart KEYFRAME_TABLE MeleeDamage MeleeDistance Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility Trackable Accuracy Explanation Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. Unknown for this tool. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Unknown for this tool. Defines the amount of melee damage caused by monkey. Defines the range of the melee attack. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. 127 Range T/F List T/F Text T/F Equip Equip T/F File T/F Text File Text T/F Text T/F F A R C R Y ™ Aggression Attackrange Back_speed Character Commrange CustomParticle Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Special Species SuppressedThrhld AniRefSpeeds SpeedScales Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. List 0-360 Text MutantScout: not known to work Parameter HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack AwareOfPlayerTarget DropPack Equipment GroupHostility HasArmor HelmetModel HelmetOnStart JUMP_TABLE JumpAngle KEYFRAME_TABLE MeleeDamage Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed Gravity_multiplier Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Species SuppressedThrhld AniRefSpeeds SpeedScales Explanation Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. Unknown for this tool. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the amount of melee damage caused by monkey. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Unknown for this tool. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. Range T/F List T/F Text T/F Equip Equip T/F File T/F Text Text File Text T/F Text T/F List 0-360 Text NPC: non player character. Parameter Explanation Range 128 F A R C R Y ™ HelmetModel HelmetOnStart HelmetProtection Behaviour Groupid Sightrange Soundrange AffectSOM AnimPack DropPack Equipment GroupHostility HasArmor KEYFRAME_TABLE Model Persistence ReinforcePoint SOUND_TABLE SleepOnSpawn SoundPack SpeciesHostility TakeProximityDamage Trackable Accuracy Aggression Attackrange Back_speed Character Commrange Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps Responsiveness Species SuppressedThrhld AniRefSpeeds SpeedScales Defines the 3D model used for this object’s helmet. Determines if the grunt starts with a helmet or not. Determines if the grunt receives protection from a headshot. Sets the behaviour for the unit. Sets the ID number of the grunt’s group. Defines the maximum sight range of the grunt. Defines the maximum hearing range of the grunt. Unknown for this tool. The name of the animation pack the AI will use. The equipment the AI will drop upon death. The equipment the AI will use. Unknown for this tool. Determines if the AI has armour. Unknown for this tool. The 3D model of the AI. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Determines if the AI is activated once the map starts. The name of the sound pack the AI uses. Unknown for this tool. Determines if the AI takes proximity damage. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. The speed at which the AI can walk backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. The speed at which the AI can walk forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Unknown for this tool. Determines the movement speed of the AI. Determines the affect upon speed of AI stances. File T/F T/F List T/F Text Equip Equip T/F Text File Text T/F Text T/F T/F List 0-360 Text Pig: AI animal. See NPC Shark: AI animal. See NPC SoundSupressor: suppresses sound in a certain range. Parameter Radius Explanation Defines the range of the sound suppression. Range V22: VTOL troop carrier. Parameter Rope1Name Rope2Name Rope3Name Behaviour Groupid Sightrange Soundrange AttackAltitude BendForce Explanation Defines the name of the first rope used by descending troops. Defines the name of the second rope used by descending troops. Defines the name of the third rope used by descending troops. Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. The height from which the helicopter AI will attack from. Unknown for this tool. 129 Range Text Text Text List F A R C R Y ™ DropPack DmgScaleBullet DmgScaleExplosion FadeEngineSound FlightAltitude FlightAltitudeMin GroupHostility GunModel IgnoreCollisions IsKiller KillDist Model Pathloop Persistence SoundOutdoorOnly SpeciesHostility StartDelay Trackable Attackrange Back_speed Character Commrange DropAltitude Eye_height Forward_speed Horizontal_fov Max_health Path_name Pathstart Pathsteps PointAttack PointBackOff PointReinforce Responsiveness Species Vertical_fov ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin GunnerParams AttackRange Horizontal_fov Responsiveness Sightrange Unknown for this tool. Damage modifier for the helicopter’s gun fire. Damage modifier for the explosions from this helicopter. Sets whether the engine sounds fades in and out with the distance of the AI from the player. Sets the maximum altitude for the helicopter. Sets the minimum altitude for the helicopter. Unknown for this tool. Defines the 3D model of the gun mounted on the helicopter. Determines if the helicopter can ignore collisions. Unknown for this tool. Unknown for this tool. Defines the 3D model for the helicopter Determines if the helicopter will loop at the end of its path. Unknown for this tool. Determines if the you will only hear the sound of the object outside of buildings. Unknown for this tool. Unknown for this tool. Unknown for this tool. Sets how close the AI must be to target before it will start firing. The speed at which the AI can move backwards. Sets the job of the AI. Defines the communication of the AI. Unknown for this tool. Unknown for this tool. The speed at which the AI can move forwards. Defines the horizontal field of view of the AI in degrees. Sets the starting health of the AI. Defines the name of the path that the AI will follow. The number of the first path node. The number of steps involved in the path. Defines the name of the tag point that the helicopter will attack once ordered. Defines the name of the tag point that the helicopter will return to after finishing its job, losing its pilot, or taking damage. Defines the name of the tag point that the helicopter will reinforce once ordered. Unknown for this tool. Sets the species number for this AI, for use when calculating the hostility of other AIs. Sets the vertical field of view for the helicopter. Settings for the explosion caused by the helicopter’s destruction. Damage caused when the helicopter is destroyed. Unknown for this tool. Unknown for this tool. Defines maximum radius of explosion. Defines minimum radius of explosion Settings for the helicopter’s gunner. Sets how close the gunner must be to target before it will start firing. Defines the horizontal field of view for the gunner. Unknown for this tool. Defines the sight range of the gunner. T/F File T/F T/F File T/F T/F T/F List 0-360 Text Text Text Text 0-180 0-360 Worm: AI animal. Model no longer in editor. Boids Folder Birds: animated birds that fly across the map. Parameter ActivateOnStart BoidFOV BoidSize FactorAlign FactorAvoidLand FactorCohesion FactorOrigin FactorSeparation FollowPlayer InnerRadius MaxAnimSpeed MaxAttractDist Explanation Determines if the birds will fly as soon as the map loads. Field of view of the birds. Size of the Boid. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if the birds will follow player. Unknown for this tool. Unknown for this tool. Unknown for this tool. 130 Range T/F 0-360 T/F F A R C R Y ™ MinHeight MaxSpeed Model NoLanding NumBirds ObstacleAvoidance OuterRadius VisibilityDistance Boid_mass Boid_radius Gravity_at_death Unknown for this tool. Unknown for this tool. Defines 3D model used by birds. Determines if the birds can land on the ground or not. Defines number of birds in the sphere. Unknown for this tool. Unknown for this tool. Defines the distances at which bugs will be displayed. Unknown for this tool. Unknown for this tool. Unknown for this tool. File T/F T/F Bugs: animated insects. Parameter ActivateOnStart Animation AnimationSpeed Behaviour Character FactorOrigin FollowPlayer HeightMax HeightMin Model1 Model2 Model3 Model4 Model5 NoLanding NumBugs Radius RandomMovement Scale SpeedMax SpeedMin VisibilityDist Explanation Determines if the birds will fly as soon as the map loads. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines first 3D model for bugs. Defines second 3D model for bugs. Defines third 3D model for bugs. Defines fourth 3D model for bugs. Defines fifth 3D model for bugs. Determines if the bugs can land on the ground or not. Defines the number of bugs used. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the maximum movement speed. Defines the minimum movement speed. Defines the distances at which bugs will be displayed. Range T/F File File File File File T/F Fish: animated fish for underwater. Parameter ActivateOnStart BoidFOV BoidSize FactorAlign FactorAvoidLand FactorCohesion FactorOrigin FactorSeparation FollowPlayer InnerRadius MaxAnimSpeed MaxAttractDist MinHeight MaxSpeed Model NoLanding NumFish ObstacleAvoidance VisibilityDistance Explanation Determines if the fish will be animated as soon as the map loads. Field of view of the fish. Size of the Boid. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if the birds will follow player. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines 3D model used by fish. Unknown for this tool Defines number of fish in the sphere. Unknown for this tool. Defines the distances at which bugs will be displayed. Range T/F 0-360 T/F File T/F T/F Doors Folder AutomaticDoor: door which opens automatically when player approaches. Parameter AnimatedModel Automatic Explanation Unknown for this tool. Determines if door opens by itself, or if the player needs to press the use key. 131 Range File T/F F A R C R Y ™ CloseDelay CloseSound CloseTimer Enabled Model_Left Model_Right MovingDistance MovingSpeed NeededKey OpenSound PlayerBounce PlayerOnly TextInstruction UnlockSound UseAnimatedModel UsePortal AI Sound Event Enabled Radius BBOX_Size X Y Z Direction X Y Z Defines the time before the door closes after player passes through. Defines the sound played upon closing. Sets whether the door closes or not after a period of time. Sets whether the door can be opened or not. Defines the left hand door model. Defines the right hand door model Defines how far the door will move into the wall. Defines the speed at which the door will open. Defines the number of the key needed to open door; -1 = none. Defines the sound made when door is opened. Unknown for this tool. Determines if only the player can open the door. Defines the text to be displayed on the HUD when the player is in the doors bounding box. Defines the doors unlocking sound. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the size of the bounding box. Size of bounding box on the X axis. Size of bounding box on the Y axis. Size of bounding box on the Z axis. Defines the direction the door will open in. Direction the door will move on the X axis. Direction the door will move on the X axis. Direction the door will move on the X axis. File T/F T/F File File File T/F Text File T/F T/F T/F AutomaticDoor1Piece: UNKNOWN TOOL Parameter Automatic CloseDelay CloseSound CloseTimer Enabled Model MovingDistance MovingSpeed NeededKey OpenSound PlayerBounce PlayerOnly BBOX_Size X Y Z Direction X Y Z Explanation Determines if door opens by itself, or if the player needs to press the use key. Defines the time before the door closes after player passes through. Defines the sound played upon closing. Sets whether the door closes or not after a period of time. Sets whether the door can be opened or not. Defines the 3D door model. Defines how far the door will move into the wall. Defines the speed at which the door will open. Defines the number of the key needed to open door; -1 = none. Defines the sound made when door is opened. Unknown for this tool. Determines if only the player can open the door. Defines the size of the bounding box. Size of bounding box on the X axis. Size of bounding box on the Y axis. Size of bounding box on the Z axis. Defines the direction the door will open in. Direction the door will move on the X axis. Direction the door will move on the X axis. Direction the door will move on the X axis. Range T/F File T/F T/F File File T/F Door: non-automatic door. Parameter AnimatedModel AnimationClose AnimationOpen AnimationOpenBack AnimationSpeed Automatic Bounds CloseDelay Enabled NeededKey PlayerOnly TextInstruction UsePortal Sound Close InnerRadius Open Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the speed at which the door opens. Determines whether the player requires the use key in order to open door. Defines the bounding box parameters for the door. Defines the delay before the door closes. Sets whether the door can be used or not. Defines the number of the key needed to open door; -1 = none. Determines if only the player can open the door. Defines the text to be displayed on the HUD when the player is in the doors bounding box. Unknown for this tool. Defines sound properties for object. Closing sound. Radius at which sound can be heard at full volume. Opening sound. 132 Range File Text Text Text T/F XYZ T/F T/F Text T/F File File F A R C R Y ™ OuterRadius Unlock Volume Radius at which sound can be heard at fading volume. Unlocking sound. Volume of sound. File Elevator Folder AutomaticElevator: elevator which operates automatically. Parameter Active Automatic CloseDelay LoopSound MapVisMask MaterialDefault MaterialDown MaterialUp Model MovingDistance MovingSpeed OpenDelay RetriggerDelay StartSound EndSound Direction X Y Z WarnLight AffectsThisAreaOnly FakeLight HasWarnLight HeatSource LightDiffuse LightRadius LightRotSpeed. LightSpecular ProjectInAllDirections ProjectorFOV ProjectedTexture UsedInRealTime LightShader LightAngles Explanation Sets elevator to active or inactive. Determines whether elevator operates automatically or not. Sets the delay before the elevator will automatically “close”, i.e. move to its second location. Defines sound played when elevator moves; must be a loop. Unknown for this tool. Material used when elevator is stationary. Material used when elevator is moving down. Material used when elevator is moving up. Defines 3D model used by elevator. Defines the distance the elevator will move upon activation by player. Defines the speed at which the elevator will move. Sets the delay before the elevator will automatically “open”, i.e. move to its first location. Defines the amount of time before the elevator can be used again. Defines the sound when the elevator starts. Defines the sound when the elevator stops. Defines the direction the elevator travels in. Movement on the X axis. Movement on the Y axis. Movement on the Z axis; -1 = down. Defines parameters for the warning light. Affects only the inside of elevator. Use non-dynamic light. Elevator has warning light. Light is considered a heat source. The diffuse colour of the light. Radius of the light. Speed at which light rotates. The specular colour of the light. Light will be projected in all directions. The angle at which light will be projected. The texture the light will project. Unknown for this tool. Shader used for light. Angle of the light source. Range T/F T/F File Text Text Text File File File T/F T/F T/F T/F RGB RGB T/F File T/F List XYZ FlyingFox: slide used for carrying play down rapidly. Parameter Enabled LimitedRAngle Model Acceleration Destination Message Velocity Explanation Determines if the flying fox can be used or not. Sets the limits of the player’s field of view when on the flying fox. Defines the 3D model used for the flying fox. Defines the acceleration speed of the flying fox. Defines the name of the tag point that the flying fox will move to. Sets the text message to be used when player is in proximity to the flying fox. Defines the maximum speed of the flying fox. Range T/F File Text Text Ladder: object used for manual movement up and down. Parameter AngleOffset HangleLimit LadderCGF LockDist Physicalize Explanation Unknown for this tool. Unknown for this tool. Defines 3D model for ladder. Defines the distance from the ladder at which the player is considered to be on it. Determines if the ladder is a physicalized object or not. Lights Folder 133 Range File T/F F A R C R Y ™ DynamicLight: generic dynamic light object for use in all maps. Parameter Active AffectsThisAreaOnly AnimName AnimationSpeed CoronaScale Diffuse DiffuseMultiplier Dot3Type FakeLight FakeRadiosity HeatSource IgnoreTerrain LightDir LightStyle Model01 Model2 Model3 OuterRadius ProjectInAllDirections ProjectorFOV ProjectorTexture RndPosFreq Specular SpecularMultiplier UseAnimation UsedInRealTime Damping LightShader LightType Max_time_step ShakeAmount ShakeRefreshTime SleepSpeed Weight Optimization OnlyForHighSpec SpecularOnlyForHighSpec Explanation Sets the light on or off. Determines if light affects only the area in which it is placed. Name of animation applied to light. Defines the speed at which the light is animated. Scales the size of the flare shader if the light has one. It only affects the flares. Defines the diffuse colour of light. Defines brightness of light. Determines if light will be a Dot3 type. Determines if the light will use a non-dynamic source. Determines if fake radiosity will be pre-calculated for light. Sets whether the light is treated as a heat source or not. Determines if the light will affect the terrain or not. Defines the direction of the light. Sets the style of the light, e.g. flashing, pulsating, etc. Defines the model used for types 0 and 1. Defines the model used for type 2. Defines the model used for type 3. Sets the radius of the light. If set to true the projected texture will be projected in all directions; doesn't affect normal light. Defines the angle of the projected light. Defines the projected texture. Unknown for this tool. Defines the colour of the specular light. Defines the brightness of the specular light. If set to true it supports animated projected textures. If set to true the light cast is dynamic, unless the FakeLight flag is true, in which case it still shows the selected shader. Defines how much the impulse effects on the light will be reduced (dampened). Defines the shader for the light, e.g. beam. Selects which of the 3D models to use. The higher the number the smoother the swinging light will be, but requires more processing power. Defines how much impulse the light is given each time it is shaken. Defines how often the light is shaken; 0 is the default and means the light will not be shaken. Unknown for this tool. Defines the weight of the hanging light. Optimizations for low-spec machines. Determines if the light is used only on high-spec machines. Determines if specular light is used only on high-spec machines Range T/F T/F Text RGB T/F T/F T/F T/F T/F XYZ File File File T/F File RGB T/F T/F List 0-3 T/F T/F Mines Directory AreaMine: mine which explodes when player enters an area shape linked to it. Parameter Enabled Explanation Determines if mine is active or not. Range T/F Explanation Defines the amount of time before the mine explodes. Determines if the mine is active or not. Determines if only the player can activate the mine. Defines the radius size that will set off the mine. Range FrogMine Parameter Delay Enabled OnlyPlayer Radius T/F T/F ProximityMine: mine that explodes when player is near. Parameter ActivationSound Delay Enabled ExplosionDamage Model OnlyPlayer Explanation Defines sound to be played when mine is triggered. Defines the amount of time before the mine explodes. Determines if the mine is active or not. Defines how much damage the explosion will cause. Defines the 3D model for the mine. Determines if only the player can activate the mine. 134 Range File T/F File T/F F A R C R Y ™ Radius Defines the radius size that will set off the mine. Multiplayer Folder ASSAULTCheckPoint: spawn point and check point on assault mode. Parameter AttackerSpawnPoint CheckPoint_Number DefenderSpawnPoint. Visible WarmUpTime Explanation Sets the spawn point to be attacker. Sets the check point number. Sets the spawn point to be defender. Determines if the spawn point is visible or not. Defines how much time there is before each game starts. Range T/F T/F T/F BuildPoint: SELECTION OF THIS OBJECT CRASHES EDITOR CAHFlag: UNKNOWN TOOL Parameter TimeDelay BlendType Bouncyness Count Draw_last Fadeintime Focus Frames Lifetime Particle_time Physics Size Size_speed Speed Tail_length Turbulence_size Turbulence_speed Gravity Rotation Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range XYZ XYZ CTFFlag: flag for CTF games. Parameter Team Explanation Defines colour of the team the flag belongs to, i.e. red or blue. Range Text CurrentMission: used in ASSAULT games to indicate to player what their next objective is. Parameter MissionTextAttacker MissionTextDefender RadarBeacon StartSoundAttacker StartSoundDefender Explanation Sets the text the attacker will see in their HUD for the mission (flag). Sets the text the defender will see in their HUD for the mission (flag). Determines if there is a beacon objective on the radar. Defines the sound the attacker will hear upon activating the objective. Defines the sound the defender will hear upon activating the objective. Range Text Text T/F File File HealingPoint: a point on the map that heals players incrementally. Parameter Amount Amount2 AwakePhysics FadeTime PlayerOnly RespawnTime ShowFloatingIcon Explanation Defines the amount of healing to be given each tick. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if the healing is for the player only. Defines the respawn time of the player attached to the point. Unknown for this tool. 135 Range T/F T/F F A R C R Y ™ Team Defines colour of the team the point belongs to, i.e. red or blue. Text Phoenix: a tool for making an entity respawn. Parameter RespawnTime WithRespawnCycle Explanation Defines the time before the entity attached can respawn. Determines if the entity will respawn at the same time as player. Range T/F UnitHighLight: UNKNOWN TOOL Others Folder AICrate: a crate that the AI can move around. Parameter Density Mass Model Explanation Defines density of the object. Defines the crate’s mass. Defines the 3D model used by the crate. Range File AnimObject: UNKNOWN TOOL Parameter AlwaysUpdate Animation Model Physicalize Playing Attachmet1 Object BoneName Attachmet2 Object BoneName Attachmet3 Object BoneName Attachmet4 Object BoneName Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range T/F Text File T/F T/F File Text File Text File Text File Text BasicEntity: used in making an object physicalized. Parameter AIAction AnchorRadius AnimStart AnimEnd Model DamagePlayer Animation Animation Loop Playing Speed Physics ActivateOnDamage Density FixedDamping Impulse Mass Resting RigidBody RigidBodyActive Type Explanation Defines the job that the AI will perform. Defines the radius which will act upon the AI. Unknown for this tool. Unknown for this tool. Defines the 3D model for the object. Unknown for this tool. Defines the animation parameters for the object. Name of the animation. Whether the animation loops or not. Is the animation playing. The speed at which the animation plays. Defines the physical parameters of the object. Whether the physics will be activated on damage caused to object. Density of object. Unknown for this tool. Defines the direction and amount of impulse given to object upon AddImpulse event signal being received. The mass of the object. Unknown for this tool. Whether the object has a rigid body. Unknown for this tool. Unknown for this tool. 136 Range List File File File Text T/F T/F T/F XYZ T/F T/F T/F F A R C R Y ™ Damping Max_time_step Sleep_speed Water_damping Water_density Water_resistance LowSpec Density KeepMassAndWater KeepRigidBody Mass RigidBody Max_time_step Sleep_speed Water_density Water_resistance The damping to be applied to the impulse of the object’s movement. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the parameters applied to the object on low-spec machines. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. T/F T/F T/F BreakableObject: can be destroyed and will leave particles on the map for a time. Parameter BreakImpuls Damage Explosion ExplosionRadius Model TriggeredOnlyByExplosion ImpulsivePressure Rmax Rmin DyingSound Filename InnerRadius OuterRadius Volume Parts Density LifeTime RigidBody Animation Animation Loop Playing Speed Physics ActivateOnDamage Density FixedDamping Impulse Mass Resting RigidBody RigidBodyActive Type Damping Max_time_step Sleep_speed Water_damping Water_density Water_resistance Explanation Unknown for this tool. Defines how much damage is caused by the explosion. Determines if the object can be exploded or not. Defines the range of the explosion. Defines the 3D model for the explosion. Determines whether the object will only be triggered by an explosion. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the sound of the object being destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the animation parameters for the object. Name of the animation. Whether the animation loops or not. Is the animation playing. The speed at which the animation plays. Defines the physical parameters of the object. Whether the physics will be activated on damage caused to object. Density of object. Unknown for this tool. Defines the direction and amount of impulse given to object upon AddImpulse event signal being received. The mass of the object. Unknown for this tool. Whether the object has a rigid body. Unknown for this tool. Unknown for this tool. The damping to be applied to the impulse of the object’s movement. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range T/F File T/F File T/F Text T/F T/F T/F XYZ T/F T/F T/F BuildableObject: can be constructed. For use on assault mode maps and single players. Parameter InitialState Model_building Model_built Model_damaged Model_repair Model_unbuilt Explanation Defines the initial state of the object. Defines the 3D model for the object being built. Defines the 3D model of the completed building. Defines the 3D model of the building when damaged. Defines the 3D model of the building while under repair. Defines the 3D model of the building when not built. 137 Range File File File File File F A R C R Y ™ Max_builtpoints Max_hitpoints Max_repairpoints Defines how long it takes to build the object. Defines the number of hit points the building has before being destroyed. Defines how long it takes to repair the object. CameraSource: UNKNOWN TOOL CameraTargetPoint: UNKNOWN TOOL Capture: SELECTION OF THIS OBJECT CRASHES EDITOR ChainSwing: physicalized chains that can be attached to other objects. Parameter AttachTo AttachToPart AttachToPartUp AttachToUp Awake CheckCollision CheckTerrainCollision DetachOnDamage Model Shootable Coll_dist Damping Friction Mass Material Max_time_step Num_ropes Rope_name Sleep_speed LowSpec KeepCollision Max_time_step Sleep_speed Gravity X Y Z Explanation Defines name of object to attach chain to. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if chain checks for collisions with player. Determines if chain checks for collisions with terrain. Determines if chain detaches from object upon being damaged. Defines the 3D model for chain. Determines if shooting chain will break it. Defines the size of the collision detection box around the chain. Defines how much the chain’s impulse is affected by damping. Unknown for this tool. Defines the mass of the chain. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines parameters for low-spec machines Keep collision for low-spec machines. Unknown for this tool. Unknown for this tool. Defines the strength of gravity through each axis. Gravity on the X axis. Gravity on the Y axis. Gravity on the Z axis. Range Text Tex t T/F T/F T/F T/F File T/F Text Text T/F DamageArea: an area that will damage player. Parameter Enabled DamageRate Explanation Determines if damage is enabled. Defines how much damage is dealt to the player. Range T/F DeadBody: an object for dead bodies with physics. Parameter CollidesWithPlayers Mass Model PushableByPlayer Resting Lying_damping Lying_gravity Explanation Determines if the object can collide with players. Defines the mass of the dead body. Defines the 3D model used by the dead body. Determines if the player can push the dead body around. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range T/F File T/F T/F DestroyableObject: leaves wreckage behind after destruction. Parameter AllowMeleeDamage Damage Explanation Sets whether the player can inflict damage to object with melee weapons. Defines the damage caused by the object exploding. 138 Range T/F F A R C R Y ™ Explosion ExplosionRadius ExplosionTable Hidden Model ModelDestroyed PlayerDamage PlayerDamageRadius PlayerOnly TriggeredOnlyByExplosion ImpulsivePressure Rmax Rmin Timer AliveSoundLoop FileName InnerRadius OuterRadius Volume DeadSoundLoop FileName InnerRadius OuterRadius Volume Animation FileName InnerRadius OuterRadius Volume Physics ActivateOnDamage Density FixedDamping Impulse Mass Resting RigidBody RigidBodyActive Type Damping Max_time_step Sleep_speed Water_damping Water_density Water_resistance Determines whether the object makes an explosion upon destruction. Defines the range of explosion. Unknown for this tool. Determines whether the object is hidden in the game or not. Defines the 3D model for the object. Defines the 3D model for the object when destroyed. Unknown for this tool. Unknown for this tool. Determines if the explosion will damage only the player. Determines if the destruction can only be caused by an explosion. Defines the strength of the explosion. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the parameters of the object sound when not destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the parameters of the object sound when destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the parameters of the object sound when being destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the physical parameters of the object. Whether the physics will be activated on damage caused to object. Density of object. Unknown for this tool. Defines the direction and amount of impulse given to object upon AddImpulse event signal being received. The mass of the object. Unknown for this tool. Whether the object has a rigid body. Unknown for this tool. Unknown for this tool. The damping to be applied to the impulse of the object’s movement. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. T/F Text T/F File File T/F T/F File File File T/F XYZ T/F T/F T/F FlagEntity: for use as an animated flag. Parameter Model_supporter Explanation Defines the 3D model of the flagpole. Range File GameEvent: checkpoint for saving game. Parameter AllowedDeath Id RespawnAtTagpoint UniqueName Explanation Defines the number of deaths before difficulty change when “auto difficulty” is being used. Defines the Game Event’s identification number. Determines whether player will respawn at his tag point. Defines the unique name of the save point. Range T/F Text HeliStatic: an animated gunship that cannot be moved. Parameter DmgScaleBullet DmgScaleExplosion Mass RigidBodyActive Trackable Engine_file Max_health ExplosionParams Explanation Unknown for this tool. Unknown for this tool. Defines the mass of the helicopter. Unknown for this tool. Unknown for this tool. Points to the sound file for the engine. Defines the amount of health for the helicopter. Defines the parameters for the helicopter’s explosion 139 Range T/F T/F File F A R C R Y ™ Damage ImpulsivePressure Radius RadiusMax RadiusMin The amount of damage caused by the explosion. The amount of impulse generated by the explosion. Unknown for this tool. Unknown for this tool. Unknown for this tool. Piece: UNKNOWN TOOL Parameter Behaviour GroupID SightRange SoundRange GroupHostility SpeciesHostility Trackable Aggression Attackrange Character Cohesion Commrange Eye_height Forward_speed Horizontal_fov Responsiveness Species Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range List T/F List ProximityDamage: causes a degree of damage to a player in proximity to the object. Parameter DamageRate DamageType Enabled Height Radius ShakeOnly ShakeType SkipAI SkipPlayer Trigger Explanation Defines the damage caused per second. Unknown for this tool. Sets proximity damage on or off. Defines the height of the damage object. Defines the radius of the damage object. Sets the object to only shake the player’s view. Defines the type of shake applied to the view. Determines whether AI entities are affected by damage object. Determines whether players are affected by damage object. Sets the damage object to trigger once or repeatedly. Range T/F T/F T/F T/F T/F Pusher: gives a push to a physicalized object. Parameter Enabled Impulse Once Explanation Turns the object on or off. Defines the amount of “push” given to the object. Sets the pusher to work once or repeatedly. Range T/F T/F Radio: used by AI to call for reinforcements. Parameter Damage DimX DimY DimZ Explosion ExplosionEffect ExplosionRadius ExplosionScale Model ModelDestroyed OnlyAICanTrigger Trackable TriggeredOnlyByExplosion ImpulsivePressure Rmax Rmin AliveSoundLoop Explanation Defines damage caused in explosion area. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines if there is an explosion or not. Defines the name of the explosion effect. Defines the radius of the explosion. Defines the size of the explosion. Points to the file name of the 3D model for the radio. Points to the file name of the 3D model for the radio when destroyed. Determines if only AI entities can trigger the radio alarm. Unknown for this tool. Determines whether the alarm can be triggered only by explosions. Defines the strength of the explosion. Defines the maximum range of the pressure. Defines the minimum range of the pressure. Defines the sound of the radio loop when not destroyed. 140 Range T/F Text File File T/F T/F T/F F A R C R Y ™ FileName InnerRadius OuterRadius Volume DeadParticles Active AdditiveBlend Bounciness ChildSpawnPeriod ColorEnd ColorStart Count DrawOrder FadeInTime Focus Frames LifeTime LinearSizeSpeed Physics ShaderName Size SizeSpeed Speed Tail TimeDelay Type Turbulence_size Turbulence_speed ChildProcess Gravity Objects Rotation Textures DeadSoundLoop FileName InnerRadius OuterRadius Volume DyingSound FileName InnerRadius OuterRadius Volume Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the parameters of the particles used when the radio is destroyed. Sets the particles on or off. The particle light will blend additively with the environment lighting. How much “bounce” the particles will have. How long the particles will subside on the screen. Colour at the end of the particle spray. Colour at the start of the particle spray. Number of particles Unknown for this tool. The fade out time for the particles. Unknown for this tool. The speed that the particles go up. How long the particles last. The speed of the particle will be constant or not. The particles are affected by physics, e.g. wind. The name of the particle shader. Size of the particles. The speed at which the size will change. The speed at which particles will be born. Unknown for this tool. Time delay between each particle creation. Type of particle used. How much turbulence will affect the particles. How quickly turbulence will affect the particles. File The direction the particles will travel. Unknown for this tool. Angle and axis of particle rotation, if any. The different textures of the smoke effects. Defines the sound of the radio when it is dead. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the sound of the radio as it is dying Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. XYZ File XYZ File T/F T/F RGB RGB T/F T/F Text File File RaisingWater: for creating an area of rising water. Parameter Speed UpdateTime WaterVolume Height_end Height_start Explanation Defines the speed at which the water will rise. Sets the number of milliseconds for each meter raised. This holds the name of the water volume to raise. Defines the final height of the water. Defines the starting height of the water. Range RigidBody: used to create any kind of physicalized rigid body. Parameter ActivateOnRocketDamage Density Mass Model Resting Visible Damping Max_time_step Sleep_speed Water_damping Water_resistance Impulse Explanation Sets whether the physics will activate when damaged after hit by a rocket. Defines the density of the rigid body. Defines the mass of the rigid body. Points to the 3D model of the rigid body. Unknown for this tool. Determines whether the object is visible in the game or not. Defines the amount of damping put on the object’s inertia. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Rope: used by AI entities to climb down from buildings and helicopters. 141 Range T/F File T/F T/F F A R C R Y ™ Parameter RetrieveRope DropName Explanation Unknown for this tool. Defines the name of the AI entity that will use the rope. Range T/F Text Rotator: SELECTION OF THIS OBJECT CRASHES EDITOR ShootTarget: UNKNOWN TOOL Parameter Density Mass Model Name Physicalized Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range File Text T/F SwingingObject: used to create objects that swing. Parameter Model Resting Shootable ActivationImpulse Coll_dist Damage_player Damage_scale Damping Mass Material Max_time_step Sleep_speed Gravity Explanation Pointer to 3D model used by the swinging object. Determines whether the object is swinging on initialisation, or at rest. Determines whether the object can be shot or not. Defines the strength of the first swing upon activation. Defines the size of the collision box around the object. Defines the amount of damage caused to a player on contact. Defines the size of the damage caused to the player on contact. Defines how much damping affects the inertia of the swinging object. Sets the mass of the swinging object. Names the material used by the swinging object. Unknown for this tool. Unknown for this tool. Sets the direction the swinging object will be attracted to. Range File T/F T/F Text XYZ SwivilChair: UNKNOWN TOOL Parameter Model Explanation Points to the 3D model used for the object. Range File TestCloth: soft body object. Parameter Model Accuracy Air_resistance Collision_impulsion Damping Damping_ratio Density Explosion_scale Friction Impulse_scale Mass Max_iters Max_safe_step Max_time_step Sleep_speed Stiffness Thickness Water_resistance Gravity Wind Explanation Points to the 3D model for the object. Unknown for this tool. Defines the resistance of air against this object. Defines how much impulse is given to the object upon collision. Defines the effect of damping upon the objects inertia. Unknown for this tool. Sets the density of the object. Unknown for this tool. Defines the friction level of the object. Unknown for this tool. Sets the mass of the object. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the stiffness of the cloth. Defines the thickness of the cloth. Defines the level of water resistance against the cloth. Sets the direction of gravity for the object. Sets the wind direction for the object. TV: an in-game TV. 142 Range File XYZ XYZ F A R C R Y ™ Can only be destroyed by explosion – must add collision manually. Parameter Damage Model ModelDestroyed SndRadius SndVolume AliveSoundLoop FileName InnerRadius OuterRadius Volume DeadSoundLoop FileName InnerRadius OuterRadius Volume Animation FileName InnerRadius OuterRadius Volume Explanation Defines the amount of health the TV has. Points to the 3D model of the TV. Points to the 3D model of the TV after destruction. Defines the radius at which the TV can be heard. Sets the volume for the TV. Defines the parameters of the object sound when not destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the parameters of the object sound when destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Defines the parameters of the object sound when being destroyed. Points to the filename of the sound. Inner radius of the sound; full volume. Maximum range of sound. Volume of sound. Range File File File File File Particle Folder ParticleEffect: explosions, clouds, etc. Parameter Active ParticleEffect Scale SpawnPeriod UpdateRadius Explanation Determines whether the particle effect is active or not. Names the shader effect used with the object. Sets the size of the effect relative to the size of the chosen archetype. Defines the time in seconds between each particle emission, i.e. 0.5 = 2 particle emissions per second. Defines the distance from the model, in meters, that a player can see it. Range T/F Text ParticleSpray: flames, smoke, waterfalls, etc. Parameter Active AdditiveBlend Bounciness ChildSpawnPeriod ColorEnd ColorStart Count DrawOrder FadeInTime Focus Frames LifeTime LinearSizeSpeed Physics ShaderName Size SizeSpeed Speed Tail TimeDelay Type UpdateRadius Turbulence_size Turbulence_speed ChildProcess Active AdditiveBlend Bounciness ChildSpawnPeriod Explanation Sets the particles on or off. The particle light will blend additively with the environment lighting. How much “bounce” the particles will have. How long the particles will subside on the screen. Colour at the end of the particle spray. Colour at the start of the particle spray. Number of particles Unknown for this tool. The fade out time for the particles. Narrows or widens the field of emission. The default is 0 which causes emission in all directions. Larger numbers tighten the emission focus along the positive y-axis. The speed that the particles go up. How long the particles last. The speed of the particle will be constant or not. Determines whether particles have physics so they can push other physical objects. The name of the particle shader. Size of the particles. The speed at which the size will change. The speed at which particles will be born. Sets the length of particle tails. Time delay between each particle creation. Type of particle used. Defines the radius in which the particles are still being sprayed. How much turbulence will affect the particles. How quickly turbulence will affect the particles. Defines the parameters for the child process. Sets the particles on or off. The particle light will blend additively with the environment lighting. How much “bounce” the particles will have. How long the particles will subside on the screen. 143 Range T/F T/F RGB RGB T/F T/F Text T/F T/F F A R C R Y ™ ColorEnd ColorStart Count DrawOrder FadeInTime Focus Frames LifeTime LinearSizeSpeed Physics ShaderName Size SizeSpeed Speed Tail TimeDelay Type Gravity Rotation Gravity Objects Rotation SpaceLoopBoxSize Texture Colour at the end of the particle spray. Colour at the start of the particle spray. Number of particles Unknown for this tool. The fade out time for the particles. Narrows or widens the field of emission. The default is 0 which causes emission in all directions. Larger numbers tighten the emission focus along the positive y-axis. The speed that the particles go up. How long the particles last. The speed of the particle will be constant or not. The particles are affected by physics, e.g. wind. The name of the particle shader. Size of the particles. The speed at which the size will change. The speed at which particles will be born. Sets the length of particle tails. Time delay between each particle creation. Type of particle used. The direction the particles will travel. Angle and axis of particle rotation, if any. The direction the particles will travel. Unknown for this tool. Angle and axis of particle rotation, if any. Unknown for this tool. The different textures of the smoke effects. RGB RGB T/F T/F Text XYZ XYZ XYZ File XYZ XYZ File Pickups Folder Ammoweaponname : all ammo pick-ups for weaponname weapon. Parameter Amount1 Amount2 Availability AwakePhysics FadeTime PlayerOnly RespawnTime ShowFloatingIcon Explanation Defines the amount of ammo given in a pick-up. Not used for this tool. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Range T/F T/F T/F Armor: armour pick-up. Parameter Amount1 Amount2 Availability AwakePhysics FadeTime PlayerOnly RespawnTime ShowFloatingIcon Explanation Defines the amount of armour given in a pick-up. Not used for this tool. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Range T/F T/F T/F Checkpoint: UNKNOWN TOOL Parameter Amount2 Availability AwakePhysics FadeTime Id PlayerOnly RespawnTime ShowFloatingIcon Explanation Unknown for this tool. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Unknown for this tool. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. 144 Range T/F T/F T/F F A R C R Y ™ ClassAmmoPickup: used for ASSAULT class ammunition. Parameter Amount2 Availability AwakePhysics FadeTime Model PlayerOnly RespawnTime ShowFloatingIcon Explanation Defines the amount of ammo given in a pick-up. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Points to the 3D model for the pick-up. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Range Explanation Defines the amount of health given in a pick-up. Not used for this tool. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Range T/F File T/F T/F Health: health pick-up. Parameter Amount1 Amount2 Availability AwakePhysics FadeTime PlayerOnly RespawnTime ShowFloatingIcon T/F T/F T/F KeyCardn: pickups for keycard n. Parameter Amount2 Availability AwakePhysics FadeTime KeyNumber Model PlayerOnly RespawnTime ShowFloatingIcon Sound Explanation Unknown for this tool. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Sets the ID of the key. Points to the 3D model for the key card pick-up. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Points to the sound file for the pick-up. Range T/F File T/F T/F File Pickupweaponname: pick-up for weaponname. Parameter Amount1 Amount2 Availability AwakePhysics FadeTime PlayerOnly RespawnTime ShowFloatingIcon Explanation Defines the amount of ammo given for this weapon’s primary attack. Defines the amount of ammo given for this weapon’s secondary attack. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Determines if this pick-up is for player only. Defines the amount of time before the pick-up respawns. Unknown for this tool. Range T/F T/F T/F PickupGeneric: object for creating other pick-ups. Parameter Amount2 Availability AwakePhysics FadeTime Message Model Objects PlayerOnly Explanation Defines the amount of ammo given for this weapon’s secondary attack. Unknown for this tool. If set to true the pickup is affected by physics, else it will always stay where it is placed but its bounding box is not allowed to touch a solid brush otherwise it might fall through the ground. Unknown for this tool. Details the message to be displayed when player picks up object. Points to the 3D model of the object. Details the kind of object to be picked up. Determines if this pick-up is for player only. 145 Range T/F Text File Text T/F F A R C R Y ™ RespawnTime ShowFloatingIcon Sound Defines the amount of time before the pick-up respawns. Unknown for this tool. Points to the sound file to be played upon pick-up. T/F Player Folder Player: copy of the player entity. Parameter HasArmor HelmetOnStart Trackable Eye_sight GroupID Max_health Species Explanation Determines if the player entity has armour or not. Sets whether the player entity has a helmet on start-up. Unknown for this tool. Unknown for this tool. The group number of the player entity. Defines the health points of the player. Defines the species number of the entity for the player entity, for when determining enemy status for the AI. Range T/F T/F T/F Spectator: spectator point. Rename spectator, without capitals or additional text of any kind. Render Folder Bfly: BlackFly object. Parameter BflyNumber Explanation Defines the number of blackfly. Range EnvColor: environment colour for an area. Parameter Color Explanation Defines the new environment colour. Range Explanation Defines the colour of the fog. Defines the point at which the fog will end. Defines the distance from the player at which the fog will start. Unknown for this tool. Unknown for this tool. Range Fog: add fog to an area. Parameter Color EndDist StartDist XSkyEnd XSkyStart Grasshopper: grasshopper object. Parameter CGF1 CGF2 CGF3 CGF4 GrasshopperNumber Explanation Points to the 3D model for grasshopper. Points to the 3D model for grasshopper. Points to the 3D model for grasshopper. Points to the 3D model for grasshopper. Defines the number of grasshoppers for the object. Range Storm: adds rain to an area. Parameter DistanceFromTerrain RainAmount RandomFrequency Explanation Defines the altitude that the rain starts to appear. Defines the amount of rain. Sets the random seed for the rain. 146 Range F A R C R Y ™ SoundDistortionTime VWindDir Unknown for this tool. Has no changeable value. ViewDist: changes the view distance for an area. Parameter MaxViewDistance Explanation Sets the new maximum view distance for an area. Range Explanation Unknown for this tool. EAX reverb parameters. Change in level per meter at high frequencies. High-frequency to mid-frequency decay time ratio. Low-frequency to mid-frequency decay time ratio. Reverberation decay time at mid frequencies. Value that controls the modal density in the late reverberation decay. Value that controls the echo density in the late reverberation decay. Echo depth. Echo time. Environment diffusion. Environment size. Sets all listeners. CS_REVERB_FLAGS - modifies the behaviour of above properties. Reference high frequency. Reference low frequency. Modulation depth. Modulation time. Early reflections level relative to room effect. Initial reflection delay time. Late reverberation level relative to room effect. Late reverberation delay time relative to initial reflection. Room effect level (at mid frequencies). Relative room effect level at high frequencies. Relative room effect level at low frequencies. Like CS_3D_Listener_SetRolloffFactor but for room effect. Early reflections panning vector. Late reverberation panning vector. Range Explanation Sets name of EAX preset used by object. Determines whether the EAX preset will still be in effect when leaving the area object into a VisArea. Range List T/F Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Hint soundfiles. Range Explanation Sets the name of mood, as found in script. Range Text Sound Folder EAXArea Parameter EAXEnvironment EaxReverbProperties AirAbsorptionHF DecayHFRatio DecayLFRatio DecayTime Density Diffusion EchoDepth EchoTime EnvDiffusion EnvSize Environment Flags HFReference LFReference ModulationDepth ModulationTime Reflections ReflectionsDelay Reverb ReverbDelay Room RoomHF RoomLF RoomRolloffFactor fReflectionsPan fReverbPan Meters Hz Hz XYZ XYZ EAXPresetArea Parameter EAXPreset OffWhenLeaving MissionHint Parameter AllowedToSkip Enabled Loop Once SkipAcknowledge Volume Hints T/F T/F T/F File Files MusicMoodSelector Parameter Mood 147 F A R C R Y ™ MusicThemeSelector Parameter DefaultMood IndoorOnly Mood OutdoorOnly Theme Explanation Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range Explanation Unknown for this tool. Sets whether sound heard inside VisAreas only. Sets whether sound heard outside VisAreas only. Relative scaling of all sounds in this entity. EAX reverb parameters. Change in level per meter at high frequencies. High-frequency to mid-frequency decay time ratio. Low-frequency to mid-frequency decay time ratio. Reverberation decay time at mid frequencies. Value that controls the modal density in the late reverberation decay. Value that controls the echo density in the late reverberation decay. Echo depth. Echo time. Environment diffusion. Environment size. Sets all listeners. CS_REVERB_FLAGS - modifies the behaviour of above properties. Reference high frequency. Reference low frequency. Modulation depth. Modulation time. Early reflections level relative to room effect. Initial reflection delay time. Late reverberation level relative to room effect. Late reverberation delay time relative to initial reflection. Room effect level (at mid frequencies). Relative room effect level at high frequencies. Relative room effect level at low frequencies. Like CS_3D_Listener_SetRolloffFactor but for room effect. Early reflections panning vector. Late reverberation panning vector. Defines parameters for sound n. Sets whether sound is played from players perspective or not, i.e. centred on player. Defines chance in 1000 of sound being played; 1000 = continuous playing. Determines whether the sound is allowed to be played on top of another sound or not. Points to the sound file used by the object. Volume. Range T/F T/F RandomAmbientSound Parameter EAXEnvironment LIndoorOnly LoutdoorOnly Scale EaxReverbProperties AirAbsorptionHF DecayHFRatio DecayLFRatio DecayTime Density Diffusion EchoDepth EchoTime EnvDiffusion EnvSize Environment Flags HFReference LFReference ModulationDepth ModulationTime Reflections ReflectionsDelay Reverb ReverbDelay Room RoomHF RoomLF RoomRolloffFactor fReflectionsPan fReverbPan Soundn Centered ChanceOfOccurring DoNotOverlap Sound Volume T/F T/F XYZ XYZ T/F 1-1000 T/F File 0-255 RandomAmbientSoundPreset Parameter LIndoorOnly LOutdoorOnly Once PlayFromCenter Scale SoundPreset Explanation Sets whether sound heard inside VisAreas only. Sets whether sound heard outside VisAreas only. Determines if the sound is played once only. Sets the sound to be played from the player’s perspective, or from the direction of the sound preset object. Relative scaling of all sounds in this entity. Sound preset used by the object. Range T/F T/F T/F T/F Explanation Defines parameters for sound n. Unknown for this tool. Sets whether sound is played from players perspective or not, i.e. centred on player. Defines chance in 1000 of sound being played; 1000 = continuous playing. Determines whether the sound is allowed to be played on top of another sound or not. Range List SoundExclusive Parameter Soundn AreaID Centered ChanceOfOccuring DoNotOverlap 148 T/F T/F F A R C R Y ™ Sound Volume Points to the sound file used by the object. Volume. File Explanation Sets whether the object is enabled or not. This is used for sound occlusion. Sounds fade over this time when they are occluded. Distance from SoundSpot at which the sound will be heard at full volume by the player. If true, the sound will play continuously, returning to the beginning each time it ends. If true, the sound will only play once. Distance from the SoundSpot at which the sound is no longer heard by the player. If true, the sound will play, else it will be disabled. Points to the source file of the sound. Defines volume. Range T/F Seconds Meters T/F T/F Meters T/F File 0-255 SoundSpot Parameter Enabled FadeValue InnerRadius Loop Once OuterRadius Play Source Volume Triggers Folder AITrigger: triggers a change in AI behaviour when entered by an AI entity, similar to an anchor. Parameter AIAction AILadder AnchorRadius DimX DimY DimZ Enabled ExitDelay Model SkipSpecialAI ToggleStance TriggerOnce Signal Readibility SendSignal SignalRadius SignalText Explanation Defines the action the AI will perform when entering trigger. Allows the AI to climb a ladder. Radius of effect for this trigger. Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Sets the trigger active or not. Defines how long it takes for the AI entity to leave the trigger after activating it. Points to the 3D model used by the trigger. Unknown for this tool. Unknown for this tool. Sets the trigger to be activated once or repeatedly. Defines the parameters for signalling another AI entity. Unknown for this tool. Determines whether a signal will be sent or not. Defines the radius within which all other AI entities will receive the signal. Details the system text sent as a signal. Range T/F T/F File T/F T/F T/F T/F T/F Text AreaTrigger: triggers an event when a player enters the attached area shape. Parameter Enabled ScriptCommand TriggerOnce Explanation Sets the trigger on or off. Details any special script to be run on being triggered. Sets the trigger to be activated once or repeatedly. Range T/F Text T/F BoatTrampolineTrigger: trigger for making boat jump that works similarly to pusher object. Parameter DimX DimY DimZ Enabled ImpulseDuration ImpulseFadeInTime ImpulseStrength KillOnTrigger MaxAngleOfImpact MinSpeed PlaySequencce ScriptCommand TriggerOnce Explanation Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Sets the trigger active or not. Defines how long the push will last. Defines how much the push will degrade over time. Sets the initial impulse strength of the push. Unknown for this tool. Sets the maximum angle of the push. Sets the minimum speed the boat must be travelling in order to activate the trigger. Names a sequence to play upon activation. Details a special LUA script to add. Sets the trigger to be activated once or repeatedly. DelayTrigger: trigger with a time-delay before activation. 149 Range T/F T/F Text Text T/F F A R C R Y ™ Parameter Delay Enabled PlaySequence ScriptCommand TriggerOnce Explanation Sets the amount of time that the trigger is delayed by. Sets the trigger to be activated once or repeatedly. Names a sequence to play upon activation. Details a special LUA script to add. Sets the trigger to be activated once or repeatedly. Range T/F Text Text T/F Impulse Trigger: gives a push to an object by adding impulse. Parameter DimX DimY DimZ Enabled ImpulseDuration ImpulseFadeInTime ImpulseStrength KillOnTrigger OnlyAI OnlyMyPlayer OnlyPlayer TriggerOnce Explanation Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Sets the trigger active or not. Defines how long the push will last. Defines how much the push will degrade over time. Sets the initial impulse strength of the push. Unknown for this tool. Determines if the trigger only affects AI. Determines if the trigger only affects the player currently under control; for mp/sp. Determines if the trigger affects all players; for mp/sp. Sets the trigger to be activated once or repeatedly. Range T/F T/F T/F T/F T/F T/F MultipleTrigger: trigger that will work only a certain number of times before deactivating. Parameter Enabled NumInputs PlaySequence ScriptCommand Explanation Sets the trigger active or not. Defines the number of times the trigger will work before deactivation. Names a sequence to play upon activation. Details a special LUA script to add. Range T/F Text Text PlaceableExplo: a trigger for placeable explosives. Parameter Active AutomaticPlaceable DimX DimY DimZ ExplosionEffect ExplosionScale InitiallyVisible Model ModelDestroyed PlaySequence ScriptCommand TextInstruction Countdown DummyModel ExplDamage ExplImpulsive_Pressure ExplRadius ExplRmax ExplRmin Explanation Determines if the explosion will trigger or not. Sets the explosion to be placed automatically. Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Names the explosion effect to be used. Defines the size of the explosion . Determines if the bomb placeholder will be visible. Points to a 3D model of the bomb before destruction. Points to a 3D model of the bomb after destruction. Names a sequence to play upon activation. Details a special LUA script to add. Details the text instruction to the player when near the bomb placeholder. Sets the countdown for after the bomb is placed. Points to the 3D model of the bomb placeholder. Defines the amount of damage caused by the explosion. Defines the impulsive impact of the explosion. Defines the radius of the explosion. Defines the maximum range of the impact. Defines the minimum range of the impact. Range T/F T/F Text T/F File File Text Text Text Text PlaceableGeneric: template trigger for other placeable objects. Parameter Active AutomaticPlaceable DimX DimY DimZ InitiallyVisible Model ModelDestroyed Explanation Determines if the explosion will trigger or not. Sets the explosion to be placed automatically. Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Determines if the bomb placeholder will be visible. Points to a 3D model of the bomb before destruction. Points to a 3D model of the bomb after destruction. 150 Range T/F T/F T/F File File F A R C R Y ™ PlaceableObject PlaySequence ScriptCommand DummyModel Names the object that will be placed Names a sequence to play upon activation. Details a special LUA script to add. Points to the 3D model of the bomb placeholder. Text Text Text Text ProximityTrigger: activated by proximity to the trigger object. Parameter AIAction ActivateWithUseButton AnchorRadius DimX DimY DimZ Enabled EnterDelay ExitDelay InVehicleOnly KillOnTrigger OnlyAI OnlyMyPlayer OnlyPlayer OnlySpecialAI ScriptCommand TextInstruction TriggerOnce Explanation Defines the action the AI will perform when entering trigger. Determines whether the trigger will be activated by a use button. Radius of effect for this trigger. Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Sets the trigger active or not. Defines how long it takes after the player/entity has entered the trigger before it is activated. Defines how long it takes for the AI to leave the trigger after activating it. Determines if trigger will only work if entity or player is in a vehicle. Unknown for this tool. Determines if the trigger only affects AI. Determines if the trigger only affects the player currently under control; for mp/sp. Determines if the trigger affects all players; for mp/sp. Unknown for this tool. Details a special LUA script to add. Details the text instruction to the player when near the bomb placeholder. Sets the trigger to be activated once or repeatedly. Range T/F T/F T/F T/F T/F T/F T/F T/F Text Text T/F VisibilityTrigger: will trigger upon being seen by the player. Parameter DimX DimY DimZ Distance Enabled EnterDelay ExitDelay PlaySequence ScriptCommand TextInstruction TriggerOnce UseKey Explanation Sets the size of the X axis for trigger. Set the size of the Y axis for trigger. Sets the size of the Z axis for trigger. Defines how far away player before he can see the trigger. Sets the trigger active or not. Defines how long it takes after the player/entity has entered the trigger before it is activated. Defines how long it takes for the AI to leave the trigger after activating it. Names a sequence to play upon activation. Details a special LUA script to add. Details the text instruction to the player when near the bomb placeholder. Sets the trigger to be activated once or repeatedly. Unknown for this tool. Range T/F Text Text Text T/F T/F Vehicles Folder Bigtrack: large utility vehicle. Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime Active ApproachPlayer DmgScaleAIBullet DmgScaleAIExplosion DmgScaleBullet DmgScaleExplosion DrawDriver GroupHostility LightsOn LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Model Pathloop Persistence Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle is considered active or not. Determines whether the vehicle will approach player or not. Damage modifier for the AI’s bullet. Damage modifier for the AI’s gun fire explosions. Damage modifier for the vehicle’s gun fire. Damage modifier for the explosions from this vehicle. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Sets the vehicle’s lights on or off. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of the vehicle. Determines if the helicopter will loop at the end of its path. Unknown for this tool. 151 Range List T/F T/F T/F T/F File T/F F A R C R Y ™ ReinforcePoint SpeciesHostility StartDelay Trackable Usable UsePathFind Aggression Attackrange Bodypos Character Cohesion Commrange Damage_player Eye_height Forward_speed Hit_upward_velocity Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov AICarDef AI_use Damping_vehicle Dyn_friction_ratio Handbraking_value Max_braking_friction Max_steer_v0 Steer_relaxation_v0 Steer_speed Steer_speed_min ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin Name of tag point used by AI for reinforcement event. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines whether the vehicle can be used by the player or not. Sets whether the vehicle will use pathfinding AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Defines how much damage is inflicted upon player when rammed. Unknown for this tool. Sets the forward speed of the vehicle. Unknown for this tool. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Parameters for AI vehicle control. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. Text Explanation Determines if the vehicle can be used by the player or not. Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Unknown for this tool. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle is considered active or not. Determines whether the vehicle will approach player or not. Damage modifier for the AI’s bullet. Damage modifier for the AI’s gun fire explosions. Damage modifier for the vehicle’s gun fire. Damage modifier for the explosions from this vehicle. Unknown for this tool. Names the AI entity that will drive the boat. Defines the hostility towards the group the vehicle belongs to. Sets the vehicle’s lights on or off. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of the vehicle. Unknown for this tool. Unknown for this tool. Sets the vehicle to go investigate when activated. Unknown for this tool. Unknown for this tool. Unknown for this tool. Sets whether the vehicle will use pathfinding AI. Range T/F List T/F T/F T/F List Text Text Text T/F Boat: gun boat. Parameter Usable Behaviour Groupid Sightrange Soundrange AISoundRadius AbandonedTime Active ApproachPlayer DmgScaleAIBullet DmgScaleAIExplosion DmgScaleBullet DmgScaleExplosion DrawDriver DriverName GroupHostility LightsOn LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Name Persistence SameGroupID SetInvestigate SpeciesHostility StartDelay Trackable UsePathFind 152 T/F T/F T/F Text T/F File T/F T/F T/F T/F F A R C R Y ™ UseRL UseRLGuided Accuracy Aggression Attackrange Bodypos Character Cohesion Commrange Damage_player Eye_height Forward_speed Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov WaterDamping Water_resistance Water_sleep_speed AttackParams Horizontal_fov Sightrange ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin GunnerParams AttackRange Horizontal_fov Responsiveness Sightrange Unknown for this tool. Unknown for this tool. Sets the shooting accuracy of the AI. Sets the aggression of the AI. Sets the range within which the target must come before the AI will start shooting. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Defines how much damage is inflicted upon player when rammed. Unknown for this tool. Sets the forward speed of the vehicle. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Unknown for this tool. Defines the level of water resistance against the boat. Unknown for this tool. Defines the attack parameters for the boat. Horizontal field of view. Sight range. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. Defines parameters for the boat’s gunner. How close the gunner must be to target before it will start firing. Horizontal field of view for the gunner. Responsiveness of the turret to enemy movement. Sight range of the gunner. T/F T/F Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle will approach player or not. Damage modifier for the vehicle’s gun fire. Damage modifier for the explosions from this vehicle. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of the vehicle. Determines if the helicopter will loop at the end of its path. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines whether the vehicle can be used by the player or not. Sets whether the vehicle will use pathfinding AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Unknown for this tool. Unknown for this tool. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. Range List List Text Text Text 0-360 BoatPatrol Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime ApproachPlayer DmgScaleBullet DmgScaleExplosion DrawDriver GroupHostility LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Name Pathloop Persistence SpeciesHostility Trackable Usable UsePathFind Aggression Attackrange Bodypos Character Cohesion Commrange Damping Eye_height Horizontal_fov Max_health Pathname 153 T/F T/F File T/F T/F T/F T/F List Text F A R C R Y ™ Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov WaterDamping Water_resistance Water_sleep_speed ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Unknown for this tool. Defines the level of water resistance against the boat. Unknown for this tool. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. Text Text Buggy: light four wheeled vehicle. Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime Active ApproachDist ApproachPlayer DrawDriver GroupHostility LightsOn LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Pathloop Persistence ReinforcePoint SameGroupID SetInvestigate SpeciesHostility StartDelay Trackable Usable UsePathFind Aggression Attackrange Bodypos Character Cohesion Commrange Damage_player Eye_height Forward_speed Hit_upward_velocity Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov AICarDef AI_use Damping_vehicle Dyn_friction_ratio Handbraking_value Max_braking_friction Max_steer_v0 Steer_relaxation_v0 Steer_speed Steer_speed_min Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle is considered active or not. Unknown for this tool. Determines whether the vehicle will approach player or not. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Sets the vehicle’s lights on or off. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Determines if the helicopter will loop at the end of its path. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Sets the vehicle to go investigate when activated. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines whether the vehicle can be used by the player or not. Sets whether the vehicle will use pathfinding AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Defines how much damage is inflicted upon player when rammed. Unknown for this tool. Sets the forward speed of the vehicle. Unknown for this tool. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Parameters for AI vehicle control. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. 154 Range List T/F T/F T/F T/F T/F Text T/F T/F T/F T/F T/F List Text Text Text T/F F A R C R Y ™ ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. Forklift Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime Active ApproachDist DmgScaleAIBullet DmgScaleAIExplosion DmgScaleBullet DmgScaleExplosion DrawDriver GroupHostility LightsOn LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Model Pathloop Persistence ReinforcePoint SpeciesHostility StartDelay Trackable Usable UsePathFind Aggression Attackrange Bodypos Character Cohesion Commrange Damage_player Damage_scale Eye_height Forward_speed Hit_upward_velocity Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov AICarDef AI_use Damping_vehicle Dyn_friction_ratio Handbraking_value Max_braking_friction Max_steer_v0 Steer_relaxation_v0 Steer_speed Steer_speed_min ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle is considered active or not. Unknown for this tool. Damage modifier for the AI’s bullet. Damage modifier for the AI’s gun fire explosions. Damage modifier for the vehicle’s gun fire. Damage modifier for the explosions from this vehicle. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Sets the vehicle’s lights on or off. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of the vehicle. Determines if the helicopter will loop at the end of its path. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines whether the vehicle can be used by the player or not. Sets whether the vehicle will use pathfinding AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Defines how much damage is inflicted upon player when rammed. Sets the damage modifier. Unknown for this tool. Sets the forward speed of the vehicle. Unknown for this tool. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Parameters for AI vehicle control. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. 155 Range List T/F T/F T/F T/F File T/F Text T/F T/F T/F List Text Text Text T/F F A R C R Y ™ Humvee Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime Active ApproachDist ApproachPlayer AttackStickDist DisabledMessage DrawDriver GroupHostility LightsOn LimitLRAngle LimitUDMaxAngle LimitUDMinAngle LockUser Pathloop Persistence ReinforcePoint SameGroupID SetInvestigate Sleeping SpeciesHostility StartDelay Trackable Usable UsePathFind Aggression Attackrange Character Cohesion Commrange Damage_player Eye_height Forward_speed Hit_upward_velocity Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species AICarDef AI_use Damping_vehicle Dyn_friction_ratio Handbraking_value Max_braking_friction Max_steer_v0 Steer_relaxation_v0 Steer_speed Steer_speed_min ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin GunnerParams AttackRange Horizontal_fov Responsiveness Sightrange Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the vehicle is considered active or not. Unknown for this tool. Determines whether the vehicle will approach player or not. Unknown for this tool. Sets text message to be displayed when vehicle is disabled. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Sets the vehicle’s lights on or off. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Range List Determines if the helicopter will loop at the end of its path. Unknown for this tool. Name of tag point used by AI for reinforcement event. Unknown for this tool. Sets the vehicle to go investigate when activated. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Determines whether the vehicle can be used by the player or not. Sets whether the vehicle will use pathfinding AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Defines how much damage is inflicted upon player when rammed. Unknown for this tool. Sets the forward speed of the vehicle. Unknown for this tool. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Parameters for AI vehicle control. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. Defines parameters for the boat’s gunner. How close the gunner must be to target before it will start firing. Horizontal field of view for the gunner. Responsiveness of the turret to enemy movement. Sight range of the gunner. T/F Paraglider: unpowered vehicle. 156 T/F T/F T/F T/F Text T/F T/F T/F T/F T/F T/F List Text Text Text T/F 0-360 F A R C R Y ™ Parameter Behaviour Groupid Sightrange Soundrange AbandonedTime DmgScaleAIBullet DmgScaleAIExplosion DmgScaleBullet DmgScaleExplosion LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Name Trackable UserPassenger Damping Water_damping Water_resistance Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Modifier to damage caused by AI bullet. Modifier to damage caused by AI weapon explosions. Modifier to damage caused by player bullet. Modifier to damage caused by player weapon explosions. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of vehicle. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Range List File T/F T/F Zodiac: small inflatable boat. Parameter Behaviour Groupid Sightrange Soundrange AISoundRadius AbandonedTime Active DmgScaleAIBullet DmgScaleAIExplosion DmgScaleBullet DmgScaleExplosion DrawDriver GroupHostility LimitLRAngle LimitUDMaxAngle LimitUDMinAngle Name Persistence ReinforcePoint SpeciesHostility Trackable UserPassenger Accuracy Aggression Attackrange Bodypos Character Cohesion Commrange Damping Eye_height Forward_speed Horizontal_fov Max_health Pathname Pathstart Pathsteps PointBackOff PointReinforce Responsiveness Species Vertical_fov WaterDamping Water_resistance ExplosionParams Damage ImpulsivePressure Radius RadiusMax RadiusMin Explanation Sets the behaviour for the unit. Sets the ID number of the vehicle’s group. Defines the maximum sight range of the vehicle. Defines the maximum hearing range of the vehicle. Sets the amount of time before the vehicle is considered abandoned. Determines whether the boat can be used by a player/AI or not. Modifier to damage caused by AI bullet. Modifier to damage caused by AI weapon explosions. Modifier to damage caused by player bullet. Modifier to damage caused by player weapon explosions. Unknown for this tool. Defines the hostility towards the group the vehicle belongs to. Defines limit of the player’s left/right mouse look angle when inside vehicle. Defines limit of the maximum up/down mouse look angle when inside vehicle. Defines limit of the minimum up/down mouse look angle when inside vehicle. Points to 3D model of the vehicle. Unknown for this tool. Unknown for this tool. Unknown for this tool. Unknown for this tool. Defines the accuracy of the AI. Defines aggression level of the AI. Sets the range the player must be within before the vehicle will give chase. Unknown for this tool. Names the AI script the vehicle will use. Unknown for this tool. Defines the communication range of the vehicle. Unknown for this tool. Unknown for this tool. Defines the forward movement speed of the vehicle. Sets the horizontal field of view for the vehicle. Sets the maximum hit points for the vehicle. Names the path the vehicle will follow. The number of the first path node. The number of steps involved in the path. Names the tag point the vehicle will retreat to when called. Names the tag point the vehicle will move to when requested to reinforce. Defines the ease of handling of the vehicle. Sets the species number for this AI, for use when calculating the hostility of other AIs. Defines the vertical field of view for the vehicle. Unknown for this tool. Defines the level of water resistance against the boat. Defines the parameters for the vehicle’s explosion when destroyed. Damage caused by explosion. Impulse of explosion. Radius of explosion. Maximum range of impact. Minimum range of impact. 157 Range List T/F T/F File T/F T/F List Text Text Text F A R C R Y ™ Weapons Folder Special effects for special projectile weapons – no additional properties detailed. BUTTON TagPoint Respawn: used as a spawn point for the player. Numbered object, where number = target savepoint. TagPoint: generic target point for various game functions. Comment: inactive object used for leaving text messages in the map. Parameter Comment Fixed Explanation Details the text of the comment. Unknown for this tool. Range Text T/F 158 F A R C Appendix C R Y ™ AI Tables More detailed information on the AI Behaviour and AI anchor jobs. AI Behvaiours Behaviour Job_CarryBox Job_CroweOne Job_FormPatrolCircle Job_FormPatrolLinear Job_FormPatrolNode Job_Investigate Job_Observe Job_PatrolCircle Job_PatrolLinear Job_PatrolNode Job_PatrolPath Job_PatrolPathNoIdle Job_PracticeFire Job_ProneIdle Job_RunTo Job_RunToActivated Job_StandIdle MorpherJob_Morph MountedGuy mutant_dummy MutantCaged MutantJob_Idling MutantJob_Jumper SpecialGuy Explanation The same as with Job_PatrolCircle, but the AI who has this job will get his team mates to join him, thus forming a circular patrol. The same as with Job_PatrolLinear, but the AI who has this job will get his team mates to join him, thus forming a linear patrol. The same as with Job_PatrolNode, but the AI who has this job will get his team mates to join him, thus forming a patrol between nodes. AI will fan out and investigate any anchors with the action AIANCHOR_INVESTIGATE. If you set a tag point called ainame_OBSERVE, replacing ainame, then he will look in the direction of the tag point, else he will turn in a circle. If grouped, the AI will look to form a group. AI patrols from point to point, pausing at each point and looking in the direction of the tag point before resuming. It will patrol to the highest numbered point and then return to the starting point e.g. 1-2-3-4-1-2-3-4-1… AI patrols from point to point, pausing at each point and looking in the direction of the tag point before resuming. It will patrol to the highest numbered point and then return to the previous point e.g. 1-2-3-4-3-2-1-2… AI patrols from point to point randomly, pausing at each point and looking in the direction of the tag point before resuming. AI patrols a drawn path, at each node the AI will stop and perform an idle action. AI patrols a path without the idle actions at each path node. AI will shoot at the tag point with the name ainame_SHOOT, he will stop doing it as soon as he sees the player AI will lay down while idle so it will stand up as soon as it sees the player. AI will run to one tag point with name ainame_RUNTO but remember that the ai will always look into the direction of the tag point while running, he will stop doing it as soon as he sees the player Default behaviour for mercenary - stands idle. Not really supported anymore. Morphing mutants will always go invisible from start. Not really supported anymore. AI runs to the mounted weapon anchor if they see the player. AI Anchor Jobs Anchor AIANCHOR_FLASHLIGHT AIANCHOR_MISSION_TALK AIANCHOR_NOTIFY_GROUP_DELAY AIANCHOR_OBSERVE AIANCHOR_PROTECT_THIS_POINT AIANCHOR_PUSH_ALARM Explanation AI will turn on the flashlight. Probably not supported anymore. AI starts to talk something mission/level specific which has to be specified in a special script. AI will first run to this anchor before his group members are alerted. AI observes here while idle. Defensive AI Group leader will attempt to defend this point. You have to place an anchor within 30 meters to this enemy. When the enemy sees the player, he will run to this point before he starts fighting with the player. You can place an AI only trigger here to trigger something special to happen. If there is a group of enemies, then only one guy from the group will go to the anchor - most likely the guy who sees the player first. The rest will 159 F A R C R Y ™ AIANCHOR_SEAT HOLD_THIS_POSITION USE_THIS_MOUNTED_WEAPON Job anchors. AIANCHOR_WHEEL AIANCHOR_TOOLBOX AIANCHOR_HOOD AIANCHOR_EXAMINATION AIANCHOR_FENCE AIANCHOR_FENCE_LONG AIANCHOR_CLIPBOARD AIANCHOR_SIT_WRITE AIANCHOR_SIT_TYPE AIANCHOR_STAND_TYPE AIANCHOR_PUSHBUTTON RESPOND_TO_REINFORCEMENT INVESTIGATE HERE PLAY_CARDS_HERE SHOOTING_TARGET Job anchors which use entities that can be attached to the AI. AIANCHOR_PICKUP AIANCHOR_PUTDOWN AIANCHOR_CHAIR AIANCHOR_MICROSCOPE AIANCHOR_BEAKER AIANCHOR_MAGAZINE Idle anchors. AIANCHOR_RELIEF AIANCHOR_SMOKE AIANCHOR_NOTIFY_GROUP_DELAY HOLD_YOUR_FIRE AIANCHOR_WARMHANDS EXERCISE_HERE FISH_HERE SLEEP Combat anchors. AIANCHOR_SHOOTSPOTSTAND AIANCHOR_SHOOTSPOTCROUCH AIANCHOR_REINFORCEPOINT AIANCHOR_PROTECT_THIS_POINT AIANCHOR_THROW_FLARE AIANCHOR_BOATATTACK_SPOT RETREAT_HERE RETREAT_WHEN_HALVED Miscellaneous anchors. AIANCHOR_RANDOM_TALK AIANCHOR_BOATENTER_SPOT AIANCHOR_MUTATED BLIND_ALARM DO_SOMETHING_SPECIAL GUN_RACK continue fighting normally. You have to place an anchor within 10 meters from any enemy doing ANY job. The enemy will randomly choose this anchor sometimes and sit there for some time in between idle breaks. Place this anchor close to path points of the enemy, or close to the spawn spot of the enemy. He only looks for this type of anchor when he stops at a path node, when he makes idle animations. AI won’t react/investigate the sound source caused by the player if the anchor is between the AI and the created sound except if the AI sees the player, but they will run for cover. You have to place an anchor within 2 meters from an actual mounted weapon. Any enemy within 30 meters of this anchor will prefer to use the mounted weapon when he sees the player and decides to engage him instead of normal combat. If there is a group of enemies close to this weapon, only one will get to use it – the others will fight normally. If the player advances to less than 7 meters to a guy using the mounted weapon, he will drop the mounted weapon and revert to his normal behaviour. Tighten wheel nuts, etc, for car. Location for toolbox e.g. when fixing car AI goes off to toolbox and returns to where he was working Used at a car hood or anywhere else you want an AI to briefly stop and fix something on a car. You have to place an anchor within 20 meters from the enemy that you have assigned this job to. The enemy will approach, then start making animations like he is working on something approximately 1 meter from the ground. Occasionally he will stop and make idle animations and then quickly get back to work. AI inspects some apparatus, makes notes on clipboard. AI sits down writing. AI sits down typing. AI stands up typing. To be used with indconsole_workstation_6x. A button on the wall for AI to push at head height AI will walk to anchor and look at it. AI needs Job_Investigate. AI will play cards here. Use 3-5 guys, or they will be playing patience. Target for AI to shoot at. AI can pick up crate etc and move to AIANCHOR_PUTDOWN. Reverse of pickup anchor. Swivel chair for AI to sit down, chair binds to AI so will move forward with it. Microscope for scientist AI to peer into - needs props. AI pours fluid between beakers, holds up looks at it. AI sitting down picks up magazine and reads it . AI will urinate at anchor. You have to place an anchor within 10 meters from any enemy doing ANY job. The enemy will randomly choose this anchor sometimes and sit there for some time in between idle breaks. Place this anchor close to path points of the enemy, or close to the spawn spot of the enemy. He only looks for this type of anchor when he stops at a path node, when he makes idle animations. You have to place an anchor within 10 meters from the enemy. When he sees the player, the enemy will run to it and make an animation to notify his group of the player’s position. If the enemy is killed before he reaches this anchor, his group will not be alerted. AI will rub his hands together to warm them up. AI will perform push ups. Try to place on relatively flat ground. AI fishes for a while. AI will go to this point and stand ready to shoot. This can be used instead of hiding point, must be point into the direction of the attack, good for snipers. AI will go to this point and crouch ready to shoot. This can be used instead of hiding point, must be point into the direction of the attack, good for snipers. You have to place an anchor within 10 meters from an enemy. The enemy will throw a flare when he sees the player and then revert to his normal behaviour after that. Make sure that the enemy you want to throw the flare has Flare Grenade ammo selected in his weapon pack, otherwise he will throw whatever he has, even just a rock. Boat navigates to and attacks this point if player on land. 160 F A R C R Y ™ MISSION TALK INPLACE MORPH HERE PLACEHOLDER PLANT_BOMB_HERE SEAT_PRECISE SNIPER POTSHOT SWIM_HERE USE_RADIO_ANIM Special. SPECIAL_ENABLE_TRIGGER SPECIAL_ENTERCODE SPECIAL_HOLD_SPOT SPECIAL_STAND_TYPE Vehicle anchors. z_CARENTER_DRIVER z_CARENTER_GUNNER z_CARENTER_PASSENGER1 z_CARENTER_PASSENGER2 (to 10) Z_HELYENTER AI Objects. AIOBJECT_DAMAGEGRENADE AIOBJECT_SWIVIL_CHAIR AIOBJECT_FLYING_FOX AIOBJECT_CARRY_CRATE Mutant anchors. AIANCHOR_DINNER1 AIANCHOR_DINNER2 AIANCHOR_RAMPAGE MUTANT_AIRDUCT MUTANT_JUMP_SMALL MUTANT_JUMP_TARGET MUTANT_JUMP_TARGET_WALKING AI will swim to the nearest of these anchors if they fall into the water. Created automatically by vehicle enter script – do not use. Created automatically by vehicle enter script – do not use. Created automatically by vehicle enter script – do not use. Created automatically by vehicle enter script – do not use. Created automatically by vehicle enter script – do not use. Chimp mutant walks around the corpse picking off flesh occasionally. Mutant chomping down on some corpse flesh. Moves from point to point, smashing things. Chimps and aberrations try to jump to this anchor if they see the player for the first time. Fast Mutants jump to these anchors if the player points at them or if it’s next to a hiding player. Place them as much as possible if you have enough reasonable places that are not too close to each other. Also it is better to place them 1-2 meters above the ground so the AI can see them better but the point where they actually land is projected downwards. Same as MUTANT_JUMP_TARGET except that now the AI knows that it cans walk from this point. Try to use only these points because if the AI is running out of active/reachable anchors it should still have the possibility to walk/run instead of just standing MUTANT_LOCK 161 F A R D Appendix C R Y ™ Events Tables A more detailed examination of all the events in the editor at time of documentation. Input/Output Events Generic events: common to many objects. Event Activate AddImpulse Awake Deactivate Enable Enter Explode Hide IsDead Picked Reset Spawn Trigger Use Unhide Explanation Activates an entity. Adds a physical impulse as a vector (x, y, z) to the object. Used to activate dead bodies. They get updated by the physics and will start moving. Deactivates an entity. Enables an Entity (input event). Object’s bounding box entered. Object explodes. Object becomes hidden. Object is dead (cannot signal from On Die, so must use this). Pickup got picked up Reset to default state. Player has spawned or objective has been captured. Object becomes unhidden. AI Folder Soldier/Mutant/NPC/Animal Event AcceptSound Die DisablePhysics EnablePhysics Follow GoDumb HalfHealthLeft HoldSpot LastGroupMemberDied Lead MakeVulnerable OnDeath Relocate Ressurect SPECIAL_ANIM_START StopSpecial Explanation Entity will accept a sound spot to be redirected to the AI. AI will have Lipsync if lipsync files are generated and the sound will come from this spot. Entity is ordered to die. Disable the physics for the Entity – no bounding box anymore. This event was requested for “Valerie” to perform a special animation. AI cannot move with disabled physics. Enable physics - bounding box is back and player will bounce. Special behaviour that makes AI follow the player. Will only work if AI has species “0”, i.e. the same as the player. AI will behave as if there is no enemy is around. Used to make AI make certain actions, for example to approach an anchor and perform a certain animation. Entity is reduced to half health. Entity is ordered to hold position. AI will try to get to “SPECIAL_HOLD_SPOT” anchor. Every AI from this group got killed. There is no AI in this map anymore with the same group ID. Used to trigger other events. Note: every single AI in the group must trigger that event. AI will lead, special case for Valerie to lead the player to special points. AI becomes vulnerable. Triggered after the AI died, can be used to trigger other events AI can be relocated to TagPoints. Must use tag point naming convention: [name]_RELOCATE . AI will be resurrected. A “special“ animation has started. Only tested with Valerie and “PLANT_BOMB_HERE” anchor. AI will stop any behaviour. Aircraft 162 F A R C R Y ™ Event Fly GoAttack GoPath GoPathULTIMATE IsDead Kill Land LoadPeople LowHelath Reinforcement Explanation Aircraft is ordered to fly. Aircraft is ordered to go into attack mode. Will try to get to the tag point defined in the pointAttack parameter or attack any target (player or different species). Aircraft is ordered to follow path. Event after the entity got killed. Entity is ordered to die. Will explode. Aircraft is ordered to land. Will land at once and turn of engine. AI will get inside the aircraft. AI needs to have same group ID as aircraft. Aircraft is ordered to reinforce point. All AI in the same group will try to enter aircraft. Doors Folder Doors Event Close Closed ForceClose Open Opened Unlocked Explanation Door is in the process of closing. Door is fully closed. Door will close even something is blocking it, like dead bodies. Door is in the process of opening. Door is fully open. If a door is locked it can be forced to unlock, by a trigger or event. Will stay unlocked. Elevator Folder Elevator Event Close Closed ForceClose Open Opened RestartAnimation StartAnimation Explanation Elevator is in the process of returning to original position. Elevator has returned to original position. Elevator is in the process of moving to next position. Elevator has reached next position. Lights Folder DynamicLight Event Shake SwitchMaterial1 Explanation Light is shaken - triggers the shake event of the phys light model. This can be used to change materials for the light model, i.e. the geometry of the light. It will try to switch to the material with the original material name + 1. This can be used to change materials for the light model, i.e. the geometry of the light. It will try to switch to the material with the original material name + 1. This can be used to change materials for the light model, i.e. the geometry of the light. It will try to switch to the material with the original material. SwitchMaterial2 SwitchToMaterialOriginal Multiplayer Folder ASSAULTCheckPoint Event AttackerTouch Averted Blocked Capturing Spawn Touched Untouched Warmup Explanation Check point is being captured. Check point has been captured. CAHFlag Unused Multiplayer Mode Event Blue Neutral Explanation 163 F A R C R Y ™ Red Others Folder AnimObject Event HideAttached ShowAttached StartAnimation StopAnimation Explanation Start the animation Stop the animation BasicEntity Event Activate AddImpulse Hide ResetAnimation StartAnimation StopAnimation SwitchToMaterial1 SwitchToMaterial2 SwitchToMaterialOriginal Unhide Explanation Activates an entity. Adds an physical impulse as a vector (x,y,z) to the object. Hide object. Used to change material. Will switch to material with number 1. Used to change material. Will switch to material with number 2. Used to change material. Will switch to original material. Unhide object. BuildableObject Event building built damaged hidden repair unbuilt Explanation Object is building. Object is completed. Object has been damaged. Object is hidden. Object is being repaired. Object is not built. ChainSwing Event ChainBroken Explanation Chain’s attachment to object is broken. DestroyableObject Event Explode OnDamage SwitchToMaterial1 SwitchToMaterial2 SwitchToMaterialOriginal Explanation Object explodes. Object is damaged. Used to change material. Will switch to material with number 1. Used to change material. Will switch to material with number 2. Used to change material. Will switch to original material. GameEvent Event Save Explanation Trigger to save game. Pusher Event Push Explanation Object is given impulse. RaisingWater Event RaiseWater WaterStopped Explanation Start to raise or lower the water volume. Output trigger if the water volume has stopped rising, or falling. RigidBody 164 F A R C R Y ™ Event OnTouch Explanation Rope Event DoRope Explanation TV Event Off On OnDamage Explanation Turn off. Turn on. Send signal when damaged. Particle Folder ParticleEffect Event Pulse Explanation Pulses the particle effect. Pickups Folder Pickups Event Picked Explanation Pickup is collected by player. Keycard Event KeyCardPickup Picked Explanation Key card is collected by the player. Sound Folder MissionHint Event Play Stop Explanation Will play the sound. Stop playing sound. MusicMoodSelector Event ResetDefaultMood SetDefaultMood SetMood Explanation Reset to default mood. Set default mood. Selects mood. MusicThemeSelector Event SetTheme Explanation Select the music theme. SoundSpot Event Play Redirect Stop Explanation Will play the sound. Redirect the sound to an AI. AI needs to “Accept” the sound to work. Stop sound. Triggers Folder All Triggers 165 F A R C R Y ™ Event Enter Leave Explanation Trigger’s bounding box is entered. Trigger’s bounding box is exited. AITrigger Event Signal Explanation Send signal to AI. DelayTrigger/MultipleTrigger Event InputTrigger OutputTrigger Explanation Trigger this event to activate the delay or trigger something on this event. Triggered after the delay finished. PlaceableExplo Event DeActivateAndHide ExplosivePlaced Explanation Triggered after explosive got placed. PlaceableGeneric Event ExplosivePlaced Explanation Triggered after explosive is placed. VisibilityTrigger Event Invisible Visible Explanation Trigger is invisible to player. Trigger is visible to player. Vehicles Folder Land Vehicles Event Abandonded AIDriverIn AIDriverOut AIEntered DisableHumvee DriverIn EnableHumvee EveryoneOut GoChase GoPath GoPatrol Grenade KillTriger MakePlayerGunner OnDeath PathEnd PausePath PlayerEntered Reinforcement Wakeup Explanation Vehicle is abandoned. AI driver ordered to enter vehicle. AI drives ordered to exit vehicle. Triggered whenever AI enters the vehicle. Disable Humvee. Player can not use it anymore. Enable Humvee. Vehicle is ordered to enter chase player stance. Vehicle is ordered to follow path. Vehicle is ordered to patrol path. Destroy vehicle. Vehicle will explode. Triggered after vehicle is destroyed. Vehicle reached destination. Vehicle will pause on the path. You need to cause event trigger GoPath again. Triggered whenever player entered the vehicle. Vehicle is ordered to reinforce point. Sea Vehicles Event Abandonded AddPlayer DriverIn GoAttack GoPath GoPatrol KilTriger Load OnDeath Explanation Vehicle is abandoned. Vehicle is ordered to enter attack mode. Vehicle is ordered to follow path. Vehicle is ordered to patrol path. Destroy vehicle. Will explode. Order AI with same group AI into the vehicle. Triggered after vehicle is destroyed. 166 F A R C R Y ™ Reinforcement Release StartAniPath StopAttack TArgetOnLand Vehicle is ordered to reinforce point. Paraglider Event Abandonded DriverIn OnDeath Explanation Vehicle is abandoned. 167 F A R E Appendix C R Y ™ Light Types Lighting is particular important for indoor levels, and here are a few of the more important types used. The first tables describe the common light types, and these are followed by a few images that show how to set these up. Dynamic Lights Light Full Dynamic Light: Physical Dynamic Light: Dynamic Light with Lightmaps Description Pure dynamic light, without any object attached to it., maybe with shader. Pure dynamic light, with light type 2 or 3, maybe with a shader. Lightmap light, which still affects dynamic objects with dynamic light, maybe with a shader. These lights cannot be turned off in the game, only in the editor. Non-Dynamic Lights Light Pure Lightmap Light Fake Lightmap Light Radiosity Light Pure Fake Light Explanation Light only casts lightmaps, no shader. Lightmap light, which still might show a shader. Lightmap light with the special radiosity flag, no shader. Light casting no light, which might only show a shader. The following images show how to set up some of the more common light types, with the settings that need to be changed highlighted in red. 168 F A R C R Y ™ Fake Lightmap Light 169 F A R C R Y ™ Pure Fake Light 170 F A R C R Y ™ Hanging Light with Projected Texture and Beam 171 F A R C R Y ™ Hanging Light with Light Type 2, and Flare 172 F A R C R Y ™ Dynamic Light with Lightmaps and Shader 173 F A R F Appendix C R Y ™ Music Engine Data Additional information for the Sound chapter. Structure of Music System Moods Main Layer Pattern 1, % chance Pattern 2, % chance Pattern Set, % Chance Rhythm Layer Pattern 1, % chance Pattern 2, % chance Incidental Layer Patterns To Player Mood Incidental Layer Rhythmic Layer Patterns Pattern 1, % chance Pattern 2, % chance Main Layer Pattern Main Layer Pattern Set, % Chance Rhythm Layer Incidental Layer Pattern Syntax Parameters Parameter File FadePos LayeringVolume Explanation The music file which is represented by the pattern. “pathfromroot/to/file.ogg” Points in time, during the file playback, at which changes to the music may happen. These positions are measured in samples from the beginning of the file. FadePos={0} represents the end sample of the file. Sets the volume level of the file playback. 174 F A R C R Y ™ PatternSet Syntax Parameters Parameter MinTimeout MaxTimeout MainLayer RhythmicLayer IncidentalLayer Explanation Minimum time, in seconds, for which this pattern-set will play. Maximum time, seconds, for which this pattern set will play. When the pattern has played for this time, a new pattern set will be chosen, if another exists. The beat layer. There may only be one pattern playing at any time in this layer. The rhythm layer. May have more than one pattern play simultaneously. This layer is for incidental sounds which contribute to the music. More than one pattern may play simultaneously on this layer. Layer Parameters Parameter Probability MaxSimultaneousPatterns Patterns Explanation Percentage chance that this layer will play; the Main Layer always plays. Maximum number of patterns that can play simultaneously in this layer. The patterns contained in the layer, and the probability each one has of playing. Mood Syntax Parameters Parameter Priority FadeOutTime PlaySingle PatternSet Explanation Sets the importance of a mood, evaluated when mood conflicts arise. A mood with priority 255 will always take priority over other moods. Sets the time, in seconds, for the previous mood to fade out in the event of a transition to a new mood. Set to 1 to play one of the Main Layer patterns. When the pattern ends, the system will revert to the default mood, or another lower priority mood. This is useful for one-shot pieces. Includes all the pattern sets of the mood. Theme Syntax Parameters Parameter DefaultMood Moods Bridges Explanation Defines the default mood that the theme will play. The timeout is measured in seconds after which, if it is reached without a game event happening, the default mood will be triggered. Moods can either be defined in this table, according to the mood syntax, or can be referenced to other LUA tables containing the mood syntax (as shown in the previous example). Bridges are used to make transitions between two themes. 175 G Appendix Scripting and Editing Additional tables for the modding chapter. Data type prefixes Prefix must be followed by Capital letter or Underscore character “_”. Type f s n i b sound texture object file color vector Explanation Float String Integer Integer Boolean Sound file (.wav) Texture file Object file (cgf or bld) Any file. Color. Vector. Material Parameters Parameter Shader Opacity Opacity AlphaTest LightingSettings Texture Maps DiffuseMap SpecularMap BumpMap NormalMap CubeMap DetailMap DecalMap Tiling Rotator Oscillator ShaderParams Explanation Here you can change the shader of the material. See table below for a list of basic shaders. Opacity Settings Controls AlphaBlend. Controls AlphaTest. Controls the different light settings like diffuse or specular level. They are affected differently depending on shader.. Texture Maps: The diffuse map, which is the obvious visible texture normally. The gloss map for gloss specular shader, which might be needed sometimes for other special shaders. Bumpmap; heightmap. Normalmap; map of normals. If the texture has [texturename]_ddn.dds it doesn’t matter if you assign it to bumpmap or normalmap, as it will always be treated as a normalmap. Pre-rendered cubemap of six .dds files. This can be auto-generated A texture which blended off at a certain distance to give more detail to the surface, like small scratches. Usually it is a good idea to put a height pass filter on it. Adds a decal at the top of the surface. A sub-category of most of the maps described above. Here you can move it around the texture (offset), scale it (tile) or rotate it (rotate). Note that rotate has a bug which means you must change offset before you can rotated it. A sub-category of most of the maps described above. Here you can make the texture constantly rotate by changing the “type” and its specific settings above. A sub-category of most of the maps described above. Here you can let the texture move or scale constantly by changing the “type” and its specific settings above. Special shader settings. 176 Basic Shaders for Brushes Shader TemplBumpDiffuse TemplModelCommon TemplBumpSpec_HP TemplBumpSpec_HP_GlossAlpha TemplBumpSpec_HP_GlossAlpha TemplDecalModulate TemplReflCM TemplBumpReflCM TemplBumpSpec_EnvCMAmb Explanation Lowest cost shader for indoors. Supports: DiffuseMap, BumpMap, NormalMap, DetailMap and Lighting Settings. Lowest cost shader for outdoors. Supports: DiffuseMap, BumpMap, NormalMap, DetailMap and Lighting Settings. Cheapest specular shader, gets replaced with TemplBumpSpec on HighSpec and with TemplBumpSpec_PS20 on VeryHighSpec. Supports: DiffuseMap, BumpMap, NormalMap, DetailMap and Lighting Settings. Cheapest specular shader which needs an external GlossAlpha file, gets replaced with TemplBumpSpec_Gloss on HighSpec and with TemplBumpSpec_Gloss_PS20 on VeryHighSpec. Supports: DiffuseMap, SpecularMap (GlossAlpha File), BumpMap, NormalMap, DetailMap and Lighting Settings. Cheapest specular shader which needs an GlossAlphaChannel in the diffuse texture, gets replaced with TemplBumpSpec_GlossAlpha on HighSpec and with TemplBumpSpec_GlossAlpha_PS20 on VeryHighSpec. Supports: DiffuseMap, BumpMap, NormalMap, DetailMap and Lighting Settings. Normal shader for decals. Supports: DiffuseMap and DetailMap. Shader parameters: offset (controls how much the decal moves in regards to distance). A good low cost shader for glass. Supports: CubeMap (pre-rendered), DetailMap, DecalMap, Opacity, Lighting Settings. Advanced glass shader with cubemap and bumpmap. Supports: Bumpmap, NormalMap, CubeMap, DetailMap, and DecalMap. Shader Parameters: bumpscale (scales and moves the cubemap). A good shader for specular and pre-rendered cubemaps. Gets replaced with TemplBumpSpec_EnvCMAmb_PS20 on very high spec systems. Supports DiffuseMap, BumpMap, NormalMap, CubeMap and (pre-rendered). Shader parameters: Reflectionamount (changes the opacity of the cubemap). Normal Water Volume Shader: WaterVolume Supports: Lighting Settings (brightness also controls opacity). Parameter reftilingamount reflbumpamount reflamount reflspecularamount animspeed refrtilingamount refrbumpamount lowspecopacity Explanation Controls the tiling of the fake reflection. Controls the bump amount of the fake reflection. Controls amount of fake reflection. Controls the amount of fake specular. Controls the speed of the water surface. Controls the tiling of the real time refraction. Controls the bump amount of the real time refraction. Controls the opacity of the blue LowSpec placeholder. Advanced Shader for Water Volumes: WaterVolumeBumpReflCM Supports: Lighting Settings (brightness also controls opacity), BumpMap (should be animated like CAUST##00_31 (0.03)_ddn.dds, where the number in the brackets controls the animation speed) and NormalMap (same as bumpmap). Parameter bumpscale reflamount refrtilingamount refrbumpamount animspeed lowspecopacity. Explanation Controls the size of the animated bumpmap on the water Controls amount of fake reflection. Controls the tiling of the real time refraction. Controls the bump amount of the real time refraction. Controls the speed of the water surface. Controls the opacity of the blue LowSpec placeholder. Particle Main Settings Parameter Active Texture Geometry Type Count Life Time Life Time Variation Explanation Enable/disable the particle effect or sub-effect. Select the (.dds) texture used to show the emitted particles. Animated textures can be used (see discussion below). Select the (.cgf .cga or .ccgf) geometry file which can be emitted by the particle system. Sets what type of particle system this is, Billboard, Horizontal, Underwater, or Line. Changes the number of particles emitted per spawn. Sets the life time of emitted particles in seconds from emission to complete fade out. Sets percentile variation in the life time of particles. 177 In the texture parameter you can specify an animated texture which is a sequence of static textures. The sequence must be named sequentially using numbers. For example: texture01.dds, texture02.dds…texture11.dds can be specified as an animated texture by referencing ‘texture01.dds’ in the texture property. Note: You must make sure to set the FrameCount property in the ‘Appearance’ settings before the animated texture can work. The frame count will be played over the lifetime of the particle, so if you have a life time of 1 second and a 12 frame animated texture, a frame count of 24 will cause the animation to play twice in one second. Particle Appearance Settings Parameter Focus Focus On Plane Speed Speed Variation Blend Type: FadeInTime StartColor & EndColor Frames Count Tail DrawLast Explanation Narrows or widens the field of emission. The default is 0 which causes emission in all directions. Larger numbers tighten the emission focus along the positive y-axis. Restricts particle emission to the plane. Sets the speed of emitted particles. Sets percentile variation on the particle speed. Sets the blending mode of the particles with the rest of the game world, AlphaBlend, ColorBased, Additive, None. Time over which the particles fade in. StartColor and EndColor are diffuse colors with which the particle texture color is multiplied. StartColor is the color used when the particle is emitted. The color is linearly interpolated over the lifetime of the particle, becoming the EndColor as the particle dies. Useful for effects which change colour over particle lifetime. Sets the number of frames over which to play animated textures attached to the particle. Sets the length of particle tails. Controls the sort order of sub-effects within the particle effect. Similar to layering, this feature allows sorting of particle sub-effects. The parameter can accept numbers between –4 and +4. Particles with lower draw order will be rendered before (under) particles of higher draw order. For example: When making a fire effect, Flame particles should have DrawLast = 1, and Smoke particles DrawLast=0, so that flame particles will be always drawn after (on top of) smoke particles. Particle Size Settings Paramter Size Size Variation Size Speed Size Speed Linear Size FadeIn Size FadeOut Explanation Sets the size of the individual particles. Sets the percentile variation of particles from the base size. Speed with which the particle grows to its full size. Only relevant if Size Speed value is not 0. If this flag is checked, the particles will grow at a linear speed dictated by the Size Speed property. If the box is unchecked, the particle size will change more rapidly in the beginning of its life time and grow slower towards the end of the life time. This is better for simulating smoke type particles. Time in seconds during which the size of the emitted particle grows from 0 to the specified particle size. The time starts as soon as the particles is emitted. If this property is set to 0, the particle ‘pops’ into existence at its full size. Time in seconds for the particle to fade to zero size. This time is measured so that the end coincides with the end of the particle’s life time. For example, if a particle has life time of 5 seconds, and Size FadeOut of 2, the particle will start to shrink after 3 seconds. Particle Rotate Settings Parameter Rotation x,y,z Rotation Variation Initial Angles x,y,z Initial Angles Variation Explanation Sets rotation speed around the three axes (degrees per second). Sets percentile variation in rotation speed. Sets initial angle relative to the positive axes (degrees). Sets percentile variation in initial angle. Particle Advanced Settings Parameter Explanation 178 Use Real Physics Bounciness Object Scale Toggles whether particles can collide with brushes and entities using real physics. Particles interact realistically with terrain regardless of this setting. Note that using real physics on particles is VERY expensive on processor resources and should be avoided if possible. Sets the bounciness of particles when colliding with terrain or, if the previous option is set, with brushes and entities as well. Scales the geometry attached to the particle. Particle Emitter Settings Parameter Spawn Delay Spawn Delay Variation Spawn Period Emitter Life Time Emitter Life Time Variation Explanation Delay in seconds, after activation of the emitter, before particles are actually spawned. Each particle sub-effect can have a delay which sets the time between when the effect as a whole starts and when the sub-effect starts. Sets percentile variation of the spawn delay from the base setting. Set up the time between each emission, in seconds. Sets the life time of the emitter in seconds. This setting is useful for complex effects that are triggered once and must play out for a certain length of time and then stop. For example, if something must burn and smoke for a few seconds after it has exploded, the smoking effect can have a longer emitter life time than the explosion effect. Sets percentile variation of the emitter life time from the base setting. Particle Child Process Settings Parameter Child Spawn Period Child Spawn Max Time Explanation Sets the time between each emission made by the particle’s child process. Sets an upper limit to the life time of the child process. 179 Revision History v1.1 ---Updated objects (dynamic light, raising water, particle spray, all pick ups); Appendix B. ---Updated AI anchor jobs list; Appendix C. ---Updated light types heading, and dynamic light table; Appendix E. ---Removed step 12 and updated step 8, first walkthrough, Chapter 1. ---Corrected explanation of position saving by switching "control" and "shift"; Navigation section, page iv. ---Corrected "shift" and "control" errors in Steps 1 of Chapter 7's walkthrough, and steps 3 and 6 of Chapter 2's walkthrough. ---Added Layer Painter section, Chapter 1 ---Updated numberous jpeg images to bitmaps to improve visual quality. 180
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : Yes Page Count : 188 XMP Toolkit : XMP toolkit 2.9.1-13, framework 1.6 About : uuid:c597c23c-6489-4abf-aa85-93e345132022 Producer : Acrobat Distiller 6.0 (Windows) Create Date : 2004:04:13 16:26:45+02:00 Creator Tool : PScript5.dll Version 5.2.2 Modify Date : 2004:04:13 16:26:45+02:00 Document ID : uuid:7e11489e-d846-4269-ae60-5d2aa6df663c Format : application/pdf Title : Microsoft Word - sandbox user manual v1.1.doc Creator : ABEROT Author : ABEROTEXIF Metadata provided by EXIF.tools