ELE (Enhanced Level Editor) Documentation


Key features of ELE:

1. Polygon based modelling

2. Support for grouping

3. Visibility Layers

4. Support for slipgates, doors, switches

5. Object placement


The Editor

As opposed to most leveleditors editors on the market, especially those for QUAKE based engines, this editor does not work with so called brushes, but with polygons and polygon edges directly.

To facilitate manipulating groups of level elements, there is a grouping feature, which groups a set of selected polygons together.

Currently every polygon may only be part of one group, and there is no hierarchical grouping. This will be changed in future versions.

Since the polygon is the unit of manipulation, there is basically no constraint about the kind of polygons used and the angles between them (compare that to QUAKES brushed which must be concave).

However it is best to restrict youself to certain well defined angles to avoid excessive plane splitting in the level wehich occurs when the BSP tree is generated. The engine generates a file with extension GBP and the same file name as the original level file (tha is, if the level was TEST.GPT, a TEST.GBP will be generated), which shows the planes after BSP splitting occured - this file can be read into the leveleditor to show the splittings.

Another output of the engine is the TEST.BSP (where TEST stands for the actual level name) file, which shows the nodes of the generated BSP tree.
The BSP tree is a binary tree, with left and right nodes. A detailed explanation of that tree can be found in the ENG32 documentation.
This file can also be fed back into the leveleditor, after having loaded the GBP file - it can be displayed as graphical tree and can be used to determine which planes cause which splits. This is normally not necessary - it is only interesting in case of errors or for performance tuning. See the corresponding Tools section.
Possible other uses of that file would be graphical or statistical tools, which help to check, if the tree is rather balanced, or degenerate. A degenerate tree is one that has lets say only left branches or only right branches or something like that, and would be bad in terms of performance, since such a tree is in fact nothing more than a list, and operations on such a structure take time of o(n) instead of time of o( log n ).

To enable detailed editing of polygons and edges there are two selection and working modes in the editor:

Polygon Selection and Point Selection (found in the selection submenu)

When moving polygons or polygon groups as a whole, switch to polygon selection mode.

When manipulating polygon shapes, switch to point selection mode.

All Move, Rotate, Size and similar Tools only work on either polygons OR points, depending on the selection mode.

The Menues in Detail

File Menu

New
Open
Save
Save As

Rather self explaining.
A word about the files:

The level definiton is a GPT File together with a GOB File. The GPT File contains the static parts of the world, which will at engine runtime be inserted into an immoveable spatial subdivison structure (BSP Tree) - that is, the polygons making up the walls, floors, ceilings, water, etc...
The GOB File contains the objects like lights, monsters, triggers.
There is another Format called BPT, which is not yet supported - this is a more compressed, binary format for final delivery of levels and will be incorporated in a later version of the engine and the leveleditor - do NOT use it now.


Load Sounds
Load Object Classes
Load Textures

These funtions load various resources needed by the engine, i.e. sounds, object classes and textures. See the chapter about resources for more details on that.

Sound resources are typically listed in a SOUND.IND file in the SOUNDS subdirectory. When you load a sound resource for the first time, the path is saved, so any subsequent load will already start the File Open Dialog Box in the directory you left it last. Still you must manually open the resource. This is true for Object Classes and Textures as well.

Object Classes are typically listed a OBJCLS.IND file in the WORLDS subdirectory.

Textures are typicalle listed in a TEXTURE.IND file in one of the following subdirectories:

texd3d............Direct3D
tex3df.............Glide
textures..........Software renderer
tex3gl.............Open GL

depending on the version of the engine.

The Tools

Only one of the Move, Rotate, Select and Size Tools can be active at any given time. Which one is active can be seen by the cursor shape - the corresponding shapes are listed together with the tools description.
The shape may indicate a little mark at the upper left corner - this means, we ar in point mode. If the mark does not appear we are in polygon mode.
See an example:
 
Polygon mode:
Point Mode:
 
 
 
 
Move Tool    
Keyboard shortcut: "m"

