Tutorials and et mapping resources

(ailmanki) #81

I can make a separate search for Splashdamage … maybe also other forums…

It is not the intention of the search machine I made, cause the hole forum contains a mass of information which is not usefull in that context. One can always search this or other forums by forum search.

Yet I have to check again this google search maybe its possible to give priority to some pages… In such case adding the hole forum with low priority would be cool. Have to test it, adding the hole forums, would probably mean that it indexes all Topics from all Subforums… not only ET or q3map2. Thats why I was just picking out specific threads.

thx Rebel!

(aarenlainey) #82

I pick the referees at the time when I feel we need more of them. If you have played for a long time on the server and if you have displayed mature behaviour and if you have been active on these forums, then chances are that I might ask you to become one.
This is not attempting to create a standard for what is tolerable or acceptable. I simply hope to educate you and provide you with the tools I’ve created to analyse and compare my data to the maps of others. Also, please do not expect this tutorial to highlight tips or techniques used to improve the efficiency of your map.

(zstarsales04) #83

Hello, everybody, I am new here. Here is something might be helpful for you.www.zstar.hk www.edgei-ds.cn (many movies to download)www.tigersupermall.com

(Locke) #84

What terrain editor do you guys use? I have used EasyGen, but it doesn’t seem to work as well as I’d like, and I’ve heard people say that it is not the best way to make terrain. If there’s a better editor out there, I’d like to use it, even if it would take some learning.

(stealth6) #85

the best way is by hand, so in radiant making the triangles and dragging vertrexes, but this takes alot of time.
Most people make it as accurately as they can in easygen, and then touch it up in radiant by dragging vertexes

(Qualmi) #86

hey. i already posted a tutorial about papers and stuff in here, but i deleted them because i was somehow unhappy. cant say if im still really happy with what i produced, but this document i have written here is now stumbling very long on my site. if there is need to i will create a mapscripting thread where everybody can contribute. for now just the link:


i probably will do some changes, and i plan to add some stuff about the events. so the theoretical part is completely covered without explaining any code.

it is written already but i have to get my ass up and put in pics and stuff to make it look better. so be aware that this is not finished but will get finished next months.


(aaa4) #87

[QUOTE=Qualmi;228996]hey. i already posted a tutorial about papers and stuff in here, but i deleted them because i was somehow unhappy. cant say if im still really happy with what i produced, but this document i have written here is now stumbling very long on my site. if there is need to i will create a mapscripting thread where everybody can contribute. for now just the link:


i probably will do some changes, and i plan to add some stuff about the events. so the theoretical part is completely covered without explaining any code.

it is written already but i have to get my ass up and put in pics and stuff to make it look better. so be aware that this is not finished but will get finished next months.


good stuff. when you manage to complete it this way it will be the best tut about mapscripting i have seen.

keep up the good work :stroggtapir:

<edit>: a general thread about mapscripting would be a good idea.

(eiM) #88

"Some time ago I have translated a few video tutorials from a german mapping community (www.level-designer.de), which is now offline. Back then I did so in order to host all kinds of tutorials on www.nextgen-leveldesign.net. Unfortunately that page never got created, thus I uploaded them before they get lost.

Be aware all scriptnames, targetname and descriptions within radiant and the script are german as the tutorial was german in the first place." - http://www.crossfire.nu/?x=tutorial&mode=item&id=176

All videotutorials I have uploaded can be found on my own3d.tv channel: http://www.own3d.tv/eiM

Enjoy - #et.mapping

(KeMoN) #89

Thank you eiM
Yes it’s a pitty that Level-designer is down…


(danjbarron) #90

Splash Damage

(Destroy666) #91

Main mapping applications:

GTK Radiant 1.4 download:

GTK Radiant 1.5 download:

GTK Radiant 1.6+ download:
http://icculus.org/gtkradiant/ - stable
https://github.com/TTimo/GtkRadiant - development

NetRadiant download:
You’ll need to download this + copy files in right folders (etmain to etmain, NetRadiant to NetRadiant location):
http://www.4shared.com/file/GZ_tsjIm/ETmappingpack.html (mirror: http://www.sendspace.com/file/ypjcwd)

