<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
		<id>http://wiki.custommapmakers.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drezil</id>
		<title>Custom Map Makers Wiki - User contributions [en-gb]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.custommapmakers.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drezil"/>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Special:Contributions/Drezil"/>
		<updated>2026-04-20T04:21:32Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=2000</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=2000"/>
				<updated>2012-01-10T11:57:27Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Multimapping - Diff/Merge on maps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERY single project in one go.&lt;br /&gt;
&lt;br /&gt;
== Compiling Maps ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing with the map automatically loaded. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Lets say you have your map and want to test it.&lt;br /&gt;
 make light surface pk3 install test&lt;br /&gt;
compiles your map (with surface-sounds), packs it and starts urt for testing.&lt;br /&gt;
After you tested the map you want to show it off to the &amp;quot;public&amp;quot; on your private, passwordprotected server.&lt;br /&gt;
 make deploy testserver&lt;br /&gt;
Make recognizes that the map has not changed, thus all files are up2date and just uploads your version to the server, reloads the server via rcon and connects on it with the password given in the makefile.&lt;br /&gt;
This way you can rapid-test your map with many people easily. You could also combine it and compile a&lt;br /&gt;
 make light surface pk3 install deploy&lt;br /&gt;
over night and as soon as its finished everyone on the server gets the new version (if auto-download is set up correctly). They can already test it while you are still sleeping/at work/busy elsewhere and you get test-reports as soon as possible (if you depend on them).&lt;br /&gt;
You can also shortcut your urt-launch with a&lt;br /&gt;
 make testserver&lt;br /&gt;
so you dont have to select your map and everything.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged (a backup with the current timestamp is created before merging in case something goes horribly wrong). Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1999</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1999"/>
				<updated>2012-01-10T11:55:09Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Compiling Maps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERY single project in one go.&lt;br /&gt;
&lt;br /&gt;
== Compiling Maps ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing with the map automatically loaded. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Lets say you have your map and want to test it.&lt;br /&gt;
 make light surface pk3 install test&lt;br /&gt;
compiles your map (with surface-sounds), packs it and starts urt for testing.&lt;br /&gt;
After you tested the map you want to show it off to the &amp;quot;public&amp;quot; on your private, passwordprotected server.&lt;br /&gt;
 make deploy testserver&lt;br /&gt;
Make recognizes that the map has not changed, thus all files are up2date and just uploads your version to the server, reloads the server via rcon and connects on it with the password given in the makefile.&lt;br /&gt;
This way you can rapid-test your map with many people easily. You could also combine it and compile a&lt;br /&gt;
 make light surface pk3 install deploy&lt;br /&gt;
over night and as soon as its finished everyone on the server gets the new version (if auto-download is set up correctly). They can already test it while you are still sleeping/at work/busy elsewhere and you get test-reports as soon as possible (if you depend on them).&lt;br /&gt;
You can also shortcut your urt-launch with a&lt;br /&gt;
 make testserver&lt;br /&gt;
so you dont have to select your map and everything.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1998</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1998"/>
				<updated>2012-01-10T11:49:14Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Compiling Maps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERY single project in one go.&lt;br /&gt;
&lt;br /&gt;
== Compiling Maps ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing with the map automatically loaded. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1997</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1997"/>
				<updated>2012-01-10T11:48:39Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERY single project in one go.&lt;br /&gt;
&lt;br /&gt;
== Compiling Maps ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1996</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1996"/>
				<updated>2012-01-10T11:47:43Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Linking Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERY single project in one go.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1995</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1995"/>
				<updated>2012-01-10T11:46:55Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Linking Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERYONE of your projects.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1994</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1994"/>
				<updated>2012-01-10T11:46:26Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Linking Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of a more complex linking is presented here (taken from my map ikarus):&lt;br /&gt;
&lt;br /&gt;
 sdressel@Behemoth#173:~/mapping/make/ikarus/distrib$ la *&lt;br /&gt;
 env:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-11-08 12:44 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   36 2011-11-05 18:01 apath0_storm -&amp;gt; /home/quake3/q3ut4/env/apath0_storm/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 hip_violent -&amp;gt; /home/quake3/q3ut4/env/hip_violent/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   31 2011-11-05 18:01 horizon -&amp;gt; /home/quake3/q3ut4/env/horizon/&lt;br /&gt;
 &lt;br /&gt;
 levelshots:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 .. &lt;br /&gt;
 &lt;br /&gt;
 maps:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2012-01-02 19:57 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 &lt;br /&gt;
 models:&lt;br /&gt;
 insgesamt 12K&lt;br /&gt;
 drwxr-xr-x 3 sdressel sdressel 4,0K 2011-12-10 00:15 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   33 2011-12-10 00:15 ikarus -&amp;gt; /home/quake3/q3ut4/models/ikarus/&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-10 13:00 mapobjects&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   38 2011-11-05 18:01 streetlight -&amp;gt; /home/quake3/q3ut4/models/streetlight/&lt;br /&gt;
 &lt;br /&gt;
 scripts:&lt;br /&gt;
 insgesamt 52K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2011-12-11 19:33 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 camera.shader -&amp;gt; /home/quake3/q3ut4/scripts/camera.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   44 2011-11-05 18:01 horizonsky.shader -&amp;gt; /home/quake3/q3ut4/scripts/horizonsky.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   49 2011-11-05 18:01 ikarus_fountain.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus_fountain.shader&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus.shader -&amp;gt; /home/quake3/q3ut4/scripts/ikarus.shader&lt;br /&gt;
 -rw------- 1 sdressel sdressel  42K 2011-12-11 19:33 ikarus.shader~ &lt;br /&gt;
 &lt;br /&gt;
 sound:&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-21 15:37 .&lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   32 2011-11-05 18:01 ikarus -&amp;gt; /home/quake3/q3ut4/sound/ikarus/&lt;br /&gt;
 &lt;br /&gt;
 textures:&lt;br /&gt;
 insgesamt 8,0K &lt;br /&gt;
 drwxr-xr-x 2 sdressel sdressel 4,0K 2009-07-29 22:13 . &lt;br /&gt;
 drwxr-xr-x 9 sdressel sdressel 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 alpha_trees -&amp;gt; /home/quake3/q3ut4/textures/alpha_trees/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   35 2011-11-05 18:01 camera -&amp;gt; /home/quake3/q3ut4/textures/camera/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_decals -&amp;gt; /home/quake3/q3ut4/textures/ikarus_decals/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_detail -&amp;gt; /home/quake3/q3ut4/textures/ikarus_detail/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_floor -&amp;gt; /home/quake3/q3ut4/textures/ikarus_floor/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_light -&amp;gt; /home/quake3/q3ut4/textures/ikarus_light/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   43 2011-11-05 18:01 ikarus_liquids -&amp;gt; /home/quake3/q3ut4/textures/ikarus_liquids/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   40 2011-11-05 18:01 ikarus_misc -&amp;gt; /home/quake3/q3ut4/textures/ikarus_misc/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sfx -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sfx/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   39 2011-11-05 18:01 ikarus_sky -&amp;gt; /home/quake3/q3ut4/textures/ikarus_sky/&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   42 2011-11-05 18:01 ikarus_terrain -&amp;gt; /home/quake3/q3ut4/textures/ikarus_terrain&lt;br /&gt;
 lrwxrwxrwx 1 sdressel sdressel   41 2011-11-05 18:01 ikarus_walls -&amp;gt; /home/quake3/q3ut4/textures/ikarus_walls/&lt;br /&gt;
