Conventions
If we write
'X' - key X is what you should press.
Abbreviations :
MW - MouseWheel
Any and all dimensions :
Width x Depth x Height ...are, of course, always relative to your current viewport, unless explicitly noted otherwise!
value ranges always start at 0, so the 1st
entproperty is
entproperty 0!
Introduction
basics
To get started with Sauerbraten editing, you will first need to be aquainted with the key mappings.
The easiest thing to do here, is simply print out the file found in
\Sauerbraten\data\defaults.cfg.
Aside from any autoexec.cfg edits you use, this file contains everything you'll need to get editing fast.
These pages will assume you are running a default keymapping if telling you about a key binding.
Take a look at the
scripting section if you want to adapt your bindings.
Using a wheel-mouse is highly recommended and the default bindings assume one is used!
Some basic introduction into sauerbraten editing mode is given here
Sauer Editing (by staffy on quadropolis).
A good primer to every budding mapper is
Some general mapping tips (by makkE on quadropolis).
geometry
mousewheel bindings
- MW + Y : select texture for face
- MW + F : push current face into cube
- MW + Q : push current corner into cube - also middle mousebutton (=WheelPress)
- MW + R : rotate cube (along current faces normal)
- MW + J : select brush (just for heighfields)
single keypress bindings
- C, V : copy / paste (use +/- X gridsize for scaling)
- X : mirror cube (along current faces plane)
- 0 : allfaces (for textureediting)
- . : editent DOT-key
- H : as heightfield
- BACKSPACE : delete entity
Edit-Walkthrough I
Assuming you start with a
newmap ...
- e to edittoggle,
- /gamespeed 300
- move up above the plane, viewing down
- MW + G until your grid shows the plane as 4x4
remove the outer layer of cubes completely.
MW scrolling on the active cube will push/pull geometry.
The active cube is either the off-white
pointed at cube
or it's the one you left-clicked to select.
Selection can be enlarged/reduced by dragging - even while moving;
but the easiest way to select structures is to:
- select two corners opposite on all 3D planes
- select the first by left-click, the second by right-click
continue the process of removing the outer layer,
take note of the depth of the map.
- move down along the borders of the central pillar
- remove the lower row of cubes to make it a free floating cube
- /savemap my_first_map
You just excavated only on the lower half of an octree.
The initial map was a completely half-filled octree.
Manage your space wisely! :)
The grid is your friend!
Since textures align to the grid it is vital when geometry is deformed,
great care needs to go into texture/geometry combinations when detailed areas are created.
Edit-Walkthrough II
If you followed
Walkthrough I :
/map my_first_map
If you don't load the map, you might still want to
/gamespeed 100 - maybe use
history.
Drag a single cube-border on your map by following these steps:
Assuming you just have a central block inside your map ...
- select any cube on the border of your map
- MW + G until your grid won't go any smaller
- MW it as far as it will go, that's border #1
- /gamespeed 300
- continue a row of cubes at the border .. 4 rows actually
- use the 1st/2nd selection to quickly select known fields as soon as you've done the first couple of faces completely :)
- /savemap
Edit-Walkthrough III
If you followed
Walkthrough II :
/map my_first_map
Remember
/gamespeed 100 .... or less - for delicate movements.
Go to the center of your map, you will be placed there if upon mapload,
since no spawn is yet placed.
We will change this.
/newent playerstart
then move a bit up from the sparkle of the playerstart entity.
/newent light 128 64 64 64
place yourself somewhere looking nicely onto your platform
/calclight 2;savemap
on linux you could even do
/fullscreen 0;fullbright 1;calclight 2;savemap;fullscreen 1
Now your map has an entity to spawn and a light to see.
Everything else is more of the same with your knowledge of the
documentation.
entities
create entities via menu or by manually calling
newent NAME [arg1 [arg2 [arg3 [arg4]]]]
drag entities by their sparkly along plane closest to current FOV.
modify a certain property of your selected (or closest) entity by
entproperty 0 +10
entproperty 1 -180
entproperty 3 -1
loop p 3 [entproperty (+ 1 $p) -32]
or if you like to scroll via
MW + 4 and select the appropriate property (0..3) via
MW + 3 you might use
this script.
Some entities constantly rotate, others can be orientated - for example mapmodels, teledest and playerstarts.
These ents will take their original orientation from your viewing angle at time of placement,
this angle will be saved in entproperty 0 (usually - check on your console to be sure!)
interesting entities
entname |
param |
description |
jumppad |
P H V |
P = power of push, H and V power in direction of N/S and E/W (absolute on map).This means you could have two jumppads diagonally opposite each other and with properties 23 10 -10 and 23 -10 10, |
monster |
T |
T = type of monster. 0 is ogro, 1 is rhino, 2 is ratamahatta, 3 is slith, 4 is bauul, 5 is hellpig, 6 is hellknight, 7 is goblin - current FOV @ placement is direction it's facing, tweak by entproperty 0 |
teleport |
I |
I = index of all teleports |
teledest |
I |
I = index of all teleports - current FOV @ placement is direction your facing on exit |
Before you map
Be warned :
- mapping can burn a lot of your time.
- keep backups
- and adhere to playability standards
when you've done tinkering around and getting to grips with your tools; tried to build some stuff - just to really get a feel for resulting scale, after endless hours refining just one corner of your layout - you might want to read something like this
article on mapping, to
get the most out of your work into something being a great map. Also don't hesitate to really closely examine how architectural stuff and visual impressions are done by others. Use 'E' on any part of a map you like to find out "
how they did it". Just don't save over the originals!
You will most surely want to use a lot of
gamespeed 10 up to
gamesspeed 1000 to sharpen or slur your movement precision - depending on wether you need to zoom across your RPG map toward some distant location or are fine tuning minmal gridsize stuff.
The last thing a new mapper should be thinking about is releasing the early map(s). Share the maps with a few other people, just for ideas, and encouragement along the way. If you are unsure about what is actually a nice looking/playing map, just load up any map from the first maps menu in Sauerbraten. This should give you some guidelines as to what is expected out of a map.
If the
editing tutorial didn't get you started,
try this
DIY-walkthrough.
Editing Features Explained
You should really have some features at your fingertips - this will call for some personalized key-bindings sooner or later.
Since your view's angles have influence on the way you select e.g. faces of cubes you should think about being able to finetune your movement sensitivity by quickly switching from one gamespeed to another.
The simplest form would be have two key-bindings to toggle between "default" and a high as well as a low setting
[gamespeed 500; onrelease [gamespeed 100]]
[gamespeed 30; onrelease [gamespeed 100]]
Finer grained modifiers can be used if this is your style - either get some basic scripting from the interwebs or write it yourself,
this is too personal for there to be big packs, the meATpAk might be an exception - but it does everything it's own way, so : you've been warned!
Another important control to have at the ready:
history
You should certainly have a key bound to the
history command, then placing X lights of same setup is just movement and pressing
that key. :)
Of course this requires you to set the first light via a console command - not via the menu, since this doesn't get added to your console history.
While we're on the topic of the console you should look at the way
basic on-the-fly scripting can help you speed up your editing!
Expert Editing Methods
Map Screenshot : for use in the GUI menus, or for quadropolis-postings, or ...
Shaders : what are they?
heightfield
Convert your current selection to a heightfield by pressing
H,
then roll your mouse with
J pressed to select your desired brush.
Now more over your selection and roll your mouse as usual for geometry manipulation.
Now you're manipulating the heightfield with your selected brush :)
If you press
H again it will smooth your current selection. (Uses a moving avg algorithm)