Q: Which Radiant should I use? What is the best choice?
A: There aren’t many differences between them but I recommend NetRadiant - it has more functions (but some are missing too) than GTK Radiants and the latest Q3map2. It’s also very stable.
GTK Radiant 1.4 is a good choice too (because of easy work with it) but it has problems with rotating brushes and doesn’t have useful plugins by default.
GTK Radiant 1.5 is similar to NetRadiant (but older and more unstable) and in my opinion it is the worst choice out of these three.
Haven’t tested 1.6+ yet so can’t tell anything about it.

Other applications:

PakScape - allows opening/editing .pk3 files:

Tank, truck and more - prefab generator:

Few brushwork generators:

Q3 Model Tool - allows adding tags to models, converting .map to .md3 and more:

FATE - userfriendly terrain generator:

EasyGen - more advanced terrain generator:

Tutorials can be also found on haradirki.de

PK3 Creator - quick and easy PK3 creating:

ETScript - mapscript editor:

Commandmap creator:

Q3ASE - shader editor and tester:

GIMP - free image editor:

gmax - free 3D models editor:
You’ll need to download md3 import/export plugins:

Audacity - free sound editor:


Mapping tutorials:
http://www.pythononline.co.uk/et/tutorial.htm - the best starting tutorial for begginers and people who had a long break with mapping
http://wiki.splashdamage.com/index.php/Wolfenstein:_Enemy_Territory - official wiki
http://forums.warche…ocument-run-map - video-tutorial for beginners
http://www.haradirki.de/tutor/index.htm - German language
http://ws.q3df.org/level_design/ - Q3A tutorials, many can be used in ET, containing useful compile/map errors/warnings descriptions
http://www.nibsworld.com/rtcw/tutorial_getting_started.shtml - accessible only via Web Archive
http://www.simonoc.com/pages/articles.htm - few terrain and scripting tutorials
http://xterm1n8or.webs.com/tutorials.htm - sorted tutorials links
http://www.katsbits.com/tutorials/ - mostly modelling tutorials
http://www.wemakemaps.com/qworkshoptuts.htm - Q3 tutorials, many can be used in ET - accessible only via Web Archive
http://www.quake3world.com/forum/viewforum.php?f=10 - also Q3
http://magics-territory.com/et/tutorials/ - tutorials/examples in PK3 form
http://easymapping.free.fr/html/ - French site
http://pazurmapping.com/ - few tips and prefabs
http://www.forum.etjump.com/viewforum.php?f=6 - ETJump site, contains few tutorials and prefabs mainly for trickjump
http://sites.google.com/site/peyoteet/ - several links and resources

TC:E mapping:

Shader manual:

Limits, entity list etc.:

Q3map2 compile options (NetRadiant):

The biggest forum with questions and answers about mapping, modding, server etc.:

Useful prefabs:





Sound effects:
http://www.freesound.org/ - huge sound library, requires registration
http://www.freesfx.co.uk/ - requires registration

Many Quake III Arena models:
http://www.wemakemaps.com/mapmodels.htm - accessible only via Web Archive, can’t download from local and external links but can find some models in google.

Many other models:

Another model/prefab download page:

Bots waypointing:

http://www.omni-bot.com/wiki/index.php?title=Enemy_Territory - tutorials
http://svn.assembla.com/svn/omnibot/Enemy-Territory/0.8/et/nav/ - already made waypoints

Basic knowledge:

brush - basic object drawn in 3D world. There are detail and structural brushes.
face (surface) - side of a brush.
entity - object which uses some specific code, for example func_door_rotating placed on brush with origin shader and any other brush changes them into a rotating door. New entities can be added into entity file.
entity’s key/value - changes value (specified by key) of an entity to another one. Every entity has its own specific keys/values (see Chrukers entity list). Pair example: key targetname / value name_of_object123
entity’s spawnflags - boxes in entity window which you can check/uncheck. They add selected functions to entities. Every entity has its own specific spawnflags (see Chrukers entity list).
texture - image which is drawn on brushes/models. ET can use .tga and .jpg images with 16/32/64/128/256/512/1024/2048 x 16/32/64/128/256/512/1024/2048 resolution. They need to be placed in textures directory.
pk3 - package which contains files used in map, menu, skinpack, soundpack or mod. Can be opened/edited with help of PakScape.
.map - file containing world of brushes and entities. It can be opened/edited with Notepad++ or any Radiant and compiled with Q3map2. Doesn’t need to be included in .pk3.
.bsp - compiled version of .map file that is used in ET. It has to be placed in maps directory.
.md3 - 3D model extension used in ET.
model tag - place in a model where something can be attached (other entity).
shader - textures modifications, for example adding transparency. They should be named yourmapname.shader and placed in scripts directory. Every .shader file name should be put in shaderlist.txt. Shader example:

textures/map_name/rocky                              //shader name
	qer_editorimage textures/map_name/rocky.tga  //texture shown in Radiant
	surfaceparm rock                             //adds rock step sound
        surfaceparm landmine                         //adds possiblity to plant landmines
	implicitMap textures/map_name/rocky.tga      //texture drawn in ET

shaderlist - .txt file (located in scripts folder) with listed .shader files which should be used in Radiant. You should add every .shader file name in next line.
mapscript - text file with scripts which add special effects such as doing objective, moving objects, finishing map etc. It should be named yourmapname.script and placed in maps directory. Mapscript example:

game_manager                       //script routine
     {                             //block start
         wm_axis_respawntime 5     //sets Axis respawn time   
         wm_allied_respawntime 5   //sets Allied respawn time
         wm_set_round_timelimit 70 //sets timelimit of map
         wm_set_defending_team 0   //sets the defending team (0 Axis, 1 Allies)
         wm_setwinner 0            //sets the winner (0 Axis, 1 Allies)

         wait 500                  //waits 0,5 second

         set object invisible      //disables entity called 'object'
         alertentity object2       //changes 'object2' entity state (enable/disable)
         accum 1 set 0             //changes accum 1 value to 0

     }                             //block end

     trigger captured              //trigger which is called from other part of script
         accum 1 inc 1             //increases accum 1 value by 1 
         accum 1 abort_if_not_equal 4  //stops the rest of script in this block if value isn't equal 4         
         trigger self end          //calls 'end' trigger from itself (game_manager routine)
     trigger end
         wm_announce "Hurray!"     //prints information on left side
         wm_setwinner 1            //changes the winner from Axis to Allies
         wait 4000                 //waits 4 seconds
         wm_endround               //ends map


barrier                           //script routine based on scriptname of func_constructible
		wait 50
		trigger self setup
		constructible_class 3

	trigger setup
		setstate axisconstruct_n_materials default	
		setstate axisconstruct_n_clip default		
		setstate axisconstruct_n_flag default

	built final
		setstate axisconstruct_n_materials invisible	
		setstate axisconstruct_n_clip invisible	
		setstate axisconstruct_n_flag invisible

		wm_announce "Axis have built the Barrier!"

        wm_objective_status 3 0 1  //sets objective status in limbo menu (based on .objdata)
        wm_objective_status 3 1 2

	decayed final
		trigger self setup

		trigger self setup
		wm_announce "Allies have destroyed the Barrier!"

        wm_objective_status 3 0 2
        wm_objective_status 3 1 1


	       wait 200
        trigger stolen 

   trigger dropped
		wm_teamvoiceannounce 1 "allies_hq_objective_lost" //voice announcement
	trigger returned
	trigger captured
		wm_teamvoiceannounce 0 "axis_hq_objective_lost"
		wm_teamvoiceannounce 1 "allies_hq_objective_captured"
        wm_announce "Allies have captured the first objective!"

	       wait 200
        trigger stolen 

   trigger dropped
		wm_teamvoiceannounce 1 "allies_hq_objective_lost"
	trigger returned
	trigger captured
		wm_teamvoiceannounce 0 "axis_hq_objective_lost"
		wm_teamvoiceannounce 1 "allies_hq_objective_captured"
        wm_announce "Allies have captured the second objective!"

	       wait 200
        trigger stolen 

   trigger dropped
		wm_teamvoiceannounce 1 "allies_hq_objective_lost"
	trigger returned
	trigger captured
		wm_teamvoiceannounce 0 "axis_hq_objective_lost"
		wm_teamvoiceannounce 1 "allies_hq_objective_captured"
        wm_announce "Allies have captured the third objective!"

	       wait 200
        trigger stolen 

   trigger dropped
		wm_teamvoiceannounce 1 "allies_hq_objective_lost"
	trigger returned
	trigger captured
		wm_teamvoiceannounce 0 "axis_hq_objective_lost"
		wm_teamvoiceannounce 1 "allies_hq_objective_captured"
        wm_announce "Allies have captured the fourth objective!"

               wait 200
               accum 1 set 0

               trigger game_manager captured    //calls the game_manager captured trigger              
               accum 1 inc 1
               accum 1 abort_if_not_equal 4
               wm_announce "Allies have stolen all objectives!"

               wm_objective_status 2 0 2
               wm_objective_status 2 1 1

