This file is to help people interested in using the Serious Sam SDK.
Serious Sam is a game by Croteam. Find them on the web at www.croteam.com



Tips - (No frills) v 0.8
list of contributors so far.
Email: forager@ozemail.com.au
Website: forager.net
Email: mharris@fgi.net
Website: (none)
Email: lutrosis34@hotmail.com
Website: (none)
Email: LanThief@hotmail.com
Website:www.staticsky.com/controlzone.htm
         www.mourningafter.com/hollowpoint/hpp_contact.htm
Email: Xavier_Online@hotmail.com
Website:www.staticsky.com (under construction)
         www.staticsky.com/controlzone.htm
         www.mourningafter.com/hollowpoint
Email: 
Website:
Email:
Website:
Email:
Website:
Email:
Website:

~~~~~~~~~~~~~~~~~~~~~~
v 0.1   2nd  february 2001.
v 0.2   2nd  february 2001.
v 0.3   3rd  february 2001.
v 0.4   6th  february 2001.
v 0.5   7th  february 2001.
v 0.6   7th  february 2001.
v 0.7   18th february 2001. 
v 0.8   19th february 2001.  (posted to secure forum and to Croteam)
additional contributions are welcome and encouraged
v
v
v
~~~~~~~~~~~~~~~~~~~~~~


Feel free to add to this file and re-distribute,
or place this file on websites, whatever, if you add something useful, then 
feel free to add your  name to the list of names at the top of this file, 
rename the version number, and as well, add a date when you made the 
additions, and re-distribute the new improved file.

There may be several ways to do particular things, the following tips are
just to get you going, not necessarily the best method possible. There are 
alternative sources of deep knowledge, this is for people in a hurry!

|||||||||||_________|||||||||||
*******************************


TIPS for Serious Sam Editor.


ESC MODE, MOVE/FIND, PLAYER STARTS, BACKGROUND ROOM ENTITY, TOUCH FIELDS,
MODELS, BOUNCERS, MOVING BRUSHES, TELEPORTS, CAMERA, WATER, GENERAL NAVIGATION
(forager)

ESC MODE

Hit ESC to switch into fly mode. This allows you to fly through the map 
inside the Serious editor.

You can control the rate that you fly through the map
whilst you have ESC mode operational, by rolling the mousewheel backwards or 
forwards.

Rolling the wheel forward whilst in ESC mode, increases flight speed.
Rolling the wheel backwards whilst in ESC mode decreases flight speed.


MOVE/FIND OBJECTS

To move an obect somewhere useful,
select the object in entity mode,
then move mouse to the spot you want the object to be,
then, CTRL+double click LMB. The object is back where you need it!

If you need to select such an object but it is nowhere to be seen,
so it's hard to select it to move, then do the following.
CTRL+SHIFT+A.
That brings up an important page where all objects etc, are listed.
You can select your missing item from there, then go back, and do
CTRL+double click LMB, and bingo, you've located and moved the hidden object
back into view.


PLAYER STARTS


2/ In order to have multiple PlayerStarts, you must first assign each 
PlayerStart it's own Group number. Group is found in the GO/PlayerStart drop 
down list.

When you assign a number to the group box of a particular PlayerStart, the 
PlayerStart is automatically renamed. Ie, Group 5 = PlayerStart 5 etc. Or, 
more literally expressed,  Player Start - 5 -.

You can assign one PlayerStart as a Quickstart. This will make you start at 
that particular PlayerStart. Select QuickStart and tick it
from the PlayerStart dropdown list.

If you have multiple PlayerStarts in place, you could put a Touchfield near 
where you spawn into the map,  for example, and use the touchfield to 
transport to any particular PlayerStart, by just retargetting the 
Touchfield.


BACKGROUND ROOM/ENTITY

3/ The Background Viewer entity, should have it's parent set, (in it's drop down item list), to the name of the room that acts as your background room. 

The Background room itself is nothing special. All you need to do is select the Background room in entity mode, and select and tick Background, in the Background room entity drop down list.

Make sure you do not select background in the dropdown  for your main mapped space, or you will have a visual feedback loop that will hurt your ego.

