The
EFRadiant
Tutorial
| Note: |
| A simple directory structure is much like C:\games\startrek\ An example of a non-simple directory structure would be C:\program files\startrek |
Elite Force should be installed into a simple directory structure; You must install the GDK in the game directory. This is because it is easier for the computer, and all it's mix-matched versions of software, to access properly.
If you currently have the game and the editor installed in a complex directory structure and it works then it might be best to leave it alone; However if you are having problems (or wish to avoid them) a simple structure is probably best for you.
Setting the Playmode
This tutorial specifically covers Singleplayer as a mode but it does frequent some vital information on Multiplayer. Since I don't play well with others I choose singleplayer but I explain below, explicitly, setting up for either.
Open the tools directory (the folder where EFRadiant is installed) and look for two .def files.
Single Player
If you are going to make a single player map rename the HM_entities.def to HM_entities.bak and make sure that SP_entities.def exists as such.
Multiplayer
If you are going to make a Holomatch map you should rename your SP_entities.def to SP_entities.bak and make sure that HM_entities.def exists as such.
You should NOT delete your .def files unless you really want nothing to do with the other mode of play as you will have to reinstall the GDK in order to gain back the deleted def file(s).
Starting EFRadiant
The editor, being located in your tools sub-directory of your Elite Force folder, will look like the program below:
Once you Double-click on the EFRadiant.exe icon you will be in for a wait, even on fast computers, as EFRadiant is loading
all the information it needs from your .pk3 files. These PK3 files contain the game's textures, maps, sounds, and other needed files.
The editor only loads up shaders, texture directories, anything else is loaded when it is specifically requested by the user in EFRadiant.
We'll get into how you can edit your own PK3 files using a file compresser such as WinZip in a later section.
| Note: |
| Need a file at
EFRadiant's startup?
If you just started EFRadiant for the first time
you might get a message that the program couldn't find its |
Figure 2.1
Upon EFRadiant's first start you will probably also get a preferences window similar to Figure 2.2 (below). If not then press 'P' and simply fill in the Preferences window relative to the Figure 2.2's settings.
Since every computer system is setup a little different your directories and settings may vary but should be in the range of those listed in the figure.
The bar accross the top of a program that usually reads
something like : 'File', 'Edit', and 'Help' is a program's menu. The
picture below (Figure 2.3) shows EFRadiant's menu. The menu is where most of the
non-building mouse work will take place. If you didn't see the preferences window pop-up you can
click Edit » Preferences or just press 'P'.
File Options (Open..., Load..., Save, Save As..., Save
Selected...) Open Opens your previously saved maps; very
simple. Click on the File » Open....
If you are having trouble so far review the windows help
in your windows /help directory you shouldn’t even be this far if you need help
with the standard functions of Windows. As you may have
noticed in the begining when you set your preferences for EFRadiant there is an
AutoSave option. This saves files under your BASEEF/MAPS/SNAPSHOTS directory. As you may recall
from the Preference Window you can
also set the maximum files so that your computer's free space doesn't become
totally consumed after a few weeks of level editing.
Retrieving backups is a little bit more difficult than
just loading a map file. You need to rename the snapshot file to a .map file, move it to
the BASEEF/MAPS folder and then
open it in EFRadiant.
In EFRadiant click on SourceSafe » Configure. From there it’s pretty self
explanatory but for the sake of examples I have mine setup like this:
INI File:
\\RAVEND\VSS\SRCSAFE.INI Of course you will need to modify this to meet your
system's settings. Constructing A Room However, as you might have guessed, you can have
doubling back effect by using multiple brushes. Making a brush is easy: In the larger grid view Left mouse button and drag until you see something similar to the Red box below in figure 3.1.
Figure 3.1 DESELECT THE
BRUSH(ES) by pressing the Escape
button. Deselect the brush. Reselect the brush, now position the
mouse near the side of the brush and drag it until it looks something like what
Figure 3.2 (below).
Press the Space Bar once
to copy your selected brush. This tool quickly copies any brush(es) you might
have selected and moves them away one grid unit by one grid unit and selects it
for you. You should also notice that this deselects anything that you might of
had selected before it.
Selecting a brush is the same way you would select
an entity; de-selecting Now press escape to
deselect the brush and create another brush by dragging from one point to
another and position it so that the above screen is similar to your EFRadiant's
view (Picture Assistance).
You might want to experiment with the:
Selection »Rotate » Rotate X - Which will rotate your brush
along the X axis.
Do NOT attempt to use the above rotation
method on your entities. As you experiment with rotations you might notice an
option called 'Arbitrary Rotation'. Hold off on using the arbitrary
rotation because that process often morphs your brushes into different
shapes than you want. It also adds a possibility of leaks if you are doing the
rotation with walls.
Select any of the brushes you just made and press the
Backspace
button to delete it. As of now your creation when viewed in the 3-D view,
being the view above the texture view, probably looks similar to Figure 3.5
(below). If you can't see anything in the 3-D view you should use the
arrow keys to turn the camera and A and Z to rotate the camera upward and downward. Switch it to the YZ Side
view and use the same brush making skills that we learned earlier to make some
walls to your room. Might start by selecting the current walls and dragging
upward 256 units (from the Z view) to make them higher like walls
rather than baseboards.
Press Q to
turn on a grid assistance that will show you
the exact measure of your currently selected brush(es). You probably know that clicking inside your brush and
holding while your move the mouse you can move the selected up and down, however
a more precise method to move your brush up and or down in altitude is by
pressing the + and - key of the keypad.
Notice that in the XY Top
view you don't see the brush moving up or down because the XY Top view is a 2D representation looking down also
known as a 2D Birds-eye view. You might have noticed by now that the side panel
has a stricktly Z view, meaning it only sees
brushes move up and down (Picture Assistance). In the end
your 3D view should be similar to that of mine shown in Figure 3.6.
You can also cut both sides of the brush by pressing
shift while hitting enter. This will split the
brush into two according to the specifications of your points (Point 1, and
Point 2). Do not attempt to
clip models or curves because the editor will crash. CSG The main window, the largest one with the grid view, is
really the only one you should use for editing anything because it allows for
control over the brush(es) that you are working with, compared to the control
that you get with the 3D or the strict Z view. If you CSG_Subtract and
you get a small piece left over that you can barely select without zooming in
then it is because you didn't drag your 'cutting brush' to meet the exact space
of the other brush that is being cut.
In other words if you have a square brush that is 12
units wide and you use it to CSG_subtract or cut
another brush that is 12 x 12 x 12.0001 x 12.0001 then you will have a little 12
x 12 x .0001 x .0001 brush remaining from the brush being subtracted from after
the cut (as well as your originally selected brush).
CSG_Subtraction Tips: You will need to neaten up your rooms by selecting the
hallway walls, excluding the left-over end walls. Once you have both the
hallway's walls, ceiling, and floor and you are in the XY Top shrinking them so that they just touch the
outsides of your rooms.
Delete the end walls, the brushes that would of blocked
the player from getting into your hallway, using the backspace key.
To make sure your rooms are to scale we need to add some
entities for a size reference.
Textures Figure 4.1 If you see no textures or black and blue checkered boxes
then you need to review Installing the GDK.
What you just did was load all of the Borg textures that are in the BASEEF/PAK01.PK3/TEXTURES/Borg file into your selection box so that
you can apply those textures (and more if you desire) on to the face(s) of
brushes.
Faces are single sides of
brushes.
To select a single side rather than the entire brush
hold down Shift and Ctrl while you Left
click on the face that you want to work with.
Get that? SELECT A FACE by holding CTRL and
SHIFT while LEFT CLICKING on a brush face.
Applying textures to a brush: Select the brush then
click the textures that you would like to cover the brush from the texture
window (as seen in Figure 4.1 (above)). You can scroll up and down in the
texture application window to select which texture you think would look good on
your brush.
Pretending that your not satisfied with the Borg texture set and that you want
something that flashes and glares a little techno looking texture you might
select the Voyager texture set. Do so now by
clicking Textures » Voyager.
You have just loaded the BASEEF/PAK01.PK3/TEXTURES/VOYAGER textures.
Notice how the Voyager
texture set adds in with the Borg
texture set. Now you can select both Borg and Voyager textures. If you use too many textures in your map (around 40 or
50) then you won't be able to compile your map because the engine can't handle
that many images.
Earlier I mentioned shaders but I didn't give quite a detailed explanation
as I am going to do here. Making your own custom shaders is a more difficult task and even though Raven
supplied ShaderEd.exe, a shader editing tool, your better off using good ol'
notepad.exe by temporarily renaming the .shaders
file into a .txt file and opening it that way. Although I could write a
lengthy tutorial on Shaders the best way for you
to learn what a shader can do is for you to see
first hand by exploring it your self and cracking open as many .shader files as you come accross. Shaders are textures
surrounded by a white box in the EFRadient texture window, but are not as easily
detectable in the game best seen in Figure 4.1 (above). Shaders may be as simple as playing a
"sound/metal_4.wav" sound when the player walks on it, or it might be as complex
as a fog allowing the player to float through it, but hurts the player every few
seconds as it ripples like an ocean's waves. If you do make a shader of
your own don't forget to add your shader's name in
the BASEEF/SCRITPS/SHADERLIST.TXT.
If you do venture out into making shaders I suggest you
do so by hand rather than fall into the ShaderEd.exe trap; open the .shader
files with If you don't want to look at any shaders then you
can turn off (uncheck) Show Shaders option. Figure 4.2 Connecting Rooms Now use the spacebar,
as learned earlier, to copy the selected brushes. Next you
should position the current selection away from your original structure as
we are going to put a simple hallway between the two using some elite options.
Instead of drawing several brushes to make a hallway
between the two we are going to make one (1) brush. Instead of
individually cutting the walls of these rooms we are going to use something
known as CSG_Subtract to do it for us. First thing is first, create this
brush so that it enters, through the walls, into the center (or close
to the center) of the two rooms without being inside the floor or
ceiling of your room, otherwise it will cut them to.
Select the hallway brush and go up to Selection
» CSG » CSG_Subtract. This should of cut everything
inside of the hallway’s brush. If it doesn't do anything then try
switching the texture of the hallway brush to something that isn't a
shader. To do this you might uncheck the Show Shader option
and select from the left-over options (also make sure that no search text
is in the texture search box as it will show shaders even if show shaders isn't
checked). Circular Brushes Those all go up to 9, now click on arbitrary sided and
enter the number 16, this will make a circle that works. Unlike a curved surface
it is not perfect but it is solid and you can let the player view it from any
angle safely. This is a great option and very useful for those of you who want
to make a circular hole in a wall.
Don’t enter more than about 20 into the arbitary sided device or your efradiant
WILL crash. Sometimes when I am board I like to crash it so as an experiment
enter 99 and watch EFRadiant nose dive. You might want
to save first.
Utilizing Different Brush Types All brushes are naturally Structural, each one blocks the player and engine
from seeing through it. Small objects don't need to be structural, but should be
Detail, because no matter where the
player is Practice using Structural and Detail brushes and you'll
find your maps running very smooth. Use both To make a brush Detail: select the
brush(es) that you want to be detail and click Selection » Make Detail Curves and meshes are already details (you can't make
them otherwise). Since they are Details they The void is the
infinite (nearly) gray, or more accurately: black, space around your level. Curves Due to conflicts in operating systems, computer's
memory, and all-around acts Curves, being Detail brushes, will cause a leak error if you don't back the curves with
structured walls, Curves are generally pretty unstable and should not be
clipped nor turned into an entity. Entities Right-Clicking in the main
grid view will bring up a menu that shows quite a few catagories. Each catagory
leads way to some detailed entities. However some entities are right out in
front such as the Light entity. When you position
your mouse in the middle of the first room and Right-Click you will get something similar to that of
Figure 7.1 (below). Figure 7.1 You will end up with something in the grid view like
Figure 7.2 (below).
Figure 7.2 If the entity is in the ceiling, as they tend to do, you
will need to use the keypad's + and - signs to raise or lower the entity until
it is near the center of the room. Put it near the center of the
room as shown in Figure 7.3 (below). If you leave it
outside the room or close to walls, as I will explain
later, the entity does little good.
You can connect
entites quickly by clicking on the source (base) entity followed
by the target entity. Figure 7.3 Now let's make the light
entity a different color. First make sure your light entity is selected and then press K
Now that you have set the color you will want to set the
radius of the light and some other options, right? Right! Figure 7.4 Naming the boxes and in the Entity property window from
the top to the bottom for future reference:
Entity List
Box - Which basically shows you the entity your looking
at. Currently selected: 'Light'.
Sound...
button - If this entity were capable of playing a sound, which a
light is NOT, then you could easily attach a sound from here. But since this is my world and this is just a tutorial
you can use this to learn the defaults.
You should also note that the Light value expressed in
Figure 7.5 is 350, whereas 300 is the default.
Figure 7.5
The radius, being the
distance your light entity will put out light, is to be 64 units. When you see the properties in the Entity Settings Box they are final to the entity unless
you change them. To show you more of what lights are for I have
constructed this little
The following light testing images use the region
(holodeck) texture to show a relative grid size.
Figure 2.3
You should know that
anything in level design will be time consuming whether it's the actual level
designing, or the planning, or the proccess of compiling your map into a
playable version of the game. You need to know how to save your map often in
case your system crashes, which sometimes, usually at the most inconveinent
time, it does.
Load Load adds your a
saved map into your current map. Click on the File
» Load....
Save Saves your maps to the hard drive for
later retreival through the Open option. Click on the File » Save.
Save As Saves a new
copy of your map to a different location on your computer. Click on the File » Save
As....
Save Selected Saves any brushes and entities
that you have selected. Click on the File »Save Selected....
Project Path:
$/stvef/Baseef/Maps
SS – Checked (SourceSafe active)
BehavEd Path: c:\games\stvef\tools\BehavEd.exe
A Brush is a block/shape that
you draw when you drag the mouse in the grid view.
These
shapes maintain a form such as a circle, triangle, or square but never
will a single brush be capable of making a
star or bend as the brush's basic shape cannot have any points that go toward
the center of the shape and then return outward (also known as doubling back in
on itself).
SELECT THE
BRUSH(ES) by holding down the Shift
button and Left-Clicking on the brush that you
want to select.
Note:
a brush is the same as you
would were you de-selecting an
entity.
Directional
Rotations:
Selection » Rotate » Rotate Y - Which will rotate your brush
along the Y axis.
Selection » Rotate » Rotate Z - Which will rotate your brush
along the Z axis.
Warning:
It will screw up
how most entities work and can cause errors that
can only be fixed by re-building the
map.
It
should just poof away into oblivion.