It works on a grid, whose size can be specified under File/Settings, and whose default is 50 units.
This is to ensure, that there are no gaps between polygons.
Sometimes it may happen, especially after a rotation and a following move, that a polygon or polygon selection group becomes distorted. When that happens, switch to Point Selection mode, select the distorted Points and with the move tool bring them back into shape.
The Move Tool should also be used to realign the edge points of a structure (polygon) to the grid after an operation that destroyed the alignment (like Size). Just move the polygon a little bit and the edges will try to snap to the nearest grid positions.
 
 
Rotate Tool    
 
Keyboard shortcut: "r" 

It works with an angle snap of 45/2 degree. The points will only be snapped to the grid, if Move is applied afterwards (and normally you will have to, since the Rotate Tool will rarely rotate exatly around the desired center).
 
 
Select Tool 
 
Keyboard shortcut: "s"
 

The most used tool will be the select tool. To facilitate selection of certain polygons and/or points, there is the concept of visibility layers, which will be explained now:

The Select tool works by drawing either an irregular fence (currently it must be concave, which makes the "irregular selection mode" rather unusable); a quad selection fence or by specifying a single position with a single click. All of these methods select ALL polygons, which are currently VISIBLE and which are COMPELTELY inside of the fence or lay under the specified point (as in single selection mode).

When combining the select tool with SHIFT, the selection will be enhanced (polygons and/or points) will be added to the selected set.
When combinig the select tool with the CTRL key, the selection of the fenced polygons/points will be inverted.
When combined with both SHIFT + CTRL, the fenced polygons will be deselected. This is handy for removing polygons from a selection that where accidentally selected in the first place.

Layers are a mean of temporarily grouping parts of a level togehther. There is on active and 8 inactive layers. Every Hide, Unhide operation is local to the active layer, which means that inactive layers will not be influenced.
Every layer shows another set of visible polygons, so it is easy to work on different substructures by just switching layers. Switching layers should occur BEFOR any Hide or Unhide Operation is performed and can be done by either selecting the wanted layer from the Display menu or by pressing a number key between 1 and 9 (there are 9 layers at all).

More about the select tool can be found under Select Menu.
 
 
 

Size Tool    
 
Keyboard shortcut: "z" 
 

This tool sizes a selected set of polygons / points around the pivot point (which is position of the mouse, when starting to use the tool with a left mouseclick).
Use the Move Tool after a size operation to realign the edgepoints to the working grid.
 

Intersect with group

Select a group of polygons and position it so, that it penetrates some other part of the level; "Intersect with group" will then split all non selected polygons accordingly and select the "inner" part of the intersection, so that it can be deleted.

(currently the split does not take place; only the polygons in question are selected)

Mirror

Mirrors all the vertices around the vertical axis (that is, the mirror process depends on the active view)

Flip

Reverses the ordering of the vertices, thereby inverting the polygons normal vector.

Subdivide

Subdivides the selected poylgons along their edges in two. Each polygon is therefor subdivided into 4 rather equal sized smaller polygons.
This is sometimes necessary, since polygons should typically not exceed 8 grid lines in size, which makes up for a length of 8*50 = 400
engine units. Bigger polygons may exhibit ugly clipping errors and prevent shadows from occuring, since light conditions are calculated only on each edge of a polygon (i.e. there are no shadow maps).

Polygon Properties

This shows a dialog in which you can specify some properties for a set of selected poylgons.

These are:

The mapping coordinates. When automatic is enabled, the coordinates will be set to (-1 0) (0 0) (0 0) (0 0), which means the engine will determine the best mapping. This is in most cases enough.

If you want to have normal face mapping, use the STD button, which produces the following coordinates: (0 0) (256 0) (256 256) (0 256)

Use the ROT Button to rotate the texture coordinates clockwise.

Sometimes there may be errors - especially triangles may expose wrong texturecoordinates - they will need hand tuning.
For these cases where you need to specify texture coordinates explicitely, do that here. They range from (0,0) to (256,256).

The polygon type. This is a hint for the engine how to act with the polygon and it kind of classifies the polygon..
This should be determined automatically by the leveledtitor, every time a poylgon is moved or otherwise changed, but can be overridden here. Once it is overridden, the classification is not changed any more automatically.

Currently there are the follwing types:

#define GPOLYGON_TYP_OTHER 0
#define GPOLYGON_TYP_CEIL 1
#define GPOLYGON_TYP_FLOOR 2
#define GPOLYGON_TYP_DOOR 3
#define GPOLYGON_TYP_SKY 4
#define GPOLYGON_TYP_WATER 5
#define GPOLYGON_TYP_SLIPGATE 6
#define GPOLYGON_TYP_IRREGULAR 7
#define GPOLYGON_TYP_SWITCH 8

Floor, Ceil and Other poylgons are the basic polygons. They have no special treatment in the engine, except for the fact, that FLOOR and CEIL polygons are used deeper in the BSP tree than OTHER poylgons (typically the walls), which means, that WALLS are preferably used to split subpartes of the level, to prevent degenerate trees in the case of big, flat levels. This decision is not without drawbacks, since on the other hand, there may now result degenerate trees in the case of high and slim levels (tower like structure). However, the primary goal of ENG32 was to render rather flat and big levels.

The software renderer may take additional advantage of this classification of poylgons, and perform perspective correction only as needed (FLOOR and CEIL - distortions on walls are not so bad).

DOOR, SLIPGATE, SWITCH Polygons need not be marked explicitely - this is done automatically when a polygon is determined to be part of a door, slipgate or switch structure respectively (see GROUPS).
DOORs have a special property: they occur highest up in the BSP tree, that is, they split the level into its main parts. This gives you as the level creator a basic possibility to control the big level parts, and you should design the level in such a way, that doors split it into rather distinct segments. This is an important performance issue, since these parts can be discarded at once, when they are out of the render range. In a future version there my be also a red line, indicating the split done by a door.

SKY Polygons have a different mapping, and must be specified explicitely - the texture on skies shows no parallaxe when the player is moving, and the software renderer can speed significantly up, since it uses a very simple and quick assembler routine for skies.

WATER polygons are somewhat different, in the way, that the have onother form of collision detection (you can swim IN water after all and not stand on it).

IRREGULAR (Deco) Polygons are polygons with either rather irregular angles, which might cause many and ugly splits of other parts of the level and which need full perspective correction though they are not FLOORS or CEILS, or, which are just not assumed to split anything, since thy are part of a rather small substructure like a stair or something. They occur last (deepest) as final leaves in the BSP tree, so they do NOT split anything except other IRREGULAR poylgons. When you model decorations, you have 2 options: either make them a separate object (see Objects) or make them part of the level and make sure, they are of type IRREGULAR, to prevent them splitting the sorrounding room, but rather let the room split them. This is some basic kind of hierarchy (only 2 levels) and it gives the BSP splitter a hint, which parts are bigger and more important than others.

The Texture:

The most important part is to specify the texture. Throghout ENG32 textures are referred to by unique integer ID's. There is one texture index file, which associates all textures ever needed (in ALL levels and ALL objects) with their ID's. This file and the according texture files might be compared to QUAKES WAD files.

You can type in the ID here directly an will get a preview of the texture, or switch to the texture Preview and Selection screen by pressing "View Texture". See the description of the "View Texture" Window.

A word about texture formats:

The software renderer and the hardware renderer need evtly. textures in different formats, so the decision was made, that there is one source format, with which the leveleditor works, which is 24-bit BMP. Befor you can test render or play a level you have to convert the 24-bit VMP's to either 256 bit BMPs, with mapped palette for the software renderer (this can be done with PALMAP.EXE) or to 3DF format (proprietary GLIDE format, can be done with TEXUS.EXE) for the 3dfx renderer.
You do NOT need to convert the textures for the Direct3D renderer which takes 24 bit BMP's as is. See  Resources/Object Classes.


Object Properties

This dialog allows you to edit the object class and any parameters specifying an object. Objects are e.g. monsters, triggers, lights and such.
Every object has an associated class, defining its properties. See Resources / Object Classes on that.
You can manually type in the object class or select it from a list of classes. The list of classes contains either classes already used in the level or all classes, after having loaded the object classes with File / Load Object Classes.

To edit the properties of an object, select it and display this dialog - if more than one object is selected only the FIRST ONE is taken into account, so you cannot modify the properties of a group of objects at once - you must modify them one by one.