A couple of extra  tips here. 
Try to make sure that your background room has it's own name,
say, bgroom for example.
Also try perhaps to create your background room as a layer, ie, create using L,
not, + on the numeric keyboard. This will allow you to be sure it is independent of the main world space. 



TOUCHFIELDS

4/ TouchField are those green volumes of space that are all over the place.

To make a Touchfield you drop a TouchField Entity into the map,
and then create a brush,(+ on the numeric Keyboard -),
that brush, is automatically now a green TouchField.

Touchfields are the tripwires of the Serious Engine, you assign an Entry 
target, and stuff happens.

Simplest useage of a TouchField is to enter an Enter Target. Do this from 
the Touchfield drop down list.

To utilise an Exit Target as well as an Enter Target, ie have two actions 
happen, you must first assign a Exit check time. For example set Exit check 
time to 5, and five seconds after the enter Enter Target has been tripped, 
the Exit Target gets tripped.

If your desperate, you can have two or more Touchfields in the same space, 
and multiply your choices of events to be tripped.

It's better to make your touchfields as room brushes, not solids. mmm?

MODELS (basics)

5/ Models are imported into the editor via the ModelHolder entity.
Click on the ModelHolder drop down list, and select model.
Standard Models are imported in .MDL format.

Textures for the Model are imported via the ModelHolder drop down list as 
well.
Textures are imported in the .TEX format.

You can convert .3DS Models into .MDL format within the Serious Modeller.
You can export a skinable/photo of your Model from the Serious Modeller. 
Make your picture,and then convert it in either Serious Editor
or Serious Modeller, into a .TEX file.

To make your Model destroyable, you must add a ModelDestruction entity.
Simply Parent the ModelDestruction Entity to the model you want destroyed, 
then
the drop down list of the ModelHolder entity. select and tick for 
Destruction.

A complete destroyable Model combination, consists of a ModelHolder entity,
a ModelDestruction entity, and the Model iteself, plus it's .Tex 
skin/texture.

BOUNCERS

6/ Bouncer Entity is a jump pad thing.
Put a Bouncer entity in the map,
and then create a brush, the brush is now a jump pad.


MOVING BRUSHES (basics)

7/ A moving brush is created by adding a MovingBrush entity into the map,
and then creating a brush. The MovingBrush is capable of mobility.

It needs markers to tell it where to move to. To easily add marker points,
select the MovingBrush, move it somewhere, and then press D on your 
keyboard.
A marker is dropped at that spot. Move the brush again, Press D, etc, etc.

You can now trigger the moving brush from a Touchfield for example,
Or, you can select Autostart, in the MovingBrush drop down list.


TELEPORTS

8/ Teleport entity is extremely simple to use.
drag one into the map, and assign a target to teleport to,
from the Teleport Entity drop down list.


CAMERA (moving)

9/ For a moving Camera, you need a Camera Entity, and Camera Markers,
a minimum of four camera markers is suggested.

Drag a Camera Entity into the map, move it, Press D (a camera marker is 
dropped), repeat until happy,
then assign the last Marker to Stop Moving.

Now, make a touchfield, select the Touchfield Entity drop down list.
Select Enter Target, assign Camera to it.
when you trip the touchfield, you fly!


WATER (swimming pools)