as seen there are also resources linked that are needed in many maps (skys, models, camera (mirrors etc.), trees, ...) but they are only present one time on your harddist and upon change you change them in EVERYONE of your projects.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1993</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1993"/>
				<updated>2012-01-10T11:41:59Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
really: don't change!&lt;br /&gt;
&lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
&lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
Privatepassword is for joining the server (if its private)&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
your urt-binary&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1992</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1992"/>
				<updated>2012-01-10T11:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
 &amp;gt;&amp;gt; leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
 &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
 &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
 &lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
 &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
 &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
 &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
 &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
 &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
 &amp;gt;&amp;gt; don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
 &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
 &lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
 &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1991</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1991"/>
				<updated>2012-01-10T11:37:50Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
This Makefile uses some other Tools (mostly available in your distributions repository), namely:&lt;br /&gt;
&lt;br /&gt;
* wput (for uploading)&lt;br /&gt;
* wget (for downloading when using multimapping)&lt;br /&gt;
* perl (for changing rcon after upload; v5.12.4 works - but earlier versions should work, too).&lt;br /&gt;
&lt;br /&gt;
on debian-based distributions (including ubuntu) this is just a&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install wget wput perl&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
 # Map version&lt;br /&gt;
 MAP_VER           = _dev&lt;br /&gt;
 &amp;gt;&amp;gt; leave this.&lt;br /&gt;
 &lt;br /&gt;
 # Paths&lt;br /&gt;
 #Editor directory for saving maps&lt;br /&gt;
 ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
 &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
 #Where to install maps&lt;br /&gt;
 INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
 &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
 &lt;br /&gt;
 # Const variables - no need to change this&lt;br /&gt;
 &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
 PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
 LOCATION          = $(shell pwd)/&lt;br /&gt;
 WORKDIR           = build/&lt;br /&gt;
 SRCDIR            = src/&lt;br /&gt;
 TOOLDIR           = tools/&lt;br /&gt;
 ARDIR             = archive/&lt;br /&gt;
 PK3DIR            = pk3/&lt;br /&gt;
 CONFDIR           = conf/&lt;br /&gt;
 &lt;br /&gt;
 # Compiler base flags&lt;br /&gt;
 MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
 &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
 MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
 &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
 MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
 &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
 &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
 &lt;br /&gt;
 # Stage specific flags&lt;br /&gt;
 include conf/bsp.conf&lt;br /&gt;
 include conf/vis.conf&lt;br /&gt;
 include conf/light.conf&lt;br /&gt;
 &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
 &lt;br /&gt;
 # pk3 related&lt;br /&gt;
 DISTDIR           = distrib/&lt;br /&gt;
 #dirs to include in pk3, if they exist&lt;br /&gt;
 DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
 &amp;gt;&amp;gt; don't change.&lt;br /&gt;
 &lt;br /&gt;
 # deploy&lt;br /&gt;
 &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
 DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
 DEPLOY_USER       = username&lt;br /&gt;
 DEPLOY_PASS       = password&lt;br /&gt;
 DEPLOY_DIR        = /&lt;br /&gt;
 &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
 DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
 DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
 &lt;br /&gt;
 # rcon-stuff&lt;br /&gt;
 &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
 &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
 RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
 RCON_PORT         = 27960&lt;br /&gt;
 RCON_PASSWORD     = rconpassword&lt;br /&gt;
 SERVER_PASSWORD   = private_password&lt;br /&gt;
 &lt;br /&gt;
 # local urt&lt;br /&gt;
 &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
 URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
 cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
 make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/ Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3. Everything you use for mapping is in here. Models, effects, textures, shaders etc. And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
&lt;br /&gt;
 cd distrib/textures/&lt;br /&gt;
&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
&lt;br /&gt;
 ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
&lt;br /&gt;
when you list your files with&lt;br /&gt;
&lt;br /&gt;
 ls -lha&lt;br /&gt;
&lt;br /&gt;
you should see something like:&lt;br /&gt;
&lt;br /&gt;
 juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
 insgesamt 8,0K&lt;br /&gt;
 drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
 drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
 lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked). Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
