http://cubeengine.com/w/index.php?title=Special:NewPages&feed=atom&hidebots=1&hideredirs=1&limit=100&offset=20141212155920&namespace=0&username=&tagfilter=&size-mode=max&size=0Cube Wiki - New pages [en]2024-03-19T02:51:52ZFrom Cube WikiMediaWiki 1.31.7http://cubeengine.com/wiki/Cubescript_Tutorial_Chapter_1Cubescript Tutorial Chapter 12014-12-12T15:59:19Z<p>Admin: </p>
<hr />
<div>=CubeScript Tutorial= <br />
<br />
==Chapter 1: Getting Started== <br />
<br />
===Making a CFG=== <br />
<br />
The most basic part of a script is having a file to run it in. Of course you can simply type it in the console on-the-fly, but scripts can get very complex. Trying to type in an entire script, or even copy-and-paste it into the console simply won’t work even in slower games than Sauerbraten.<br />
<br />
So let’s open up your favorite word processor, right? Not quite yet, as your editor needs to be able to save files as pure text. Word processors, what newbs will be more familiar with, save their contents in special binary files, which Sauerbraten can’t read. Examples are Microsoft Word (*.doc), Apple’s Pages (*.pages), and OpenOffice (*.odt). Most of these can edit and save text files, but they are sluggish apps for the most part that have a lot of useless features for simple text editing.<br />
Now that you know what not to use, let’s find something you can. For Windows, most people will use Notepad -- Very exciting. For Linux, there are kate, nano, emacs, and vim. Finally, Mac has TextEdit, which reads and writes most file types. [http://www.bean-osx.com/Bean.html Bean] , an open-source offering, is free to download and a very nice balance between features, speed and elegance. Below is a list of apps that you can use, their platform(s), and how to make a CFG (“configuration file”).<br />
<br />
(If you have any information on the Windows or Linux sections, please comment in the articles discussion page.)<br />
<br />
{| style="border: 1px solid #c6c9ff; border-collapse: collapse;" cellspacing="0" cellpadding="10" border="1"<br />
|-<br />
| Windows <br />
| <br />
|-<br />
| Notepad <br />
| Preinstalled <br />
|-<br />
| <br />
| <br />
|-<br />
| [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] <br />
| Download <br />
|-<br />
| <br />
| <br />
|}<br />
<br />
{| style="border: 1px solid #c6c9ff; border-collapse: collapse;" cellspacing="0" cellpadding="10" border="1"<br />
|-<br />
| Linux <br />
| <br />
|-<br />
| [http://kate-editor.org/ kate] <br />
| Depends <br />
|-<br />
| <br />
| <br />
|-<br />
| [http://www.nano-editor.org/ nano] <br />
| Depends <br />
|-<br />
| To save, press Ctrl-O. To quit, hit Ctrl-X. <br />
| <br />
|-<br />
| [http://www.gnu.org/software/emacs/ emacs] <br />
| Depends <br />
|-<br />
| Choose the file name by typing Ctrl-F Ctrl-X (in sequence). Ctrl-X Ctrl-S (in sequence) to save, Ctrl-X Ctrl-C to quit. <br />
| <br />
|-<br />
| [http://www.vim.org/ vim] <br />
| Depends <br />
|-<br />
| <br />
| <br />
|}<br />
<br />
{| style="border: 1px solid #c6c9ff; border-collapse: collapse;" cellspacing="0" cellpadding="10" border="1"<br />
|-<br />
| Mac OS X <br />
| <br />
|-<br />
| TextEdit <br />
| Preinstalled <br />
|-<br />
| Open TextEdit. Click Format>Make Plain Text or press Command-Shift-T, then press Command-S and choose where to save it and what to call it. <br />
| <br />
|-<br />
| [http://www.bean-osx.com/Bean.html Bean] <br />
| Download <br />
|-<br />
| Open Bean. Click File > Save As... > Text (you provide extension) and choose a name (must end in ".cfg") <br />
| <br />
|-<br />
| [http://www.barebones.com/products/TextWrangler/ TextWrangler] <br />
| Download <br />
|-<br />
| [http://smultron.sourceforge.net/ Smultron] <br />
| Download <br />
|-<br />
| <br />
| <br />
|}<br />
<br />
===1.2 Binds: How To=== <br />
<br />
<pre><br />
bind “W” [forward]<br />
<br />
bind “W” [ forward ]<br />
<br />
bind W [forward]<br />
<br />
bind W “forward”<br />
<br />
</pre><br />
<br />
These four lines show the two ways you can assign (bind) a key to a certain command. (I prefer the first or second or even third, since they appear to be more in line with the rest of CubeScript’s style; I’ve included the fourth so you can recognize it.) This tells Cube you want to move forward when you press “w” on your keyboard. Most keys will already be assigned in Sauerbraten/sauerbraten/data/defaults.cfg (defaults.cfg from now on), so you don’t have to worry about most of them.<br />
<br />
You can assign any command to any available key (see section 1.4 for all key names). If I named a script “hello” and I wanted to assign it to the left shift key, I’d add<br />
<pre><br />
bind “LSHIFT” [hello]<br />
</pre><br />
to autoexec.cfg in my sauerbraten folder; if autoexec.cfg doesn’t already exist, you can simply make one like you did in 1.1.<br />
<br />
By default, jumping is bound to your right mouse button (MOUSE2). You might like this; however, other games usually have jumping bound to the spacebar. If you want to keep all your movement keys in one place, and your shooting keys on your mouse, you can switch some stuff around. (Currently, both left click and the spacebar are jump; however, this is still a good exercise.)<br />
<br />
So what do you do? Well, the key name (SPACE) and the command (jump) are fairly obvious, and you know how to make simple binds, so go ahead and try it. Remember to place your customizations in autoexec.cfg so that Cube will remember them if you ever need to delete config.cfg (a common fix for many problems).<br />
<br />
You should end up with something like<br />
<pre><br />
bind “SPACE” [jump]<br />
</pre><br />
Now left click is free to bind a “zoom script” to. You’ll make your first script, a zoom, in 2.1.<br />
<br />
NOTE:<br />
In defaults.cfg, you will see some lines that look like this:<br />
<pre><br />
editbind “SPACE” [ cancelsel; passthroughsel 0 ]<br />
</pre><br />
As you can see, it’s some sort of bind. But editbinds only apply while you’re in edit mode. This is delicate territory, so we’ll learn about editbinds much later on. For now, don’t touch any of them.<br />
<br />
1.3 Some basic commands for common use<br />
<br />
Here are some commands you’ll need fairly often:<br />
<br />
These five should be fairly obvious:<br />
* forward<br />
* backward<br />
* left<br />
* right<br />
* jump<br />
<br />
* "thirdperson X" turns thirdperson view on and off (X equalling 1 and 0, respectively)<br />
* "fov X" changes your field of vision to any number between 150 and 50 degrees (100 is default in Sauerbraten, 90 in most other games)<br />
* "hudgun X" shows your gun in-game (1) or hides it (0)<br />
* "hidehud X" shows your hud (heads-up-display) (0) or hides it (1)<br />
* "screenshot" takes a screenshot as a .bmp and saves it to your sauerbraten folder<br />
* "say X" used by a script to say a comment, such as “good game”, for you<br />
* "taunt" performs the taunt animation in-game<br />
* "map X" loads map X<br />
* "mode X" changes the mode for the next map to X<br />
* "echo X" is used by a script to tell only you something, such as warnings, map information, or a story in singleplayer<br />
* "''" is used to start a comment line in a script<br />
<br />
===1.4 Bind: Key names reference=== <br />
<br />
See [[Cubescript Tutorial Key Reference|this page]] for a complete list of the keys you can bind in Cube II.<br />
<br />
=[[Cubescript Tutorial Chapter 2|Next Chapter]]=</div>Adminhttp://cubeengine.com/wiki/Cubescript_TutorialCubescript Tutorial2014-12-12T15:59:19Z<p>Admin: </p>
<hr />
<div>=CubeScript Tutorial= <br />
<br />
==Table of Contents== <br />
<br />
# [[Cubescript Tutorial Chapter 1|Chapter 1: Getting Started]]<br />
## [[Cubescript Tutorial Chapter 1#toc1|1.1 Making a CFG file]]<br />
## [[Cubescript Tutorial Chapter 1#toc2|1.2 <tt>bind</tt>]]<br />
## [[Cubescript Tutorial Chapter 1#toc3|1.3 Basic commands]]<br />
## [[Cubescript Tutorial Chapter 1#toc4|1.4 <tt>bind</tt>s: Key names reference]]<br />
# [[Cubescript Tutorial Chapter 2|Chapter 2: Simple Scripts]]<br />
## [[Cubescript Tutorial Chapter 1#toc5|2.1 Your first and second <tt>zoom</tt> scripts and <tt>if</tt>]]<br />
## [[Cubescript Tutorial Chapter 1#toc6|2.2 Executing scripts]]<br />
# [[Cubescript Tutorial Chapter 3|Chapter 3: Getting More Complicated]]<br />
## [[Cubescript Tutorial Chapter 1#toc7|3.1 Your third <tt>zoom</tt> script and <tt>sleep</tt>]]<br />
## [[Cubescript Tutorial Chapter 1#toc8|3.2 GUIs]]<br />
# [[Cubescript Tutorial Chapter 4|Chapter 4: More Valuable Information]]<br />
## [[Cubescript Tutorial Chapter 1#toc9|4.1 arg1]]<br />
## [[Cubescript Tutorial Chapter 1#toc10|4.2 <tt>if ( = $continuing 1 ) [ proceed ]</tt>]]<br />
## [[Cubescript Tutorial Chapter 1#toc11|4.3 Your fourth <tt>zoom</tt> script]]<br />
# Chapter 5 (WIP)</div>Adminhttp://cubeengine.com/wiki/CubeScript_in_21_daysCubeScript in 21 days2014-12-12T15:59:19Z<p>Admin: </p>
<hr />
<div>=Orphaned= <br />
This is not a finished page, so it is not for publishing yet. You probably want the [[Cubescript Tutorial]]. This doesn't have much material or many references -- that's another reason why it's an orphan.<br />
That means that you should leave this paragraph here.<br />
<br />
=<span style="font-size: 17px; line-height: 25px;">Rough Goals</span>= <br />
Merge the information from the [[Scripting Guide|two]] [[Cubescript Tutorial|branches]] about CubeScript currently in this wiki out from this central reference; not required to be rigidly followed by a reader; but by the ordering into a 3-week course, someone hunting for references, ideas, or samples about anything will be able to learn...<br />
* from an introduction -- e.g. start reading till you start skipping on your own<br />
* intermediary stuff, like your first own scroll wheel modifier<br />
* advanced stuff, where in-depth knowledge about <tt>arg1</tt> and such might get those bits of the puzzle rattling around a scripter's mind to fall into place.<br />
* and find the right pages to look at quickly.<br />
<br />
Remember: the power of CubeScript may surprise everyone, even it's developers! Its flow-control structures combined with the (extendable -- see the [[Modding Guide]]) get-set functions make the body of possible applications impossible to count.<br />
<br />
==<span style="font-weight: 800;">Being a WIP</span>== <br />
Subsections will only contain teasers; any "real" content happens on dedicated pages. Initially we should maybe try sketching out the progression of the 3 weeks in kind-of waves, let's not touch Week 3 until Week 1 is standing solid, for example, or something like that anyway -- let's try to logically build up from Day 1.<br />
<br />
=CubeScript in 3 Weeks= <br />
This section should contain a quick to check/discard list of pages one should be at least aware of:<br />
* JadeMatrix's [[Cubescript Tutorial|CubeScript Tutorial]]<br />
* The [[Scripting Guide]]<br />
==Usage== <br />
An explanation of the hierarchy ''--'' the one we'll have eventually ''--'' of how to begin, peruse or scan this part of the wiki.<br />
If it's intricate stuff it might first become clear by reading in Week 3... if it's about more basic matters it'll probably already have been discussed earlier.<br />
<br />
=Week 1= <br />
==Day 1== <br />
===Why To Use CubeScript=== <br />
Are you repeating the same commands over and over? Have you tired of using the command history for a series of commands? Do you want to create a scroll wheel toggle of your own? Or would a simple <tt>bind</tt> even do?<br />
<br />
Even something like performing the same task on a scriptable subset of entities is possible.<br />
<br />
===Goal=== <br />
For starters we'll handle a simple keybinding scenario:<br />
<br />
**Direct Gun control'''<br />
<br />
In the Trooper release: check, if I recall correctly, this is now handled natively. Often players coming from other FPSes find the way weapon selection works unsatisfactory. The closest Sauerbraten's engine can come would be by putting this code at the end of your autoexec.cfg.<br />
<pre><br />
bind 0 "weapon 0 0 0"<br />
bind 1 "weapon 1 0 0"<br />
bind 2 "weapon 2 0 0"<br />
bind 3 "weapon 3 0 0"<br />
bind 4 "weapon 4 0 0"<br />
bind 5 "weapon 5 0 0"<br />
bind 6 "weapon 6 0 0"<br />
</pre><br />
----<br />
**<tt>entproperty</tt> Control'''<br />
<br />
This has been done natively for quite some time now. We'll handle the scroll wheel function now; let's think about entity properties... so we need a multiplier alias to know whether to scroll fast or at regular speed. Then we need an alias named game_modifier_'''n''' - where n is an appropriate index, this is the function that get's passed either +1 - 1 depending on whether the user scrolled up or down. Last -- but not least -- we need a keybinding, that will make the function accessible in-game.<br />
<pre><br />
my_scroll_multiplier = 1<br />
my_scroll_multlistof = "1 2 5 10 100"<br />
game_modifier_440 = [<br />
// Todo: Clean up the CubeScript<br />
]<br />
</pre><br />
----<br />
===Walk-Through=== <br />
[...] the clean CubeScript mentioned above, with some explanation along the way [...]<br />
==Day-2== <br />
[...]<br />
=Week-2= <br />
==Day-8== <br />
===Motivation=== <br />
[...] going deeper... probably somewhere along JadeMatrix's [[Cubescript Tutorial Chapter 4]].<br />
===Goal=== <br />
[...]<br />
===Walk-Through=== <br />
[...]<br />
=Week-3= <br />
==Day-15== <br />
===Motivation=== <br />
[...]<br />
===Goal=== <br />
[...]<br />
===Walk-Through=== <br />
[...]<br />
==Day-21== <br />
Some last words, perhaps?</div>Adminhttp://cubeengine.com/wiki/Creating_RagdollsCreating Ragdolls2014-12-12T15:59:19Z<p>Admin: </p>
<hr />
<div>Sauerbraten supports ragdolls for skeletally-animated models -- currently only MD5 models. These are specified by a ragdoll config file that is included in a model's config file.<br />
<br />
=Downloading the Editor= <br />
The ragdoll editor can be downloaded at http://sauerbraten.org/lee/ragdoll.tar.gz.<br />
<br />
=Using the Editor= <br />
See the included README.txt for basic information on keybinds for editing. Some additional stuff:<br />
<br />
The <tt>savecfg</tt>/<tt>writecfg</tt> (*) command writes a sauerbraten-readable ragdoll.cfg file. Do this when you are finished.<br />
(*): some discussion arose as to which is the correct command to use, see here : Posts 13 & 14 on http://cubeengine.com/forum.php?action=display_thread&thread_id=2029<br />
<br />
A useable ragdoll needs to have the model's joints bound to spheres (and triangles) in the ragdoll. /bindjoint (J) will bind the currently selected joint, sphere(s) and triangle. <tt>printjointmap</tt> gives some details on current binding.<br />
<br />
You might want to place spheres exactly on joints. After doing so, to select one or the other you can use the toggle visibility commands (F5-F8).<br />
<br />
The editor will load the quicksave file automatically. To load a new MD5 model, use <tt>loadmodel NAME</tt>. Then do <tt>quicksave</tt> (minus key, left of the equals sign) and it will be loaded automatically next time you run the editor. Use <tt>quicksave</tt>/<tt>quickload</tt> as you work for efficiency.<br />
<br />
=More Information= <br />
Sauerbraten's ragdoll algorithm was based on an article by David Rosen, [http://legacy.wolfire.com/rotationconstraintpaper/paper.html Character Physics based on Newtonian Particle Simulation with Angular Constraints].</div>Adminhttp://cubeengine.com/wiki/Cooperative_EditingCooperative Editing2014-12-12T15:59:18Z<p>Admin: </p>
<hr />
<div>Unique to the Cube Engine games, cooperative editing lets you build and modify maps with others seamlessly. This mode allows you to just switch to the edit mode online, just like as if you were editing locally. Some functions however are not available in coopedit, namely the undo function, along with some convenient commands like <tt>gamespeed</tt> and heightmapping.<br />
<br />
=Saving and Resuming Coopedit Sessions= <br />
Lighting and saving, is done client-side, so while still completely functional, it requires cooperation to keep everyone in the server up to date. This means if you do a <tt>calclight</tt>, everyone else will still be on fullbright or the previous <tt>calclight</tt>. Saving will just save a local copy of the current map to the hard drive, think of it as "dumping" the map off the server, rather than saving. So if you're with some friends, urge them all to save the map periodically so you don't lose your work.<br />
<br />
When resuming a coopedit session, simply use the commands <tt>sendmap</tt> and <tt>getmap</tt> to send and receive the map through the server, respectively. Note that with this method, CFG files are not sent, meaning if you've got a custom texture list in the map's CFG, everyone else will see another random set of textures instead. If you're going to coopedit with a custom config, you'll need to send the map config by other means to your friends editing with you. People who join won't be able to see the map unless they <tt>getmap</tt>, so you should probably set the server to private (using <tt>[[Multiplayer Guide#master|mastermode]]</tt>).<br />
<br />
=Editing Etiquette= <br />
Coopedit is just that -- you can add to other's work or remove it. It is poor form to delete others' work without their consent, just like it wasn't nice to destroy the other kid's castle in the sandbox. Editors try to not work next to each other to avoid interference.<br />
<br />
When choosing a server to coopedit on with your friends, use common sense. Server hosts despise editors who join a 32 player server and set it to private. There are many specialized coopedit servers which might have client limits of six or less, which is more than you'd want in a typical coopedit anyway -- four or five players is generally more than enough. As a general guide, servers with eight player slots or above shouldn't be used for coopedit, you could be stopping a group of players from having a game of capture, which they can't do on the smaller four to six player slot servers.<br />
<br />
Learn to control your temper. If a newbie joins and starts messing with your map, don't lose it. Explain calmly and concisely why you don't want them to do whatever they are doing, and try to give them a few pointers. If you don't want outsiders to join, set the server to private (<tt>mastermode 3</tt>).<br />
<br />
Coopediting can speed up redundant, repetitive, or redundant processes -- especially useful for large and complicated maps, like smoothing lots of curves or building long stairways. Other editors can fix errors that you didn't notice -- possibly with methods you didn't know about. It's important in coopedit to share editing techniques, so that even newbies can help you out. Think of editing Sauerbraten maps as writing wiki articles: anyone can contribute, and even if suffering some damage (inflicted deliberately or not) it can be reverted back to a normal state.</div>Adminhttp://cubeengine.com/wiki/Configuration_HintsConfiguration Hints2014-12-12T15:59:18Z<p>Admin: </p>
<hr />
<div>=Basic Configuration= <br />
==autoexec.cfg and config.cfg== <br />
These files reside in the base installation folder. If anything unusual happens -- like key bindings not working anymore -- you should be prepared to move (or even delete) your <tt>config.cfg</tt>. This file is autosaved during <tt>quit</tt> and executed upon engine start. It is used to keep values from one run to the next for persistent game settings and for any "on-the-fly" scripting you might have done during your last sessions. The trouble is... this may result in bogus data being saved -- the only way to win is: not to play -- so, just be ready for trashing config.cfg to return to a clean setup.<br />
<br />
It will be written at every clean exit. If it doesn't exist it will initially contain whatever is in <tt>./data/defaults.cfg</tt> - so never modify ''that'' file! It helps to remind yourself that <tt>config.cfg</tt> is actually just saved for what settings you may have changed during your previous session.<br />
<br />
Since a few releases we now have personal home-directories used for the engine, which means you need to check that folder for the config.cfg too.<br />
* On Linux it's to be found in <tt>~/.sauerbraten</tt><br />
* On Windows somewhere inside <tt>C:\Documents and Settings</tt> and or on Windows 7 you may have to go to %LOCALAPPDATA% and navigate within that directory up to Program Files\Sauerbraten<br />
* On Mac "~/Library/Application Support/sauerbraten" is the correct destination<br />
<br />
If this information is too sketchy for you, just perform a search over your harddisk for files called config.cfg!<br />
<br />
=Keyboard= <br />
==Binding Keys== <br />
You can bind your own CubeScript to keys simply by adding appropriate lines to your <tt>autoexec.cfg</tt>.<br />
<pre><br />
bind P [ echo "I pressed the key P" ]<br />
editbind P [ echo "I'm in editing and pressed P" ]<br />
<br />
// Unfortunately, the fullscreen command only works on Linux and OS X<br />
bindvar F2 fullscreen<br />
</pre><br />
<br />
==Internationalization== <br />
If you want to use extra keys on your keyboard, that aren't bindable by default -- like German Umlaut keys for example -- you'll have to edit <tt>data/keymap.cfg</tt>. You need to know the ANSI code for the key and add it to the configuration. As an example -- here the required lines for those german keys:<br />
<pre><br />
// These keybindings have been added for DE support<br />
keymap 223 SZ<br />
keymap 252 UE<br />
keymap 246 OE<br />
keymap 228 AE<br />
</pre><br />
Then you can bind them just like <tt>CARET</tt>, <tt>HOME</tt> or <tt>KP_5</tt> (e.g. any other key).<br />
If you are on Linux or Mac the tool to find out about the codes is called <tt>xev</tt>. Open a terminal and type:<br />
<pre><br />
xev|egrep "code|button"<br />
</pre><br />
The terminal is found in /Applications/Utilities/Terminal.app on Mac OS X.</div>Adminhttp://cubeengine.com/wiki/ConfigurationConfiguration2014-12-12T15:59:18Z<p>Admin: </p>
<hr />
<div>Redirect to Configuration Hints</div>Adminhttp://cubeengine.com/wiki/Coloured_textColoured text2014-12-12T15:59:17Z<p>Admin: </p>
<hr />
<div>==Coloured Text== <br />
You'll need to use the control-character "\f" (line-feed),<br />
If you need to use it interactively (in-game), you'll want to know it has the ASCII-code of 12;<br />
* On Linux and Windows '''Control + L''' will create it (unseen, it doesn't render - it's invisible!) in-game - behaviour in a gui-editor (3rd party) may vary.<br />
* On Linux '''Control + V''' and then '''L''' will produce it on the shell or similar enviroment<br />
* On Windows you can also try to create it via '''AltGr + 1 + 2''' (numpad only!). The key combination '''Control + Alt''' can be used instead of '''AltGr''' if you don't have that key.<br />
* You can also use [http://cubeengine.com/w/files/Control_char_formfeed.txt Control_char_formfeed.txt] (use "Save Link as..." from your browser!) - again, it may be rendered invisible by your editor - find one for your platform that shows up control-characters!<br />
<br />
Colourization (this also applies for CubeScript/ingame colors) works via the control-char followed by a indication character. Apart from the special cases of "\fs" and "\fr" for saving/restoring previously set colors in the current line of text you can use the following numbers to set to the respective colour:<br />
<br />
* 0: green<br />
* 1: blue<br />
* 2: yellow<br />
* 3: red<br />
* 4: grey<br />
* 5: magenta<br />
* 6: orange<br />
<br />
Everything else is drawn in white; a commonly seen colour-code-string is "\ff" for white<br />
<br />
Also see what the AssaultCube people wrote on the [[@http://wiki.cubers.net/action/view/CubeScript|AC wiki about colouring text]]</div>Adminhttp://cubeengine.com/wiki/Colored_textColored text2014-12-12T15:59:17Z<p>Admin: </p>
<hr />
<div>==Colored Text== <br />
You'll need to use the control-character "\f" (line-feed),<br />
If you need to use it interactively (in-game), you'll want to know it has the ASCII-code of 12;<br />
* On Linux you should be able to create it with Control-L (ingame or in an editor) or Ctrl + V and then L (on the shell)<br />
* On Windows you should be able to create it via AltGr-1-2 (numpad only!). The key combination Control-Alt can be used instead of AltGr if you don't have that key.<br />
<br />
Colorization (this also applies for CubeScript/ingame colours) works via the control-char followed by a indication character. Apart from the special cases of "\fs" and "\fr" for saving/restoring previously set colors in the current line of text you can use the following numbers to set to the respective color:<br />
<br />
* 0: green<br />
* 1: blue<br />
* 2: yellow<br />
* 3: red<br />
* 4: gray<br />
* 5: magenta<br />
* 6: orange<br />
<br />
Everything else is drawn in white.</div>Adminhttp://cubeengine.com/wiki/Building_and_CompilingBuilding and Compiling2014-12-12T15:59:17Z<p>Admin: </p>
<hr />
<div>The following are methods to compile Sauerbraten for the three main target OSes (Windows, Linux and Mac OS X).<br />
<br />
----<br />
<br />
==Windows== <br />
<br />
===Code::Blocks / TDM-GCC=== <br />
First, install TDM-GCC 64bit version: [[@http://tdm-gcc.tdragon.net/download|TDM-GCC]] (the second link on that page)<br />
Then, install [[@http://www.codeblocks.org/downloads/26#windows|Code::Blocks]] (first windows download link, no need for the packaged mingGW)<br />
<br />
Boot up Code Blocks, click "Open An Existing Project", navigate to sauerbraten/src/vcpp/ and select sauerbraten.cbp<br />
<br />
In the menu bar click Build, -> Build, and it will compile to your sauerbraten folder. After it is done (you will see blue text saying 0 errors and such) you can run sauerbraten.bat<br />
<br />
===Code::Blocks / MinGW=== <br />
''Note: the following method does not work with the more recent versions, use tdm gcc 64 bit.''<br />
<br />
To compile Sauerbraten under Windows, download [http://www.codeblocks.org Code::Blocks] and install it. After installation has completed, load up Code::Blocks, go to File > Open. Navigate to "sauerbraten/src/mingw" and select "sauerbraten.cbp". Once the project has loaded, go to Build > Build, and wait patiently for sauerbraten to compile. Once it has finished compiling, you will find the EXE in "sauerbraten/bin" under the name "sauerbraten-mingw.exe". Simply edit your .bat launcher to use this executable instead, and enjoy.<br />
<br />
The version of MinGW that ships with Code::Blocks was known to be buggy, especially when compiling Sauerbraten. You should probably obtain the latest version from [https://sourceforge.net/projects/mingw/files/ the Sourceforge download page] and install it (to the default location, unless you want to mess with Code::Blocks compiler settings).<br />
<br />
===Microsoft Visual C++ Express=== <br />
An alternative method for compiling under Windows is by using Microsoft's Visual C++ 2008 Express Edition. This method is slightly more painful than compiling with Code::Blocks and MinGW, but if you are more familiar with the VC++ line of IDEs, then it can be worth it.<br />
To start, navigate to sauerbraten\src\vcpp, double-click on sauerbraten.sln, and click through the process of converting the solution to the latest format. Now, you should have the solution open in front of you. Minimize it (you should still have sauerbraten\src\vcpp open) and open sauerbraten.rc in Notepad or your preferred text editor. The top line should read <tt>#include "afxres.h"</tt>. Now, this header file is deprecated, so change it to the more recent <tt>winresrc.h</tt>. (Note that you should have the Platform SDK installed, which you probably do if you're developing with VC++; you should have the include directories set up, because that's where the header is.) Save and close. One more thing to go: Right click on sauerbraten in the solution explorer, go to Properties, expand Linker, go to General, and change ..\..\bin\sauerbraten.exe to something like ..\..\bin\sauerbraten-vcpp.exe, since you probably don't want to replace the vanilla Sauerbraten executable. Hit OK. Now you're ready! Hit Build > Build Solution, and wait patiently for it to compile. As above, edit your .bat launcher (or create a new one) to use the executable you compiled. Have fun!<br />
<br />
===MSYS=== <br />
Yet another alternative method exists for Windows: that of compiling using the cmd replacement MSYS. Information and download links can be had at [http://www.mingw.org MinGW.org]. Once you have both MSYS and the MinGW compiler, the compile process is strikingly similar to Linux's: Open up MSYS, cd into Sauerbraten's src directory, and perform, as shown below, the 'make-dance'.<br />
<br />
----<br />
<br />
==Linux== <br />
Provided they have GCC installed (pulled in with the package 'build-essential' on a lot of distributions) and the required SDL development libraries (libsdl-image1.2-dev, libsdl-mixer-1.2-dev), the users of Linux need only perform the ''usual'' make-dance.<br />
Change into the directory "sauerbraten/src" (in a terminal) and then run<br />
<pre><br />
make clean<br />
make<br />
make install<br />
</pre><br />
<br />
Of course, after this, you need to make sure you run the <tt>native_*</tt> binaries, not the <tt>linux_*</tt> binaries! (The sauerbraten_unix script handles this for you.)<br />
<br />
----<br />
<br />
==Mac OS X== <br />
Todo...<br />
There is an Xcode project file, or you can use Code::Blocks for Mac.</div>Adminhttp://cubeengine.com/wiki/Blender_to_MD5_to_SauerbratenBlender to MD5 to Sauerbraten2014-12-12T15:59:17Z<p>Admin: </p>
<hr />
<div>Hello again, folks. Geartrooper here. If you've followed along the MD3 tutorials using the MD5 format will be a breeze. Just remember to have ''only'' the meshes you wish to export in your .blend file, else you'll get a lot of meshes you didn't want ingame. The exporter [http://cubeengine.com/w/files/blendermd5_2_09.zip blendermd5_2_09.zip] [updated 2/21/09, header by VerbalShadow] which also contains the md5 importer should be extracted to your .blender/scripts folder. The interface is self explanatory;<br />
<br />
[[File:md5.jpg|left]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
You must name the mesh file NAME.md5mesh and the animation file NAME.md5anim. For sanity's sake I name the individual animation files 'run.md5anim' and 'idle.md5anim'. Use what suits you best. As with md3 remember to rotate the model [r] [90] [-] before export. If you are importing models I suggest changing the Scale factor to a lower number than the default Scale:1.000. Otherwise you will see giant bones over your mesh. The cfg for md5 files is similiar to the md3 format. Just stay posted and check the wiki for default commands.</div>Adminhttp://cubeengine.com/wiki/Blender_Animated_Md3_ExportBlender Animated Md3 Export2014-12-12T15:59:16Z<p>Admin: </p>
<hr />
<div>Hello, and welcome to the Blender Animated MD3 Export tutorial. It is assumed you have viewed and understand the [[MD3 Export From Blender Tutorial|Static MD3 tutorial]] , understand basic Blender commands, and have an animated character ready for export to Sauerbraten. Also, this [http://johnny3d.promail.ca/wikitut/blendermd3_updated.zip exporter] is current and should be used for proper tag alignment for CVS Sauerbraten as of May 14, 2007.<br />
<br />
Let's open up Blender and load the character with Control-O.<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut.png]]<br />
<br />
The mesh objects are represented by arrows to show the orientation of each throughout the tutorial.<br />
<br />
<br />
Select the armature and press tab to get to edit mode. select the tip of the bone where you want the tag_torso to be and press Control-S snap the cursor to selection.<br />
<br />
''NOTE: the following image has the legs and torso text switched. Use your imagination.''<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut3.jpg]]<br />
<br />
Parent the tag to a bone Control-P that is the meeting point between the legs and torso. For graphical purposes the tag is represented in the picture by the text 'Tag_T'. Do not mistaken its position for the actual tag, which should remain at the tip of the selected bone.<br />
<br />
Do the same for tag_head. Again, tag_head is represented graphicaly by the text 'Tag_H' in the picture. Keep the actual tags parented to the tips of the respective bones.<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut3.png]]<br />
<br />
We will add tag_weapon in a moment. But first, snap the cursor to the center of the 3D space Shift-C. Set the rotation/pivot point to 'cursor' by pressing period (to the left of the slash key). This will align all rotations to the exact center of the 3d space. Now, select everything (with A) and rotate everything on the Z-axis counter clockwise by pressing R, Z, 90, and hyphen (left of the equals sign). To the exporter this is facing forward and will export properly.<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut8.png]]<br />
<br />
In the image you can see the tag_weapon representation [Tag_W]. Alignment of this tag can be touchy. Here is a good trick to use for tag alignment. Go to the frame in your animations where the character is shooting and the arm with which you will assign the weapon is level to the X-axis. Ensure you are in pose mode. Align the cursor as best you can to the tip of the bone where you want the tag to be. Go to side view -- keypad 3 -- and add the empty tag_weapon. Parent the empty Control-P to the appropriate bone.<br />
<br />
Now go to the last frame of the animations. Select only the legs and tag_torso. Open the text editor, select the exporter 'md3_export_test2.py' and execute the script [right click over the text editor window and select 'execute script']. Name the file something appropriate like 'legs.md3' and export.<br />
<br />
Now for the torso. Ensure you are in object mode. Center the cursor Shift-C.<br />
<br />
''Note-- At this point it is a good idea to save the file as nametorso.blend--''<br />
<br />
Select all and align tag_torso with the centered cursor. Make sure the pivot point is set at 3D cursor -- period again -- so that any rotations of objects and armature will occur at the cursor. Select everything except tag_torso. Rotate on the z axis 90 degrees. Now rotate selected on the x axis 90 degrees. Commands are R, X, 90, then R, X, 90. Once complete the orientation should appear so:<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut10.png]]<br />
<br />
Select the torso mesh and all tags. Export to torso.md3 or something similiar.<br />
<br />
Orientation for the head mesh and tag_head are the same for the head mesh.<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut11.png]]<br />
<br />
One difference between exporting the head mesh with all others is that you only need one frame to export with no animations. The torso md3 will take care of the head animations.<br />
<br />
In the buttons window go to Scene Mode with F10 and in the Anim tab ensure Sta: is at 1 and End: is at 1.<br />
<br />
[[File:http://johnny3d.promail.ca/wikitut/tut13.png]]<br />
<br />
Select the head mesh, tag_head, and export to head.md3 or something appropriate.<br />
<br />
Take a moment and congratulate yourself. If all went accordingly the hard part is over. Good job!<br />
<br />
Write the md3.cfg. For a comprehensive guide view /sauerbraten/docs/models.html to perform this step.<br />
<br />
Test, tweak, and enjoy.<br />
<br />
-geartrooper</div>Adminhttp://cubeengine.com/wiki/Beginners_GuideBeginners Guide2014-12-12T15:59:16Z<p>Admin: </p>
<hr />
<div><span id="prepreq"></span><br />
=Requirements= <br />
When you decide to try out Sauerbraten you should be aware of your operating system, your current graphics chipset (manufacturer and card name) and that this project is open-source and as such very much a work in progress.<br />
<br />
Typically, to run Sauerbraten at playable speeds on minimum settings, you'll need at least:<br />
1GHz or higher CPU, 256MB RAM and a GeForce 4 MX or equivalent GPU.<br />
<br />
For maximum settings, you'll need at least:<br />
2GHz or higher CPU, 512MB RAM and a GeForce 6600 or equivalent shader model 2.0 GPU.<br />
<br />
Before you even download Sauerbraten, make sure you meet the above requirements and have the latest video card drivers installed for your OS. If you're on Linux, make sure you're not using MESA drivers, and if you're on Windows, make sure you're not using the generic drivers.<br />
<br />
==Graphics Card== <br />
Be prepared that some graphics cards have problems running with the default configuration.<br />
You should then try to use all toggles to reduce rendering complexity and work yourself up.<br />
Some example combinations:<br />
* [maximum compatibility] : -w640 -h480 -b8 -z8 -a0 -f<br />
* [nVidia bpp/z-buffer] : -w1024 -h768 -b16 -z24 -a1 -f1<br />
* [full fledged] : -f3 -a4 -b24 -z24 -w1600 -h1200<br />
See the [[Performance Guide]] for an in-depth view at what to tweak.<br />
<br />
==Platform Dependencies== <br />
Due to platform dependencies some stuff works differently depending on your OS.<br />
For example on Linux and Mac OS X, users can dynamically change their screen resolution; on Windows this just isn't possible.<br />
Other aspects include driver issues, file formats (*.jpg, *.mp3) and naming (Pic1.jpg is <u>not</u> pic1.JPG)<br />
<br />
If you are running Windows be sure to have most current driver for your graphics card installed,<br />
often ATI drivers have proven to be glitchy -- [[Performance Guide]] might help there!<br />
<br />
If you are running Linux you should be sure that you have set up your system sufficiently to play,<br />
running "glxgears -info" can help and having other OpenGL and/or SDL based applications already working is a solid basis to encourage you to proceed here. If your running a 64-bit kernel you'll need to figure out wether to run in 32-bit emulation or if you can recompile the engine for your kernel.<br />
<br />
<span id="progstart"></span><br />
=Setup= <br />
First try running the game out-of-the-box, but in the long run you will want to optimize [[configuration|your setup]] to your hardware and personal preferences.<br />
There is a [[Performance Guide|plethora of settings]] for you to do this.<br />
RTFM : [http://sauerbraten.org/docs/config.html config page]<br />
<br />
To run with these parameters call your systems shell script with them.<br />
* on UNIX: usage as usual for you.<br />
Maybe you'd like to use [[Linux Server Scripts|some shell scripts]] to handle ''sauerbraten_unix'' for you,<br />
switching between different setups made easy and including a random start map selection.<br />
<br />
* on Windows : In case your in doubt : copy your sauerbraten.bat to sauerbraten_myconf.bat and edit with notepad/wordpad/equivalent<br />
<pre><br />
@ECHO OFF<br />
REM -- default call<br />
REM bin\sauerbraten.exe -w1024 -h768 %1 %2 %3 %4 %5<br />
REM -- full fledged call<br />
REM bin\sauerbraten.exe -w1600 -h1200 -b24 -z24 -a4 -f3 %1 %2 %3 %4 %5<br />
REM -- minimalistic call<br />
REM bin\sauerbraten.exe -w800 -h600 -b8 -z16 -a0 -f -lpindakaas<br />
REM -- my call<br />
bin\sauerbraten.exe -w800 -h600 -b8 -z16 -a0 -f -lpindakaas<br />
</pre><br />
Later you might want to change the last line to your systems optimal settings.<br />
It often pays to not have any settings in sauerbraten.bat itself.<br />
Instead you could just call<br />
<pre><br />
bin\sauerbraten.exe %1 %2 %3 %4 %5<br />
</pre><br />
and add appropriate parameters to a range of links (*.lnk) - say on your Desktop -- like "Medium-Resolution Sauer", "minimal sauer", "EyeCandy", ...<br />
<br />
* On Mac: Launch Sauerbraten and choose some options, then click Play. To change other options you need to go to /Users/yourusername/Application Support/sauerbraten/autoexec.cfg and set options there using [[Scripting Guide|CubeScript]].<br />
<br />
<span id="download"></span><br />
==Downloads== <br />
Click on the [https://sourceforge.net/project/showfiles.php?group_id=102911 appropriate download link] and select your mirror to download the installation file. Official clients exist for Windows 32-bit, UNIX, and Mac OS X 10.3 through 10.6 32-bit. Please pick a local mirror.<br />
<br />
<span id="unpacking"></span><br />
==Unzipping== <br />
* There is an installer wrapper for Windows, execute and follow the well known set of dialogs.<br />
* On UNIX un-tar to your favourite location (say /usr/local/sauerbraten), chmod the binaries +x if required.<br />
* Mac OS X: Double-click on the DMG, then move Sauerbraten(.app) to /Applications/ or wherever you keep your applications.<br />
<br />
<span id="autoexec"></span><br />
==Basic Configuration== <br />
Manage your [[configuration]] via autoexec.cfg. If the file does not exist in your base installation folder then create it. Two lines are necessary:<br />
<pre><br />
name "unnamed"<br />
team "none"<br />
</pre><br />
<br />
Name is capped off at 15 characters, team at 4.<br />
<br />
The engine first looks for config.cfg at launch. This is written at engine quit, so first time users will skip this step. If config.cfg is found, it is executed.<br />
If and only ''if'' the engine doesn't find config.cfg, it executes defaults.cfg, then autoexec.cfg. When a map is loaded, it's CFG file (if it exists) is loaded.<br />
<br />
For a more complex setup you might like to try the [http://www.quadropolis.us/flexinode/list/2 scripts on quadropolis], which might help your scripting needs, although simple settings simply require a ''COMMAND VALUE'' line CubeScript (used by Sauerbraten too, though syntax (and of course command set) have evolved (and still are evolving)) can be used for a wide range of complex functions. The pre-gui-release [http://quadropolis.us/node/263 meATpAk] and the post-gui-release [http://www.quadropolis.us/node/435 QCSP] script packs aim at empowering even non-scripters to use these powers to their benefit.<br />
<br />
Also check out the [[Scripting Guide]] pages of this wiki.<br />
<br />
<span id="firstrun"></span><br />
===First Time=== <br />
* Windows 32-bit: Run the sauerbraten.bat<br />
* UNIX: Run the ./sauerbraten_unix script from the base installation folder<br />
* OS X: Click the Sauerbraten(.app) launcher and click Play<br />
There are some external docs till this wiki contains that info too :<br />
[http://members.iinet.net.au/%7Epassarello/newbieguide.html Passa's (Win32) NewbieGuide] and [http://www.quadropolis.us/node/249 MeatROme's "Getting Started" Guide]<br />
<br />
When you run the game you will start up in the default map (2006-12-04 : metl4),<br />
the default mode is <tt>0</tt> - which stands for <tt>ffa/default</tt>.<br />
Let's try out some stuff:<br />
* press ESC -- the menu will pop up in front of your player. Select the "load map.." option<br />
* select a map and explore it, do this with a couple of maps<br />
* now open your console (need help? : [[Using the Console]]) and enter <tt>mode 4;map curvedm</tt><br />
* you've just chosen the <tt>instagib</tt> mode on map curvedm<br />
* select a mode/map combination via the menu ("multiplayer", "vote...", ...)<br />
* now go into the multiplayer menu, select <tt>update server list from master server</tt> and select an appropriate server from the list<br />
* if your first on the server you'll automatically set your current mode/map as the game on the server else you'll join whatever game is going on<br />
<br />
<span id="introRUN"></span><br />
=Game Modes= <br />
<span id="introSP"></span><br />
==A Look At Single Player== <br />
The single player (SP) modes of Sauerbraten enable you to play offline against a range of monsters. Start your SP game via the menu or set your mode and an appropriate map by hand. Beware that the so-called <tt>Episode 1</tt> does not currently contain monsters. It is still WiP! The single maps for basic SP (<tt>mode -2</tt>) ''do have'' monsters, though; and you can play (almost) any map in DMSP (<tt>mode -1</tt>) against a horde of monsters matching your <tt>skill</tt> level.<br />
<br />
In the basic SP mode (<tt>mode -2</tt>) which works more or less like in every other FPS -- you can pick up items only once and monsters stay killed; progress is controlled with respawn-points. Touching a respawn-point will set your next spawn to that location. If you get fragged by the monsters you will respawn inside the map, having lost all armour and some ammo, ut at least your previous incarnation has cleared the way a little. Your score is calculated as seconds you took to complete the map.<br />
Deaths, monsters left, accuracy, and a basic modifier for skill setting all get taken into account.<br />
<br />
The SP DeathMatch mode (DMSP (<tt>mode -1</tt>) will work on any map - but some just won't cut it -- and will pit you against a number of monsters (10x skill) spawning at random points. If you die in this mode the ordeal repeats - either you beat the horde or you don't -- it's a DeathMatch!<br />
<br />
<span id="introMP"></span><br />
==A Look At MP== <br />
The integrated server browser is available via the "multiplayer.." menu, be sure to regularly update from master server.<br />
The list is sorted by ping for your convenience.<br />
A "'''P'''" next to the number of players indicates a ''private server''.<br />
A "'''L'''" next to the number of players stands for ''locked server''.<br />
For details see the [[Multiplayer Guide#master|mastermodes section]] of the [[Multiplayer Guide]].<br />
<br />
<span id="introRPG"></span><br />
==Eisenstern== <br />
Note: The below information may be outdated and may not apply to the most recent release. Eisenstern has only been included in CTF Edition and Trooper Edition.<br />
<br />
You can have a look at what's cooking by running with a -grpg parameter included. So far only some NPC models are visible and the action menu is visible and ready for use. Attacking and trading has been implemented along with an inventory and monetary system, but there is no AI, so nothing fights back. Stay tuned for further progress and perhaps look at [[Eisenstern Modelling]].<br />
<br />
<span id="help-yourself"></span><br />
=Help On Finding Help= <br />
<br />
==Grrr!== <br />
While getting to know a new piece of software it is often the case that you might need help with an aspect you (personally) don't find intuitive. This is perfectly natural and nothing to be ashamed of, but the way you go about ''asking for help'' can be! So here's some help on getting help:<br />
<br />
==You'll see!== <br />
First thing to do is try finding a help resource, try a [http://www.google.com Google search], try a lot of [http://www.google.com/help/refinesearch.html different combinations] - try news- and code-searches too! Try searching this wiki, or the forums.<br />
<br />
Your local manual is accessible via the README.html in your installation folder; the documentation is also available from [http://sauerbraten.org/README.html sauerbraten.org].<br />
<br />
==Tutorials== <br />
The Cube/Cube 2 community is the place to find guides and tutorials. Check out [http://www.quadropolis.us/taxonomy/term/21 the guides on Quadropolis], or use one of the wiki pages below:<br />
<br />
* [[Mapping and Editing]]<br />
* [[Cubescript Tutorial|CubeScript Tutorial]]<br />
* [[Scripting Guide]]<br />
* [[Modding Guide]]<br />
<br />
==See?!== <br />
The game is pretty straightforward to jump into, so some people seem to overlook the manual -- don't make that mistake! But in the end a lot of Sauerbraten know-how comes through actively experimenting with the engine; even more so since it is still under development and you might find something that you think should work differently ask in the forum or on IRC about it -- maybe it's a bug? Help the project if you can! Familiarize yourself with the different aspects that make up the game.<br />
From OGZ files to CFGs, from /data/ to /packages/base/.<br />
<br />
=Watch! Listen... and Learn!= <br />
Even if we first off -- as always -- hint at RTFM.<br />
RTFM = Read The Fine Manual<br />
Even if we hint at R-ing TFM it seems impossible to stress it hard enough,<br />
Don't be a [http://www.slash7.com/pages Help Vampire].<br />
<br />
Another suggestion is to read the following article about ''asking smart questions'',<br />
it's not associated with this project but is a general article about how to go about getting help on the interwebs.<br />
Do ''not'' contact the authors about Sauerbraten -- they're only trying to help you find help (in general), not for this project specifically.<br />
<br />
* [en] : [http://www.catb.org/%7Eesr/faqs/smart-questions.html#before How To Ask Questions The Smart Way]<br />
* [de] : [http://www.lugbz.org/documents/smart-questions_de.html#before Wie man Fragen richtig stellt]<br />
* [pt] : [http://www.istf.com.br/?page=perguntas Como Fazer Perguntas Inteligentes]<br />
* [pl] : [http://rtfm.killfile.pl/ Jak mądrze zadawać pytania]<br />
<br />
The next step for you would be to contact the community of this project;<br />
either by posting in the [http://cubeengine.com/forum.php cube forum]<br />
or by visiting the IRC-Channel #sauerbraten on irc.quakenet.org. Good luck!</div>Adminhttp://cubeengine.com/wiki/HomeHome2014-12-12T15:16:52Z<p>Admin: </p>
<hr />
<div>Welcome to the [http://www.cubeengine.com/ Cube 2: Sauerbraten] project wiki. You can visit our project page on SourceForge [http://sourceforge.net/projects/sauerbraten/ here] .<br />
<br />
[[File:logo_320x160.png]]<br />
=Help=<br />
[[The Readme]]: The first place you should look for information on setting up the game.<br />
[[Install Guide]]: This describes the installation process.<br />
[[Beginners Guide|Beginners' Guide]]: How to get up and running.<br />
[[FAQ]]: View and get the answers to some commonly asked questions.<br />
[[Performance Guide]]: Things you can try to make Sauerbraten either run faster or look better.<br />
<br />
=Gameplay= <br />
[[Singleplayer Guide]]: How to play games offline.<br />
[[Multiplayer Guide]]: How to play games online or host your own server.<br />
<br />
=Editing= <br />
[[Mapping and Editing]]: Itching to create? Follow these steps.<br />
[[Distributing Maps]]: After you finish slaving over your map, you need to distribute it.<br />
[[Cooperative Editing]]: Creating with others can be fun and rewarding, but there are important principles.<br />
[[Scripting Guide]]: A look at the possibilites of scripting, with examples.<br />
[[MD3 Export From Blender Tutorial|Static MD3 Export From Blender]]: A tutorial for exporting static MD3s from Blender.<br />
[[Blender Animated Md3 Export|Animated MD3 Export with Tags from Blender]]: A slightly more difficult tutorial for exporting multiple animated and tagged MD3s from Blender.<br />
[[Hudguns with Hands|Hudguns with Hands via Blender]]: A more complex yet powerful tutorial on adding personal hudguns and hands.<br />
[[Blender to MD5 to Sauerbraten|MD5 from Blender to Sauerbraten]]: It just got easier.<br />
[[Mr Fixit|Mr. Fixit Blend File]]: For educational purposes.<br />
[[Importing md2 and md3 files|Importing MD2 and MD3 files]]: How to import existing models into Sauerbraten.<br />
[[Creating Ragdolls]]: Information on the ragdoll editor used to create ragdolls for skeletal models.<br />
<br />
=Projects= <br />
[[Eisenstern Modelling]]: Information on 3D modeling in the Sauerbraten RPG branch. Unfortunately, the Eistenstern project has been discontinued. There is a group working on the project [https://sourceforge.net/projects/eisenstern/ on SourceForge] . The official design notes can be found [http://eisenstern.com/eisenstern_design_notes.html on the Sauerbraten website] .<br />
[[Wiki Guidelines]]: For contributing and expanding the Cube Wiki.<br />
[[Modding Guide]]: Like Sauerbraten? Learn how to add features.<br />
[[Videos]]: A page for collecting video material.<br />
<br />
=Engine= <br />
Disclaimer: the information stated here (below the "Engine" and "Producing Content" headings) are suggestions. The engine's complete license is ZLIB, which you should read before changing any part of the game, executable, installer, readme, or any other included media. You should also read the license of any media you are planning to use in any way.<br />
The Sauerbraten game is freeware. You may:<br />
<br />
* freely distribute the Sauerbraten archive/installer ''unmodified'' on any media.<br />
* re-compress using different archival formats suitable for your OS (e.g., ZIP, TGZ, RPM, DEB or DMG), but any changes beyond that require the explicit permission of Wouter van Oortmerssen (aka Aardappel) or any other copyright-holder.<br />
* play Sauerbraten for any purpose as long as you don't blame the author(s) for any damages incurred.<br />
<br />
Media (textures, sounds, models, etc.) will have its own specific license. Some media will be [http://www.gnu.org/philosophy/free-sw.html free] to use for any purpose, but if there is no license it is for the official Sauerbraten release distribution ''only''. The source code is free to use, but the downfall of this is that many people unfamiliar with the history and style of the engine think the game's executable and bundled data are also free to use. As restated below, '''nothing but the engine source code is necessarily ZLIB'''. Any changes you make to the engine need to be clearly recorded in an included text file -- read the ZLIB license below for more details.<br />
<br />
==Producing Content== <br />
If you want to produce new content with the Sauerbraten engine/game, you have to be aware that the source code may be open source, but the game and the media it consist of have their individual licenses and copyrights. This means that you have roughly three options:<br />
<br />
* You may produce new content for the Sauerbraten game, for example as a map (OGZs, CFGs, textures, etc.). Contributing content to the original game is most welcome, and the most productive way of working with Sauerbraten.<br />
* If you want to create your own gameplay beyond what you can do with a map, the best way to do this is as a mod (same as above, but with new executable application that incorporates your gameplay) that requires an existing install of Sauerbraten, and installs only the new files you created in parallel to and without modifying the existing files.<br />
* If you insist on making a standalone game based on Sauerbraten, do realize that only the source code is yours to use freely (if you abide by the ZLIB license below), not the media. You ''cannot'' simply redistribute the entire Sauerbraten package with your modified files, as the majority of game media is not yours to use freely (because it is made by many authors with a variety of licenses and copyright restrictions). Unless you have explicit permission from the authors, or the readme file says explicitly that it may be used for any purpose, it will be illegal to include said media in your standalone game based on the Sauerbraten engine. If a file has no specific license, it is for the Sauerbraten game's distribution only. Therefore, if you wish to produce a standalone game, be prepared to make many of the game's maps, models, textures, sounds, etc. from scratch yourself.<br />
<br />
In this sense Sauerbraten is similar to games like Quake (its code is open source, but its media is not): it is a game that is meant to be added to, not copied and used as a template. Sauerbraten is not meant to be a quick game creation kit, it is a game and an engine.<br />
<br />
If you wish to use the Sauerbraten source code in any way, read the ''src/readme_source.txt'' file and the [http://www.gzip.org/zlib/zlib_license.html ZLIB license] carefully.</div>Admin