10/ The correct method to create a texture for the top of your swimming 
hole,
is to Shift right click on the "invisable polygons" that exist on the 
invisable top
surface of your pool. (Given that you dug a hole/room into a terrain.
Press Q to bring up texture info in entity mode.
Make the polygons Passable/Translucent/Portal, add some texture movement, 
perhaps  select link? Turn Alpha transparency down, (mouseslide on the 
"tall" colour bar),
generally frig around and after a while, you're swimming like a duck.

The wrong way to make a swimming pool, but, it looks good, is to
carve a hole in the earth, then add a SOLID super thin brush as a roof.
Press Q to bring up texture info in entity mode.
Make the polygons Passable/Translucent/Portal, add some texture movement, 
perhaps  select link? Turn Alpha transparency down, (mouseslide on the 
"tall" colour bar),
generally frig around and after a while, you're swimming like a duck, mmm, 
maybe it's more like Jesus walking on water mode....

With the above water methods, you need to select sector mode, PRESS S,
and select for water, instead of air.

GENERAL NAVIGATION


11/ To move an obect somewhere useful,
select the object in entity mode,
then move mouse to the spot you want the object to be,
then, (CTRL+double click LMB). The object is back where you need it!

If you need to select such an object but it is nowhere to be seen,
so it's hard to select it to move, then do the following.
(CTRL+SHIFT+A).
That brings up an important page where all objects etc, are listed.
You can select your missing item from there, then go back, and do
(CTRL+double click LMB), and bingo, you've located and moved the hidden 
object
back into view.


EDITOR (getting started, housekeeping, pre-fabs, etc.)
(mharris)

12/ Be thoroughly familiar with the Editor Help, particularly the Navigation 
and Basic Room tutorials and Keyboard Shortcuts.

13/ Before using the editor, make the various entities, enemies and textures 
from the game available by locating the .gro files in the Serious Sam 
directory, renaming them to .zip and unzipping them (with folders/directory 
option, to assure their components getting placed into appropriate 
subdirectories).

14/ Use a file naming/record keeping strategy sufficient to track what you 
are attempting in each revision of a world and to assure your ability to 
locate and restore from a previous version.  One possibility is to 
employ/include a date based naming scheme such as YYMMDD99, where YY is 
year, MM is month, DD is day of month and 99 is version within the day 
(restarting 99 at 01 each day).  If doing high volume development and/or 
working in a team situation, investigate purchase/use of the SourceSafe 
library/version management product, which the editor appears to support.

15/ Rapid experimentation and prototyping are practical, and often faster 
and more worthwhile than bugging someone else with questions, due to Serious 
worlds not requiring any compilation.  One can rapidly and repeatedly edit 
and test, edit and test, edit and test.... as the only delay between editing 
and testing is the brief world load time (same as would experience in the 
game), which  should be virtually nill if working with modest test/proof of 
concept levels.

16/ Responsibility/credit/blame rests on the artist, not the tool.
Ruthless disciplined trial and error, planning, composition, texturing, 
lighting.....

17/ Temporary "work lighting" of unlit worlds can be accomplished in two 
ways:
- toggle shadows (results in pseduo lighting in editor, but is pitch black 
in game)
- place a single light, set to ambient type, set falloff (and hotspot?) very 
large

19/ Pre-fabs (buildings, furnishings, etc. to be used in multiple worlds or 
in multiple spots within a given world) can first be created in a world of 
their own (just like any other world), saved to disk and added to the 
virtual tree, for subsequent drag-and-place from the virtual tree into other 
worlds, just like the entities, textues and enemies already in the tree.
To create a pre-fab, start a new world, add the first primitive as a 
non-room (so that it appears as a solid and the rest of the unused world is 
empty space, not a solid) finish building the pre-fab, then save the world.
To add the saved pre-fab to the virtual tree, select an existing 
directory/category (or add a new one via right click menu), then insert the 
saved pre-fab world file (.wld) into that directory's browser palette via 
right click menu).

20/ If get an error message about triangularization while adding a torus 
primitive, repeatedly click OK and try accessing the triangularization drop 
down list up on the tool bar until you are able to select a 
triangularization and then allowed to proceed with dimensioning the 
primitive in the Tools Info window.  If you plan to associate torus gravity 
with this torus, record the torus dimensions used, as some will be relevant 
to dimensioning the gravity.

21/ To assure the ability to undo to a specific point in time/editing, do a 
snapshot of the entire current world state, via Ctrl+W, at that point.


TARGETING NON-UNIQUELY NAMED ENTITIES, QUICK TEXTURE COPYING AND PREFABBING 
SKYBOXES
(lutrosis)

22) Assigning Objects to 'target' Property
You'll notice in Croteam's levels that they usually don't bother giving new
names to entities like spawners or lights, but they still managed to assign
the correct ones in some trigger's 'target' property. How? Just Ctrl+Alt
click on the object you want the 'target' to point to, simple as that.

23) Quick texturing
If you need to quickly texture a bunch of polys and the texture info is the
same on all of them, just texture one poly, press Ctrl-C with the mouse over
it, and then press Ctrl-V with the mouse over the polys you wish the
texturing to be copied to. Selection of polys is not neccesary, but if a
group of them is selected and texturing info is pasted onto one of the
selected polys, all selected polys will be affected. If one wants to copy
only a single texture layer, use the same technique as above, but 'm' copies
and 'j' pastes. As an alternitive, 'u' will paste, but will rotate/stretch
the texture so that it lines up perfectly with the source texture.