Here is a short list of the classes currently in use:
 
 
LIGHT1 a fire light, flickering. Produces a firelight effect
LIGHT2  a blue, static light - the main light source
LIGHT3 a red flashing alert light 
LIGHTRED a static red light
LIGHTYELLOW a static yellow light (used in the reactor core)
MUSIC some music; not visible
MUSIC2 some music; not visible
MUSIC3 some music; not visible
ELECTRIC produces a humming electric sound; not visible
FFIELD produces a force field effect; not visible 
SPIDER the spider 
WURM some other monster - not yet finished 
DRAGON  some other monster - not yet finished
START the players tart position - there can be only one at any given time in one level 

Examples of Properties:

class GNEONLIGHT:

REDALERT1,255,0,0,1,3000,1

meaning:

Name: REDALERT1

color: 255,0,0

dynamic: 1

Examples of Events 

class ROTOR

START: starts the rotor

STOP: stops the rotor

Group Properties

Under this submenu you find properties for Doors, Switches, Slipgates and Named Groups.

Each of these dialogs works on a so called group. Groups are groupings of poylgons in the level which may have additional properties. Doors, Switches, Slipgates and Named Groups do have additional properties, normal groups just group polygons together.
Some words about group properties:
Groups are persistend in the sense that they can be saved and are still there when reloaded. The polygons constituting a group are consecutive in the level file, so groups can as well be used as a means, to restructure the order of level files - but be careful, every polygon may only be part of ONE group, so don't try to group a group. This shortcoming might be overcome in a later version.

Doors

Additinal properties of doors: Open and close sound. Select them by name. To get a selection list, you first have to load the sound resources with File/Load Sounds...

Door Name: this is the primary key by which a door can be referred to from a script. See a description of script commands here: eng32script.txt.

Room1/Room2: these are the names of the rooms connected by this door. Rooms are a means of speeding up the engine - it is not necessary to define rooms. Currently they can only be defined with 3DS MAX Scripts that are part of the SDK. See the README.TXT accompaning the SDK, or the UNION.GPT level for examples. Currently the Leveleditor can only display the room definitions (Menü: Tools / Define rooms)


Currently doors consist of only 4 polygons, 2 for each side of the door, and the open up only sliding and to the left and the right. Other door types might be implemented soon.
Attention: BUG: in the current version of ENG32 doors must have a special order of edge points - therefor they cannot simply be created from 4 arbitrary polygons - you have to cut /copy and paste on of the existing doors in the supplied sample files!

Switches

 

Additional properties of Switches: the script.


Scripts are written in Lua. See http://www.tecgraf.puc-rio.br/lua/ for reference.

A few examples for the available commands (this list ist not complete - for
a complete reference see eng32script.txt):
 
 
PlaySound( "Soundname" ) Plays the named sound
Print( "Text" ) Prints the specified text on the game screen
ConsolePrint( "Text" ) or CP( "Text" ) Prints the text to the console (F9)
Sleep( 1000 ) Sleeps for 1 second
OpenDoor( 10 ) Opens door number 10
CloseDoor( 10 ) Closes door number 10
door = GetDoorByName( "Door" ) ; Gets the doornumber by its name
number = GetDoorNumber() Returns the number of doors in the level
UnlockDoor( 10 ) Unlocks door number 10
LockDoor( 10 ) Locks door number 10
bLocked = IsDoorLocked( 10 ) Returns true, if door 10 is locked, false otherwise
SetDoorDelay( 1000 ) Sets the door delay to 1 second
SetTexture( polyID, textureID ) Changes the texture of the specified polygon to the specified value
LightOn( 5 ) Switches Light number 5 on
LightOff( 5 ) Switches Light number 5 off
number = GetLightNumber() Returns the number of lights in the level
light1 = GetLightByName( "Light1") Converts a light name to its number
WorldSlip( "world", x, y, z ) Slips to world "world", at position (x,y,z)
ObjectSendEvent( objectid, "event", "data" ) Sends the eventstring "event" to the object with id objectid together with the generic data "data". The meaning of the eventstring and the data is entirely up to the entity that receives the event. See the chapter above "Object properties" for samples of events.
ObjectSendEventEngine( objectid, "SHOW", "data" ) Currently only "SHOW" and "HIDE" implemented. These events have hardcoded meanings to the engine itself and are not passed to the controller DLL's
 
 

