Editing Methods
Contents
Conventions
If we write 'X' - key X is what you should press. 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
Your installation folder holds some offline documentation in "docs/" -- always keep it handy! You might also want to read the Edit WalkThrough to get you going and/or verify you've got the basics down.
Basics
To get started with Sauerbraten editing, you will first need to be acquainted 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).
The Power of the Right-Click
Left-clicking to mark entities or faces is straight-forward. So too is the usage of right clicking to extend selection.
Don't underestimate the power this gives you, e.g. after the first entity in a given set, right-click to add all the rest of the set. Then right-click a face somewhere nearby. Copy-Paste is now as easy as orientating from the face you chose as "handle".
geometry
Scroll Wheel bindings
- Y-Scroll: select texture for face
- F-scroll: push current face into cube
- Q-scroll: push current corner into cube -- also middle mousebutton
- R-scroll: rotate cube (along current faces normal)
- J-scroll: select brush (just for heightfields)
Single Key Bindings
- C and 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 selection
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 using
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 this teleport (needs to be unique) |
teledest | I | I = index of target teleport (see above) - current FOV @ placement is direction your facing on exit |
Handling Entity Properties
There are a zillion possible alterations of the example procedure shown below, it's just not possible to give you all the possible methods of interaction - the document would be of infinite size and thus infinitely unhelpful. You just need to build up your own subset of handy commands you keep using, start writing some on-the-fly scripts and then - when they turn out to be really useful - copy (and enhance) them inside their own little CFG file you call from inside your autoexec.cfg - this way you'll have these "functions" stored nice and clean and seperate ... good basis for distributing them later to a site like http://quadropolis.us The following is based on a discussion that occured on the cube-forum - http://cubeengine.com/forum.php?action=display_thread&thread_id=3&start=4406
#4412: Rotate mapmodels by aiueo on 11/25/2010 06:55 I wonder if it is possible to rotate all the mapmodels inside of some selection. The problem is, I've rotated some large map with about two hundreds of mapmodels, but they all saved their original direction. Is there any way I could turn them by -90 (or +270) degrees? #4415: Re: Rotate mapmodels by SheeEttin on 11/26/2010 07:58, refers to #4412 http://sauerbraten.org/docs/editref.html#replaceents If you just want to do it on a subset of all mapmodels (those inside a selection), then it's more complicated [...] #4416: Re: Rotate mapmodels by Hirato Kirata on 11/26/2010 13:03, refers to #4415 rotate in a selection /entselect insel /entloop [entset (et) (+ (ea 0) 270) (ea 1) (ea 2) (ea 3) (ea 4)] To rotate everything, just replace insel with 1 #4418: .. by Drekow on 11/26/2010 21:13 There is a way to deselect all the ents without loosing the blue selection box? I wants to do a script that flips ents for ctf maps... #4419: Re: .. by eihrul on 11/27/2010 00:25, refers to #4418 /entcancel command?
Before You Map
Be warned that:
- mapping can burn a lot of your time,
- keeping backups is an absolute necessity,
- and not adhering to playability standards will make your map a failure.
When you've done tinkering around and getting to grips with your tools, try 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, or either of these two chapters gameplay and lighting. They will help you to get the most out of your work into something being a great map. 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 it was done. Just don't save over the originals, or you might not be able to play on servers. Also, don't forget to check out what data/default_map_settings.cfg does or how the map you're looking at might be modifying this through it's own map-CFG (for map "this_map" it would be packages/base/this_map.cfg).
You will most surely want to use a lot of floatspeed 10 up to floatspeed 1000 to speed up or slow your movement -- depending on wether you need to zoom across your RPG map toward some distant location or are fine tuning minimal grid-size stuff.
The final thing a new mapper should be thinking about is releasing their first. 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 really have some incredible features at your fingertips -- this will likely call for some personalized key-bindings sooner or later. Since your view's angles have influence on the way you select 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. This script sets you to move five times faster while holding the equals sign, and a third as fast while holding backslash (above enter).
bind EQUALS [ gamespeed 500; onrelease [ gamespeed 100 ] ] bind BACKSLASH [ 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!
Expert Editing Methods
Map Screenshot: for use as the GUI map icon, Quadropolis image, and so on.
Shaders: what are they? How do you use them?
Please help us to fill this page with more helpful information! Simply post your suggested entries on the discussion page here. Things that should be discussed in (more) detail:
Particles, triggers (for more than a simply locked door), lighting
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)