<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.uqm.stack.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fossil</id>
	<title>Ultronomicon - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.uqm.stack.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fossil"/>
	<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/Special:Contributions/Fossil"/>
	<updated>2026-04-14T06:49:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Translations&amp;diff=27603</id>
		<title>Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Translations&amp;diff=27603"/>
		<updated>2013-12-13T21:40:18Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Russian */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the current localization efforts in the [[The Ur-Quan Masters]] project.&lt;br /&gt;
&lt;br /&gt;
==General information==&lt;br /&gt;
&lt;br /&gt;
===Current status===&lt;br /&gt;
The resource system is suitable for creating language packs. An add-on package can be created to override any content file.&lt;br /&gt;
&lt;br /&gt;
The game works with [[wikipedia:UTF-8|UTF-8]] encoded [[wikipedia:UNICODE|UNICODE]] characters. The currently available characters are mostly the [[wikipedia:ASCII|ASCII]] characters. The various translation projects use their own characters where needed. Eventually, we will want to have shared font packs.&lt;br /&gt;
&lt;br /&gt;
Currently, all text is in simple text files. Eventually, we&#039;ll move to a richer XML-based file format. A conversion tool will be created to convert existing material.&lt;br /&gt;
&lt;br /&gt;
Some text still is hard-coded in the game. This will change at some point in the future.&lt;br /&gt;
&lt;br /&gt;
Currently, only left-to-right writing systems are supported.&lt;br /&gt;
&lt;br /&gt;
Support for non-ascii input in text fields is still limited.&lt;br /&gt;
&lt;br /&gt;
===Using language packs===&lt;br /&gt;
A language pack can be used [[The Ur-Quan Masters Technical FAQ#How do I use add-on packages?|like any other add-on package]].&lt;br /&gt;
&lt;br /&gt;
===Creating language packs===&lt;br /&gt;
Language packs are normal add-on packages, which means they will be a .zip file (renamed to .uqm), with in it a directory structure which overrides the files in the default content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: You can skip manually extracting files below and use the contents of [http://www.bjwaymods.net/uploads/translation_skeleton483.zip this] skeleton translation pack.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Text files====&lt;br /&gt;
The game expects all of its text files to be in [[wikipedia:UTF-8|UTF-8]] format.&lt;br /&gt;
&lt;br /&gt;
The subtitle files can be found in comm/&amp;lt;race&amp;gt;/&amp;lt;race&amp;gt;.txt in the content tree.&lt;br /&gt;
&lt;br /&gt;
The melee strings for the various ships can be found in the &amp;lt;race&amp;gt;/&amp;lt;race&amp;gt;.txt files.&lt;br /&gt;
&lt;br /&gt;
The text displayed for planetary exploration finds is contained in the ipanims/*.txt files.&lt;br /&gt;
&lt;br /&gt;
The file lbm/starcon.txt contains various other game strings.&lt;br /&gt;
&lt;br /&gt;
The file slides/intro/intro.txt contains the text for the intro sequence, as used by the DOS version of [[Star Control II]]. The files slides/ending/victory1.txt, slides/ending/victory2.txt and slides/ending/final.txt contain the text for the victory slides.&lt;br /&gt;
&lt;br /&gt;
====Hard-coded strings====&lt;br /&gt;
There are several places in the game where strings are used that are hard-coded in the source code. Most of those are error strings you may never see, but some are actually important in the game. For now, it would be best to ignore these strings, and translate them when these strings are no longer hard-coded.&lt;br /&gt;
If you do translate them at this time, you would need to distribute game binaries of your own.&lt;br /&gt;
&lt;br /&gt;
====Fonts====&lt;br /&gt;
If you need additional characters you will need to add appropriate entries to the font dirs slides/slides.fon/, ipanims/lander.fon/, lbm/micro.fon/, lbm/tiny.fon/, lbm/player.fon/, lbm/starcon.fon/, credits/pt13.fon, credits/pt17.fon, credits/pt45.fon and comm/&amp;lt;race&amp;gt;/&amp;lt;race&amp;gt;.fon/ (note that starbas.fon, rebel.fon and spahome.fon do not exist). The number of the file is the UNICODE character code converted into decimal (from hex). [http://unicode.org/charts/ Here] are the official UNICODE character code charts. For hex-decimal conversion you can use [http://www.easycalculation.com/hex-converter.php this] online converter.&lt;br /&gt;
&lt;br /&gt;
Note that translation projects for other languages may have already created glyphs usable for your language.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
Some game images include text. A full translation would need modified versions of those. Here goes a full list:&lt;br /&gt;
&lt;br /&gt;
lbm/activity.[0-1].png, modules.[0-15].png, newgame.[0-5].png, playmenu.[0-37,58-66].png, shipyard.[3-16,20,22,23].png, sismods.55.png, title.png, title.0.png&lt;br /&gt;
&lt;br /&gt;
melee/melebkgd.[0-27].png&lt;br /&gt;
&lt;br /&gt;
lastbat/lascap.0.png&lt;br /&gt;
&lt;br /&gt;
sis_ship/siscap.[0,9-14].png&lt;br /&gt;
&lt;br /&gt;
shofixti/oldcap.0.png, shocap.[0,12-19].png&lt;br /&gt;
&lt;br /&gt;
ipanims/lander.32.png, orbenter.0.png&lt;br /&gt;
&lt;br /&gt;
slides/intro/title.[1-2].png&lt;br /&gt;
&lt;br /&gt;
slides/ending/ending.6.png&lt;br /&gt;
&lt;br /&gt;
====Speech====&lt;br /&gt;
If you want to dub the actual speech, you&#039;ll need to create new versions of the .ogg files in comm/&amp;lt;race&amp;gt;/ in the content dir. You&#039;ll also need to create new .ts files for synchronisation with the subtitles. See [[#Tools|Tools]] below.&lt;br /&gt;
&lt;br /&gt;
====Sounds====&lt;br /&gt;
In melee, some ships play sound effects containing speech. Here&#039;s a list:&lt;br /&gt;
&lt;br /&gt;
orz/intruder.wav, secondary.wav&lt;br /&gt;
&lt;br /&gt;
pkunk/insult[01-14].wav&lt;br /&gt;
&lt;br /&gt;
slylandr/secondary.wav&lt;br /&gt;
&lt;br /&gt;
urquan/secondary.wav&lt;br /&gt;
&lt;br /&gt;
====Documentation====&lt;br /&gt;
The game comes with several documentation files. In particular the game manual would be a good candidate for translation.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
The Russian translation project created a program to make editing the UQM fonts easy. It&#039;s available [http://cs.ozerki.net/zap/sc2-rus/ here].&lt;br /&gt;
&lt;br /&gt;
Unix-like systems will have a program &#039;&#039;&#039;iconv&#039;&#039;&#039; which can be used to easilly change the encoding of a text file (from latin1 to UTF-8 for instance).&lt;br /&gt;
&lt;br /&gt;
A tool for generating the time stamps used to synchronise the speech with the subtitles is available in the official CVS tree of the [[The Ur-Quan Masters]] project, in the &#039;&#039;&#039;tools&#039;&#039;&#039; module. [http://cvs.sourceforge.net/viewcvs.py/sc2/tools/synch/]&lt;br /&gt;
&lt;br /&gt;
==Translation projects==&lt;br /&gt;
&lt;br /&gt;
===Finnish===&lt;br /&gt;
Project site: http://web.archive.org/web/20090306075410/http://www2.kyamk.fi/~vi3dhepe/uqm-fin/index.html&lt;br /&gt;
&lt;br /&gt;
Download link: http://koti.mbnet.fi/tuukkar/uqm_fin_099.zip&lt;br /&gt;
&lt;br /&gt;
Forum thread: [http://uqm.stack.nl/forum/index.php?topic=2070.0]&lt;br /&gt;
&lt;br /&gt;
Status: almost complete&lt;br /&gt;
&lt;br /&gt;
===German===&lt;br /&gt;
Home page: http://sc2de.berlios.de/&lt;br /&gt;
&lt;br /&gt;
Project site: http://developer.berlios.de/projects/sc2de/&lt;br /&gt;
&lt;br /&gt;
Download: http://developer.berlios.de/project/showfiles.php?group_id=818&lt;br /&gt;
&lt;br /&gt;
CVS tree: http://cvs.berlios.de/cgi-bin/viewcvs.cgi/sc2de/Sternkontrolle/&lt;br /&gt;
&lt;br /&gt;
Forum threads: [http://uqm.stack.nl/forum/index.php?topic=1952.0], [http://uqm.stack.nl/forum/index.php?topic=2070.0], [http://uqm.stack.nl/forum/index.php?topic=2236.0] [http://forum.uqm.stack.nl/index.php?topic=4879.0]&lt;br /&gt;
&lt;br /&gt;
Status: almost complete&lt;br /&gt;
&lt;br /&gt;
===Italian===&lt;br /&gt;
Home page: http://urquanitalia.blogspot.it&lt;br /&gt;
&lt;br /&gt;
The project is just started. We need help. If interested in contributing contact [mailto:giacomog88@gmail.com Giacomo]&lt;br /&gt;
&lt;br /&gt;
Forum thread: [http://forum.uqm.stack.nl/index.php?topic=5252.0]&lt;br /&gt;
&lt;br /&gt;
Status: ?%, accelerating towards light speed&lt;br /&gt;
&lt;br /&gt;
===Japanese===&lt;br /&gt;
There currently is no Japanese translation project underway, but the original 3DO version was also released in Japanese. We have a copy, and if the copyrights allow it, we may be able to add Japanese speech files without much problems.&lt;br /&gt;
&lt;br /&gt;
Bugzilla entry: [[uqmbug:605|#605]]&lt;br /&gt;
&lt;br /&gt;
Status: 0% complete&lt;br /&gt;
&lt;br /&gt;
===Polish===&lt;br /&gt;
For information contact [mailto:arael@tenbit.pl Arael]&lt;br /&gt;
&lt;br /&gt;
Forum threads: [http://uqm.stack.nl/forum/index.php?topic=2391]&lt;br /&gt;
&lt;br /&gt;
Status: temporarily stalled&lt;br /&gt;
&lt;br /&gt;
===Portuguese===&lt;br /&gt;
The project has already been started. Plans are to do both a Brazilian and Portuguese version. A call for contributors has been made.  Contact [[User:nightshadow|nightshadow]] if interested.&lt;br /&gt;
&lt;br /&gt;
Project Site: http://pt-masters.net/&lt;br /&gt;
&lt;br /&gt;
Forum threads: [http://uqm.stack.nl/forum/index.php?topic=2425.0],[http://uqm.stack.nl/forum/index.php?topic=2044.0], [http://uqm.stack.nl/forum/index.php?topic=2070.0], [http://uqm.stack.nl/forum/index.php?topic=3639.0]&lt;br /&gt;
&lt;br /&gt;
Status: Just Started&lt;br /&gt;
&lt;br /&gt;
===Russian===&lt;br /&gt;
Main site: http://uqm-rus.uvw.ru/&lt;br /&gt;
&lt;br /&gt;
Forum threads: [http://uqm.stack.nl/forum/index.php?topic=2070.0], [http://uqm.stack.nl/forum/index.php?topic=1952.0], [http://uqm.stack.nl/forum/index.php?topic=2221.0] [http://uqm.stack.nl/forum/index.php?topic=2426.0]&lt;br /&gt;
&lt;br /&gt;
Status: complete&lt;br /&gt;
&lt;br /&gt;
===Spanish===&lt;br /&gt;
The Spanish translation project is in need of help. Contact [mailto:volka@custom-creations.org Volka] if you&#039;re interested in contributing.&lt;br /&gt;
&lt;br /&gt;
Version 0.3 of the translation is available. Most of the conversation text has been translated, and the focus is now on the translation of the images. Visit the [http://www.custom-creations.org/~starsite/UQM-spa/descargas.php Downloads] section of the proyect.&lt;br /&gt;
&lt;br /&gt;
Main site: http://www.custom-creations.org/~starsite/UQM-spa/&lt;br /&gt;
&lt;br /&gt;
Forum threads: [http://uqm.stack.nl/forum/index.php?topic=2070.0] [http://uqm.stack.nl/forum/index.php?topic=2332.0] [http://uqm.stack.nl/forum/index.php?topic=2633.0]&lt;br /&gt;
&lt;br /&gt;
Status: 70%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26041</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26041"/>
		<updated>2011-07-18T19:35:07Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Add-on layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.7.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc1.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc2.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc3.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/russian-trans-2.0.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian-trans-2.0.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 lang-russian/russian.rmp&lt;br /&gt;
 lang-russian/uqmpack.nfo&lt;br /&gt;
 lang-russian/shadow-content/russian-shadow.zip (see notes below)&lt;br /&gt;
 lang-russian/comm/commander.txt&lt;br /&gt;
 lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing, all under lang-russian/ ]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/uqmpack.nfo&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A shadow content zip works like the add-ons worked in the prior versions: the file structure must match the default content layout, and the files in the zip will &#039;&#039;shadow&#039;&#039; (or override) the default content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;russian.rmp&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 comm.arilou.dialogue = CONVERSATION:addons/lang-russian/comm/arilou.txt:addons/3dovoice/arilou/:addons/3dovoice/arilou/arilou.ts &lt;br /&gt;
 comm.commander.dialogue = CONVERSATION:addons/lang-russian/comm/commander.txt:addons/3dovoice/commander/:addons/3dovoice/commander/commander.ts &lt;br /&gt;
 [etc., resource identifiers of author&#039;s choosing; see content/uqm.rmp for resource strings]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
An add-on must contain at least one .rmp file or it will not be loaded.&lt;br /&gt;
Note that CONVERSATION resource type has three parts: the subtitles file, the voice ogg directory, and the timestamps file. If the last two are omitted, the voices will not play when this add-on is loaded. See the &#039;&#039;3domusic&#039;&#039; and &#039;&#039;3dovoice&#039;&#039; standard add-on for more examples. You may add completely new resource identifiers if you plan to add brand new content in your mod.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;uqmpack.nfo&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 name=Russian Pack&lt;br /&gt;
 author=John Doe&lt;br /&gt;
 version=2&lt;br /&gt;
 description=Russian translation of the game.&lt;br /&gt;
 year=2011&lt;br /&gt;
 min_uqm_version=0.7&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
While &#039;&#039;uqmpack.nfo&#039;&#039; file is not currently required in the add-on, we ask that you add one for the future online add-on management. This will make your add-on more user-friendly.&lt;br /&gt;
&lt;br /&gt;
====Shadow content====&lt;br /&gt;
Shadow content works like the add-ons worked in the prior versions: the file structure must match the default content layout, and the files will &#039;&#039;shadow&#039;&#039; (or override) the default content.&lt;br /&gt;
&lt;br /&gt;
Currently, add-on &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped add-on file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. Please note that we intend to remove this limitation in v0.7.1. We hope to release the 0.7.1 with bugfixes as quickly as we possible, so modders may want to wait for it.&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26037</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26037"/>
		<updated>2011-07-17T05:37:32Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Add-on layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.7.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc1.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc2.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc3.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/russian-trans-2.0.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian-trans-2.0.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 lang-russian/russian.rmp&lt;br /&gt;
 lang-russian/uqmpack.nfo&lt;br /&gt;
 lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
 lang-russian/comm/commander.txt&lt;br /&gt;
 lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing, all under lang-russian/ ]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/uqmpack.nfo&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;russian.rmp&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 comm.arilou.dialogue = CONVERSATION:addons/lang-russian/comm/arilou.txt:addons/3dovoice/arilou/:addons/3dovoice/arilou/arilou.ts &lt;br /&gt;
 comm.commander.dialogue = CONVERSATION:addons/lang-russian/comm/commander.txt:addons/3dovoice/commander/:addons/3dovoice/commander/commander.ts &lt;br /&gt;
 [etc., resource identifiers of author&#039;s choosing; see content/uqm.rmp for resource strings]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
An add-on must contain at least one .rmp file or it will not be loaded.&lt;br /&gt;
Note that CONVERSATION resource type has three parts: the subtitles file, the voice ogg directory, and the timestamps file. If the last two are omitted, the voices will not play when this add-on is loaded. See the &#039;&#039;3domusic&#039;&#039; and &#039;&#039;3dovoice&#039;&#039; standard add-on for more examples. You may add completely new resource identifiers if you plan to add brand new content in your mod.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;uqmpack.nfo&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 name=Russian Pack&lt;br /&gt;
 author=John Doe&lt;br /&gt;
 version=2&lt;br /&gt;
 description=Russian translation of the game.&lt;br /&gt;
 year=2011&lt;br /&gt;
 min_uqm_version=0.7&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
While &#039;&#039;uqmpack.nfo&#039;&#039; file is not currently required in the add-on, we ask that you add one for the future online add-on management. This will make your add-on more user-friendly.&lt;br /&gt;
&lt;br /&gt;
Currently, addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance.&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26036</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26036"/>
		<updated>2011-07-17T05:07:26Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* On Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.7.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc1.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc2.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc3.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26035</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26035"/>
		<updated>2011-07-17T05:06:36Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* On Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.7.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc1.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc2.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc3.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/uqm-remix-disc3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26034</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26034"/>
		<updated>2011-07-17T05:06:00Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* On Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.7.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-0.7.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc1.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc2.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\uqm-remix-disc3.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix1.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix2.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix3.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26033</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=26033"/>
		<updated>2011-07-17T05:04:56Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* On Mac OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack1.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack2.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack3.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix1.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix2.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix3.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.7.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-0.7.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc1.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc2.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/uqm-remix-disc3.uqm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix1.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix2.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix3.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=23226</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=23226"/>
		<updated>2009-07-09T22:28:45Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Content directories */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack1.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack2.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack3.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix1.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix2.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix3.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix1.rmp&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix2.rmp&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix3.rmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix1.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix2.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix3.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in specified order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=23225</id>
		<title>Content Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management&amp;diff=23225"/>
		<updated>2009-07-09T22:26:54Z</updated>

		<summary type="html">&lt;p&gt;Fossil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game still uses a virtual file system as before: see [[Content Management]] for information on this.  However, starting in 0.6.4, the &amp;quot;layering&amp;quot; effect of the directory system is no longer used to index files for the purposes of regular addons. The concept of addon shadow packages was introduced in 0.6.6 as a stop-gap since the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Hey, my remixes don&#039;t work!==&lt;br /&gt;
&lt;br /&gt;
UQM 0.6.4 (SVN revision 2869) changed addon pack mechanics incompatibly.  Your remix zips are still OK, but you will need to perform these steps:&lt;br /&gt;
&lt;br /&gt;
* Move the addons directory from content/packages to content/&lt;br /&gt;
* Download the appropriate .rmp files from http://sc2.sourceforge.net/remix-rmp/ and put them in the same directory as the remix zips.&lt;br /&gt;
* Ensure that the remix directory is, in fact, addons/remix.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
Still needs to be done.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack1.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack2.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\uqm-remix-pack3.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix1.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix2.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\addons\remix\remix3.rmp&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix1.rmp&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix2.rmp&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/addons/remix/remix3.rmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix1.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix2.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/addons/remix/remix3.rmp&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game in 0.7. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/addons/[name]   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on shadow packages|add-on shadow packages]], in alphabetic order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
Note that addon packages are now mounted in their own tree branches, with one exception. The only way to override (or &#039;&#039;shadow&#039;&#039;) the content is with an add-on shadow package. This is necessary in cases like extending fonts or supplying different menu keys because the resource system is not yet finished.&lt;br /&gt;
&lt;br /&gt;
==Add-on layout==&lt;br /&gt;
This is better illustrated with an example:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 addons/lang-russian/russian.zip&lt;br /&gt;
 addons/lang-russian/shadow-content/russian-shadow.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Where &#039;&#039;russian.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /addons/lang-russian/russian.rmp&lt;br /&gt;
 /addons/lang-russian/comm/commander.txt&lt;br /&gt;
 /addons/lang-russian/comm/arilou.txt&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;russian-shadow.zip&#039;&#039; contains:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 base/fonts/micro.fon/&lt;br /&gt;
 base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
and is mounted like so:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /base/fonts/micro.fon/&lt;br /&gt;
 /base/fonts/player.fon/&lt;br /&gt;
 [etc.]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Addon &#039;&#039;shadow-content&#039;&#039; directory &#039;&#039;&#039;must&#039;&#039;&#039; contain .zip (or .uqm) files. Only zipped files will be mounted under the root directory. This means that in order to create a single zipped addon file with shadow content, you have to put a zip inside a zip. In that case, it may be a good idea to zip the shadow content with method &#039;&#039;store&#039;&#039; (no compression) in order to improve the in-game performance. A single &#039;&#039;russian.zip&#039;&#039; package would then look like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 shadow-content/russian-shadow.zip&lt;br /&gt;
 russian.rmp&lt;br /&gt;
 comm/commander.txt&lt;br /&gt;
 comm/arilou.txt&lt;br /&gt;
 [etc., files with layout of author&#039;s choosing]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Development Status==&lt;br /&gt;
&lt;br /&gt;
The resource system (and thus the content directory) are in flux as the development team works on implementing a new resource system.  This should remove a lot of the more brittle components from the legacy system and make addons easier to add, and mods to the source easier to make work.  Detailed goals, milestones, and comments are in this section.&lt;br /&gt;
&lt;br /&gt;
===Top-Level Roadmap===&lt;br /&gt;
&lt;br /&gt;
This actually may migrate over time as we see what works and what doesn&#039;t, but it will at least mark where we&#039;ve been and where we think we&#039;re going.&lt;br /&gt;
&lt;br /&gt;
# Implement a generic string-based key-to-value system for doing resource lookups.  &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
# Drop requirement on binary resource indices by translating them to text. &#039;&#039;Completed in Revision 2003.&#039;&#039;&lt;br /&gt;
# Replace the integer-based resource system with string-based key mappings that are easier to extend. &#039;&#039;Completed in Revision 2963.&#039;&#039;&lt;br /&gt;
# Rework resource types to allow for a wider range of resources. Migrate all 3DO content into standalone addon packs. &#039;&#039;Completed in Revision 3104.&#039;&#039;&lt;br /&gt;
# Uniform API for all uses of the resource-map system, merging about six redundant subsystems into one. &#039;&#039;In progress.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Current goals===&lt;br /&gt;
&lt;br /&gt;
It&#039;s now feasible to start moving hardcoded data like the starship constants and the starmap itself into .rmp files.  It&#039;s not clear how much of this is wise for 0.7.0 itself, but we should probably do at least a &#039;&#039;little&#039;&#039; to gather interest.&lt;br /&gt;
&lt;br /&gt;
* Keep user settings in a resource-map. &#039;&#039;Completed in Revision 1916.&#039;&#039;&lt;br /&gt;
* Keep key configuration in a resource-map. &#039;&#039;Completed in Revision 2705.&#039;&#039;&lt;br /&gt;
* Allow loads of resource files to be placed into isolated submaps to keep values separated. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Allow saves to strip some or all of the common prefix to save only the &amp;quot;submap&amp;quot; component. &#039;&#039;Completed in Revision 3105.&#039;&#039;&lt;br /&gt;
* Merge user settings and key configuration into the main resource map, eliminating the now-redundant mapres.c routines.  &#039;&#039;Completed in Revision 3108.&#039;&#039;&lt;br /&gt;
* Turn melee data (teams, current situation) into resource maps like the other two.&lt;br /&gt;
&lt;br /&gt;
===Other work===&lt;br /&gt;
&lt;br /&gt;
This is a bit more nebulous since we haven&#039;t advanced far enough to see what&#039;s a good idea and what isn&#039;t.&lt;br /&gt;
&lt;br /&gt;
*Massive, cathartic violence against the content directory structure, ending in convenient subprojects. &#039;&#039;Incomplete, but started in revision 2870.&#039;&#039;&lt;br /&gt;
*Let .rmp files include other ones to make uqm.rmp less monolithic.  This could also be used to automatically include addon packs (such as, say, a Cyrillic Font Pack) if necessary.&lt;br /&gt;
**At the moment we just load all .rmp files in any given directory. This may be good enough.&lt;br /&gt;
*The hack to make the remix packs work is kind of ugly. A more permanent fix would allow special variable expansion to map to wherever uio elected to put it, giving each extension its own space for files. Best of all would be a magic variable for &amp;quot;The home of the extension named X.&amp;quot; Implementing this would give us full namespaces and namespace imports.&lt;br /&gt;
** It&#039;s only ugly under the surface, though, and will only affect mod writers, and that rather minimally.  The users just shove packages blindly into content/addons.&lt;br /&gt;
*Online configuration of which extensions to use.&lt;br /&gt;
*It would be nice to have an offline application for building extensions.&lt;br /&gt;
*A more &amp;quot;self-aware&amp;quot; resource system should give us a much better handle on the remaining resource-related bugs.&lt;br /&gt;
*Can we leverage this for improving save game formats?&lt;br /&gt;
*Planet data is aliased in #defines and structure initializers when it should probably be in the resource map.&lt;br /&gt;
*Ship data is *not* aliased, requiring a bunch of structure initializers that probably (though less probably than in the planet data case) should be name normalized.&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Content_Management_before_0.7.0&amp;diff=23224</id>
		<title>Content Management before 0.7.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Content_Management_before_0.7.0&amp;diff=23224"/>
		<updated>2009-07-09T18:44:12Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Content directories */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;Note: the information contained in this page pertains to the [[The Ur-Quan Masters]] versions 0.3 through 0.6.0. The content system is currently under revision: See [[Content Management in 0.7.0]] for details.&lt;br /&gt;
&lt;br /&gt;
{{safe}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The game uses a virtual file system to access the content. Directories from various locations are combined (&amp;quot;mounted&amp;quot;) to form one big file system, where files from a mounted directory are hidden if files with the same name exist on a directory mounted &amp;quot;on top&amp;quot; of it.&lt;br /&gt;
A directory to be mounted may exist as an actual directory on the operating system&#039;s file system, or as a directory within a .zip or .uqm file. An .uqm file is internally a .zip file but with another name given, so that people won&#039;t accidentally unpack them.&lt;br /&gt;
&lt;br /&gt;
If a file exists in a directory which is mounted read-only, but not in a directory mounted read-write on top of it, then writing to the file will produce a copy in the latter directory.&lt;br /&gt;
&lt;br /&gt;
Whether file name matching is case-sensitive or not depends on the file system of each layer. Files in .zip files are always matched case-sensitively, while files outside of .zip files are matched as normal for the operating system UQM is run on.&lt;br /&gt;
&lt;br /&gt;
==Content directories==&lt;br /&gt;
The following list shows which directories are mounted in the game. The later mentioned ones are mounted on top of the earlier mentioned ones.&lt;br /&gt;
{|border=1&lt;br /&gt;
!Directory!!Mounted on!!flags&lt;br /&gt;
|-&lt;br /&gt;
|[[#Default packages|default packages]], in alphabetic order||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add-on packages|add-on packages]], in alphabetic order  ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Content base directory|content base directory]]         ||/   ||read-only&lt;br /&gt;
|-&lt;br /&gt;
|[[#User data directory|user data directory]]               ||/   ||read-write&lt;br /&gt;
|-&lt;br /&gt;
|[[#Temporary directory|temporary directory]]               ||/tmp||read-write&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can see from this table that unzipped files always override zipped files. This means that using add-on packages to override unzipped base content won&#039;t work. This is one of the issues that will be addressed in a next release.&lt;br /&gt;
&lt;br /&gt;
==Detailed description==&lt;br /&gt;
&lt;br /&gt;
===Content base directory===&lt;br /&gt;
This is the base directory where the content files are stored.&lt;br /&gt;
It needs to contain a file named &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; with the UQM version number to be accepted by the game.&lt;br /&gt;
In it, you&#039;ll usually find a directory &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the default packages, and indirectly the add-on packages (optionally). The add-on packages are kept in a directory &amp;lt;code&amp;gt;addons&amp;lt;/code&amp;gt; within the &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
On Windows Systems the content base directory is located in the installation root directory, which can be specified by the user at installation time. Using the installation default &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;, that would place the content directory in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\content\&amp;lt;/code&amp;gt;. The game tries the directory where it is started and the directory &amp;quot;content&amp;quot; within that dir as the content base directory.&lt;br /&gt;
&lt;br /&gt;
On Unix systems, the content directory may vary per packager. If you&#039;re building from source, you can specify the installation directory yourself. Per default, the content is stored in &amp;lt;code&amp;gt;lib/uqm/content/&amp;lt;/code&amp;gt; in the specified installation prefix, which is &amp;lt;code&amp;gt;/usr/local/&amp;lt;/code&amp;gt; per default.&lt;br /&gt;
A wrapper script supplies the content dir location to the game.&lt;br /&gt;
&lt;br /&gt;
To override the default content directory, pass something like &amp;lt;code&amp;gt;--content-dir /path/to/content&amp;lt;/code&amp;gt; to the game.&lt;br /&gt;
&lt;br /&gt;
===Default packages===&lt;br /&gt;
Default packages are .uqm files located in the directory &amp;lt;code&amp;gt;packages/&amp;lt;/code&amp;gt; in the content directory. They are mounted automatically, in alphabetic order, with the later ones overriding the earlier ones.&lt;br /&gt;
&lt;br /&gt;
===Add-on packages===&lt;br /&gt;
Add-on packages are .uqm or .zip files located in subdirectories of &amp;lt;code&amp;gt;packages/addons/&amp;lt;/code&amp;gt; in the content directory. If the &amp;lt;code&amp;gt;--addon&amp;lt;/code&amp;gt; argument is passed to the game, the game will use the succeeding argument as the name of a subdirectory in &amp;lt;code&amp;gt;packages/addons/&amp;lt;/code&amp;gt; from which additional packages will be loaded. The game will mount all the .zip/.uqm files in such a directory in alphabetic order, with the later ones overriding the earlier ones.&lt;br /&gt;
The &amp;lt;code&amp;gt;--addon&amp;lt;/code&amp;gt; argument can be supplied multiple times to include multiple add-on directories. They will be mounted in the order they are supplied, with the later ones overriding the earlier ones.&lt;br /&gt;
&lt;br /&gt;
Files in add-on packages will override files from the default packages.&lt;br /&gt;
&lt;br /&gt;
When creating add-on packages, make sure that the use of capitals in the file names matches what is expected. This is even important if a package is for use on Windows only; the matching of file names inside content files does not go through the operating system, and is case sensitive.&lt;br /&gt;
&lt;br /&gt;
===User data directory===&lt;br /&gt;
In the user data directory the user&#039;s key config, melee config, melee teams, and saved games are stored.&lt;br /&gt;
&lt;br /&gt;
On Unix systems (including Darwin/MacOS X) the user data directory is &amp;lt;code&amp;gt;~/.uqm/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On English Windows systems, the user data directory is the directory &amp;lt;code&amp;gt;uqm&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Application Data&amp;lt;/code&amp;gt; directory for the current user. The &amp;lt;code&amp;gt;Application Data&amp;lt;/code&amp;gt; directory is usually in one of the following locations, and may be hidden:&lt;br /&gt;
; Windows 95, 98, SE without separate users : &amp;lt;code&amp;gt;C:\Windows\Application Data\&amp;lt;/code&amp;gt;&lt;br /&gt;
; Windows 95/98/SE with separate users : &amp;lt;code&amp;gt;C:\Windows\Profiles\YourName\Application Data\&amp;lt;/code&amp;gt;&lt;br /&gt;
; Windows NT/2k/XP : &amp;lt;code&amp;gt;C:\Documents and Settings\YourName\Application Data\&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On localized versions of Windows, these locations may differ. For instance, in the German version it would be &amp;quot;Anwendungsdaten&amp;quot;, not &amp;quot;Application Data&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Temporary directory===&lt;br /&gt;
A temporary directory is used to store some data during the game. This was necessary in older versions of Star-Control, but on modern systems the memory involved is not worth it. It will be removed in a future version.&lt;br /&gt;
&lt;br /&gt;
The temporary directory for the game is a directory created in the operating system&#039;s default temporary directory. If an environment variable &amp;lt;code&amp;gt;TMP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;TEMP&amp;lt;/code&amp;gt; is set, that will be where the temporary directory for the game will be created, otherwise a directory &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; will be used if that exist. If that directory doesn&#039;t exist either, a directory is created in the current working directory.&lt;br /&gt;
&lt;br /&gt;
==A typical layout==&lt;br /&gt;
&lt;br /&gt;
===On Mac OS X===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Mac OS X looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/PkgInfo&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Info.plist&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Ogg.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL_image.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/SDL.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Frameworks/Vorbis.framework&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/MacOS/The Ur-Quan Masters&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/The Ur-Quan Masters.icns&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/version&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /Applications/The Ur-Quan Masters/Contents/Resources/content/packages/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Windows===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Windows looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\uqm.exe&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-content.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\uqm-0.6.0-voice.uqm&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\addons\remix\uqm-remix-pack1.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\addons\remix\uqm-remix-pack2.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\packages\addons\remix\uqm-remix-pack3.zip&lt;br /&gt;
 C:\Program Files\The Ur-Quan Masters\content\version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===On Linux===&lt;br /&gt;
A typical The Ur-Quan Masters installation on Linux looks like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /usr/local/bin/uqm        (wrapper script)&lt;br /&gt;
 /usr/local/lib/uqm/uqm    (the actual executable)&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-content.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-3domusic.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/uqm-0.6.0-voice.uqm&lt;br /&gt;
 /usr/local/share/uqm/content/packages/addons/remix/uqm-remix-pack1.zip&lt;br /&gt;
 /usr/local/share/uqm/content/packages/addons/remix/uqm-remix-pack2.zip&lt;br /&gt;
 /usr/local/share/uqm/content/packages/addons/remix/uqm-remix-pack3.zip&lt;br /&gt;
 /usr/local/share/uqm/content/version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:About the Star Control series]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14043</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14043"/>
		<updated>2006-11-03T09:17:17Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Caveats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
First, find out what your public IP address is. &lt;br /&gt;
Then on Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;nslookup&amp;quot; (the nslookup tool will start and prompt you with &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
*type &amp;quot;set type=PTR&amp;quot;&lt;br /&gt;
*type your public IP address&lt;br /&gt;
*when the DNS server reponds, you will see something like&lt;br /&gt;
&amp;lt;code&amp;gt;212.60.42.129.in-addr.arpa      name = www.ibm.com&amp;lt;/code&amp;gt;&lt;br /&gt;
*the part after &amp;lt;code&amp;gt;name = &amp;lt;/code&amp;gt; is your publicly visible hostname.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantages are that you can only play against other Hamachi users and the increased network latency (and so the need for a higher netdelay)&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
&lt;br /&gt;
*When you are connecting to someone: if you start UQM with the &#039;&#039;&#039;--nethost2&#039;&#039;&#039; option, the outgoing address you specify is set for the &#039;&#039;&#039;top&#039;&#039;&#039; player. So make the top player network-controlled. If you used the &#039;&#039;&#039;--nethost1&#039;&#039;&#039; option, make the &#039;&#039;&#039;bottom&#039;&#039;&#039; player network-controlled.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised by the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14042</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14042"/>
		<updated>2006-11-03T09:15:46Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* If you cannot establish a connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
First, find out what your public IP address is. &lt;br /&gt;
Then on Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;nslookup&amp;quot; (the nslookup tool will start and prompt you with &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
*type &amp;quot;set type=PTR&amp;quot;&lt;br /&gt;
*type your public IP address&lt;br /&gt;
*when the DNS server reponds, you will see something like&lt;br /&gt;
&amp;lt;code&amp;gt;212.60.42.129.in-addr.arpa      name = www.ibm.com&amp;lt;/code&amp;gt;&lt;br /&gt;
*the part after &amp;lt;code&amp;gt;name = &amp;lt;/code&amp;gt; is your publicly visible hostname.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantages are that you can only play against other Hamachi users and the increased network latency (and so the need for a higher netdelay)&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
&lt;br /&gt;
*When you are connecting to someone: if you start UQM with the &#039;&#039;&#039;--nethost2&#039;&#039;&#039; option, the outgoing address you specify is set for the &#039;&#039;&#039;top&#039;&#039;&#039; player. So make the top player network-controlled. If you used the &#039;&#039;&#039;--nethost1&#039;&#039;&#039; option, make the &#039;&#039;&#039;bottom&#039;&#039;&#039; player network-controlled.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14041</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14041"/>
		<updated>2006-11-03T09:07:59Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Alternative: Using Hamachi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
First, find out what your public IP address is. &lt;br /&gt;
Then on Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;nslookup&amp;quot; (the nslookup tool will start and prompt you with &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
*type &amp;quot;set type=PTR&amp;quot;&lt;br /&gt;
*type your public IP address&lt;br /&gt;
*when the DNS server reponds, you will see something like&lt;br /&gt;
&amp;lt;code&amp;gt;212.60.42.129.in-addr.arpa      name = www.ibm.com&amp;lt;/code&amp;gt;&lt;br /&gt;
*the part after &amp;lt;code&amp;gt;name = &amp;lt;/code&amp;gt; is your publicly visible hostname.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantages are that you can only play against other Hamachi users and the increased network latency (and so the need for a higher netdelay)&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14040</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14040"/>
		<updated>2006-11-03T09:02:03Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Finding out what your hostname is */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
First, find out what your public IP address is. &lt;br /&gt;
Then on Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;nslookup&amp;quot; (the nslookup tool will start and prompt you with &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
*type &amp;quot;set type=PTR&amp;quot;&lt;br /&gt;
*type your public IP address&lt;br /&gt;
*when the DNS server reponds, you will see something like&lt;br /&gt;
&amp;lt;code&amp;gt;212.60.42.129.in-addr.arpa      name = www.ibm.com&amp;lt;/code&amp;gt;&lt;br /&gt;
*the part after &amp;lt;code&amp;gt;name = &amp;lt;/code&amp;gt; is your publicly visible hostname.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that you can only play against other Hamachi users.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14039</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14039"/>
		<updated>2006-11-03T09:01:07Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Finding out what your hostname is */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
First, find out what your public IP address is. &lt;br /&gt;
Then on Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;nslookup&amp;quot; (the nslookup tool will start amd prompt you with &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
*type &amp;quot;set type=PTR&amp;quot;&lt;br /&gt;
*type your public IP address&lt;br /&gt;
*when the DNS server reponds, you will see something like&lt;br /&gt;
&amp;lt;code&amp;gt;212.60.42.129.in-addr.arpa      name = www.ibm.com&amp;lt;/code&amp;gt;&lt;br /&gt;
*the part after &amp;lt;code&amp;gt;name = &amp;lt;/code&amp;gt; is your publicly visible hostname.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that you can only play against other Hamachi users.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14038</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14038"/>
		<updated>2006-11-03T08:49:20Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Firewall basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these will happily respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. And frequently both will. Both may have to be instructed to allow your packets to get through.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that you can only play against other Hamachi users.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14037</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14037"/>
		<updated>2006-11-03T08:46:04Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Router basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) with the public address, and send it along.&lt;br /&gt;
And when a packet arrives from the internet, the router will change the destination address (which was the public address) to the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these&lt;br /&gt;
y will happilly respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. Frequently, both will. Both may have to be instructed to allow your packets.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that you can only play against other Hamachi users.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14036</id>
		<title>Netplay howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Netplay_howto&amp;diff=14036"/>
		<updated>2006-11-03T08:42:36Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Installing a network-capable version of The Ur-Quan Masters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to play [[SuperMelee]] in [[The Ur-Quan Masters]] over a network. Take your time and read it thoroughly; every word is there for a reason.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing a network-capable version of The Ur-Quan Masters==&lt;br /&gt;
Netplay is still in the testing phase, and there hasn&#039;t been a release yet which includes netplay. So to play netplay, you need the more recent developer sources. If you know how to compile the game yourself, you can just download the [http://sourceforge.net/cvs/?group_id=59452 latest sources from CVS] and compile as usual.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a Windows user, there is an easier way to go:&lt;br /&gt;
#First, install the [http://sc2.sourceforge.net/downloads.php 0.5.0 release] of the game as normally. Do not install any melee-altering add-on packs unless your opponent has them installed too. Otherwise the two parties would lose synchronisation and the game would be aborted. Audio packs should be ok though.&lt;br /&gt;
#From the [http://uqm.stack.nl/files/snapshots/ CVS snapshots page] download the latest precompiled binary (either release or debug; the debug version may give more information to help the developers if a bug occurs; the release version will be faster), as well as the latest content update.&lt;br /&gt;
#Unpack the downloaded file (you will need a program such as [http://www.winzip.com/ WinZip] for this). You will end up with an &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#Find the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file that came with 0.5.0, and replace it by the extracted .exe file (if you have &amp;lt;code&amp;gt;uqm-debug.exe&amp;lt;/code&amp;gt; rename it to &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt;). If you installed The Ur-Quan Masters in the default location, you&#039;ll find it in &amp;lt;code&amp;gt;C:\Program Files\The Ur-Quan Masters\&amp;lt;/code&amp;gt;).&lt;br /&gt;
#In the folder where you found the &amp;lt;code&amp;gt;uqm.exe&amp;lt;/code&amp;gt; file, there&#039;s another folder named &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt;, which contains the file &amp;lt;code&amp;gt;uqm-0.5.0-content.uqm&amp;lt;/code&amp;gt; (and possibly other .uqm files for alternative music). Put the downloaded content update .zip file in here. &#039;&#039;&#039;DO NOT UNPACK THIS FILE!&#039;&#039;&#039;. The game knows how to read the files from inside the archive.&lt;br /&gt;
If you later want to upgrade, just remove the old content upgrade .zip file and redo steps 2 and onwards.&lt;br /&gt;
&lt;br /&gt;
==Setting up the network==&lt;br /&gt;
&lt;br /&gt;
Network experts can skip to the section &amp;quot;Settings Summary&amp;quot;. For the others, read on, everything will be explained.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
====Network basics====&lt;br /&gt;
Every computer on the internet has an &#039;&#039;internet address&#039;&#039;, consisting of 4 numbers seperated by periods, like &amp;lt;code&amp;gt;131.155.140.133&amp;lt;/code&amp;gt;. Information sent over the internet is split up in &#039;&#039;packets&#039;&#039;, each packet labeled with the destination address.&lt;br /&gt;
&lt;br /&gt;
A computer may also have a &#039;&#039;host name&#039;&#039;, like &amp;lt;code&amp;gt;uqm.stack.nl&amp;lt;/code&amp;gt;, to make refering to it a bit easier to read for humans. When information needs to be sent to a computer known only by host name, its address will first be looked up.&lt;br /&gt;
&lt;br /&gt;
A computer may run many programs simultaneously which want to receive information from over the network. To direct packets to the correct program, the address will include a number known as the &#039;&#039;port number&#039;&#039; or &#039;&#039;port&#039;&#039; for short. The Ur-Quan Masters accepts packets sent to port &#039;&#039;21837&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Router basics====&lt;br /&gt;
The little box which comes with most modern internet subscriptions is a &#039;&#039;router&#039;&#039;. A router is a device which passes packets to other computer.&lt;br /&gt;
&lt;br /&gt;
Several computer may be connected to a single router, but usually there&#039;s only one internet address for one router (the &#039;&#039;public address&#039;&#039;). To be able to address the different computers connected to the router, the router gives them all a &#039;&#039;local address&#039;&#039;. Special ranges of address are reserved for use like this (192.168.x.x, 10.x.x.x and 172.16.x.x through 172.31.x.x); these addresses are not accessible directly from the internet.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends a packet over the internet to another computer, the router will replace the return address (which was the local address) by the public address, and send it along.&lt;br /&gt;
And when a packet arrives from over the internet, the router will change the destination address (which was the public address) by the address of the local computer for which it was destined.&lt;br /&gt;
This relabeling is usually called &#039;&#039;NAT&#039;&#039; (for &#039;&#039;Network Address Translation&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And this is where the problems begin. How is a router to know for which local computer a packet is destined? The packet only comes with the public address and a port number.&lt;br /&gt;
&lt;br /&gt;
When a local computer sends packets first, the router can look at the originating address and port and remember them, so that when a reply comes to the same port, it knows for which computer it is meant.&lt;br /&gt;
&lt;br /&gt;
But if packets arrive from a computer over the internet out of the blue, the router does not know to which local computer it should direct them. (Even when there&#039;s only one local computer, most routers will just throw such packets away.) In this case, you need to tell your router explicitely where packets that match a specific pattern need to be sent to. For instance, you could tell it that packets that arrive for port 21837 should go to the computer with local address 192.168.0.2.&lt;br /&gt;
&lt;br /&gt;
====Firewall basics====&lt;br /&gt;
A firewall is a program which selectively blocks packets.&lt;br /&gt;
&lt;br /&gt;
Many programs will have some sort of network functionality, more than you&#039;re probably aware of, some which are part of Windows itself. When packets arrive these&lt;br /&gt;
y will happilly respond to them. But while you may want to share your files with another local computer, you may not want your neighbours to see them. And every program that is accessible could also contain a bug that could compromise your system.&lt;br /&gt;
&lt;br /&gt;
This is where firewalls come in. They have rules which govern which packets are allowed to pass through unhindered, and which are blocked. And because it&#039;s better to be safe than sorry, firewalls usually block everything they don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
So when you&#039;re running a program that needs to access the internet, you&#039;ll need to tell your firewall to allow it. A firewall may be running on your local computer (Windows XP has one built in), but your router may also have one. Frequently, both will. Both may have to be instructed to allow your packets.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your local address is===&lt;br /&gt;
In Windows:&lt;br /&gt;
*from the start menu, select &amp;quot;Run...&amp;quot;&lt;br /&gt;
*type &amp;quot;cmd /K ipconfig&amp;quot; (on Windows 2000 and Windows XP), or &amp;quot;command /K ipconfig&amp;quot; (on older Windows versions)&lt;br /&gt;
*the line saying &amp;quot;IP address&amp;quot; will contain your local address. You can ignore the rest.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your public address is===&lt;br /&gt;
As your public address is sent as the return address everywhere you go on the internet, you just need to visit a web site that reports it back. [http://www.whatsmyip.org/ http://www.whatsmyip.org/] will do. You&#039;ll see your public internet address in big letters on the top of the page.&lt;br /&gt;
&lt;br /&gt;
Note that your ISP may give you a different public internet address each time your router asks for one (after a reboot of the router perhaps). Check, if you aren&#039;t sure.&lt;br /&gt;
&lt;br /&gt;
===Finding out what your hostname is===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
If you&#039;re logged in on IRC (see [#Finding someone to play against]), you can use the command &amp;lt;code&amp;gt;/whois&amp;lt;/code&amp;gt; to find out what your hostname is. If your public internet address has no hostname, this will show your local address.&lt;br /&gt;
&lt;br /&gt;
===Telling your router to forward UQM packets===&lt;br /&gt;
There are many different routers, so this section will not contain specific instructions. You will need to find your router&#039;s manual, or find information on the internet. Typically, you use a web browser to connect to your router&#039;s own local internet address. Often [http://192.168.0.1/ http://192.168.0.1/], [http://192.168.1.1/ http://192.168.1.1/], or [http://10.0.0.1/ http://10.0.0.1/]. You&#039;ll probably need a password too.&lt;br /&gt;
&lt;br /&gt;
When you&#039;re logged in, look for a section with a name like &amp;quot;NAT&amp;quot;, &amp;quot;IP masquerading&amp;quot; (another word for NAT), or &amp;quot;port forwarding&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to tell it to forward packets addressed to port 21837 to port 21837 on your local address (see [[#Finding out what your local address is]]).&lt;br /&gt;
&lt;br /&gt;
If the router configuration doesn&#039;t work with single ports, but instead takes a range of addresses to forward, just use the range &amp;quot;21837-21837&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If it wants to know a specific &#039;&#039;protocol&#039;&#039; (a class of packets) of packets to forward, use &amp;quot;TCP&amp;quot; (but The Ur-Quan Masters might use &amp;quot;UDP&amp;quot; in the future).&lt;br /&gt;
&lt;br /&gt;
The Ur-Quan Masters will probably also use port 21836 in the future, so you might as well forward it too.&lt;br /&gt;
&lt;br /&gt;
===Telling your router&#039;s firewall not to block UQM packets===&lt;br /&gt;
In the router&#039;s configuration menu (see [[#Telling your router to forward UQM packets|above]]), look for a section named something like &amp;quot;firewall&amp;quot; or &amp;quot;packet filtering&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To allow incoming UQM packets, add a rule to pass packets from any address, from any port, to the public address, to port 21837. If it wants to know the protocol for the packets too, use &amp;quot;TCP&amp;quot; (but &amp;quot;UDP&amp;quot; may be used too in the future).&lt;br /&gt;
&lt;br /&gt;
Your router will likely allow any outgoing packets, so you probably won&#039;t have to add a rule for that, but if you do, it would look like this: pass packets from the public address, from port 21837, to any address, to any port.&lt;br /&gt;
&lt;br /&gt;
===Telling your computer&#039;s firewall not to block UQM packets===&lt;br /&gt;
This varies per firewall software.&lt;br /&gt;
&lt;br /&gt;
Using Windows XP&#039;s own firewall (be sure you have the latest Windows XP service pack installed), you will get a popup dialog when a program first tries to send packets, or begins to &#039;&#039;listen&#039;&#039; for incoming packets. Just start UQM, try to establish an incoming or outgoing connection as normal (see [[#Running the game|below]]), and when you get the popup, allow the incoming or outgoing connection attempt, and you&#039;ll be set.&lt;br /&gt;
&lt;br /&gt;
===Network Summary===&lt;br /&gt;
Ports used by The Ur-Quan Masters:&lt;br /&gt;
*TCP port 21837&lt;br /&gt;
*(reserved for the future) UDP port 21837 (not currently used)&lt;br /&gt;
*(reserved for the future) TCP port 21836 (not currently used; for the meta-server)&lt;br /&gt;
&lt;br /&gt;
==Alternative: Using Hamachi==&lt;br /&gt;
Hamachi is a program which can usually obviate the need to do all the network settings above.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that you can only play against other Hamachi users.&lt;br /&gt;
&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finding someone to play against==&lt;br /&gt;
The IRC channel [irc://irc.freenode.net/#uqm-arena #uqm-arena] on irc.freenode.net is a good place to find people to eat your flaming plasma death.&lt;br /&gt;
&lt;br /&gt;
==Running the game==&lt;br /&gt;
===Command-line switches===&lt;br /&gt;
[TODO]&lt;br /&gt;
See the [http://http://sc2.cvs.sourceforge.net/sc2/sc2/doc/users/netplay-howto.txt?view=markup netplay-howto.txt] file that came with the source for now.&lt;br /&gt;
&lt;br /&gt;
===Starting a netplay game===&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
==When it&#039;s not working==&lt;br /&gt;
===If you cannot establish a connection===&lt;br /&gt;
This is usually caused by a routing of firewalling problem. See above.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
===If you can establish a connection, but are immediately disconnected===&lt;br /&gt;
This will happen when the local and remote versions of The Ur-Quan Masters aren&#039;t compatible with eachother. Both players should upgrade to the latest version.&lt;br /&gt;
Some time in the future, there will be a nicer error message.&lt;br /&gt;
&lt;br /&gt;
===If the game aborts immediately after starting the battle===&lt;br /&gt;
This usually happens if one player has installed some melee-affecting add-on, while the other player has not.&lt;br /&gt;
&lt;br /&gt;
It can also happen if one player isn&#039;t using the latest content upgrade to go with the UQM version he is using.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Netplay is still in the testing phase, so don&#039;t be surprised of the incidental crash or disconnect because of loss of synchronisation.&lt;br /&gt;
See [[#If you&#039;ve found a bug]].&lt;br /&gt;
&lt;br /&gt;
==If you&#039;ve found a bug==&lt;br /&gt;
Bugs should go to the project&#039;s Bugzilla [http://bugs.uqm.stack.nl/ bug database]. Be verbose.&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4392</id>
		<title>Gameplay Challenges</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4392"/>
		<updated>2005-04-12T04:53:12Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Don&amp;#039;t visit the Starbase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once you first finished the [[Star Control II]] game, you may like to play the game in another way.&lt;br /&gt;
This page will describes various challenges that may make it interesting to replay the game.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==The Challenges==&lt;br /&gt;
&lt;br /&gt;
===Complete the optional quests===&lt;br /&gt;
Some quests are optional. You may already have solved these quests when you first finished the games, but if you haven&#039;t, it&#039;s worth another play. Things you may want to do:&lt;br /&gt;
*Start the [[Yehat]] civil war&lt;br /&gt;
*Take care of the [[Slylandro]] [[Probe]] plague&lt;br /&gt;
*Rescue the [[Zoq-Fot-Pik]]&lt;br /&gt;
*Get all items you don&#039;t necessarilly need ([[Portal Spawner]], both [[HyperWave Broadcaster]]s)&lt;br /&gt;
*Ally with everyone you can ([[Orz]], [[Pkunk]], [[Shofixti]], [[Syreen]], [[Supox]], [[Thraddash]], [[Utwig]], [[Yehat]] (rebels), Zoq-Fot-Pik)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Time trial===&lt;br /&gt;
Try to finish the game in as little time as possible. The best reported time so far is October 5 2155, without any optional quests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t mine===&lt;br /&gt;
Never mine anything, or sell fuel you bought from the [[Melnorme]]. Your money will have to come from fighting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Be the bad guy===&lt;br /&gt;
The game gets significantly more difficult without your friends (particularly the [[Melnorme]]). Piss off everyone you meet, or attack at sight. To stay into character, name your &amp;quot;alliance&amp;quot; &amp;quot;The Empire of ...&amp;quot;, and sell your crew to the Druuge.&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t visit the [[Starbase]]===&lt;br /&gt;
A very difficult challenge, and it requires a lot of patience. Until you have access to the StarBase, every day in [[HyperSpace]] a [[Slylandro]] [[Probe]] will show up (even after you&#039;ve acquired the self-destruct code). As you&#039;ve got no way of upgrading your engines you can&#039;t outrun them, so be prepared to fight a lot, at least until you can get them to self-destruct. You will end up with mountains of money, but you&#039;ve got nowhere to spend it.&lt;br /&gt;
Among other problems are: you can&#039;t replenish your crew, so you&#039;re dependant on your good fighting skills and gifts of other races; you have no Emergency [[Warp Escape Unit]], so you cannot run away from a fight in progress; and no slave trading.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Supermelee Challenges]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4391</id>
		<title>Gameplay Challenges</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4391"/>
		<updated>2005-04-12T04:51:31Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Don&amp;#039;t visit the Starbase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once you first finished the [[Star Control II]] game, you may like to play the game in another way.&lt;br /&gt;
This page will describes various challenges that may make it interesting to replay the game.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==The Challenges==&lt;br /&gt;
&lt;br /&gt;
===Complete the optional quests===&lt;br /&gt;
Some quests are optional. You may already have solved these quests when you first finished the games, but if you haven&#039;t, it&#039;s worth another play. Things you may want to do:&lt;br /&gt;
*Start the [[Yehat]] civil war&lt;br /&gt;
*Take care of the [[Slylandro]] [[Probe]] plague&lt;br /&gt;
*Rescue the [[Zoq-Fot-Pik]]&lt;br /&gt;
*Get all items you don&#039;t necessarilly need ([[Portal Spawner]], both [[HyperWave Broadcaster]]s)&lt;br /&gt;
*Ally with everyone you can ([[Orz]], [[Pkunk]], [[Shofixti]], [[Syreen]], [[Supox]], [[Thraddash]], [[Utwig]], [[Yehat]] (rebels), Zoq-Fot-Pik)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Time trial===&lt;br /&gt;
Try to finish the game in as little time as possible. The best reported time so far is October 5 2155, without any optional quests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t mine===&lt;br /&gt;
Never mine anything, or sell fuel you bought from the [[Melnorme]]. Your money will have to come from fighting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Be the bad guy===&lt;br /&gt;
The game gets significantly more difficult without your friends (particularly the [[Melnorme]]). Piss off everyone you meet, or attack at sight. To stay into character, name your &amp;quot;alliance&amp;quot; &amp;quot;The Empire of ...&amp;quot;, and sell your crew to the Druuge.&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t visit the [[Starbase]]===&lt;br /&gt;
A very difficult challenge, and it requires a lot of patience. Until you have access to the StarBase, every day in [[HyperSpace]] a [[Slylandro]] [[Probe]] will show up (even after you&#039;ve acquired the self-destruct code). As you&#039;ve got no way of upgrading your engines you can&#039;t outrun them, so be prepared to fight a lot, at least until you can get them to self-destruct. You will end up with mountains of money, but you&#039;ve got nowhere to spend it.&lt;br /&gt;
Among other problems are: you can&#039;t replenish your crew, so you&#039;re dependant on your good fighting skills and gifts of other races; you have no Emergency [[Warp Escape]] unit, so you cannot run away from a fight in progress; and no slave trading.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Supermelee Challenges]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
	<entry>
		<id>https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4390</id>
		<title>Gameplay Challenges</title>
		<link rel="alternate" type="text/html" href="https://wiki.uqm.stack.nl/index.php?title=Gameplay_Challenges&amp;diff=4390"/>
		<updated>2005-04-12T04:50:05Z</updated>

		<summary type="html">&lt;p&gt;Fossil: /* Don&amp;#039;t visit the Starbase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once you first finished the [[Star Control II]] game, you may like to play the game in another way.&lt;br /&gt;
This page will describes various challenges that may make it interesting to replay the game.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==The Challenges==&lt;br /&gt;
&lt;br /&gt;
===Complete the optional quests===&lt;br /&gt;
Some quests are optional. You may already have solved these quests when you first finished the games, but if you haven&#039;t, it&#039;s worth another play. Things you may want to do:&lt;br /&gt;
*Start the [[Yehat]] civil war&lt;br /&gt;
*Take care of the [[Slylandro]] [[Probe]] plague&lt;br /&gt;
*Rescue the [[Zoq-Fot-Pik]]&lt;br /&gt;
*Get all items you don&#039;t necessarilly need ([[Portal Spawner]], both [[HyperWave Broadcaster]]s)&lt;br /&gt;
*Ally with everyone you can ([[Orz]], [[Pkunk]], [[Shofixti]], [[Syreen]], [[Supox]], [[Thraddash]], [[Utwig]], [[Yehat]] (rebels), Zoq-Fot-Pik)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Time trial===&lt;br /&gt;
Try to finish the game in as little time as possible. The best reported time so far is October 5 2155, without any optional quests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t mine===&lt;br /&gt;
Never mine anything, or sell fuel you bought from the [[Melnorme]]. Your money will have to come from fighting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Be the bad guy===&lt;br /&gt;
The game gets significantly more difficult without your friends (particularly the [[Melnorme]]). Piss off everyone you meet, or attack at sight. To stay into character, name your &amp;quot;alliance&amp;quot; &amp;quot;The Empire of ...&amp;quot;, and sell your crew to the Druuge.&lt;br /&gt;
&lt;br /&gt;
===Don&#039;t visit the [[Starbase]]===&lt;br /&gt;
A very difficult challenge, and it requires a lot of patience. Until you have access to the StarBase, every day in [[HyperSpace]] a [[Slylandro]] [[Probe]] will show up (even after you&#039;ve acquired the self-destruct code). As you&#039;ve got no way of upgrading your engines you can&#039;t outrun them, so be prepared to fight a lot, at least until you can get them to self-destruct. You will end up with mountains of money, but you&#039;ve got nowhere to spend it.&lt;br /&gt;
Among other problems are: you can&#039;t replenish your crew, so you&#039;re dependant on your good fighting skills and gifts of other races; you have no Emergency [[Warp Escape]] unit; no slave trading.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Supermelee Challenges]]&lt;/div&gt;</summary>
		<author><name>Fossil</name></author>
	</entry>
</feed>