A Switch has one associated polygon, which has 2 textures: activated and not activated, with consecutive texture ID 's.

Slipgates

NO SCREENDUMP YET.

Additional properties of Slipgates:
The huming work sound and the sound, when the slip occurs. To select other sounds, load the sound resources first (File/Load Sounds...)
The name of the level, where we want te player to be after the slip (referred to as WORLD), as well as the coordinates.

Named Groups

NO SCREENDUMP YET.

Additinal properties Named Groups:
As you need it. They are saved together with the level file, and currently not used. This might help in implementing other structures/groups for future versions.

Destack Points

This tools helps to get a handle to points that have the same position in all 3 dimensions - in such a case it is impossible to select only 1 of them. Select all of them and Use Destack - they will be moved in such a way, that you can select them again one by one. However, most of the time, it will be easier to delete the polygon/poylgons, and reinsert them.

Group Selected

This Tool creates the already mentioned normal groups. The have no additional properties, their polygons are consecutive in the level file and they can be only selected as once. Either a whole group is completely selected completely deselected. If you need to work on parts of a group, you must Ungroup it first, then make your changes and then group it back again (preferably in a new layer)

Ungroup Selected

Ungroups (removes from group and destroys the group) the polygons of the first selected group.

Check Level!

This tool searches for degenerate polygons (with only 1 or 2 points) and warns about them in the status baer, if found. In future version also coincident polygons shall be warned about. Problemetical poylgons are selected afterwards, and can therefor be deleted quickly (Ctrl-X)

Remove Attributes!

Removes from all selected polygons the classification attributes (floor, ceil, wall, water, etc...).
This is the contrary to "Classify!".

Classify!

Tries to determine and classify types of polygons autmatically. Normally you can enter the polygon type for a set of selected polygons in "Polygon Properties".

BSP Tree 

