Professional Documents
Culture Documents
19)
edited by Michael Harris
written by Croteam, Michael Harris, Entroper, Lutrosis, Forager, ...... your name can be here
(special thanks Croteam's Alen Ladavac and Davor Hunski for their patience and many answers
and apologies for any errors introduced by my editing)
(if I have overlooked or grossly mis-edited anyone, please let me know)
unlimited rights to Serious Sam developer Croteam, all other rights reserved
Table Of Contents
Preface
If you have not already done so, locate the .gro files that came with and were installed by Serious
Sam and the software development kit. Rename them to .zip. Then unzip them to the Serious
Sam directory (currently "C:\Program Files\Croteam\Serious Sam ...."), making sure to use
directory/folder option to assure that their directory/file contents get automatically dispersed to
the appropriate root or subdirectory locations within it. This provides numerous textures, entities
and enemies that can then be utilized within the editor.
If you have not already done so, work through the Navigation and Basic Room tutorials that
accompanied the editor (it is contained in the editor's help file), several times, to develop basic
familiarity and proficiency with the editor. Keep a copy of the editor keyboard shortcuts and the
basic room tutorial (and other tutorial/reference material) handy, both in hardcopy and online
help form. Also load up and explore and study the Karnak and other worlds that
accompany/comprise Serious Sam.
Before attempting major projects, do these and other tutorials and then do modest high risk low
cost experimentation, to prove out concepts that you are interested in employing. The editor
lends itself to this superbly. Given that no compilation of levels is required and that one can
quickly launch a test of the level currently being edited, from within the editor, one can rapidly
and repeatedly modify and test, modify and test, modify and test........ (Often, will be faster to try
and test, than to bug Croteam and others with questions...... save asking for the big original
questions/problems.) Save often, using a consistent naming scheme. I tend to embed a
date/time stamp in my file names, in the format of YYMMDDNN, where YY is two digit year, MM is
two digit month, DD is two digit day and NN is a sequentially assigned two digit number that I
restart at 01 each day and increment with each successive save during that day. Alternately, it
appears that the editor can be integrated with using the SafeSource (?) library/module
versioning/management product.
Serious Editor is a standard Windows application, which means that features such as menus,
select/copy/paste/etc., multilple documents (worlds), working/copying between same, etc. are all
robustly supported. Currently, context sensitive help is not supported.
Help does contain significant material in the forms of Tutorials, How To, Keyboard Shortcuts, Tips
and Tricks, etc.
There may be some additional setup that will be appropriate before beginning to use Serious
Editor heavily (best place to work on/store worlds is the Worlds subdirectory?). Virtual tree
setup/customiztion?
TOOLS: TGA file viewers/editors include Photoshop (excellent, but expensive), PaintShop (much
cheaper), ACDSee (shareware viewer), IrfanView (free viewer with limited editing abilities), .........
NOTE: If employing Serious Editor on a Windows 95 system and experience problem of the editor
crashing when you attempt to open a world (.wld) file that has a corresponding (identically
named) thumbnail (.tbn) file, the workaround is to avoid use of the mouse during the open.....
instead, do Alt | F | O | Shift+Tab | select file | Enter.... after which can use mouse again.
Feedback
This is, obviously, a very preliminary work-in-progress. Conversion to Word, Help or HTML seems
a likely step, at some point, as does the addition of graphics of menu/tool bars and buttons.
Please send suggestions, comments, criticisms, questions, etc. to me either on the forum(s) or at
mharris@fgi.net.
Contribute material and get your named added to the document.
MENU BAR
File
Open (Ctrl+O) -- Load an existing document (.wld world file) into the editor.
Can have more than one world loaded at the same time,
allowing for copying, etc.
Save (Ctrl+S) -- Save the current document (world) under its current file name
Save As (Ctrl+Shift+S) -- Save the current document (world) under a new file name
Save Thumbnail (Alt+T) -- Save the current perspective view of the current
document (world) as a thumbnail (small) image file,
with its name set identical to the world file name,
but with a file type of .tbn
(for player preview/selection in Serious Sam)
(NOTE: Thumbnail (.tbn) files are actually Serious texture files (dimensions, etc.?).
If one wishes to use such thumbnails as textures in Serious worlds,
perhaps for a "hall of world portraits" effect,
copy/rename the .tbn file to .tex and use it just as any other texture file.
Note that, at least in the test versions, the thumbnail files for Karnak and othe worlds
are renamed to .tex, using the following convention:
- remove ".tbn" from end of file name
- replace it with "Tbn.tex"
Serious Sam, at least in the test version, seems equally happy with these file sets:
TestWorld.wld
TestWorld.tbn
and
TestWorld.wld
TestWorldTbn.tex
Reason for use/support of the two scenarios has not been asked/determined.
Take Screen Shot (Alt+C) -- Save a shot of the current perspective view (?)
to a file in Targa format, with file type of .tga
Create Texture (Ctrl+T) -- Create a Serious texture file, with file type .tex,
of/from one of the following texture types:
- Normal texture (from .pcx or .tga)
- Animated texture (from .pcx, .tga or script .scr)
- Effect texture (from .tex., modified by effect class and effect)
Exit
Exit Serious Editor
Game
Current player and controls -- select player and controls for testing game
(player and control definitions appear to be shared by editor and game?)
(create/save in "Player settings" below or in Serious Sam itself)
- Available players -- 8 customizable/recallable player setups
- Player 0 thru 7 (can be renamed)
- Player's controls -- 8 customizable/recallable sets of control settings?)
(previously consisted of Universal Controls (keyboard+mouse),
Controls 1 thru 6, DEN's special setup)
- dummy....... (can be renamed)
Edit
Snapshot (Ctrl+W) -- remember entire current world state, at this point in time, for undo
(editor normally snapshots entire world state for undo, at each CSG operation
and optionally at each entity deletion.... (thanks to Alen Ladavac for this info)
Undo (Ctrl+Z) -- undo to world state before last CSG operation or (optionally) entity deletion
(editor does not currently do more detailed incremental action-by-action snapshotting)
Settings and utility -- (miscellaneous grouping of world, light and texture tools) (default)
(second fourth of first tool bar, offering
world settings for both editor and game,
light animation editor,
create texture)
Mip tools -- (level of detail (LOD) tools) (MIP stands for ????) (default)
(last third of third tool bar, offering
toggle auto mip brushing,
edit mip switch distance,
set manual mip factor to show previous mip brush,
set manual mip factor to show next mip brush,
clone current mip brush to more precise mip level,
create empty brush at more precise mip level,
clone current mip brush to rougher mip level
create empty brush at rougher mip level,
delete current mip brush)
Browse window -- (browse virtual tree used to organize textures, entities and enemies)
(default)
(lower two thirds of left side of screen)
(comprised of scroll list, scaling buttons and palette items,
from which items (textures, entities and enemies)
are selected for placement into the world)
Window
Help
Tip of the Day - Useful way to obtain one-a-day exposure/reminder on Serious features.
Settings and utility (grouping)-- miscellaneous world, light and texture tools
(second fourth of first tool bar)
- World Settings -- change world settings, for both editor and game
- Background color -- color button, for selecting color of unused portion of world
- Backdrop object -- background 3D object that one can reference against and/or model
over
(.lwo LightWave object)
- Top view picture -- reference image (.pcx, .tga), to be displayed as background
in top view window, against which can compare/design the world
(width, length, center x, center z ....... default to 1,1,0,0)
- Front view picture -- ditto
- Right view picture -- ditto
- Level name -- world's narrative name, to be displayed in
Serious Sam's "load custom world" worlds choice list
- Spawn flags -- levels of difficulty and custom features (?)
and single/multiplayer/custom game type supported
- Level of difficulty ?
- E -- Easy (and Tourist?, in which players health constantly improves)
- N -- Normal
- H -- Hard
- X -- Serious (Extreme)
- 1 -- custom/undefined level of difficulty ?
- 2 -- custom/undefined level of difficulty ?
- 3 -- custom/undefined level of difficulty ?
- 4 -- custom/undefined level of difficulty ?
- 5 -- custom/undefined level of difficulty ?
- Single/Multiplayer/custom game type?
- S - Single player
- C - Coop? Capture the flag multiplayer ?
- D - Deathmatch (scorematch?) multiplayer ?
- 1 -- fly-over?
- 2 -- custom/undefined game type ?
- 3 -- custom/undefined game type ?
- 4 -- custom/undefined game type ?
- 5 -- custom/undefined game type ?
- 6 -- custom/undefined game type ?
- Edit mission description -- mission/wworld narrative description
(currently not used, other than for documentation/notes)
(could be accessed from code and displayed in-game. Alen Ladavac)
- Light Animation Editor -- create/edit light animation files
(animation file name is displayed in title bar of the dialog box)
(each animation file can contain multiple named animations)
- Animation -- light animation (within current animation file) selection list
- Add -- add light animation to current light animation file
- Delete -- delete light animation from current light animation file
- Name -- current light animation that is being edited
- Speed -- seconds per frame (fractions of seconds supported)
- Number of frames -- length of animation in frames
- animation edit bar (scrollable)
(bright/dark color/length indication?,
green start of /end of dots,
delete frame(s) key)
- Load -- load light animation file
- Save -- save light animation file under current name
- Save As -- save light animation file under new name
- Close -- close light animation file and dialog window
- Create Texture -- Create a Serious texture (.tex),
of/from one of the following texture types
(are resulting textures just internal to current world
or can be exported from browser's texture pallette?):
- Normal texture (from .pcx or .tga)
(?name/save as .tex into some Serious directory?)
- Animated texture (from .pcx, .tga or script .scr)
(?supply/specify images (via script .scr or sequential names .pcx or .tga?)
to be combined into an animation,
then name/save result as .??? animated texture file?)
- Effect texture (from .tex., modified by effect class and effect)
- Effect texture (name)
- Base texture (directory/name of file and width and height in pixels)
- Width and Height (in pixels, by powers of two, from 1 to 256)
- Size (meters) (effect texture's square (?) width and height
size in world, by powers of two, from 0.25 to 1024
- Effect classes & Effects (within classes)
- Water Fast and
Water Medium and
Water Slow and
?blank
- Raindrops
- Raindrops Big
- Raindrops Small
- Random Surfer
- Oscilator
- Vertical Line
- Horizontal Line
- Plasma Tile and
Plasma Up and
Plasma Up Tile and
Plasma Down and
Plasma Down Tile and
Plasma Up Slow and
Fire
- Point
- Random Point
- Shake Point
- FirePlace
- Roller
- Fall
- Fountain
- Side Fountain
- Lightning
- Lightning Ball
- Smoke
- Rendering speed (of effect texture being worked on)
in millisceonds
- Create -- save effect texture
using current Effect texture name for file name
- Create As -- save effect texture
under new effect texture file name
- Remove FX -- ? delete current effect texture file ?
- Cancel -- cancel creation of/changes to
current effect texture being worked on
- Checked background (check box) -- provide a chequered background
as background/contrast to non-solid/translucent effect textures?)
TOOLBAR (2ND)
NOTE: Repeated mention is made of "second layer" and occassional mention is made of
"layer mode" (CSG mode). This gets a bit confusing.
As best I understand this, in short, here's the deal.
When working in Serious Editor, things can be in four possible locations:
- in the current world being edited ("first layer"?)
- in other worlds, which can be opened as additional documents/world
or made available as virtual tree browser palette items
- in the Windows clipboard, where they have been copied to
- in the "second layer" in which primitives or more complex items pending from a CSG operation
float/reside until the CSG operation is finalized as an add, subtract or join.
NOTE: "Triangularization" is a powerful option supported for a number of the CSG tools.
It enables the creation of complexly shaped surfaces on primitives,
via manual manipulation of vertices and/or use of height/displacement bitmap files.
- Create Torus Primitive -- specify/derive less common primitives from a torus primitive
(including torus/donut, spiral)
(note: requires use/specification of triangularization.......
just keep hitting ok until can go back up to dropdown list in middle
of this same toolbar and select a triangularization type)
(Croteam has indicated will be fixed so that one may select triangularizatioin type first.)
- Global (read only)
- thumbnail image of texture to be assigned
- path/name of texture file(s)
- selected polygons
- selected sectors
- selected entities
- Position (location and orientation of primitive)
- X, Y, Z (in meters/yards from world origin)
- Heading, Pitch, Banking (in degrees)
- Primitives (gross/fine dimension, spiraling, segmentation,
number of full/partial turns, solid/hole, etc.)
- W -- the thickness of the torus ring,
along a line running from torus center out through torus ring
(similar to thickness of a tire)
- L -- the thickness of the torus ring,
along a perpendicular line running through torus ring center
(i.e. parallel to torus axis of rotation)
(similar to width of a tire)
- H -- spiral offset per complete turn
0 - no spiraling (i.e. a single/simple/closed donut)
greater than 0
- spiraling (offset of torus ring center, per turn, in ????)
- Slices in 360 -- number of slices/segments required for complete
donut/complete turn)
0,1 - unuseable/crashes
2 - useable?/polygonal sheet?
3 - triangular torus
4 - square torus
5 or more
- increasingly rounded torus
(default is 12)
- No. of slices -- number of slices/segments actually desired
(for complete turn, must match "slices in 360")
(fewer gives partial turn)
(more gives multiple whole/partial turns)
(more is needed when spiraling)
- Base vtx -- number of vertices in cross section of torus ring
0,1,2 - unuseable/crashes
3 - triangular cross section
4 - square cross section
5 or more
- increasingly round cross section
- Radius -- distance from torus center to torus ring center
(note: a useful figure to keep for future reference,
for when applying torus type gravity
to a torus)
- Room (primtive is to be treated as a solid or a hole)
- if checked, treat as room (hole, typically used
to cut hole in solid world/brush)
- if not checked, treat as non-room (solid, typically
used to add solid to empty space)
(note that the specified room/non-room primitive
may in turn be added or subtracted, such that final
result depends upon room/non-room,
solidity/emptyness of target space
and add or subtract of specified primitive
to/from target space...
this is presumably offered to provide flexibility
and suit the world builder's personal preference)
- History (list of previously specified/created primitives)
(productivity feature)
(quickly select/re-use setting of previously added primtive,
rather than manually supplying again)
- Outer (gross/fine dimension toggle,
specifying whether W ("tire thickness)
and L ("tire width") bound the
torus ring's faces (results in slightly larger ring)
or vertices (results in slightly smaller ring)
- Polygon color -- color button for selecting/copying/assigning
color and/or color code to specified primitive's polygons
- Sector color -- color dialog for selecting/copying/assigning
color to ??????
- Create Stairs Primitive -- specify/derive less common primitives from a stair primitive
(including straight, circular and spiral stairs)
(solid/hole)
- Global (read only)
- thumbnail image of texture to be assigned
- path/name of texture file(s)
- selected polygons
- selected sectors
- selected entities
- Position (location and orientation of primitive)
- X, Y, Z (in meters/yards from world origin)
- Heading, Pitch, Banking (in degrees)
- Primitives (dimension, stepping, spiraling,
number of full/partial turns, solid/hole, etc.)
(note: straight (non-spiral) vs. spiral specification
changes the variables presented/used
in specifying the primitive)
- W -- stair/step width
- L -- step length (depth)
(not used for spiral stairs)
- H -- step height
- Slices in 360 -- number of steps in a complete turn
(applies to spiral, not straight, stairs)
- No. of stairs -- total number of steps in stairs
- Radius -- distance from spiral stairs center to step outer edge
- Top -- (treat top surfaces of steps as.....)
- Stairs - as individual steped surfaces
- Slope - as single slope
- Ceiling - as single level top (flush with top of top step)
- Bottom -- (treat bottom surfaces of steps as.....)
- Stairs - as individual steped surfaces
- Slope - as single slope
- Floor - as single level bottom (flush with bottom of bottom step)
- Room (primitive is to be treated as a solid or a hole)
- if checked, treat as room (hole, typically used
to cut hole in solid world/brush)
- if not checked, treat as non-room (solid, typically
used to add solid to empty space)
(note that the specified room/non-room primitive
may in turn be added or subtracted, such that final
result depends upon room/non-room,
solidity/emptyness of target space
and add or subtract of specified primitive
to/from target space...
this is presumably offered to provide flexibility
and suit the world builder's personal preference)
- Spiral -- non-spiral (straight) vs. spiral (spiral)
- History (list of previously specified/created primitives)
(productivity feature)
(quickly select/re-use setting of previously added primtive,
rather than manually supplying again)
- Outer (gross/fine dimension toggle,
specifying whether Radius bounds the
stairs outer faces (results in slightly larger stairs)
or outer vertices (results in slightly smaller stairs) ?
- Polygon color -- color button for selecting/copying/assigning
color and/or color code to specified primitive's polygons
- Sector color -- color dialog for selecting/copying/assigning
color to ??????
- Create Sphere Primitive -- specify/derive less common primitives from a spherical primitive
(including spheres and diamonds
?and possibly 2D or semi-2D spherical/diamond polygons?)
- Global (read only)
- thumbnail image of texture to be assigned
- path/name of texture file(s)
- selected polygons
- selected sectors
- selected entities
- Position (location and orientation of primitive)
- X, Y, Z (in meters/yards from world origin)
- Heading, Pitch, Banking (in degrees)
- Primitives (dimension, roundedness, solid/hole, etc.)
- W, L, H (width, length, height in meters/yards)
(bounds on vertices)
- Meridians -- number of vertical slices through sphere
at north and south poles
(similar to natural slices in orange fruit)
- Parallels -- number of horizontal slices through sphere
parallel to its equator
- Stretch x -- not applicable
- Stretch y -- not applicable
- Room -- (primitive is to be treated as a solid or a hole)
- if checked, treat as room (hole, typically used
to cut hole in solid world/brush)
- if not checked, treat as non-room (solid, typically
used to add solid to empty space)
(note that the specified room/non-room primitive
may in turn be added or subtracted, such that final
result depends upon room/non-room,
solidity/emptyness of target space
and add or subtract of specified primitive
to/from target space...
this is presumably offered to provide flexibility
and suit the world builder's personal preference)
- History -- (list of previously specified/created primitives)
(productivity feature)
(quickly select/re-use setting of previously added primtive,
rather than manually supplying again)
- Equal parallels -- ????, doesn't work?
- Polygon color -- color button for selecting/copying/assigning
color and/or color code to specified primitive's polygons
- Sector color -- color dialog for selecting/copying/assigning
color to ??????
- Cancel CSG operation (Num Del) -- cancel (do not create) primitive that you are
currently specifying (this drops you out of red/layer CSG mode)
- Add second layer to world (Num+, Shift + Num+) -- do CSG combining of two world layers
- Add second layer to world (Num+) --
add second (temp/specification/pending) layer of world
to first (cumulative/developing) layer of world
- Add with reverse priority (first to second?) (Shift + Num+) -- ????
(Example. Normal add of box into a wall, flat aligned, would result in the face of the
box
aligned with the wall remaining visible. Add with reverse priority results in the face of
the
box not being visibile. Not very useful, more of an obsolete feature.) (Alen Ladavac)
- Remove second layer from world (Num-) -- do CSG subtraction between two world layers
by subtracting second layer from world
- Join layers (L) -- join second layer into world, without CSG operations between the two
(objects/entites brought in from the second layer do not get modified
and do not get combined with existing ones, leaving them free
to be moved independantly later?)
(useful for avoiding splintering...)
(also useful for temporarly laying in primitives to be used for reference sake,
which can subsequently be removed without affecting the world)
- Join selected sectors (Shift+Num /) -- join selected sectors back into a single sector
(resolution of conflicting sector properties?)
(the next three buttons allow viewing one, two or three of the textures at the same time)
- Toggle texture 1 visibility (Ctrl+Shift+1) - toggle visibility of backmost texture (#1) on/off
- Toggle texture 2 visibility (Ctrl+Shift+2) - toggle visibility of middle texture (#2) on/off
- Toggle texture 3 visibility (Ctrl+Shift+3) - toggle visibility of frontmost texture (#3) on/off
(the next two buttons allow controlling viewing and calculation of shadows,
for editing convenience and performance)
- Toggle shadows on/off (H) -- toggle between seeing the world lighted and shadowed,
versus a faster full-bright even pseudo-lit view with no lighting and shadows
(the latter is useful, at least until one has the world lit
and may continue to be useful when focusing on
things other than lighting and shadows)
TOOLBAR (3RD)
- Reset Viewer -- reset viewer's target to origin of world (i.e. all windows to look at 0,0,0)
- Circle Editing Mode (Tab) -- switch sequentially between polygon, sector and entity modes,
which is indicated on status line by color and text as follows.....
yellow=polygon, green=sector, blue=entity
(note that when CSG primtive is in the process of being specified,
the status line shows red=CSG, indicating CSG ("second layer") mode)
- Toggle Frame Rate (Ctrl+Alt+R) -- show/hide frame rate display in perspective view window
(shows overall frame rate, detailed timing breakout, etc.)
- Test Game (T) - test game in current non-full size perspective view window
(little or no start time, fast due to smaller size,
useful for studying composition of scene being viewed,
can be resized before/after testing started by dragging lower right corner)
- Test Game In Full Screen (Ctrl+T) -- test game in full screen mode
(little or no start time, perhaps slower due to larger size,
useful for studying full screen immersive experience,
hit Esc to return to editor windows)
- Previous Mip Brush ( [ ) -- set manual mip factor to show previous mip brush
- Next Mip Brush ( ] ) -- set manual mip factor to show next mip brush
(Move the manual mip-distance, so you can see next/previous mip.) (Alen Ladavac)
The top third (vertically speaking) of the left side of the Serious Editor screen
is occupied by a property combo box that enables one
to view/set selected entity type, name, properties...)
Properties vary by entity type and can get quite numerous and complex.....
including name, type, falloff, target, parent, child, .............
VIRTUAL TREE
The middle third (vertically speaking) of the left side of the Serious Editor screen
is occupied by two associated scrollable windows/lists employed in managing
and selecting from a virtual tree that is used to hold and organize
textures, entities, enemies and custom items for whatever world is being edited.
One can manage and maintain virtual tree(s) and their structure
by right clicking on the root or a subordinate category
and doing the following:
- Create directory - create another directory within the virtual tree
- Delete directory - delete directory from within the virtual tree
- Rename directory - rename directory
- Directory tree shortcuts (W) - assign 0-to-9 as shortcuts to categories within the tree
(stored via Ctrl+#)
(invoked via "W", then #)
- Load virtual tree - load a (different) virtual tree
- Save virtual tree - save the updated current virtual tree
- Save As virtual tree - save the updated current virtual tree under new file name
Below the small virtual tree window is a small button bar which one may use to determine
at what size a directory's items will be displayed at, below in the browser (palette) area:
-S - small thumbnail images, arranged eight across
- M - medium thumbnail images, arranged four across
- L - large thumbnail images, arranged two across
- XL - extra large thumbnail image, one only
- D - small thumbnail image plus description (text), in downward list
- F - small thumnail image plus file location/name, in downward list
Textures\ for textures
Classes\ for entities
Classes\ for enemies
Below that is the item browser (palette) from which items can be dragged and dropped
into the world being worked on. One can manage and maintain category items,
by right clicking within the browser and doing the following:
- Insert items (textures, enemies, entities, entire worlds)
NOTE: One can insert an entire world, wordlet, skybox, etc. into the virtual tree,
providing a very powerful productivity/library capability
To drag the current world into the virtual tree,
save the world,
be in polygon or sector mode,
Alt+drag from the world's perspective view to the lower palette portion of virtual tree
browser area
(the thumbnail image may be messed up, but the resulting palette item should work)
(thanks Alen Ladavac)
(one can also do an insert of a world to the virtual tree,
via an Alt+drag of a world from the perspective view window to the browser?)
- Delete items
- Create and add texture (as discussed in File menu's Create Texture entry documentation)
- Recreate texture ?????
(use this to refrex the .tex file, if you have changed the original .tga file that
the texture was created from)
(Alen Ladavac)
- Set as current texture (LMB x 2) (set current texture as default texture for new primitives)
- Export texture
- Select by texture(s) in sectors ????
(Selects all polygons that have that texture on current active texture layer in selected
sectors.)
(Alen Ladavac)
- Select by texture(s) in world ????
(Same as above, in entire world.)
(Alen Ladavac)
- Select except texture(s) in world ????
(A complement of the last one.)
(Alen Ladavac)
- Add textures from world ????
(Adds all textures used in the world to the current virtual directory.
These last four items are used in conjunction to locate unwanted textures
when optimizing texture usage on large levels.)
(Alen Ladavac)
- Select for drop marker ????
(Probably largely unused or obsolete.
Was used to make entities drop different classes of markers, when using "D".
Have since added a feature that enables each entity class to tell the editor
which class of marker to use/drop for it.)
(Alen Ladavac)
- Convert to class ????
(This goes with "ModelHolder2" entity.
Older "ModelHolder" is obsolete class.
We had to change the class's implementation in such a way that prevented the old
entities from loading.
This would have broken all the existing worlds, so we created a new class of
"ModelHolder2"
and added this "convert to class" option that makes a neew entity of the new class
and copies all properties with same name/type to it.
You would generally select a class and use "convert to class" to make it converted.)
(Alen Ladavac)
- Show using > (small, medium, large, etc. display of textures as discussed above)
- Directory Tree Shortcuts (W) -- 0-to-9 used as shortcuts to tree categories
1. Entities\
2. Enemies\
3. Textures \
4. thru 10. <ROOT>
Press numbers to choose directory
Press CTRL+numbers to store directory
(hit Esc, to get out of )
Entities (1) -- basic markers, items, switches with which to make the world react to players
To place an entity of a specific type, drag its basic type from the entity palette to the world,
then use the Properties dialog to select the Type (Y) property
and then set the entity to the desired type.
NOTE: Davor Hunski will try to provide more detailed descriptions of all entity classes,
probably after the gold.
- Switch (on/off wall switch, appears in world as dark cube with X/Y/Z axis arrows)
Multiple types:
- On/Off - toggle ?? on/off
- Once - one time only
- WatchPlayers (eyeball)
- Used to trigger events, based on player visibility to it ????
(Much more imprecise/simple/inexpensive detector of player's,
than TouchFields or DoorControllers, in most cases.
(I may have mangled this one. MH)
(Alen Ladavac)
- Enemy Spawner (newly hatched blue chicken peering out of broken egg,
appears in world as spiked star)
- enemy factory
(?? how specify enemy type?)
Multiple Types:
- Destroyable - can be destroyed?
- Respawner - ??
- Simple - ??
- Teleporter - ??
- Triggered - ??
(also useful due to less memory consumption than
actual enemy? must have one representative enemy template
somewhere for it to draw from)
- Bouncer (circular trampoline with upward red arrow)
- bounces/throws players (and enemies?) in specified manner
(and gravity respecting weapons?)
(additional entities that do not appear in the virtual tree browser entity palette by default
follow.....)
- WorldSettingsController (sunset/daylight graphic on box)
-- references heigh map, etc. terrain related?
- Camera (movie camera) -- for generating in-game and/or demo fly through footage
(examples from test: fly over of pool area,
cut away to spike pit being filled with sand when lever
pulled)
- Camera Marker (still camera) -- marks points along movie camera's movement/flight
- Copier (two sheets of paper (appears as photocopier-like entity icon within world when
editing)
-- non-enemy entity duplicator/spawner (requires presence
of entity
template elsewhere)
- ? enemy spawner ?
- Devil Marker (large X) (appears as large blue X entity icon in world when editing)
-- ?
- Effect Marker (large X accompnaied by "FX") (appears as cube with X,Y,Z arrows)
-- ? related to
appearance/disappearance/blending/shaking of
models and/or players ?
- Key Item (key) (appears as ankh entity icon in world when editing)
-- key needed to trip/open something somewhere in world
types:
- cobra
- element-Air
- element-Earth
- element-Fire
- element-Water
- Eye of Ra
- Feather of Truth
- Gold amon
- Gold ankh
- Gold ankh dummy key
- Gold heart
- Moon Key
- Ra Key
- Scarab
- Scarab dummy
- Sphinx 1
- Sphinx 2
- Stone ankh
- Wooden ankh
- Message (man holding sign) (appears as open book entity icon in world when editing)
-- define Netricsa messages?
- Player Action Marker (Sam with arrow pointing at small pyramid) (appears as small
pyramid)
-- ???????
- Pyramid Space Ship Marker (spaceship over large X) (appears as cube with X,Y,Z arrows)
-- ?????????
Enemies (2) -- enemies/bots that the player will encounter and fight
TOOLS INFO
Tools Info (Q) -- pop-up window, used for polygon/entity/sector mode related
viewing and editing of settings of currently selected item
Polygon mode
- Global (read only display of related information)
- Selected polygons
- Selected sectors
- Selected entitites
- path/name of texture file(s)
- Polygon
- Translucent -- toggle player ability to see through to other side?
- Portal -- toggle player ability to see through to somewhere other than other side?
(or to function as one of multiple components involved in accomplishing this)
- Passable -- toggle player ability to walk through ?
(generic ability to walk through or specific to portals?)
- Stairs -- related to friction/traction/change in elevation?
- Invisible -- keep but disregard in terms of rendering and gameplay?
(previously called "Ignored")
(Not rendered but can be used e.g. for creating exact collisions for models.)
(I may have mangled this. MH)
(Alen Ladavac)
- Detail -- ????
(Not subjected to visibility determination/calculations.
Makes rendering go faster when dealing with lots of small polygons.)
(Alan Ladavac)
- Link -- related to portaling?
- Occluder -- block or stop visibility determination/cacheing of world behind it?
(may be equivalent to Quake III's "caulk")
(holds the potential to be very useful useful in optimizing frame rate
when dealing with complex architecture and terrain)
(Included in visisbility determination/calculation, but never rendered.
Usually you would put one large occluder behind a lot of small detail
polygons to make fast visibility calculations.)
(Alen Ladavac)
- Surface -- surface friction type
- Standard
- Ice
- Standard-no step
- Standard-high steps
- Ice climbable slope
- Ice sliding slope
- Ice less sliding
- Roller Coaster
- Lava (damage/pain to player walking on it)
- Sand
- Climbable slope
- Standard-no impact
- Water
- Mirror -- mirror type
(Not more than one mirror in same scene is supported currently,
so only first one is needed.
Also, mirrormarkers appear here, when you make warp-portals.)
(Alen Ladavac)
- None
- Std mirror 1 through std mirror 8 (????)
- Marker not set ?
- Pretender distance -- ????
(numeric value, default 0)
(A portal that becomes a wall after a certain distance.
Use to create simple LOD.
Put a texture of cave entrance (made from a screenshot) over a real cave entrance
portal
and make that portal be a pretender. That way you don't have to render the cave
interior when viewed from afar.)
(Alen Ladavac)
- Shadow (????)
- Don't cast
- Don't receive
- Accurate
- Dark corners
- Full bright
- Dynamic only
- No dynamic
- Directional
- Dir. ambient
- No diffusion
- Gradient - variation in shadow across the polygon ?
- None ?
- Marker not set ?
- Illumination - types of self-illumination ?
- Lava 1, 2, 3 - surface illumination?
- Misc 1,2, 3 - ????
- Vitraj 1, 2, 3 - internal illumination ?????
- Blending - ????
- Opaque
- Shade
- Blend
- Add
- Shade pulsating
- Blend pulsating full
- Add pulsating
- Blend pulsating half
- Stormy sky blend
- Stormy sky shade
- Pyramid plate appearing
- Activated plate 1
- Activated plate 2
- Activated plate 3
- Activated plate 4
- Activate pyramid morph room
- Cluster size - ?????????
- default 2m
- range from 3.125cm to 1024m
- Color button
- Texture
- ... - browse/select texture file
- None - ?
- texture info (dimensions in meters, pixels, ?/?)
- texture file path/name
- Texture 1 / Texture 2 / Texture 3 -- selection of which texture layer to work on
- Offset (two values) - 2D slide of texture
- Stretch (two values) - 2D stretch/compress of texture
- Rotation (two values) - 2D rotation of texture
- Scroll -- real time scrolling/sliding/rotation of texture
- None
- R (?) (various speeds)
- Dummy 1, 2, 3
- Water movement (various speeds)
- Stormy sky appearing
- Rotation Left and Right (various speeds)
- D (?) (various speeds)
- Blend - ????
- Opaque
- Shade
- Blend
- Add
- Shade pulsating
- Blend pulsating full
- Add pulsating
- Blend pulsating half
- Stormy sky blend
- Stormy sky shade
- Pyramid plate appearing
- Activated plate 1
- Activated plate 2
- Activated plate 3
- Activated plate 4
- Activate pyramid morph room
- Clamp U/V -- ????
(U=horizontal axis in texture, V=vertical axis)
(Alen Ladavac)
(For those who don't know what "clamp U/V" does, it makes texture nonrepeating.
When you give OpenGL a primitive, you supply texture coordinates as floating point
values.
0.0 is the left edge of the texture, 1.0 is the right edge. If you don't have the texture
"clamped", it will repeat if you supply coordinates outside of the range (0.0 to 2.0 for
example would draw the texture twice over the poly). When the texture is clamped,
then
all area outside of the 0.0 - 1.0 range is drawn as the border of the texture. It's kind
of
hard to explain. If your texture looked like:
1234
5678
9012
3456
(please pretend that each digit represents a color)
And you gave OpenGL the coordinates 0.0, 1.5, the following would be drawn:
123444
567888
901222
345666
This should explain why using the clamp U/V option helps eliminate the nasty border
pixels
when you make a sky box. Those incorrect border pixels are caused by the texture
repeating a bit at the edge, so instead of repeating, it just draws the edge pixel once
more,
smoothing out the edge nicely.)
(Entroper)
- Discardable -- ????
(Obsolete)
(Alen Ladavac)
- After shadow -- make texture immune to shadowing ?
(NOTE: Useful for "lighted windows on building/spaceship" effect.)
(The texture is rendered after the shadowmap, so the shadow map
doesn't darken it.
Use this with Add or Blend modes to add lights on spaceships, futuristic buildings.
The SkyCity of Sirius was built using these :) ).
(Alen Ladavac)
Entity mode
- Global (read only display of related information)
- Selected polygons count
- Selected sectors count
- Selected entitites count
- path/name of texture file(s)
- Position
- X, Y, Z
- Heading, Pitch, Banking
Sector mode
- Global (read only display of related information)
- Selected polygons
- Selected sectors
- Selected entitites
- path/name of texture file(s)
- Sector
- Name -- assign name to sector (rules/guidelines/usage?)
- Content -- contents of sector
(affects player)
- Air (walk, fall)
- Water (swim, drown)
- Lava (walk/sink, die)
- Cold Water (swim, shake, hypothermia, drown quickly)
- Spikes (die) (death zone)
- Desert Heat (sweat, dehydration, slow death)
- Force -- gravity (or other?) acting on player and gravity sensitive entities
- Normal U, D, E, W, N, S (normal 1G gravity oriented six different ways)
- Zero G (no gravity, how move within?)
(Similar to swimming/flying. Try it.)
(Alen Ladavac)
- unused ????
- gravity marker (if present) (defined as parallel, cylindrical, central (spherical))
- Fog -- fills lower portion of sector?
- fog marker (if present)
- Marker not set
- Haze -- fills entire sector, with differing color based on direction of view
- haze marker (if present)
- Marker not set
- Environment -- ? acoustic nature/environmental sounds ?
- Normal
- Generic
- Small room
- Medium room
- Big room
- Corridor
- Arena
- Long Corridor
- Small Canyon
- Big Canyon
- Open Space
- Cave
- Sewers
- Underwater
- Ambient color -- color button for color that fills the sector
Right Click Menu - Entities mode (in perspective or top/from/side view windows)
(i.e. when dealing with primitives, enemies, etc. already in the world)
- Create primitive
- Conus
- Torus
- Stairs
- Sphere
- Terrain
- Select active brush To make sure which brush entity is current for CSG
(Alen Ladavac)
- Select: (select entities, for identification or modification sake)
- All entities
- All sectors in entity Ctrl+Alt+A
- All sectors entity is in Alt+C
- Clones Ctrl+E
- All of the same class Ctrl+Shift+E
- Target entity \
- All target entitites Ctrl+\
- Entities who target Shift+\
- Clear all targets
- Reoptimize brushe(s) Always use this after dragging vertices around.
Otherwise the brush won't work properly.
(Alen Ladavac)
- Discard shadows Sometimes the automatic shadow-recalculation system
fails to detect (or intentionally doesn't detect)
some shadow changes and doesn't recalculate the
shadow maps.
Use this to force the recalculation.
(Alen Ladavac)
- Fall down To make sure the entity is resting firmly on the ground,
neither floating above, nor being intersected with the
floor.
(Alen Ladavac)
- Copy Ctrl+C
- Clone Ctrl+Shift+C
- Update clones Ctrl+Shift+U
- Paste Ctrl+V
- Paste into layer Ctrl+Shift+V Paste into second layer?
Use when you have more than one entity in the clipboard to paste.
If you paste them normally (into the world (first layer)),
they will snap to grid when moving.
If you paste them to the second layer, you can move them as a
group,
and join layers when you are happy with their placements.
(Alen Ladavac)
- Delete
- Mirror and stretch entire world Stretch or mirror it.
A bit slow, but very useful sometimes.
Entities that are not stretchable remain at their sizes,
but are placed at appropriate positions.
(Alen Ladavac)
- View properties see "Change rendering properties of buffer 11." below
Change rendering properties of buffer 11 ("View Properties" sub-menu of most right click menus)
Model rendering
- Bounding box
- Wire frame
- Shadows default
- Hidden lines
- Render editor models default (show editor objects placed in
world)
- Texture type:
- No fill
- White color
- Surface colors
- On colors
- Off colors
- Texture (default)
Load
Save
OK
Cancel
TERMINOLOGY AND DEFINITIONS
Constructive Solid Geometry (CSG) is the construction of complex shapes through the addition
and subtraction of (usually) simpler shapes to/from some (usually) simple starting shape.
"CSG operations don't need to be performed only with primitives. Lets say you want to
subtract a very complex shape from a piece of your world. First, build the shape
as a new layer (add the first primitive of the shape as a new world base, the add all
other primitives to it). Then, go to entity mode and select the brush you just build,
which you want to subtract from your original world base. In the dropdown box
at the topleft, have the world base to be subtracted from selected. Then just hit
the "subtract" button, as you would for a regular primitive."
(Lutrosis)
"There is only one layer - "second layer". It is on while the current mode is CSG
(red indicator). You can get there by:
1) pressing one of the CreateNewPrimitive buttons on toolbar (or Numpad Enter),
2) drag-and-drop another world from virtualtree or from windows explorer or
3) pasting entities that you have copied over from another world opened in another window
(use Ctrl+Shift+V to paste into second layer, instead of doing a normal pase).
.
You can copy entire world from another window. You can copy entire world
if you press Ctrl+C in entity mode while no entities are selected.
.
When you have something in the second layer, you can either make a CSG, or just join it.
If you join (JoinLayers, or "L"), all the entities in the second world are just laid down into
the base one. No CSG applied. If you do a CSG, the first worldbase will be CSG-added
(or whatever else), while all other entities will still be joined into the world. This is useful
for adding ready rooms with torches, etc.
.
Also, there is this thing where you can do a CSG without a second layer. Example, if you
have a column that is a separate non-zoning brush. Choose current brush for CSG to be the
base world. Select the column in entity mode and press CSGAdd. The column will be added
to the world.
.
(Alen Ladavac)
A tip from Lutrosis regarding cleaning up odds and end fragmentary sectors
left by the process of building up a complex object via CSG:
Select the main empty space sector around the object
and the odd-and-end fragmentary sector(s)
and add them together (Join Sectors?).
Falloff:
Hotspot:
These two are common in 3d graphics to define a linear ramp for influence of e.g. a light.
Everything nearer than hotspot is at full intensity, everything further than falloff is at zero
intensity.
Interpolate linearly in between.
(Alen Ladavac)
Naming Practices:
At own preference so far.
People used to prepend important names with _, or __, or ___, etc. to impose hard-wired name-
sorting order.
(Alen Ladavac)
Parent/Child:
When a parent moves, its children move with it.
The relation is transitive (or may I save recursive).
Note that if the child is a moveable entity that tries to move at the same time as its parent
(e.g. to have the child move relative to the moving parent, rather than relative to the world
reference frame)
may not work sometimes/properly (as noted by Lutrosis).
Also, children's collision detection (if enabled) is not consideered during movement of their
parent,
which can lead to strange results, so best avoided.
The primary intention of this option was to enable one to child models and lights
as decorations on/to parent moving brushes.
Also, some entities such as as movingbrushes and modelholders that can be destroyed
send an event to all their children when you blow up the parent, such that if the children
are marked properly, they will be destroyed too.
That way, torches (parent) are destroyed together with their fire, light and lensflare.
See KarnakDemo for examples.
(Alen Ladavac)
Sounds:
All sounds in the world are always tested against viewer in each frame.
All those out of falloff are quickly rejected.
Having too many can bog the engine down.
In the final version, envsounds (environmental sounds) are used
to provide effects such as/similar to wind sounds.
(Alen Ladavac)
Speed of Sound:
Speed of sound is finite and changeable. And there is a doppler sound effect.
Speed of sound is currently set very high, since some people thought
the real world speed (330) was a bug.
This can be adjusted via the console (or presumably the config files MH).
We will probably extend the sound mixer significantly, later through patches.
(Alen Ladavac)
Strong (lights):
Generally makes light "brighter", by pushing the hotspot toward the falloff.
Not used much?
(Alen Ladavac)
Targetting:
Used for various purposes.
Mainly for sending events and moving along paths marked with appropriate markers.
Depends on each entity class.
Zoning:
Sectors of zoning brushes define zones in the world. These are then used for gravities,
fog/haze, content types.
Nonzoning brushes are details like columns and similar.
Note that you can make world from several separated zoning brushes, as long as you mark the
polygons
along borders as 'portal'. Those portals must align nicely to each other, and it will work as if in
same brush.
These can be useful e.g. for LOD-ing a building It is best to see how the small kiosks and the
third big temple
in the yard of three temples in the KarnakDemo level are built. They use that technique.
(Alen Ladavac)