24) Skyboxes
Rather than go through the process of creating a skybox every time you start
a new map, just copy the skybox out of an existing level, save it as its own
.wld file, and then add a new folder to the virtual directory tree called
'Skyboxes,' and insert the skybox .wld into it. You can do others if you'd
like as well. Now you can just drag and drop!


TELEPORT AND MIRROR MARKER
(LanThief)

25) Teleport
Three steps -
Before you get started - Quick and easy, (if you have not already done so),
   add all classes (.esl files) to your virtual tree.
   Now you will see Teleport list in your virtual tree list.
One: Drag and drop Teleport into your map at the teleport-starting point of 
the jump .
   (Optional): Adjust, if you thing you need to, the height and width to 
accommodate
   the "touch-field-like" area that a player needs to occupy to start the 
jump.
Two: Drag and drop a marker (or existing player start) in to your map and 
name it 'bobo'.
   (This will be the destination where you want to teleport to)
Three: Change the target attribute on you Teleport to point to the 'bobo' 
Marker you dropped.
Your done, now when your player enters the area of your Teleport he/she will 
teleport (jump) to the 'bobo' marker you placed in your map.

26) Mirror Marker
How to make a better-looking Teleport (looking at your destination):
Drag and drop Movingbrush into your map.  Name it 'eyeCu'.  Select 'eyeCu'
from the [current brush] dropdown box.  (Add) your "not too complex brush"
to your map - with CSG.
Drag and drop Mirror Marker, from your virtual tree list, into the map. 
Place
it somewhere near your Teleport. (That you already made in (25 - Teleport)
Name your Mirror Marker 'allCingEye' and change its target attribute to 
point at 'bobo'(what to look at)
Now select "eyeCu brush" and change one of the 'Mirror' attributes to 
'allCingEye'.
This exposes your Mirror Marker 'allCingEye' to your MovingBrush 'eyeCu' for 
its polyes to use.
You guessed it, select each side of your 'eyeCu brush' and change Mirror 
attribute
on the Polygon Tab to 'allCingEye'.  So that you can see through the brush, 
you will want
to change the Blend attribute to 'Blend' on the Texture tab, and lower your 
color Alpha number to something like 42.
Have fun, LanThief.


POLYGON SURFACE PROPERTIES AND PREFABS
(xavier)

27) Polygon Surface Properties (email xavier_online@hotmail.com for further 
assistance)

A) TRANSLUCENT: Use this flag when you are want to see partially through a 
polygon.  Make sure to lower the polygon's alpha value also.

B) PORTAL: Setting the portal flag on a poly allows that poly to view 
through to the area on the other side.  Best way to understand this one is 
just to experiment with it.

C) PASSABLE: If passable is set, the player can move through the poly.

D) STAIRS:  Believe it or not a lot of people have had questions about 
stairs.  When making a stair primitive the actual stairs will sometimes be 
difficult or jerky to walk up.  To fix this simply select the poly's for the 
stairs and select the stairs flag.

E) INVISIBLE: Marking a poly as invisible will not render it, good for 
marking areas where you want to see through to the background.

F) DETAIL:  When the Serious engine renders an area, it must determine Line 
of Sight (LOS).  LOS is calculated to determine what is visible to the 
player and what therefore needs to be rendered.  These LOS calculations can 
get very tricky for high polygon areas.  Many times certain polys are just 
detail objects and don't really stop LOS and therefore things behind them 
still get rendered.  (ie pillars, pipes, statues, crates, barrels, or any 
other small details)  You can greatly enhance engine performance by 
carefully marking non-visual-block poly's with the Detail flag.

G) LINK: Set this flag when you wish to link two distinct world sectors 
together.  (ie say you have a prefab room and add it to your world as a 
layer,... initially you will not be able to move through the poly between 
your worldbase and new layer.  To rectify this, simply mark the poly's on 
both sides as Link, Passable, and Portal.)

H) OCCLUDER: Setting this flag will block visibility to anything beyond the 
poly.


28) Prefabs (email xavier_online@hotmail.com for further assistance)