&lt;br /&gt;
 cd ~/mapping/make/uptown/&lt;br /&gt;
 cd distrib/scripts/&lt;br /&gt;
 ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
&lt;br /&gt;
 make light pk3 install test&lt;br /&gt;
&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing. You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
&lt;br /&gt;
 bsp (just build bsp)&lt;br /&gt;
 vis (does bsp + vis)&lt;br /&gt;
 light (does bsp + vis + light)&lt;br /&gt;
 pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
 install (link locally)&lt;br /&gt;
 deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
 test (test locally)&lt;br /&gt;
 testserver (test remotely)&lt;br /&gt;
 surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
 clean (delete everything generated)&lt;br /&gt;
 uninstall (remove symlink locally)&lt;br /&gt;
 getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
 deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
 getbase (gets the base-map (multimapping))&lt;br /&gt;
 diff (makes a diff (multimapping))&lt;br /&gt;
 merge (merges diffs (multimapping))&lt;br /&gt;
 newbase (deploys a new base (multimapping))&lt;br /&gt;
&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base. In theory this works. Practically it mostly doesnt. We always did it this way:&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
&lt;br /&gt;
 make diff&lt;br /&gt;
&lt;br /&gt;
and a diff is calculated and uploaded. The other person does a&lt;br /&gt;
&lt;br /&gt;
 make merge&lt;br /&gt;
&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
&lt;br /&gt;
 make newbase&lt;br /&gt;
&lt;br /&gt;
The other mapper does a&lt;br /&gt;
&lt;br /&gt;
 make getbase&lt;br /&gt;
&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost). When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1990</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1990"/>
				<updated>2012-01-10T00:53:50Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Multimapping - Diff/Merge on maps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
    # Map version&lt;br /&gt;
   MAP_VER           = _dev&lt;br /&gt;
   &amp;gt;&amp;gt; leave this.&lt;br /&gt;
   &lt;br /&gt;
   # Paths&lt;br /&gt;
   #Editor directory for saving maps&lt;br /&gt;
   ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
   #Where to install maps&lt;br /&gt;
   INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
   &lt;br /&gt;
   # Const variables - no need to change this&lt;br /&gt;
   &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
   PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
   LOCATION          = $(shell pwd)/&lt;br /&gt;
   WORKDIR           = build/&lt;br /&gt;
   SRCDIR            = src/&lt;br /&gt;
   TOOLDIR           = tools/&lt;br /&gt;
   ARDIR             = archive/&lt;br /&gt;
   PK3DIR            = pk3/&lt;br /&gt;
   CONFDIR           = conf/&lt;br /&gt;
   &lt;br /&gt;
   # Compiler base flags&lt;br /&gt;
   MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
   &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
   MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
   &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
   MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
   &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
   &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
   &lt;br /&gt;
   # Stage specific flags&lt;br /&gt;
   include conf/bsp.conf&lt;br /&gt;
   include conf/vis.conf&lt;br /&gt;
   include conf/light.conf&lt;br /&gt;
   &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
   &lt;br /&gt;
   # pk3 related&lt;br /&gt;
   DISTDIR           = distrib/&lt;br /&gt;
   #dirs to include in pk3, if they exist&lt;br /&gt;
   DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
   &amp;gt;&amp;gt; don't change.&lt;br /&gt;
   &lt;br /&gt;
   # deploy&lt;br /&gt;
   &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
   DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
   DEPLOY_USER       = username&lt;br /&gt;
   DEPLOY_PASS       = password&lt;br /&gt;
   DEPLOY_DIR        = /&lt;br /&gt;
   &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
   DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
   DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
   &lt;br /&gt;
   # rcon-stuff&lt;br /&gt;
   &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
   &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
   RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
   RCON_PORT         = 27960&lt;br /&gt;
   RCON_PASSWORD     = rconpassword&lt;br /&gt;
   SERVER_PASSWORD   = private_password&lt;br /&gt;
   &lt;br /&gt;
   # local urt&lt;br /&gt;
   &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
   URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
    cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
    make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/&lt;br /&gt;
Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3.&lt;br /&gt;
Everything you use for mapping is in here. Models, effects, textures, shaders etc.&lt;br /&gt;
And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
    cd distrib/textures/&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
    ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
when you list your files with&lt;br /&gt;
    ls -lha&lt;br /&gt;
you should see something like:&lt;br /&gt;
    juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
    insgesamt 8,0K&lt;br /&gt;
    drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
    drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
    lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked).&lt;br /&gt;
Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
    cd ~/mapping/make/uptown/&lt;br /&gt;
    cd distrib/scripts/&lt;br /&gt;
    ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
    make light pk3 install test&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing.&lt;br /&gt;
You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
    bsp (just build bsp)&lt;br /&gt;
    vis (does bsp + vis)&lt;br /&gt;
    light (does bsp + vis + light)&lt;br /&gt;
    pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
    install (link locally)&lt;br /&gt;
    deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
    test (test locally)&lt;br /&gt;
    testserver (test remotely)&lt;br /&gt;
    surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
    clean (delete everything generated)&lt;br /&gt;
    uninstall (remove symlink locally)&lt;br /&gt;
    getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
    deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
    getbase (gets the base-map (multimapping))&lt;br /&gt;
    diff (makes a diff (multimapping))&lt;br /&gt;
    merge (merges diffs (multimapping))&lt;br /&gt;
    newbase (deploys a new base (multimapping))&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base.&lt;br /&gt;
In theory this works. Practically it mostly doesnt.&lt;br /&gt;
We always did it this way:&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
    make diff&lt;br /&gt;
and a diff is calculated and uploaded.&lt;br /&gt;
The other person does a&lt;br /&gt;
    make merge&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
    make newbase&lt;br /&gt;