This tool helps visualizing and debugging the generated BSP tree (for more information on that see the ENG32 documentation.
Normally you will not need to use it.
When you start it, it displays an empty window. Press "Load..." to select and load a BSP File. These are generated on the fly by the engine, when a GPT (Level) File is loaded for rendering. Together with the BSP Files, GBP Files are generated as well. The GBP File represents the Level as specified in the original GPT File, but with the polygons already properly split, so that Binary Space Partitioning can be made. To work with the BSP Tool you should have loaded the GBP File first, since the BSP File references polygons from the corrresponding GBP File.

You can then select nodes in the BSP Tool and the corresponding polygons in the GBP File (the main window) are marked (selected with yellow lines) immediately.
You can as well select a polygon from the main window (the GBP view) and press "Find Select" which marks the BSP node that contains the polygon in question. If more than one polygon was marked only the first one is taken into account.

Note, that a GBP File is NOT a complete level definition - it does not contain entities like objects and lights.
Its only purpose is for debugging and performance analyzing, in combination with the BSP Tool. You should therefor not contiue to edit on a GBP - only GPT Files should be edited!!!

The Create Menu

Point

This is not yet implemented. It might later on aid in constructing more complex polygons, but it is not necessary.

Polygon From Points

This is a rather important tool. It creates a polygon spanning all selected points - it is primary used to fill gaps between an otherwise solid polygon structure.
With this tool it is rather easy to lift parts of a floor:

Mark the part to be lifted in polygon mode. Switch to Left View; lift the polygons. There is now a gap between the original floor and the lifted part which we have to fill with a few polygons.
Now switch back to top view. Switch to point selection mode.
Select the edge of one polygon from the lifted part, which is adjacent to the unlifted floor. In Perspective view you should see about 4 Points selected: 2 from the lifted polygon and 2 from the unlifted adjacent polygon. Apply "Polygon From Points" - a fill polygon is created.
Attention: depending on the order of point selection, the resulting polygon may have its face normal facing into the wrong direction (remember: only polygons, whose normal vector points TOWARDS the viewer, will be seen during the game!)
If so, apply the "Flip" Tool as well.

Continue this procedure for every polygon gap.

Afterwards you'll have to apply a  texture and mapping coordinates to the newly created polygons with Tools / Polygon Properties.

Cube

Creates a small cube. This can be a starting point for many modelling actions. The cube is a group - if you want to edit only some polygons of the cube, you must select it as a whole and Ungroup it first.

Player Start

Most important, this has to be done, befor the level can be test played. It creates an Object of Class "START" in the center of your current view. You can select and move it then to its final destination. Be sure to check in all views, if the player start is correct.

Object

Creates a new object of a given class. See Tools / Object Properties for a description of the parameters as well as a screen dump.
 

Select Menu

Single, Lasso and Quad selection types have already been explained under Tools / Select.

Polygon Mode and Point Mode:

The Editor has two selection and work modes.
When in Polygon mode only complete polygons can be selected - subsequent move, rotate and similar operations affect the whole polygon then.

Poylgon selections are seen as yellow outlines, as in the following screen dump, where a whole console of the control rook is selected - a subsequent move will move the console as a whole. 

When in Point selection mode, individual points of one or more polygons can be selected. Subsequent move, rotate or similar operations work on the selected points.

Point selections can be seen as tiny red marks, as in the following screendumo, where a few points of a console in the control room are selected - a subsequent move will enlarge the console in one direction or shear it, depending on the direction of move. 

Note that polygon selections and point selections may coexist - however only one mode (polygon or point) is active at any given time, and any operation works only according to the current working mode.
The current mode can be determined by looking at the cursor: when it has a little point sign to its upper left, the editor is in point selection/work mode, otherwise in polygon mode.

Deselect all

deselects all Polygons OR Points, according to the current mode.
It must be noted, that selections are NOT removed when switching from Polygon to Point Mode and back, so both kinds of selections may coexisit - however the Tools work only on the currently active selection according to the selection mode.
 

Extended select is a convenient way to select polygons by texture ID (e.g all steel walls), by Polygon ID or by group.

Surface: when -1 is specified, no selection takes place. In the combobox you can see textures by their associated filenames.
Attention: BUG: this feature is not yet working!

Polygon ID: this is normally not known, especially in the phase of creating a level, and changes, when polygons or inserted and/or deleted. However this can be used, when the engine produces an error and refers to a certain polygon, to determine the size/position and similar attributes of the polygon by first deselectiong all poylgons and then entering it's ID here.

Group: This currently lists all groups: Doors, Slipgates, Switches, Named and normal groups - it is rather difficult to find the correct one - you have to try. In a future version a group ID may be introduced and showed when the level is shown.
However this is a good place to have a look at the currently active groups.

The Views

There are 4 different kinds of views:

From the top, from the left, from the right and perspective (free view).

You can switch between these views with the View Menu or the tool bar. 

When switching views, the view is centered to the center of the level, which is calculated upon loading the level. This is also the point about which the perspective view rotates, when you change it. This may be changed in future versions, so that every kind of view has its own center point, and the point, around which the level is rotated in perspective view as well as it is centered when using View/Center or switching view may also be changed dynamically.

To zoom in or out, use the right mouse button. The point on which you click, is the point which stays constant in the zoom process, so if you chose this point wisely you can spare yourself another adjustment on the scrollbars afterwards.

To change the point of view in the perspective view, use the left mouse button - the tools do not work in this view.

The view is a grid view, with no hidden line algorithm yet. A solid polygon drawing mode, which shows only poylgons facing the viewer with their normal vector (therefor e.g. not showing the ceiling) might be implemented soon.

When poylgons are selected, they are drawn in yellow and fat. Also, their normal vectors are drawn as thin red lines - they help you in determining, if you also have selected faces, that would otherwise not be visible, like a wall seen from above (only a yellow line, which might be covered by ceiling/floor polygons), as well as in determining, if the polygon is oriented correctly - the normal vector must go inwards in rooms, and in general point to the viewer, if the face shall be visible.
if this is not the case, you must rotate the polygon - a future version my introduce a Flip Normals Tool.

Center centers around the already mentioned center of the level.

Resources

There are different kinds of resources needed to generate a level. These are typically prebuilt befor starting to create a level - some of them, like textures, may be interactively edited.

Sounds:

They may be loaded with File / Load Sounds. You need not load them immediately, but if you want to change sound settings for e.g doors, you will need to load them first. Be sure to load the correct version, which will be used together with the level, or otherwise the level will not start up.

There is a Sounds Window, to allow you to view and edit the loaded sounds - currently it only shows the loaded sounds. For the future.


Object Classes:

Quite similar as sounds. Can be loaded in advance but may not.

The object classes window just shows them now, a future version will include editing of object classes too.

Object classes describe the behaviour and appearance of objects. What is an object?
An object is a comparably small structure (in comparison to the level) which is persistent (saved together with the level, and saved in the savegame, see ENG32), which can normally move in the level.
The only exception to the movability aspect are lights which should generally not move, since the lightmaps are precalculated.

Typically you will use them for enemies, friends, inventory of the level and such. They are also used to represent lights.

Objects are represented as dark green rectangles in the leveleditor, not regarding their actual size, but only indicating their starting position. When selected, they become light green. See the following example: 


 

Here we have a dozen objects, most of them representing lights; 4 of them are selected.
To see the the class of an object, select it, and select Tools / Object properties.

What can be seen as well is the levels midpoint, indicated as a small yellow rectangle. This is the point which will be centered by the Center Tool and the pivot point for the rotation in the Perspective View.

 

List of object classes as supported by now:
 
 
LIGHT1 a fire light, flickering. Produces a firelight effect
LIGHT2  a blue, static light - the main light source
LIGHT3 a red flashing alert light 
LIGHTRED a static red light
GNEONLIGHT

a generic light:

Properties:

Name,R,G,B,dynamic,Distance,ON/OFF

LIGHTYELLOW a static yellow light (used in the reactor core)
MUSIC some music; not visible
MUSIC2 some music; not visible
MUSIC3 some music; not visible
ELECTRIC produces a humming electric sound; not visible
FFIELD produces a force field effect; not visible 
SPIDER the spider 
WURM some other monster
DRAGON  some other monster
ROTOR

a rotor

Properties:

H/V (horizontal or vertical),MaxSpeed

Events:

START: start rotor and accelerate up to MaxSpeed

STOP: stop normally

STOPIMMEDIATE: Stop without delay

PLATFRM1

a moving platform

Properties:

Number,x1,y1,z1,x2,y2,z2

like: 2,0,-1000,0,0,-2000,0,

Events:

MOVE

Move to next target

GET

Retrieve current target (non functional)

START the players start position - there can be only one at any given time in one level 
 
 

This list can be changed by editing the OBJCLS.IND File in the WORLDS subdirectory. Certain object classes have predefined and hardcoded meanings, like the lights. Others, like music, electric, ffield and the various monsters can be edited and inserted at will into the OBJCLS.IND file.

Textures:

Same as sounds and object classes they must be loaded separately under File / Load Textures.

They can be viewn afterwards with Window / Textures.
An example: 

 

The vary same dialog can be used in the polygon properties to select the texture of chocie.

Future: You can then edit the textures by deleting textures and inserting new ones (preferably from 24-bit Bitmaps) - they will then be saved in the TEXTURE directory and an entry in the Texture Index file will be made.

Attention: Befor using the level you must convert the textures to the native ENG32 format, depeding on whether you use the software renderer, Direct 3D renderer, Glide renderer or Open GL renderer.

Requirements:

Glide................uses 3df files - use TEXUS utility
Direct 3D.........uses 24 bit BMP's - no conversion needed.
OpenGL...........uses 24 bit BMP's - no conversion needed.
Software...........uses 8 bit BMP - use PALMAP utility.

To facilitate the use of TEXUS a Batch, 3DF.BAT has been provided.
Recommended usage:

3DF Inputfile YIQ

Inputfile should contain NO EXTENSION.
This creates a 3df file with same filename and extension 3df with a rather good compression.

PALMAP usage:

PALMAP palref.pal InputBitmap [OutputBitmap].

palref.pal is the palette to which the bitmap will be mapped. A sample palette can be found in the textures subdirectory.
The quality of the produced textures may vary, since the palette is rather poor on colors - best results can be achieved with green, brown and grey colors. Blue is problematical and should mostly be used for water in a rather pure form.

Batches for processing the whole subdirectory will be provided.