game_manager - first routine in mapscript which is called by script_multiplayer entity. It contains important map informations (like timelimit, defending team etc.).
.arena - file that contains infos about the map (name, description, position on map etc.). Example file:

map "bsp_name"                          //should match the .bsp name
longname "^hNAME ^gOF ^hMAP"
type "wolfmp wolfsw"
timelimit 45
axisRespawnTime 5
alliedRespawnTime 5
lmsbriefing "Fight to the death."       //Last Man Standing gametype description
briefing "This is the map description!"
axiswintext "Axis won!"
alliedwintext "Allies won!"
mapposition_x 999                       //pin position on loading map
mapposition_y 666

.objdata - file with objective data displayed in limbo menu. It can be used together with limbo cameras and script. Example file:

// Set scenario information
wm_mapdescription allied "Description of map/objectives for Allies."
wm_mapdescription axis "Description of map/objectives for Allies."
wm_mapdescription neutral "Description of map/objectives for spectators."

// Axis objective descriptions
wm_objective_axis_desc 1	"Primary Objective:**Prevent Allies from stealing the key."
wm_objective_axis_desc 2	"Primary Objective:**Defend the base."
wm_objective_axis_desc 3	"Primary Objective:**Defend the objective."
wm_objective_axis_desc 4	"Primary Objective:**Don't let the Allies escape."

// Allied objective descriptions
wm_objective_allied_desc 1	"Primary Objective:**Steal the key."
wm_objective_allied_desc 2	"Primary Objective:**Capture the base."
wm_objective_allied_desc 3	"Primary Objective:**Steal the objective."
wm_objective_allied_desc 4	"Primary Objective:**Escape with truck."

limbo camera - camera which points at an objective in limbo menu (info_limbo_camera entity).
prefab - work made by some people which has been released and can be used in your projects (it’s a good manner to credit the person that made the prefab you use, many seem to forget that).
tracemap - image created via ET’s /generatetracemap. It needs to be used to calculate weather effects and can be used for creating commandmap. It’s generated in maps folder and named mapname_tracemap.tga.
commandmap - image displayed in ET when pressing G (default), in limbo menu and on compass/radar.
lightmaps - images created during -light compile in maps/mapname folder. They have to be put in PK3.
speakers - sounds which can be created/edited via ET’s /editspeakers mode. They are saved into .sps file in sound/maps folder.
skybox - box with sky shader and props_skyportal entity, which gives effect of seamless sky.
terrain - most often created out of func_group brushes. Can be easily made with help of Easygen or FATE.
foliage - md3 grass models ‘planted’ on a texture (like in radar map).
map leaked - error which means that hull caulk surrounding the map is incomplete and needs to be corrected.

Common shaders’ functions:

caulk - basic shader which isn’t drawn in ET. It should be put on all sides of brushes which you can’t see in-game as a player.
hullcaulk - a box made out of brushes with hull caulk shader should surround the map.
trigger - shader used on brushes which are trigger_ entities.
origin - shader used on brushes with entities which require it for functionality, for example func_door, func_door_rotating or func_bobbing.
ladder - brush with this shader can be climbed.
cushion - if you fall on a brush/surface with this shader, you won’t get hurt. In some mods (ETPro, ETjump) it will keep your speed, in others not. That’s why there are ‘bugged’ jumps on Jaymod trickjump servers.
slick - brush with this shader is slippy (used for ice etc.).
clip - blocks only players (not weapons).
clipweap - blocks players and weapons. There are 2 other clipweap shaders - metal and wood (they have specific sound).

