Sandbox User Manual V1.1 FC Editor

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 188

DownloadSandbox User Manual V1.1 FC Editor
Open PDF In BrowserView 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                          : ABEROT
EXIF Metadata provided by EXIF.tools

Navigation menu