Now let's see
what your map looks like from some different views other than the XY Top view. Hold down the Ctrl and Tab buttons
simontaniously until you see that the view has changed into the XZ Front view. Press the Ctrl and Tab buttons
simontaniously again until it cycles through the three views a few times.
Note:
Hold Shift + Q
to turn off this option. It is recommended you leave it
on.
Clipping brushes is where you can slice a brush
along a line to make slants. You select a brush and press X to toggle the clipping
tool. Left Click anywhere near (or far) from
the brush in the grid view to spawn the first point. Then make another point
somewhere else on the grid to cut the brush along that line. The yellow
highlighted part is the part that will remain. However, rather than change how
point 1 and point 2 are situated to select the other half you can simply press
Ctrl and Enter at
the same time to switch which side gets diced.
You can also cut a
brush along a third axis making for a truely unique brush--just click a third
time before you press enter to finalize. You probably want to do this before
your maps get really complex because finding each point while staring at
hundereds of useless ones can get confusing.
Speaking of crashes, save
often because you can surely spare a few megabytes
of hard drive space rather than spending hours remaking a
map that crashed
without a recent backup.
CSG_Subtract is the method of selecting
a brush and deleting any other brush parts inside of it. In other words your
selected brush, when using CSG_Subtract will
delete part of (or all of) the other brush(es) occupying the same space
depending on the space the selected brush occupies. This does not mean that it
works all the time, for some textures it will not allow you to cut using this
method.
If you cannot get the CSG_Subtract to work then you will have more work to
do by manually forming your walls around other objects.
Make sure you have one (or more) brushes selected,
these are
the 'tools' that will cut holes in
the unselected brushes that are to be
subtracted
from.
Any brush you select will be the brush that will
be cutting another brush.
Sometimes the CSG_Subtract
method works and it does it so
efficiently that the
computer doesn't choke for a second. Try moving
the
selected brush (the slicer) to discover if the
surrounding brushes have been modified. If there is a hole
where the
slicer was then CSG_Subtract has achived it's goal, otherwies you
will need to reattempt it or manually perform the
subtraction.
CSG_Hollow is the method of telling the computer
to make the brush hollow for you.
This process will make
six brushes out of a simple rectangle (your hallway brush being the simple
rectangle).
Click Select » CSG » CSG_Hollow and watch in amazement as your hallway
brush truely becomes a hollow hallway.
To use
textures you will first need to load the texture set (group of textures) that
you want to use. You might note that there are already a few sparce
textures in the texture window already (Picture
Assistance).
To load the Borg texture set simply go up to Textures » Borg and wait for it to stop loading the textures
from the Borg set (Picture Assistance).
You should see something similar to Figure 4.1 (below) in
your texture window when it finishes.
When you save your map and exit EFRadiant and then restart
EFRadiant and reload your map that only the textures that you have used or that
always load on start up are present in the texture window.
Shaders are .shaders
files that contain information as to what a specific texture does while in
game. You can make a texture that is slippery, transparent, painful
to player, one that makes images go back and forth or even one that
does a combonation and more.
Every sky is done with a shader. The parallax sky, or the textures that don't
change no matter what position you look at them from, like the
space borg_sky brushes, are the easiest shaders, that the player should see, to work
with but don't go overboard with them
because each different sky loads six different images into your graphics
card and or RAM. Two different skys on one level loads 12 different
images.
notepad and study the old fashion way.
There is
also the ability to type into the text box and search for a specific texture
that turns you on.
For instance you can type in
'bigborg2' and any texture currently loaded without 'bigborg2' in its name
will be filtered out. If you have show shaders
unchecked but type in the name of a shader you will still
get that shader texture. Both the Show Shaders
check box and the texture search box are shown
in Figure
4.2 (below).
(Picture
Assistance)
Select your original room. An easy way to do this is
to draw a large brush over your entire room (don't worry about its depth or
any other of its specifics). Next go up to Selection » Select »
Select Complete Tall. This should select everything that was inside of the
2D view of your selected brush. You might press escape to deselect the
brushes and see how the other options work:
Selection » Select
» Select Complete Tall - Which
selects everything inside your selected brush's 2D view.
Selection » Select
» Select
Touching - Which
selects everything touching your selected brush in 3D.
Selection » Select
» Select Partial
Tall - Which selects everything inside
your selected brush's 3D view while deleting itself.
Selection » Select
» Select
Inside -
Which selects everything inside your selected brush's 2D view while deleting
itself.
There are some options that are up in
the menu section of the application. Create a square brush and make it nice and
perfect. With that brush selected go up to brush and select the first option ‘3
sided’. This should of changed your block into a triangle. Now select brush and
go down to 4 sided and so on.
Structural or Detail. There are two different types of brushes
and while the player will
never be able to tell which
brushes are which; Both block his sight and movement.
Only Developers and Beta Testers need to discern between the two.
Unless the player moves to see
what is on the other side the computer will not render, or think about,
the unseen portions that the structure is hiding. A
wall would be structural because it stops the player
from seeing what is on its other side, thus the computer
doesn't need to render what is on the
opposing
side at the moment!
in the room the user will always be able
to see what is on the other side of it. Certain items like chairs,
desks, tables, computers, and pipes should be Detail.
Rooms are Structural but what is in those rooms
should
be detail.
types
of brushes correctly because if you use too much detail the computer will not
stop seeing through
brushes and may render way too
much. Let the computer think about what is in the immediate
area--not the entire level all at once.
This is how a level looks without the Developer
making anything a Detail; leaving everything a natural Structural type
brush. Note how each brush cuts the one it's next to. It does this to
better define what the engine will render, but it actually has to render
more.
Figure 7.17 
Each of the gray brushes, that aren't in contact with
the outside of the level, are made Detail type brushes. Look how the
compiler DOES NOT cut the adjacent walls into little bits.
Figure 7.17 
To
make a brush Structural: select the brush(es) that you
want to be detail and click Selection » Make
Structure
don't
block light from escaping your level and will generate a leak error if placed in
contact with the void.
Imagining
that you did modify one of your walls that is touching the void into a detail it
would
act as if that wall wasn't there, other than the
fact that the player cannot walk nor see through,
that
wall would simply become a leak point. Light from the level would "leak"
right out forcing
the compiler to render everything
outside your level.
Making
Curves, is easy to do:
Make a brush and using curves » cylinder. Very similarly the
best way to find out what does what in the curves section
is
to try each and every one of the options so you know
what
does what first hand.
of nature you should save
before using curves. Find out now what your computer
seems to handle best and make note.
you would be better off using a
common/caulk texture behind the curve or mesh. Here is a very good
tutorial by EutecTic and
Ricebug which I couldn't possibly do better
than.
The Caulk texture makes it so
that the engine doesn't think about that face of a brush at all.
Don't caulk faces where the player will see them because
they give the Hall Of Mirrors affect.
An Entity is something that performs a specific task
other than stay in a static location with a constant value.
Entities can have structure but most of the time they do
not unless they are elevators, doors, or are breakable things.
Entities can be something that the player picks up,
uses, and or just looks at: lights, ammo, weapons, other characters,
sounds...
Note:
Then hold ctrl + k until you see a line drawn between the two
objects, whereas it even illistrates
the
direction.
While lights
cannot be connected to other lights--they can be connected, individually
to info_notnull
entities to create directional
spotlights.
and you will get a color
options box (Picture Assistance).
Note:
Much
like Lights are created from the Entity selection menu so are Non
Player Characters (NPC's).
However,
that will not immidiately make them
friendly or hostile. That involves scripting. Scripting is
easy but time
consuming. For a great
tutorial on scripting try here.
So, make sure that the Light
is selected and press N to bring up the
entities properties as shown in Figure 7.4 (below).
Entity Info
Box - Which tells you some possible commands that you can
type in the Key and Value boxes.
Entity Checkboxes - Which give you some specific options with
that specific entity.
Entity Settings Box - Which currently holds the key classname of which has
the value light.
Entity Key
Box -
Which lets you place an option into the Entity Settings Box.
Entity Value
Box - Which lets
you attach a value to the entity Key that you just added to the Entity
Settings Box.
Entity
Angles - Which lets you set the angle that the entity will be
facing, including Up and Dn (down).
Del Key/Pair button - Select something in the Entity Settings Box and then
hit this button to delete it (returning it to its default value).
(Note: Do
Not Delete the Classname Key).
Model... button
- If this entity were capable of using a model,
which a light is NOT, then you could easily attach a mdl file from
here.
For now were are going to give
the Light a radius of 64. We do this by filling in the Key text box with the
value Radius
and the Value text box with the number 64
as shown in Figure 7.5 (below). You should also add the other values into your
Light entity (for practice).
Normally you only put the
values that you specifically wish to change from the entities default
properties.
So in the Key we type radius, then type in the value of 64 in the value box. Press Enter.
Every special value
like that should be a square number because it helps the engine break down the
number into smaller parts. Which means that it thinks about it faster. A radius
of 64 is default so technically you don't need to put this as it will be 64
already. It is a good idea to put it in anyway just for the ability to readily
see what the value is while your editing.
test room where
each yellow grid unit is 64 units by 64 units in size.
Figure
7.7 
Note:
That same texture, as you should see
in Figure 7.7 has dark grey shading around the yellow lines
which may make it seem as though the light
is subdivided into four different parts, but it is not .
Here is the same room from the 2D view. This
picture was taken with the 8 grid unit guide on (the 4th setting);
meaning that each little grid unit consists of 8
units. The larger grid then contains 8 grids units of 8 (making
each
light gray box 64 units; 128 square units). Not
Important--so don't worry if you have no idea what the hell I'm saying.
| Note: |
|
Press Q to
turn on a grid assistance that will show you
the exact measure of your currently selected brush(es). |
It is important that you know that 64 units is one light gray box because our light has a radius of 64 units.
Figure 7.8
Observe how each different setting (in figure 7.9
and 7.10) has little impact if the light entity is in the wall! Figure 7.10 Still more fun can be had when implimenting
color. You should note that the wall Figure 7.12


that the
lights are directly up against isn't as bright as it should be because the
lights are still
partially in the wall--this can be
corrected by simply dragging the light a few units
away from the structure.
Figure 7.11
Each color 'addatively' merges with
it's
neighboring light entity in Figure 7.12. This is a
funky effect where when in wall they
are on
only gets about 25% of the light it's supposed to; while the surroundings
seem to get the correct amount.
For another test let's pull the
light entity 64 units away
from the wall as shown in
figure 7.13 (below).
Figure
7.13
Note:
All of the following images in this section are
based on
the 2D light design as seen in Figure
7.13 (above).
Keeping the radius as 64 look how things like Linear and
Light affect how the Light looks.
| Linear: 0 Light : 300 Radius: 64 |
Figure 7.15![]() |
Figure 7.16![]() |
Linear: 0 Light : 600 Radius: 64 |
| Linear: 1 Light : 300 Radius: 64 |
Figure 7.17![]() |
Figure 7.18![]() |
Linear: 1 Light : 600 Radius: 64 |
| Linear: 0 Light : 300 Radius: 64 |
Figure 7.19![]() |
Figure 7.20![]() |
Linear: 1 Light : 300 Radius: 64 |
Player
Start
Now we are going to make an
Info_Player_Start entity so that you have
an idea as to whether your map is big enough for the player to fit properly
inside (Picture Assistance).
You would rather the ceiling be too hight that too low because if the ceiling is too low then the player wont be able to move anyway.
First Right-Click in the
main grid view so that you get an entity list. Next go to Info » Info_Player_Start.
Now
set the options so that:
The player spawns without the blue transporter beam
effect (Silentspawn),
The player keeps his previous
weapons and ammo (Keep_Prev),
The player drops to
the floor if he is off of it (DroopToFloor).
You should now have something similar to that shown in Figure 7.6 (below) (Picture Assistance).
Figure 7.6
I don't advise you select more than one entity and use
the entity's property page unless
the entities are of
the same class. For example it is perfectly fine to select 6 different
lights
with various different colors and change the
light value. However, you should not select
some
lights, weapons, and ammo and tell them to drop to ground.
Func_Doors
As
you might have guessed this entity is your everyday sliding door. To
build the best door is simple but
probably not what
you would expect.
Draw a brush to meet your door's desired
dimensions.
You can also make multiple brushes one door
entity.
Make the brush that you just created into a door entity
by selecting your brush and right clicking to bring up the
entity selection menu. Select the FUNC »
FUNC_DOOR option. You should notice some underlying text labeling it
as a FUNC_DOOR in the 2D
view.
Make sure the door is selected and press N to bring up its properties.
At the bottom of the entity properties window you should see eight (8) buttons featuring angles. 0Click the angle that you want your door to open to.
In the KEY box type LIP. In the VALUE box type 8 so that the LIP of your door, or the distance that your door will go up is the length of the door minus eight units.
We need to have some LIP to our FUNC_DOOR so that the door doesn't completely slide into another brush and make for questionable physics of our maps. Of course just re-modulate your shields and you'll be fine.
Elevators/Lifts
There is a way to use a FUNC_DOOR as a lift. See the
above section on FUNC_DOOR for details on how they work.
Once you have constructed your FUNC_DOOR you will need
to enter an angle of 'up' or 'down'. Enter a lip value (negative
value if need be) that equals the distance (in units) you want your
elevator to move to.
If your elevator is 16 units high and the position you are moving it to is 64 units upward you would subtract the elevators height from 64 so that the top of the elevator will just meet where the upper level's floor
Create the brush(es) are going to have as the lift with
an elevator like texture.
Make the elevator brush(es) a
FUNC»Platform.
Make two TRIGGER»MULTIPLE brushes with the texture of COMMON/TRIGGER as the complete and only texture on them.
Put a PATH_CORNER entity where you want the elevator to lower to and another PATH_CORNER where you
want it to rise to.
Press Esc to deselect anything you might already have
selected an
Select the top PATH_CORNER then select the bottom PATH_CORNER entity and hold down Ctrl and the K key until you see a connection line drawn between them.
Now, select the bottom path_corner entity and then
select the top PATH_CORNER entity and hold down the Ctrl and the K key.
Select either one of those PATH_CORNER entities and press N
to bring up thier properties.
Key = wait
Value = 4500
This means that the elevator will wait 4.5 seconds before returning to its start place.
Select the func_platform brush(es) select the path_corner that is farthest away from it and hold down Ctrl and the K key until a line is drawn between them.
Make sure that your elevator is directly under or over the PATH_CORNER entity that it is going to other wise it will slant (unless that is what you want it to do)
Pendulum
Create a little block with the origin
texture on it and then create a couple of brushes of any
shape that you would like to have swing back and forth. Select all of
those brushes, including the origin brush, and convert them into a
func_pendulum.
Press escape to deselect them, Now reaquire thier selection by holding the shift key while clicking on either one of them, If they are now all selected you can press N and play with some settings.
The important thing is that you select your origin brush and the brush(es) that you want to move together. It should move fluidically.
Force Fields
Force Fields are just brushes with a
specific texture added to them.
Make the force field brush (any shape you want).
Now click on 'textures' in the EFRadiant menu header followed by clicking 'borg' to load the borg textures.
The force field textures in the borg catagory are as follows: static, static2, static2_nonsolid, static_yellow
Select your brush and then click on one of the above mentioned textures. Then your done, and when you compile your map you will see a force field. Make it a func_wall to turn it off and on, be sure to check the details on this.
Teleporters
There are two main types of teleporters:
1) Seemless
teleporters -- Player doesn't notice they are being moved
2) The blue startrek transporter beam-in effect1)
To make a player move without
a blue fog around them you must make a script file with behaveed
you can see the included map files.
Basically you input the code
affect "munro" and set origin a ref_tag's name
Next you
place a trigger_once entity and a run script in you map where you want the
player to transport from.
Connect the two by clicking on
the tirgger_once and then the spawnscript and holding down the ctrl and K key,
then tell the runscript to use your script.
2) To make a player move with the
fancy startrek transportation effect create a trigger_transport and point
it to an
INFO_NOTNULL by selecting the FUNC_TRANSPORT
and INFO_NOTNULL and holding Ctrl and
K until they are connected.
Here is the SOURCE.
Level
Transitions
Put a
func_trigger once where you want the player to get sent to another level.
Then you connect it to a TARGET_LEVELCHANGE.
Press N while the entity is selected and follow the
directions in the information box as to what key and value you should use. There
is also a complete Source Map availible.
Text
in the game
In the game you can
actually see what is being said through text (captions) on the lower part of the
screen.
In fact the ending of the level message is placed in a
file called extra.pre that sits in a directory
named
after your map. If you map's name is mymap.bsp then the name of the file would
be mymap.pre
in the real_scripts/mymap directory.
First make a text file and name it extra.txt.
Open the text file and the desired sound as shown
below:
sound/mysound.mp3 "die janeway, die die die"
Rename the text file to a pre file
(extra.pre) and when the sound is used it will display the text "die janeway,
die die die".
It is also said that if you don't want any
text for a sound you type the following instead:
sound/mysound.mp3 NOTEXT
If your captions don't show up in the game make sure that
your caption setting is on.
Compiling
You MUST save the map
your working on in your BASEEF/MAPS
directory else you cannot compile.
Compiling with XP
Please follow these directions very closely and if you
don't know what you are doing don't do it without making sure of what you are
doing. Basically, if you can make a shortcut and cut it into another directory
then you should be fine but...
If you have recently had the 'fun' of getting Microsoft Window's XP then you have probably noticed that you cannot compile using the standard point and click with EFRadiant. Why? Because XP doesn't support the way EFRadiant launches DOS commands (basically).
Anyway, you can compile this way regaurdless of what operating system you have but XP users must compile this way.
1) In your TOOLS directory make a new file, a text file, and open it in notepad.
2) Type the following changing the directory
structure to meet your own
(Note: each line has
different color):
| Document: New Text File.txt |
| q3map
-qdir startrek f:\games\startrek\baseef\maps\%1 q3map -vis -qdir startrek f:\games\startrek\baseeef\maps\%1 q3map -light -qdir startrek f:\games\startrek\baseef\maps\%1 |
| Note: |
| If your game folder is not STARTREK then replace both sets of startrek, in each line of the text, to the your actual folder's name. |
3) Save your new file as compile.bat (make sure that you don't have a txt extention on the end of your bat file).
4) For Microsoft Windows 98 users skip to step 5; XP users go into your windows/system32 directory and make a shortcut of cmd.exe, then put that shortcut you have just made into your tools directory. Open the properties of the shortcut and where it says start in: put the value F:\GAMES\STARTREK\TOOLS or whatever your actual tools directory is. Then click apply and ok.
5) Double-click on the shortcut and type compile then your map name. So if your map that is in the maps directory is called mymap.map you would type compile mymap.
Some people, on certian operating systems have reported no activity at this point yet it should be working even though you can't see it. I, however, see it exactly as I did before with Microsoft Windows 98.
Your map should
be compiling... when it finishes you are done and you should be able to take it
from there as you would have otherwise. I hope this has helped you. I
would like to give a special thanks to Absynthe and Grand
Nagus for the specific how to's of the bat's; and my dad, Sam, for the help with the DOS commands.
Compiling with
Windows 98
Once you have saved your map file and have been returned to
the main EFRadiant screen click on "BSP" (directly across from File)and go down
to the "BSP_FULL" or "BSP -Light -Extra" depending on the version of your
editor.
BSP »
BSP_Full Vis. See Figure 10.1 (below).
Figure 10.1
This should make a DOS command window appear with a lot of information in it, in fact it will look something like Figure 10.2 (below).
Figure 10.2
For now disregard that information and wait four or five minutes. Note all of the processes and the time involved as both will grow exponentially relative to the size of your map. What you are doing now is making the .map file into a .bsp, which a map file cannot be understood by the game whereas a bsp file can.
If you try to close it while it is still working a window will pop-up, you should respond by clicking "no" because you don't want to close the program before it has completed your map. (Unless you don't want to compile your map, that is).
If the time has become unbearable and you want it to stop compiling click "yes" to close the program. If you close the compiling program pre-maturely it will not do anything (good or bad) to your actual map file.
Once that DOS
window reads "-finished ", as shown in Figure 10.3 (below), up in the top left
corner you can close the window. Figure 10.3
Run the game.
In this case,STVOY.EXE, located in the
game directory and once at the main menu press the console button. (In this case
that would be the tilde key " ~ " which is next to the " 1 " key). Once the
console appears you will be able to type map yourmapname ". You don't need to
type map yourmapname.bsp as it will only load .bsp files anyway.
If you didn't notice that your map
took a while to load then multiply that by 15 and that is a standard project.
However what you have just done in the way of compiling is known as a FULL
compile. The FULL compile compiles your map as though you were doing your final
rendering of it. However, if you just want to check out how fast one of your
Func_rotate entities spins you would do one of the lowlyer compiles to save your
self some time.
If you have
forgotten your map name at the Elite Force prompt type dir map and look
for its first name (that of not being the .bsp). Once you type your level's file
name as shown above you should be greeted with a brief load screen followed by
the ravaging success of your spectacular map!
Quality may vary
slightly than 'ravaging spectacular map'.
ERROR : MAX_SURFACE_VERTS
GAMEPLAY: ANY
COMMENT : You have too much stuff in your map, in
this instance: verticles.
FIX : Delete some of your
maps less needed portions.
ERROR : MAX_MAP_LIGHTGRID
GAMEPLAY: ANY
COMMENT : You have too many lights in your
map.
FIX : Delete some
of your maps less needed light entities.
ERROR : MAX_PATCH_PLANES
GAMEPLAY: ANY
COMMENT : One of your brushes is getting cut by
the compile way too much.
FIX : Reposition the
brush, Cut the brush yourself, Or Delete it.
ERROR : MAX_MAP_BRUSHSIDES
GAMEPLAY: ANY
COMMENT : One of your brushes is getting cut by
the compile way too much.
FIX : Reposition the
brush, Cut the brush yourself, Or Delete it.
ERROR : WindingFromDrawSurf failed: MAX_POINTS_ON_WINDING
GAMEPLAY: ANY
COMMENT : One of your brushes has oto many points
or you have a brush somewhere with more than 64 corner points.
FIX : Sever with the
clipper tool or Delete it.
For most of you, you will go through the rest of your life never seeing this dreaded error--unless you make a map with a long brush or decompile someone else's map. This nastly little error is one of the worst because it, to my understanding can also be a small brush that is of the EVIL POLYGON type, but that the evil poly plugin wont always detect it.
This error managed to manifest itself on me and I didn't even make the damn brush!! Working on the re-make of Colony 7's first chapter I discovered this error on the first level where the transit tube takes you accross the planets surface to the transporting facility. Of course when I compiled this and found out that it was ONE BRUSHES fault I began tearing the map apart looking for any brushes I might have added that caused this error. Yes, the error must be fixed because the compiler won't even finish compiling with the bad ass brush on the loose.
Ug, Anyway, if your vulcan logic hasn't already told you.. I did manage to find this brush and used the clip tool combined with the shift and enter option (talked about in tutorial) to cut the brush in half with-out needing to make a totally new brush or take any drastic measures.
If you should run accross this pain then... run, run like hell (to a recent back-up).
ERROR : LoadTGA: Only type 2 (RGB), 3 (gray), and 10 (RGB) TGA
images supported
GAMEPLAY: SINGLE
COMMENT : Your using a script on a JPG or using a
bad format of a picture's shader.
FIX : Remove the script,
or change the picture file.
ERROR : Bad
PointToPolygonFormFactor
GAMEPLAY: ANY
COMMENT : You have a curve or mesh to close to
sky.
FIX : Move or
Delete offending patch or skybox.
ERROR : SetQdirFromPath:
no 'startrek' in C:/stvef/baseef/maps/mymap.map
GAMEPLAY: ANY
COMMENT : Your EFRadiant is improperly
installed;
FIX : Add
startrek to your directory list (I.E. C:\startrekstvef\baseef...)
ERROR : FloatPlane:bad normal
GAMEPLAY: ANY
COMMENT : Usually when you move a brush and you
drag it to its disappearance.
FIX : Find its new home
and Delete it.
ERROR : SV_SetBrushModel:
NULL
GAMEPLAY: ANY
COMMENT : You have an texture specific brush
(origin) without any siblings.
FIX : Recreate the entity
with the needed additions.
ERROR : MatchToken( "(" )
failed at line:
GAMEPLAY: ANY
COMMENT : You have an non-ending shader file
error.
FIX : Look at
your shader and make sure you have a } ending the function.
Guide to Beta Testing:
Call the
console by pressing ` being the ~ button
next to 1 on the IBM/PS2 keyboard. You will
now need
to enable cheats by typing sv_cheats
1.
Don't fall back on just what the user will
see; Know every aspect of the map
in order
to learn what effects will be had on another machine and how it will
play.
Some helpful commands that I have pilaged the web
for are as follows and
all have been tested:
Basically, if you were to just enter these they wouldn't do anything. They are boolean commands; they only accept 1 or 0 to allow you to toggle them on and off. You need to use the opposite number than the one shown to shut off the effect; The commands below turn on the effects so use the opposite number to turn them off. The commands are not case sensitive. No map should require that the user enter these codes to play it.
R_showtris 1 will place white lines around all of the brushes that the computer is rendering. This is probably the most important command you will ever use while testing your map. This command shows where your brushes are cut by the compiler. This allows you to see where you need to make changes to lessen the number of brushes that are sliced.
R_fps 1 will show you how many frames per second your machine is rendering. The higher the better as your computer is having little trouble rendering the scene thus allowing it to deliver the best picture to the user.
R_speeds 1 to have the console tell you how much is being rendered. For this smaller numbers are best. You shouldn't have over 10000 for any one of the sets.
R_fullbright 1 is a special command that will, upon restarting ignore lights and simply show the entire level in light. This is useful as sometimes we forget to light rooms and don't want to compile the map all over. After you enter this you can use the vid_restart command to immediately show you your level in full bright.
R_drawentities 0 will shut off the entities. This is useful because sometimes you only want to see structures and detail brushes (see October 19, 2001) will block your sight.
R_draworld 0 will shut off the world brushes. This is very hard to navigate through but is pretty useless but if your playing around and shutting off entities and such its kind of interesting.
Interest
Tips
1. Common Sense:
Don't use textures that are unfitting for the mood: A dark and scary cemetary
shouldn't have a bright and splended 32-bit 640x480 bitmap of someone you love
plastered to a 64 unit tombstone. You don't normally see picture perfect
photographs in any quality posted on headstones: it just doesn't happen in real
life - and since your trying to emulate the real world, shouldn't happen in the
game.
2.Don't make genre design flaws: When on a Borg cube you don't want to have arches or cuniforms with ice cream trucks and hard core pornography. Why? Because the premis of the Borg is to be perfect and since a 5 sided circle is not perfect and would be unfitting.
3.To make the game interesting in the more generic of hallways or large rooms try taking away some of the uniform sections. For instance, If you have a long hallway with 15 lights make one of them busted so that there is a dark spot. This is one of the best ways but shouldn't be overused as even being out of uniformity can become a standard.
4. Lighting is very important, that is why there is a whole entity section dedicated to lights. It controls what the player will see and how much time they will spend looking at it. It also gives an atmosphere to the surroundings through the use of color and position. If you have something the player is going to need to get then tell them with a little addition of light. No corner should be pitch black under normal stances. Its not really all that fun to not be able to see where the hell you are going in a map.
5. Don't make your home/yard/shanty. This is an editing rule that applys to Unreal and Quake specifically as the First Person Shooter genre doesn't conform to the average trailor. You should make an interesting design, nobody wants to visit your pathetic hole in the ground in the real world nor in a 3D game. There are a thousand maps out there of peoples' houses and they all suck, not because their creaters can't design but because no real house as of the composing of this document has been designed for a deathmatch. If your home is designed for deathmatch:
6. If you insist on making your house then make damn sure you follow the good mapping rules and that you don't bathe the fu¢kë® in multi acid induced colors. That really annoys people. The only good house in the entire history of gaming that I can see is MANSION.MAP for Duke Nukem 3D.
7. Use as few textures as you can without detracting from the game experience as alot of textures (40+) can cause the game to go crazy. It also lowers the amount the game has to load on startup of your map.
Editor Tips
When inputing values of entities, such as lights,
(and when it wouldn't look bad, round to the value
to the nearest square number so that it is
easier for
the engine to compute.
| 01 | 04 | 09 | 16 | 25 | 36 | 49 | 64 |
| 81 | 100 | 121 | 144 | 169 | 196 | 225 | 256 |
| 289 | 324 | 361 | 400 | 441 | 484 | 529 | 576 |
| 625 | 676 | 729 | 784 | 841 | 900 | 961 | 1024 |
| 1089 | 1156 | 1225 | 1296 | 1369 | 1444 | 1521 | 1600 |
| 1681 | 1764 | 1849 | 1936 | 2025 | 2116 | 2209 | 2304 |
| 2401 | 2500 | 2601 | 2704 | 2809 | 2916 | 3025 | 3136 |
| 3249 | 3364 | 3481 | 3600 | 3721 | 3844 | 3969 | 4096 |
| 4225 | 4356 | 4489 | 4624 | 4761 | 4900 | 5041 | 5184 |
| 5329 | 5476 | 5625 | 5776 | 5929 | 6084 | 6241 | 6400 |
| 6400 | 6561 | 6724 | 6889 | 7056 | 7225 | 7396 | 7569 |
| 7744 | 7921 | 8100 | 8281 | 8464 | 8649 | 8836 | 9025 |
| 9216 | 9409 | 9604 | 9801 | 100² |
Links and Frequently Asked
Questions
3.
What is a waypoint?www.efmodcentral.com for all your Elite Force Downloading
needs.
PK3 Files
What
are PK3 files? They are zip files, yep that's right, compressed files that can
be read by most compressors (IE Winzip)
Not that winzip
is the only decompressor out nor is it the best, it's just the one I have.
However what ever decompressor you choose it must be able to recurse the
directories.
The game requires that you have a directory
for you file types and one for you maps and ect... which are all pretty obvious
that sounds go into the sounds folder and pictures go into textures.
If you are making a map that you would like to distribute
place your bsp file in a directory called maps and zip it up, rename it to a PK3
file and send it out (after you test it).
Put map files (bsp,aas) in the maps directory
Put texture files (tga,jpg) in the textures directory
Put
sound files (mp3,wav) in the sounds directory
Put
scripts (ibi,pre) files in the
real_scripts directory
Put shaders (shaders,txt) in the
shadersdirectory
Put desired level loading
screen (jpg,tga) in the levelshots directory (which must have same first
name as your map mymap.jpg)
Recommended picture size is 512 x 512.
You may not need some of these directories, for
instance:
If you don't have any custom textures you wont
need to create a Texture directory.
You do not send the pak01.pk3 as that would be illegal, unpractical, redundant. Instead send your mypak.pk3 containing your files alone. People will already have the pak01.pk3 file.
Multiplayer Support - AAS filesThough the AAS file is needed to make a MULTIPLAYER level it belongs with the BSP file. In other words you will still need to include both the BSP and the AAS in the BASEEF/MAPS directory of your released PK3 file.
To download the program that will extract and create BOT information download it from www.ion.com.au/~dans.
Contacting the author:So, Please do not email questions to me. I am no longer supporting that particular facet of this tutorial as I have spent roughly two years answering alot of questions for Elite Force via my personal e-mail and I no longer wish to do so.
If you have a comment email me at TickNSwisted@stny.rr.com.
Legal:
You
are granted permission to distribute this tutorial (the package) by any means
that you deem fit provided that it is unchanged from its original form and that
it is not being sold for a profit. This is not an official guide but is the most informative one
availible exclusivly for Elite Force.
EFRadiant, Elite Force and all related materials are property of Raven and or Activision. Quake, Quake II, Quake III, Q3Radiant and all other related materials are property of ID Software, Inc..
This document and included picture files are copyright
2001 by Eric S. Schafenberg (alias TickNSwisted) unless otherwise specified.
This is the final version of this tutorial, which has been
in publication and undergone 6 major revisions since its original release on
August 19, 2000. You use this file at your own risk; I cannot be held liable for anything that might happen if you use this tutorial.
Special thanks and recognition
to QERadiant.com; for giving permission to use their tutorials being to the
author of the Caulk tutorial for doing a splended job illistrating the caulking
methods, and to everyone on the Raven Software Message boards for information
and to the people who wrote me with honestly unanswered questions. -- Thank you!