In-game commands:

/devmap [name_of_bsp] - command used for running and testing map.
/autoscreenshot - makes screenshot of actual ET screen.
/cg_draw2d 0 - removes whole 2D HUD from screen.
/cg_drawgun 0 - removes gun model from screen.
/cg_drawfps 1 - draws FPS counter.
/cg_thirdperson 1 - switches viewpoint to third person.
/god - makes player immune to everything.
/noclip - allows you to go everywhere.
/autorecord - starts recording a .dm_82, .dm_83 or .dm_84 demo (depends on ET version).
/stoprecord - stops recording.
/editspeakers - enters speakers editing mode.
/dumpspeaker - creates a speaker.
/modifyspeaker - enters speaker’s (the one you look at) editing screen.
/undospeaker - undoes last change of speaker.
/r_showtris [1|2] - draws triangles on every surface (if 2 - only on rendered surfaces), useful for vis testing.
/r_triscolor [1.0 1.0 1.0 1.0] - changes RGB colour (first three values) and alpha-blending (last value) of tris triangles.
/r_speeds 1 - displays informations about map (shaders, leafs, verts, tris etc.).
/developer 1 - enters developer mode.
/g_scriptdebug - prints executed script events in the console.
/generatetracemap - generates tracemap.
/r_fastsky 1 - creates a black ‘sky’ on hullcaulk brushes.
/where - shows current coordinates (x y z)

Radiant related:

grid - determines the amount of lines in XYZ view. For example Grid16 draws lines on -64, -48, -32, -16, 0, 16, 32, 48, 64 etc. Bigger grid = less lines = less brush allocating possiblities.
plugin - Radiant addon, for example SunPlug which sets map coordinates.
Brush Cleanup - tool used for finding and correcting/deleting invalid brushes.
Clipper - tool used for cutting a brush into more smaller brushes.
CSG Substract - tool used for cutting brushes using another brush. It’s not recommended because it creates many T-junctions.
Surface Inspector - tool used for modifying textures on brush faces.
Patch Inspector - tool used for modifying textures on patch faces.
Entity Inspector - tool used for modifying entities (adding spawnflags and changing keys/values).
Plot Splines - tool used for drawing a line between connected splines.

Useful Radiant shortcuts:

Select brushes - Shift+Left mouse button
Select faces - Ctrl+Shift+Left mouse button
Clone selected brushes/models/entities - Space
Delete selected brushes/models/entities - Backspace (<-)
Select all the same entities/all brushes with the same texture - Shift+A
Create brush with x=number of sides - Ctrl+[x] where x = number of sides
Drag edges - E
Drag vertices - V
Rotate - R
Invert selection - I
Deselect - Esc
Connect entities - Ctrl+K
Delete connection between entities - Shift+K
Entity Inspector - N
Map Info - M
Entity List - L
Surface Inspector - S
Patch Inspector - Shift+S
Hide brushes/models/entities - H
Show hidden brushes/models/entities - Shift+H
Make detail - Ctrl+M
Make structural - Ctrl+S
Substract - Shift+U
Clipper Tool - X

Last update: 25.01.14

(shagileo) #92

Thanks for this and for your time !
Really useful

(KeMoN) #93

Really great job mate!

(nUllSkillZ) #94

Thanks for the link collection.
Should be really helpful.

(avery) #95

Custom Main Menu Help:


(nukits) #96

some tutorials/prefabs for beginners by Fate


(Smurfer) #97

^ the Castle AaaaaAaaAAAarrrrghhhhh…

(eaworker) #98

thanks prob sloved

(Destroy666) #99

Updated links from post 81. All accessible, some only through Web Archive wayback machine unfortunately. Completely dead ones removed. Basic ‘dictionary’ and tips included:

(twt_thunder) #100

BIG thanx :), page bookmarked