The other mapper does a&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost).&lt;br /&gt;
When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notice: The diff/merge tool supports many mappers but the makefile is currently only set up for two mappers using it.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1989</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1989"/>
				<updated>2012-01-10T00:52:38Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
    # Map version&lt;br /&gt;
   MAP_VER           = _dev&lt;br /&gt;
   &amp;gt;&amp;gt; leave this.&lt;br /&gt;
   &lt;br /&gt;
   # Paths&lt;br /&gt;
   #Editor directory for saving maps&lt;br /&gt;
   ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
   #Where to install maps&lt;br /&gt;
   INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
   &lt;br /&gt;
   # Const variables - no need to change this&lt;br /&gt;
   &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
   PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
   LOCATION          = $(shell pwd)/&lt;br /&gt;
   WORKDIR           = build/&lt;br /&gt;
   SRCDIR            = src/&lt;br /&gt;
   TOOLDIR           = tools/&lt;br /&gt;
   ARDIR             = archive/&lt;br /&gt;
   PK3DIR            = pk3/&lt;br /&gt;
   CONFDIR           = conf/&lt;br /&gt;
   &lt;br /&gt;
   # Compiler base flags&lt;br /&gt;
   MC                = /home/juser/netradiant/install/q3map2.x86&lt;br /&gt;
   &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
   MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
   &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
   MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
   &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
   &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
   &lt;br /&gt;
   # Stage specific flags&lt;br /&gt;
   include conf/bsp.conf&lt;br /&gt;
   include conf/vis.conf&lt;br /&gt;
   include conf/light.conf&lt;br /&gt;
   &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
   &lt;br /&gt;
   # pk3 related&lt;br /&gt;
   DISTDIR           = distrib/&lt;br /&gt;
   #dirs to include in pk3, if they exist&lt;br /&gt;
   DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
   &amp;gt;&amp;gt; don't change.&lt;br /&gt;
   &lt;br /&gt;
   # deploy&lt;br /&gt;
   &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
   DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
   DEPLOY_USER       = username&lt;br /&gt;
   DEPLOY_PASS       = password&lt;br /&gt;
   DEPLOY_DIR        = /&lt;br /&gt;
   &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
   DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
   DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
   &lt;br /&gt;
   # rcon-stuff&lt;br /&gt;
   &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
   &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
   RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
   RCON_PORT         = 27960&lt;br /&gt;
   RCON_PASSWORD     = rconpassword&lt;br /&gt;
   SERVER_PASSWORD   = private_password&lt;br /&gt;
   &lt;br /&gt;
   # local urt&lt;br /&gt;
   &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
   URT_BINARY        = /home/juser/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
    cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
    make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/&lt;br /&gt;
Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3.&lt;br /&gt;
Everything you use for mapping is in here. Models, effects, textures, shaders etc.&lt;br /&gt;
And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
    cd distrib/textures/&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
    ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
when you list your files with&lt;br /&gt;
    ls -lha&lt;br /&gt;
you should see something like:&lt;br /&gt;
    juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
    insgesamt 8,0K&lt;br /&gt;
    drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
    drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
    lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked).&lt;br /&gt;
Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
    cd ~/mapping/make/uptown/&lt;br /&gt;
    cd distrib/scripts/&lt;br /&gt;
    ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
    make light pk3 install test&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing.&lt;br /&gt;
You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
    bsp (just build bsp)&lt;br /&gt;
    vis (does bsp + vis)&lt;br /&gt;
    light (does bsp + vis + light)&lt;br /&gt;
    pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
    install (link locally)&lt;br /&gt;
    deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
    test (test locally)&lt;br /&gt;
    testserver (test remotely)&lt;br /&gt;
    surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
    clean (delete everything generated)&lt;br /&gt;
    uninstall (remove symlink locally)&lt;br /&gt;
    getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
    deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
    getbase (gets the base-map (multimapping))&lt;br /&gt;
    diff (makes a diff (multimapping))&lt;br /&gt;
    merge (merges diffs (multimapping))&lt;br /&gt;
    newbase (deploys a new base (multimapping))&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base.&lt;br /&gt;
In theory this works. Practically it mostly doesnt.&lt;br /&gt;
We always did it this way:&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
    make diff&lt;br /&gt;
and a diff is calculated and uploaded.&lt;br /&gt;
The other person does a&lt;br /&gt;
    make merge&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
    make newbase&lt;br /&gt;