This is a great time saving technique.  Say you are making a series of maps 
with a common structure.  (ie a complex statue, bridge, vehicle, etc.)  You 
wouldn't want to recreate the same thing in each map.  One thing you can do 
is create a prefab.  The way I do this is to create a new map and the first 
element I add is a marker.  (Give the marker the name of the prefab you are 
creating)  Now I add to the wld all the elements of my prefab, while marking 
my initial marker as the "parent."  When I'm done I just save the wld file 
as normal.  Then you can go to your virtual tree, create a new directory 
called "Prefabs" and within that directory, you can insert the wld file you 
just created.  Now when you want to add that to your map, just drag and 
drop.


29) Changing colors on textures (email xavier_online@hotmail.com for further 
assistance)

Ever get tired of using the same old textures?  Don't have the time or 
ability to create new ones?  Well Serious gives you a new option, change the 
textures primary code spectrum from white to anything else.  Say you want to 
use a marble texture, but you've used it many times before.  Giving it a 
little green or red tint may just give you the feel you want.  To do this 
just select the poly, go to the texture tab and at the bottom you will see a 
variety of colored boxes,... select the big white one on the right side and 
alter away.


SWITCHES, DOOR CONTROLLER, TRIGGERING, ACTIVATION/DEACTIVATION, COPIER
(forager)

30/ SWITCHES

A switch is really like a trigger, but it has two positions on and off.
The main differennce between a trigger and a switch, is that a brush that has it's switch property selected to a particular switch can be "used/invoked" 
(using ENTER or whatever key is assigned for "use". 

Best way to build a switch routine is by having a Movingbrush,(your lever or whatever) 
selecting a switch for the Movingbrush, then select 
an on off target from the switch, to, preferably a trigger.
This trigger, should be responsible for actually moving the Moving brush,
as one of it's target options, as well as any further triggering required.

Why? Why not just trigger stuff from the switch? well, the switch has only one ON-OFF target. And, the switch selected as a switch for any particular Movingbrush,
does not automatically enable the Movingbrush to move. You need to do that seperately. Thre are other options, you could make the Movingbrush markers,
do the triggering, and simply point the switch to target the Movingbrush, but, it's probably safer to simple outsource the triggering to a trigger.

Again the switch is not frightening, 
it's just a way to get the player to be able to actually "use" a lever,
or whatever. 

31/ DOOR CONTROLLER

Door Controller is really like a switch! Really, it's a switch which is not "used" but, instead it's volumetric. All the moving is actually done by the moving brushes
that make up the moving part/s of the door. 
It's safest to target a trigger with the Door Controller, and let that trigger 
control the doors.
An advantage of outsourcing to a trigger, is that the trigger can enable multiple
events/triggerings to occur. Up to eight targets can be triggered from one trigger,
where as, from a touchfield you can only get two things to occur. From a switch only one thing. from a door only two targets (so you can do a left right doors move routine), from an item only on target, etc.

32/ TRIGGERS

Triggers are very useful. As stated above, they can send out various events/activation commands/triggering commands, 
to up to eight seperate targets at once. iconically they are well described.
By using a trigger, you can make wars happen immediately!
Push the plunger and chaos is imminent.
When first learning the editor, it is easy to begin by trying to use
for example a Touchfield to spawn an enemy etc, but, with more knowledge,
and maybe as your ideas grow more complicated, it becomes preferable to
get the Touchfield, for example, to target a trigger, 
and let the powerful trigger
do the hard work.

33/ ACTIVATION/DEACTIVATION.

Things such as touch fields, can be selected to be Active or not.
When they are not active, they don't do anything. 
A very useful feature, is that you can use triggers/switches/touchfields/
to either Activate or Deactivate something like say a MovingBrush.

34/ COPIER

A Copier entity, spawns a clone of whatever it is set to copy, when it is triggered.
this is useful if you want to drop ammo out of the sky etc.
Put an item you want copies of, in a room off from your main map.
Then target the item from a Copier. The logic is that the (Player) doesn't actually use the source object, that you wish copies of, but consumes the copies instead.
This is really like templates, but instead of spawning enemy templates,
your spawning items, via the copier. If you check out the KarnakDemo map,
near the background room, is the Copier master items room.