The other mapper does a&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost).&lt;br /&gt;
When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1988</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1988"/>
				<updated>2012-01-10T00:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
    # Map version&lt;br /&gt;
   MAP_VER           = _dev&lt;br /&gt;
   &amp;gt;&amp;gt; leave this.&lt;br /&gt;
   &lt;br /&gt;
   # Paths&lt;br /&gt;
   #Editor directory for saving maps&lt;br /&gt;
   ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
   #Where to install maps&lt;br /&gt;
   INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
   &lt;br /&gt;
   # Const variables - no need to change this&lt;br /&gt;
   &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
   PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
   LOCATION          = $(shell pwd)/&lt;br /&gt;
   WORKDIR           = build/&lt;br /&gt;
   SRCDIR            = src/&lt;br /&gt;
   TOOLDIR           = tools/&lt;br /&gt;
   ARDIR             = archive/&lt;br /&gt;
   PK3DIR            = pk3/&lt;br /&gt;
   CONFDIR           = conf/&lt;br /&gt;
   &lt;br /&gt;
   # Compiler base flags&lt;br /&gt;
   MC                = /home/sdressel/netradiant/install/q3map2.x86&lt;br /&gt;
   &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
   MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
   &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
   MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
   &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
   &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
   &lt;br /&gt;
   # Stage specific flags&lt;br /&gt;
   include conf/bsp.conf&lt;br /&gt;
   include conf/vis.conf&lt;br /&gt;
   include conf/light.conf&lt;br /&gt;
   &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
   &lt;br /&gt;
   # pk3 related&lt;br /&gt;
   DISTDIR           = distrib/&lt;br /&gt;
   #dirs to include in pk3, if they exist&lt;br /&gt;
   DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
   &amp;gt;&amp;gt; don't change.&lt;br /&gt;
   &lt;br /&gt;
   # deploy&lt;br /&gt;
   &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
   DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
   DEPLOY_USER       = username&lt;br /&gt;
   DEPLOY_PASS       = password&lt;br /&gt;
   DEPLOY_DIR        = /&lt;br /&gt;
   &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
   DUSER             = diff-username (e.g. Drezil)&lt;br /&gt;
   DOTHER            = diff-other_user (e.g. apath0)&lt;br /&gt;
   &lt;br /&gt;
   # rcon-stuff&lt;br /&gt;
   &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
   &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
   RCON_SERVER       = myurtserver.example.com&lt;br /&gt;
   RCON_PORT         = 27960&lt;br /&gt;
   RCON_PASSWORD     = rconpassword&lt;br /&gt;
   SERVER_PASSWORD   = private_password&lt;br /&gt;
   &lt;br /&gt;
   # local urt&lt;br /&gt;
   &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
   URT_BINARY        = /home/sdressel/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
    cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
    make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/&lt;br /&gt;
Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3.&lt;br /&gt;
Everything you use for mapping is in here. Models, effects, textures, shaders etc.&lt;br /&gt;
And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
    cd distrib/textures/&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
    ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
when you list your files with&lt;br /&gt;
    ls -lha&lt;br /&gt;
you should see something like:&lt;br /&gt;
    juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
    insgesamt 8,0K&lt;br /&gt;
    drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
    drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
    lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked).&lt;br /&gt;
Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
    cd ~/mapping/make/uptown/&lt;br /&gt;
    cd distrib/scripts/&lt;br /&gt;
    ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
    make light pk3 install test&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing.&lt;br /&gt;
You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
    bsp (just build bsp)&lt;br /&gt;
    vis (does bsp + vis)&lt;br /&gt;
    light (does bsp + vis + light)&lt;br /&gt;
    pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
    install (link locally)&lt;br /&gt;
    deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
    test (test locally)&lt;br /&gt;
    testserver (test remotely)&lt;br /&gt;
    surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
    clean (delete everything generated)&lt;br /&gt;
    uninstall (remove symlink locally)&lt;br /&gt;
    getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
    deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
    getbase (gets the base-map (multimapping))&lt;br /&gt;
    diff (makes a diff (multimapping))&lt;br /&gt;
    merge (merges diffs (multimapping))&lt;br /&gt;
    newbase (deploys a new base (multimapping))&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base.&lt;br /&gt;
In theory this works. Practically it mostly doesnt.&lt;br /&gt;
We always did it this way:&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
    make diff&lt;br /&gt;
and a diff is calculated and uploaded.&lt;br /&gt;
The other person does a&lt;br /&gt;
    make merge&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
    make newbase&lt;br /&gt;
The other mapper does a&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost).&lt;br /&gt;
When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1987</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1987"/>
				<updated>2012-01-10T00:49:04Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Concept ==&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
    # Map version&lt;br /&gt;
   MAP_VER           = _dev&lt;br /&gt;
   &amp;gt;&amp;gt; leave this.&lt;br /&gt;
   &lt;br /&gt;
   # Paths&lt;br /&gt;
   #Editor directory for saving maps&lt;br /&gt;
   ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
   #Where to install maps&lt;br /&gt;
   INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
   &lt;br /&gt;
   # Const variables - no need to change this&lt;br /&gt;
   &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
   PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
   LOCATION          = $(shell pwd)/&lt;br /&gt;
   WORKDIR           = build/&lt;br /&gt;
   SRCDIR            = src/&lt;br /&gt;
   TOOLDIR           = tools/&lt;br /&gt;
   ARDIR             = archive/&lt;br /&gt;
   PK3DIR            = pk3/&lt;br /&gt;
   CONFDIR           = conf/&lt;br /&gt;
   &lt;br /&gt;
   # Compiler base flags&lt;br /&gt;
   MC                = /home/sdressel/netradiant/install/q3map2.x86&lt;br /&gt;
   &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
   MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
   &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
   MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
   &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
   &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
   &lt;br /&gt;
   # Stage specific flags&lt;br /&gt;
   include conf/bsp.conf&lt;br /&gt;
   include conf/vis.conf&lt;br /&gt;
   include conf/light.conf&lt;br /&gt;
   &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
   &lt;br /&gt;
   # pk3 related&lt;br /&gt;
   DISTDIR           = distrib/&lt;br /&gt;
   #dirs to include in pk3, if they exist&lt;br /&gt;
   DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
   &amp;gt;&amp;gt; don't change.&lt;br /&gt;
   &lt;br /&gt;
   # deploy&lt;br /&gt;
   &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
   DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
   DEPLOY_USER       = username&lt;br /&gt;
   DEPLOY_PASS       = password&lt;br /&gt;
   DEPLOY_DIR        = /&lt;br /&gt;
   &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
   DUSER          = diff-username (e.g. Drezil)&lt;br /&gt;
   DOTHER          = diff-other_user (e.g. apath0)&lt;br /&gt;
   &lt;br /&gt;
   # rcon-stuff&lt;br /&gt;
   &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
   &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
   RCON_SERVER      = myurtserver.example.com&lt;br /&gt;
   RCON_PORT      = 27960&lt;br /&gt;
   RCON_PASSWORD      = rconpassword&lt;br /&gt;
   SERVER_PASSWORD   = private_password&lt;br /&gt;
   &lt;br /&gt;
   # local urt&lt;br /&gt;
   &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
   URT_BINARY      = /home/sdressel/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
== Setting everyting up ==&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
    cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
    make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mapper Installation ===&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/&lt;br /&gt;
Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3.&lt;br /&gt;
Everything you use for mapping is in here. Models, effects, textures, shaders etc.&lt;br /&gt;
And you dont want to have everything copied for every map. Thus symlinks come into play as used later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linking Resources ==&lt;br /&gt;
As stated above we just link the resources we need for our map instead of copying them every time. If you have your texturs in your mapfolder (e.g. uptown) you have them stored in your urt-installation (e.g. /home/quake3/q3ut4/textures/uptown). Now you just go into your distrib-folder with&lt;br /&gt;
    cd distrib/textures/&lt;br /&gt;
and link the files correctly:&lt;br /&gt;
    ln -s /home/quake3/q3ut4/textures/uptown uptown&lt;br /&gt;
when you list your files with&lt;br /&gt;
    ls -lha&lt;br /&gt;
you should see something like:&lt;br /&gt;
    juser@machine:~/mapping/make/uptown/distrib/textures$ ls -lha&lt;br /&gt;
    insgesamt 8,0K&lt;br /&gt;
    drwxr-xr-x 2 juser juser 4,0K 2009-07-29 22:13 .&lt;br /&gt;
    drwxr-xr-x 9 juser juser 4,0K 2009-07-25 21:25 ..&lt;br /&gt;
    lrwxrwxrwx 1 juser juser   40 2011-11-05 18:01 uptown -&amp;gt; /home/quake3/q3ut4/textures/uptown/&lt;br /&gt;
and it should not appear in red (=broken) but in light blue (=linked).&lt;br /&gt;
Now these files get automatically packed into your pk3. Other files are added the same way (e.g. shader):&lt;br /&gt;
    cd ~/mapping/make/uptown/&lt;br /&gt;
    cd distrib/scripts/&lt;br /&gt;
    ln -s /home/quake3/q3ut4/scripts/uptown.shader uptown.shader&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
If everything is set up correctly you just go to your map-folder and enter&lt;br /&gt;
    make light pk3 install test&lt;br /&gt;
to build a pk3-file with light, pack it, link it in your system (linking doubled dont hurt) and start urt after compiling/packing.&lt;br /&gt;
You can add/remove options as you like - they are executed in the order they are given. The given makefile includes:&lt;br /&gt;
    bsp (just build bsp)&lt;br /&gt;
    vis (does bsp + vis)&lt;br /&gt;
    light (does bsp + vis + light)&lt;br /&gt;
    pk3 (package everything. If mapname.bsp is not recent preceed a bsp)&lt;br /&gt;
    install (link locally)&lt;br /&gt;
    deploy (put onto configured server via wput and reloads the map after upload via rcon)&lt;br /&gt;
    test (test locally)&lt;br /&gt;
    testserver (test remotely)&lt;br /&gt;
    surface (inject surface-file to bsp - filename: src/mapname.surface)&lt;br /&gt;
    clean (delete everything generated)&lt;br /&gt;
    uninstall (remove symlink locally)&lt;br /&gt;
    getsurface (gets surface-file from server via wget (multimapping))&lt;br /&gt;
    deploysurface (puts surface-file onto server via wput (multimapping))&lt;br /&gt;
    getbase (gets the base-map (multimapping))&lt;br /&gt;
    diff (makes a diff (multimapping))&lt;br /&gt;
    merge (merges diffs (multimapping))&lt;br /&gt;
    newbase (deploys a new base (multimapping))&lt;br /&gt;
stuff labled with multimapping is explained below.&lt;br /&gt;
&lt;br /&gt;
== Multimapping - Diff/Merge on maps ==&lt;br /&gt;
NuLL wrote a little programm for diff/merging maps. Scheme is simple. Both mappers start with the same base map. Both map. Everyone makes a diff. They exchange diffs. If noone interfered with the other one (e.g. edited the same brush) both merge and recieve the new base.&lt;br /&gt;
In theory this works. Practically it mostly doesnt.&lt;br /&gt;
We always did it this way:&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base. Open in and edit. One person makes a&lt;br /&gt;
    make diff&lt;br /&gt;
and a diff is calculated and uploaded.&lt;br /&gt;
The other person does a&lt;br /&gt;
    make merge&lt;br /&gt;
and both changes are merged. Conflicts get resolved and a new base is born. This base gets delivered to the other mapper via&lt;br /&gt;
    make newbase&lt;br /&gt;
The other mapper does a&lt;br /&gt;
    make getbase&lt;br /&gt;
to get the new base and works on it. No changes between the diff and the getbase happen for the diffing mapper (as they will be lost).&lt;br /&gt;
When you hang out on Teamspeak/Mumble it works quite well. When you aren't communicating this closely it gets harder.&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=File:Skel.tar.gz&amp;diff=1986</id>
		<title>File:Skel.tar.gz</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=File:Skel.tar.gz&amp;diff=1986"/>
				<updated>2012-01-10T00:48:49Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: uploaded a new version of &amp;amp;quot;File:Skel.tar.gz&amp;amp;quot;: fixed chmod +x on some files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Skeleton of the Makefile Compile-Script&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1985</id>
		<title>Compiling:Makefiles</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Makefiles&amp;diff=1985"/>
				<updated>2012-01-06T15:31:03Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: Created page with &amp;quot;== Compiling with Makefiles ==  === Concept ===  Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Compiling with Makefiles ==&lt;br /&gt;
&lt;br /&gt;
=== Concept ===&lt;br /&gt;
&lt;br /&gt;
Because you can do all of the compiling-stuff on the console you can automize everything. Makefiles are a simple way to go as they are basically developed for compiling Sourcecode. They keep track on when the files were changed and do only the necessary recompiles (etc. if you compiled vis and do a light afterwards without changes it will just compile light additionally).&lt;br /&gt;
&lt;br /&gt;
Misato-san introduced this concept some time ago in the official UrT-Forums and it was developed further for more complex tasks.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Download the [[Media:Skel.tar.gz|Skeleton]] and extract it inside an empty folder (e.g. ~/mapping/).&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
First open the Makefile in your skel-folder and fill out the marked sections. They are abbreviated shown here:&lt;br /&gt;
&lt;br /&gt;
    # Map version&lt;br /&gt;
   MAP_VER           = _dev&lt;br /&gt;
   &amp;gt;&amp;gt; leave this.&lt;br /&gt;
   &lt;br /&gt;
   # Paths&lt;br /&gt;
   #Editor directory for saving maps&lt;br /&gt;
   ED_MAPDIR         = ~/.q3a/q3ut4/maps/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.map-files are stored - in doubt leave it.&lt;br /&gt;
   #Where to install maps&lt;br /&gt;
   INSTALLDIR        = ~/.q3a/q3ut4/&lt;br /&gt;
   &amp;gt;&amp;gt; where the *.pk3-files are stored - in doubt leave it.&lt;br /&gt;
   &lt;br /&gt;
   # Const variables - no need to change this&lt;br /&gt;
   &amp;gt;&amp;gt; really: don't!&lt;br /&gt;
   PROJECT           = $(shell basename `pwd`)&lt;br /&gt;
   LOCATION          = $(shell pwd)/&lt;br /&gt;
   WORKDIR           = build/&lt;br /&gt;
   SRCDIR            = src/&lt;br /&gt;
   TOOLDIR           = tools/&lt;br /&gt;
   ARDIR             = archive/&lt;br /&gt;
   PK3DIR            = pk3/&lt;br /&gt;
   CONFDIR           = conf/&lt;br /&gt;
   &lt;br /&gt;
   # Compiler base flags&lt;br /&gt;
   MC                = /home/sdressel/netradiant/install/q3map2.x86&lt;br /&gt;
   &amp;gt;&amp;gt; your q3map2-binary&lt;br /&gt;
   MC_FLAGS          = -game quake3 -threads 8&lt;br /&gt;
   &amp;gt;&amp;gt; threads # should match your cpu-cores&lt;br /&gt;
   MC_FS_FLAGS       = -fs_game q3ut4 -fs_basepath /home/quake3&lt;br /&gt;
   &amp;gt;&amp;gt; fs_basepath is the path taken for textures etc. pp.&lt;br /&gt;
   &amp;gt;&amp;gt; if you are going to follow the tutorial, leave it so.&lt;br /&gt;
   &lt;br /&gt;
   # Stage specific flags&lt;br /&gt;
   include conf/bsp.conf&lt;br /&gt;
   include conf/vis.conf&lt;br /&gt;
   include conf/light.conf&lt;br /&gt;
   &amp;gt;&amp;gt; configs .. can be changed to i.e. dlight.conf for debug (=dirty) light etc.&lt;br /&gt;
   &lt;br /&gt;
   # pk3 related&lt;br /&gt;
   DISTDIR           = distrib/&lt;br /&gt;
   #dirs to include in pk3, if they exist&lt;br /&gt;
   DIST_INCLUDE      = maps/* scripts/* textures/* sound/* models/* icons/* env/*&lt;br /&gt;
   &amp;gt;&amp;gt; don't change.&lt;br /&gt;
   &lt;br /&gt;
   # deploy&lt;br /&gt;
   &amp;gt;&amp;gt; for automatic uploading to an ftp-server. should be self-explaining.&lt;br /&gt;
   DEPLOY_SERVER     = myserver.example.com&lt;br /&gt;
   DEPLOY_USER       = username&lt;br /&gt;
   DEPLOY_PASS       = password&lt;br /&gt;
   DEPLOY_DIR        = /&lt;br /&gt;
   &amp;gt;&amp;gt; if using NuLL's diff/merge-mapping-tool you need to setup this. normally not needed.&lt;br /&gt;
   DUSER          = diff-username (e.g. Drezil)&lt;br /&gt;
   DOTHER          = diff-other_user (e.g. apath0)&lt;br /&gt;
   &lt;br /&gt;
   # rcon-stuff&lt;br /&gt;
   &amp;gt;&amp;gt; for reloading the map on a server after its uploaded. normal rcon/server-data.&lt;br /&gt;
   &amp;gt;&amp;gt; Privatepassword is for joining the server (if its private)&lt;br /&gt;
   RCON_SERVER      = myurtserver.example.com&lt;br /&gt;
   RCON_PORT      = 27960&lt;br /&gt;
   RCON_PASSWORD      = rconpassword&lt;br /&gt;
   SERVER_PASSWORD   = private_password&lt;br /&gt;
   &lt;br /&gt;
   # local urt&lt;br /&gt;
   &amp;gt;&amp;gt; your urt-binary&lt;br /&gt;
   URT_BINARY      = /home/sdressel/UrbanTerror/ioq3-urt&lt;br /&gt;
&lt;br /&gt;
Everything after that should not be needed to change.&lt;br /&gt;
&lt;br /&gt;
=== Setting everyting up ===&lt;br /&gt;
&lt;br /&gt;
For every map you make you make a seperate folder. Lets say your map is named ut4_uptown. Then you copy the skeleton into an uptown-folder:&lt;br /&gt;
&lt;br /&gt;
    cp -R skel/ uptown&lt;br /&gt;
&lt;br /&gt;
now you once do a&lt;br /&gt;
&lt;br /&gt;
    make pdirs&lt;br /&gt;
&lt;br /&gt;
a lot of stuff should appear. After everything there are 3 blank lines. After that the errors are posted (usually something like &amp;quot;source map not found&amp;quot;). This will automatically set up stuff and link the .map-file from your &amp;lt;span style=&amp;quot;font-family:courier new,courier,monospace;&amp;quot;&amp;gt;ED_MAPDIR&amp;lt;/span&amp;gt; directory. Basically you can now start to map (but you shouldn't. There is more!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mapper Installation ====&lt;br /&gt;
Normally you want a clean urt-version so you dont conflict with other peoples shaders, textures and whatever. Basically your map should be self-dependend. For this we set up a clean urt-copy. Download UrT (or clean and copy it) to another folder. We will go with /home/quake3/&lt;br /&gt;
Extract UrT to there. Then go into the q3ut4-subfolder and extract the zpak000_assets.pk3 and afterwards the (in 4.1.1 new) zpak001_assets.pk3.&lt;br /&gt;
Everything you use for mapping is in here. Models, effects, textures, shaders etc.&lt;br /&gt;
And you dont want to have everything copied for every map. Thus symlinks come into play. &lt;br /&gt;
&lt;br /&gt;
== TO BE CONTINUED ==&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=File:Skel.tar.gz&amp;diff=1984</id>
		<title>File:Skel.tar.gz</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=File:Skel.tar.gz&amp;diff=1984"/>
				<updated>2012-01-06T15:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: Skeleton of the Makefile Compile-Script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Skeleton of the Makefile Compile-Script&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	<entry>
		<id>http://wiki.custommapmakers.org/index.php?title=Compiling:Batch_Files&amp;diff=1983</id>
		<title>Compiling:Batch Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.custommapmakers.org/index.php?title=Compiling:Batch_Files&amp;diff=1983"/>
				<updated>2012-01-06T14:57:40Z</updated>
		
		<summary type="html">&lt;p&gt;Drezil: /* Linux - Shell scripting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP}}&lt;br /&gt;
&lt;br /&gt;
==Batch Files==&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Batch_file Batch Files] are files with one or more command line. Batch files are often used to add surface sounds and bots. But they can manage the same as a frontend.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
&lt;br /&gt;
===The %1 variable===&lt;br /&gt;
The %1 variable can be very useful when making a batch file. Instead of a path to the file you want to work with you can simply use %1. This allows you to work with the file that are dropped on the batch file.&lt;br /&gt;
&lt;br /&gt;
%1 refers to the file with it's drive, path, name and file extension.&lt;br /&gt;
Eg: &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%1 can be broken down to %~d1, %~p1 and %~n1 (there are more, referring to file extension, date and so but we don't need them here.)&lt;br /&gt;
&lt;br /&gt;
%~d1 -Is the drive to the batch file or the file you drop on the batch file.&lt;br /&gt;
Eg: &amp;quot;C:\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%~p1 -Is the path to the batch file or the file you drop on the batch file.&lt;br /&gt;
Eg: &amp;quot; urtmapping\q3map_2.5.16_win32_x86\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%~n1 -Is the name to the batch file or the file you drop on the batch file.&lt;br /&gt;
Eg: &amp;quot; q3map2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By using this can we easily modify our compile.bat we find in our mapping folder.&lt;br /&gt;
This is what my compile.bat looks like now:&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -meta -fs_basepath &amp;quot;C:\urtmapping&amp;quot; -fs_game q3ut4 &amp;quot;C:\urtmapping\q3ut4\maps\lighttest_a_a5.map&amp;quot;&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -vis -fs_basepath &amp;quot;C:\urtmapping&amp;quot; &amp;quot;C:\urtmapping\q3ut4\maps\lighttest_a_a5.bsp&amp;quot;&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -light -fs_basepath &amp;quot;C:\urtmapping&amp;quot; &amp;quot;C:\urtmapping\q3ut4\maps\lighttest_a_a5.bsp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By using %~d1, %~p1 and %~n1 can we make a file that will compile the .map file dropped on it.&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -meta -fs_basepath &amp;quot;C:\urtmapping&amp;quot; -fs_game q3ut4 &amp;quot;%~d1%~p1%~n1.map&amp;quot;&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -vis -fs_basepath &amp;quot;C:\urtmapping&amp;quot; &amp;quot;%~d1%~p1%~n1.bsp&amp;quot;&lt;br /&gt;
    &amp;quot;C:\urtmapping\q3map_2.5.16_win32_x86\q3map2.exe&amp;quot; -light -fs_basepath &amp;quot;C:\urtmapping&amp;quot; &amp;quot;%~d1%~p1%~n1.bsp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example X===&lt;br /&gt;
Instead of writing the path to the image you want to open with mspaint you can simply put %1 instead. When you drag and drop a image on the batch file it will open the image with mspaint.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;mspaint %1&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Linux - Shell scripting==&lt;br /&gt;
&lt;br /&gt;
Linux users can achieve something similar with shell scripting&lt;br /&gt;
&lt;br /&gt;
    #! /bin/bash&lt;br /&gt;
    Q3MAP2='/path/2/q3map2'&lt;br /&gt;
    BASEPATH='/path/2/.q3a'&lt;br /&gt;
    &lt;br /&gt;
    ${Q3MAP2} -fs_basepath ${BASEPATH} -fs_game q3ut4 -meta ${1}&lt;br /&gt;
    ${Q3MAP2} -fs_basepath ${BASEPATH} -fs_game q3ut4 -vis ${1%%.map}.bsp&lt;br /&gt;
    ${Q3MAP2} -fs_basepath ${BASEPATH} -fs_game q3ut4 -light ${1%%.map}.bsp&lt;br /&gt;
&lt;br /&gt;
The far more advanced (and probably easier way) is to use GNU/Make and [[Compiling:Makefiles|Makefiles]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Compiling]]&lt;/div&gt;</summary>
		<author><name>Drezil</name></author>	</entry>

	</feed>