<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://staging-wiki.unvanquished.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Killing+time</id>
	<title>Unvanquished - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://staging-wiki.unvanquished.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Killing+time"/>
	<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/wiki/Special:Contributions/Killing_time"/>
	<updated>2026-04-04T19:45:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Coding_convention&amp;diff=8658</id>
		<title>Coding convention</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Coding_convention&amp;diff=8658"/>
		<updated>2024-07-16T02:26:40Z</updated>

		<summary type="html">&lt;p&gt;Killing time: remove &amp;quot;(legacy)&amp;quot; from quake style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the style guide for Unvanquished's and Daemon's source code.&lt;br /&gt;
&lt;br /&gt;
The first rule of style is to follow the style of the surrounding code. If there is a clear convention in the local region of code, continue to use it (with the possible exception of &amp;quot;Obsolete conventions&amp;quot; below). There are two broadly used style conventions, whose particularities are described in the &amp;quot;Quake style&amp;quot; and &amp;quot;New style&amp;quot; sections below.&lt;br /&gt;
&lt;br /&gt;
See also [[Reformatting the source]] and [[Coding with intrinsics]].&lt;br /&gt;
&lt;br /&gt;
== Spacing ==&lt;br /&gt;
&lt;br /&gt;
There is a space between a control structure keyword (e.g. &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;) and the following &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt;, if applicable.&lt;br /&gt;
&lt;br /&gt;
The curly braces surrounding class, struct, and function definitions go on their own lines.&lt;br /&gt;
&lt;br /&gt;
Consider adding breaking the line if the line is longer than 100 characters (assuming tab width 4?).&lt;br /&gt;
&lt;br /&gt;
Control blocks without braces are discouraged. If you need an if followed by only one line use something like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
if ( foo )&lt;br /&gt;
{&lt;br /&gt;
    bar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Naming conventions ==&lt;br /&gt;
&lt;br /&gt;
* Function names (including member functions) and class names are &amp;lt;code&amp;gt;CamelCase&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Variable and function argument names are &amp;lt;code&amp;gt;camelCase&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Struct data members are &amp;lt;code&amp;gt;camelCase&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Class data members are &amp;lt;code&amp;gt;camelCase_&amp;lt;/code&amp;gt; (with a trailing underscore).&lt;br /&gt;
&lt;br /&gt;
Functions that are used by other files have a &amp;quot;namespace&amp;quot; of some kind, either a C++ namespace, or a prefix like &amp;lt;code&amp;gt;G_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FS_&amp;lt;/code&amp;gt;. Follow the style of the surrounding code.&lt;br /&gt;
&lt;br /&gt;
Functions that are only used within the same file are marked &amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; and need not have a namespace.&lt;br /&gt;
&lt;br /&gt;
== Other trivialities ==&lt;br /&gt;
&lt;br /&gt;
* When defining a type alias, use &amp;lt;code class=&amp;quot;green&amp;quot;&amp;gt;using A = B;&amp;lt;/code&amp;gt;, not &amp;lt;code class=&amp;quot;red&amp;quot;&amp;gt;typedef B A;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Declare variables as close to the point of first use as possible.&lt;br /&gt;
&lt;br /&gt;
* Do not write &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt; in the parentheses of functions that take zero arguments.&lt;br /&gt;
&lt;br /&gt;
* Always use &amp;lt;code&amp;gt;override&amp;lt;/code&amp;gt; for member functions that override a virtual member function.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; is usually used for structures that have only public fields and no member functions. &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is usually used for structures that have at least one private member and at least one member function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Do not add member functions to structs that have a large number of fields and a poorly defined scope of responsibility.&lt;br /&gt;
&lt;br /&gt;
== Quake style ==&lt;br /&gt;
This style is found in files inherited from Tremulous (and often further from Quake 3).&lt;br /&gt;
&lt;br /&gt;
* There is always a space after &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; and before &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;, EXCEPT when the parentheses or brackets are empty.&lt;br /&gt;
* The curly braces &amp;lt;code&amp;gt;{ }&amp;lt;/code&amp;gt; of control structures always go on their own lines.&lt;br /&gt;
* File names are &amp;lt;code&amp;gt;snake_case.cpp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Obsolete conventions ===&lt;br /&gt;
These conventions are often found in Quake-style files, but are '''discouraged''' even for new code in those files.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Function banner comments, like this:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;red&amp;quot;&amp;gt;/*&lt;br /&gt;
================&lt;br /&gt;
GL_TextureMode&lt;br /&gt;
================&lt;br /&gt;
*/&amp;lt;/pre&amp;gt;&lt;br /&gt;
There is no need to write the name of a function in a comment preceding it. Documentation about what the function does or how it is implemented is of course welcome.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; All local variables declared at the beginning of the function. This exists because old C compilers required variables to be declared at the beginning.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Vertical alignment in lists of function declarations or variable declarations, e.g.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;red&amp;quot;&amp;gt;foo    varName;&lt;br /&gt;
foobar varName2;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New style ==&lt;br /&gt;
This style is commonly found in the BSD-licensed files in Daemon (which are often more-recently created ones). Although it is &amp;quot;new&amp;quot;, that does not necessarily mean it is better; many contributors prefer the Quake style.&lt;br /&gt;
&lt;br /&gt;
* No space after &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt;, nor before &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The opening &amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt; of a control structure goes on the same line as the &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;/etc.&lt;br /&gt;
* File names are &amp;lt;code&amp;gt;CamelCase.cpp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assertions, self-documentation and dependency reduction ==&lt;br /&gt;
&lt;br /&gt;
* When a function takes a pointer as parameter, if this pointer should never be NULL, use an assertion to test it. (Or use a reference instead?) It helps at debugging, but also to document the code.&lt;br /&gt;
* When a function takes a pointer to a struct for read-only access, please mark it as a const pointer.&lt;br /&gt;
* If a function only needs a subpart of a struct, pass only that subpart (by example, if you only use gentity_t-&amp;gt;playerState_t, only give it a playerState_t*)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
when refactoring, if you need to guarantee elements to be accessed together, move them in sub-class. This will help keep consistency with old code while allowing to progressively modernize codebase.&lt;br /&gt;
New classes should have theirs own headers and implementation files (explicitly listed in the CMakeLists.txt), except if small.&lt;br /&gt;
&lt;br /&gt;
=== Function and API evolutions ===&lt;br /&gt;
&lt;br /&gt;
Some changes are usually desired, but might have bad side effects like performance cost or different behaviors. Here is a small list of those:&lt;br /&gt;
&lt;br /&gt;
* prefer &amp;lt;code&amp;gt;Str::IsEqual&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Str::IsIEqual&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Q_stricmp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;strcmp&amp;lt;/code&amp;gt;. Those need to size of the strings though, which might impact performances in a non negligible (and bad) way.&lt;br /&gt;
* prefer to use glm instead of the old Quake vector API (vec3_t, VectorCopy, VectorMA&amp;lt;/code&amp;gt;, etc) when possible. But keep in mind that &amp;lt;code&amp;gt;glm::normalize( v )&amp;lt;/code&amp;gt; will not handle cases where v have components values of zero.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Continuous_integration&amp;diff=8653</id>
		<title>Continuous integration</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Continuous_integration&amp;diff=8653"/>
		<updated>2024-06-24T03:19:31Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Build matrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Infrastructure]]&lt;br /&gt;
Continuous integration (CI) refers to the automated builds that run each time someone opens or modifies a pull request against, or modifies the code of, the Unvanquished and Daemon source code repositories on GitHub.&lt;br /&gt;
&lt;br /&gt;
We use the following CI services:&lt;br /&gt;
* Appveyor, for building with MSVC on Windows. Its configuration is found in the file {{code|.appveyor.yml}} in the repository root.&lt;br /&gt;
* Azure Pipelines. Its configuration is found in the file {{code|azure-pipelines.yml}} in the repository root. It handles Mac native builds on [https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md macOS 11.x] and Linux native and NaCl builds on [https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2004-Readme.md Ubuntu 20.04] (Focal).&lt;br /&gt;
* GitHub CodeQL. Its configuration is found in the file {{code|.github/workflows/codeql.yml}} in the repository. Its purpose is to scan the source code for vulnerabilities, and for that purpose it starts by building the source tree using the latest LTS Ubuntu distribution provided by the platform ([https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2004-Readme.md Ubuntu 22.04]) and the default compiler of this platform.&lt;br /&gt;
&lt;br /&gt;
In some Daemon builds, we run the unit tests. These builds have been configured to use the Release configuration so that the unit tests are closer to production builds. &lt;br /&gt;
&lt;br /&gt;
== Build matrix ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; | {{engine}}&lt;br /&gt;
|-&lt;br /&gt;
! Service&lt;br /&gt;
! Host&lt;br /&gt;
! Target&lt;br /&gt;
! Compiler&lt;br /&gt;
! Generator&lt;br /&gt;
! Build Type&lt;br /&gt;
! WERROR&lt;br /&gt;
! PCH&lt;br /&gt;
! Unit tests&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows amd64 || VS 2019 || Visual Studio || Release || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows i686 || VS 2019 || Visual Studio || Release || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Windows amd64 || MinGW 9.3 || Ninja || Release || Yes || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 || GCC 9.4 || Ninja || Release || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 || Clang 11.0 || Ninja || Release || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || macOS-11 amd64 || macOS amd64 || AppleClang 13.0 || Make || Release || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| GitHub Actions CodeQL || ubuntu-latest || Linux amd64 || GCC (floating) || Ninja || Release || No || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | {{game}}&lt;br /&gt;
|-&lt;br /&gt;
! Service&lt;br /&gt;
! Host&lt;br /&gt;
! Target&lt;br /&gt;
! Compiler&lt;br /&gt;
! Generator&lt;br /&gt;
! Build Type&lt;br /&gt;
! WERROR&lt;br /&gt;
! PCH&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows i686 DLL || VS 2019 || Visual Studio || Debug || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 DLL || GCC 8.4 || Ninja || Debug || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 DLL || Clang 11.0 || Ninja || Debug || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || NaCl all NEXE || PNaCl Clang 3.6 || Ninja || Debug || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || macOS-12 amd64 || macOS amd64 DLL || AppleClang 14.0 || Make || Debug || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| GitHub Actions CodeQL || ubuntu-latest || Linux amd64 DLL+EXE || GCC (floating) || Ninja || Release || No || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
“WERROR” indicates whether the {{code|USE_WERROR}} option is on, which gives a failing building build status if there are warnings in our code. Note that {{code|USE_WERROR}} only applies to ”our” code in {{code|src/}}, so you may still see warnings from stuff in {{code|libs/}}.&lt;br /&gt;
&lt;br /&gt;
“PCH” indicates whether the precompiled header is enabled.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=UI/Lua_in_the_UI&amp;diff=8643</id>
		<title>UI/Lua in the UI</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=UI/Lua_in_the_UI&amp;diff=8643"/>
		<updated>2024-06-15T22:22:33Z</updated>

		<summary type="html">&lt;p&gt;Killing time: rocket vs rmlui updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:UI]]&lt;br /&gt;
Lua scripting can be used in the RmlUi-based UI, similar to how JavaScript can be used on a web page.&lt;br /&gt;
&lt;br /&gt;
Older versions of the RmlUi library were called libRocket, which explains the prevalence of the word &amp;quot;Rocket&amp;quot; in the code.&lt;br /&gt;
&lt;br /&gt;
= Documentation resources =&lt;br /&gt;
&lt;br /&gt;
The [https://mikke89.github.io/RmlUiDoc/pages/lua_manual.html RmlUi Lua Manual] is useful. Note that the version of RmlUi we are using is out of date.&lt;br /&gt;
&lt;br /&gt;
It's also possible to read the librocket.com documentation in the Internet Archive/Wayback Machine.&lt;br /&gt;
&lt;br /&gt;
Grepping for examples in the Samples folder (&amp;lt;code&amp;gt;libs/RmlUi/Samples&amp;lt;/code&amp;gt;) may be helpful.&lt;br /&gt;
&lt;br /&gt;
Note that these resources are all far from comprehensive. Many Lua facilities, it seems, can only be discovered by searching the RmlUi source.&lt;br /&gt;
&lt;br /&gt;
=Tips=&lt;br /&gt;
The cgame command &amp;lt;code&amp;gt;luarocket&amp;lt;/code&amp;gt; can be used to execute Lua snippets. Global variables set from any of the documents are accessible. You can print things with &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Pitfalls=&lt;br /&gt;
&lt;br /&gt;
==Bugs==&lt;br /&gt;
&lt;br /&gt;
Setting the &amp;lt;code&amp;gt;inner_rml&amp;lt;/code&amp;gt; attribute of an Element does not work if the string is longer than 1023 characters.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
All RML documents (or perhaps all documents in a context?) share a common set of global variables. This means that function names and global variable names need to be unique across the whole program. Also, importing a Lua script via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;script src=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in one document imports it in all documents.&lt;br /&gt;
&lt;br /&gt;
Although Lua usually uses 1-based indexing for arrays, libRocket's Lua APIs are mostly 0-based. For functions that return a list, this has the consequence that the length operator &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; returns the wrong result.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Continuous_integration&amp;diff=8607</id>
		<title>Continuous integration</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Continuous_integration&amp;diff=8607"/>
		<updated>2024-04-21T20:22:53Z</updated>

		<summary type="html">&lt;p&gt;Killing time: it's vs not nmake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Infrastructure]]&lt;br /&gt;
Continuous integration (CI) refers to the automated builds that run each time someone opens or modifies a pull request against, or modifies the code of, the Unvanquished and Daemon source code repositories on GitHub.&lt;br /&gt;
&lt;br /&gt;
We use the following CI services:&lt;br /&gt;
* Appveyor, for building with MSVC on Windows. Its configuration is found in the file {{code|.appveyor.yml}} in the repository root.&lt;br /&gt;
* Azure Pipelines. Its configuration is found in the file {{code|azure-pipelines.yml}} in the repository root. It handles Mac native builds on [https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md macOS 11.x] and Linux native and NaCl builds on [https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md Ubuntu 20.04] (Focal).&lt;br /&gt;
&lt;br /&gt;
In some Daemon builds, we run the unit tests. These builds have been configured to use the Release configuration so that the unit tests are closer to production builds. &lt;br /&gt;
&lt;br /&gt;
== Build matrix ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; | {{engine}}&lt;br /&gt;
|-&lt;br /&gt;
! Service&lt;br /&gt;
! Host&lt;br /&gt;
! Target&lt;br /&gt;
! Compiler&lt;br /&gt;
! Generator&lt;br /&gt;
! Build Type&lt;br /&gt;
! WERROR&lt;br /&gt;
! PCH&lt;br /&gt;
! Unit tests&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows amd64 || VS 2019 || Visual Studio || Release || Yes || off || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows i686 || VS 2019 || Visual Studio || Release || Yes || off || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Windows amd64 || Mingw 9.3 || Ninja || Release || Yes || off || No&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 || GCC 9.4 || Ninja || Release || Yes || off || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 || Clang 11.0 || Ninja || Release || Yes || off || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || macOS-11 amd64 || macOS amd64 || AppleClang 13.0 || Make || Release || Yes || No || Yes&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | {{game}}&lt;br /&gt;
|-&lt;br /&gt;
! Service&lt;br /&gt;
! Host&lt;br /&gt;
! Target&lt;br /&gt;
! Compiler&lt;br /&gt;
! Generator&lt;br /&gt;
! Build Type&lt;br /&gt;
! WERROR&lt;br /&gt;
! PCH&lt;br /&gt;
|-&lt;br /&gt;
| Appveyor || Windows amd64 || Windows i686 DLL || VS 2019 || Visual Studio || Debug || Yes || off&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 DLL || GCC 8.4 || Ninja || Debug || Yes || off&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || Linux amd64 DLL || Clang 11.0 || Ninja || Debug || Yes || off&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || Ubuntu-20.04 amd64 || NaCl all NEXE || PNaCl Clang 3.6 || Ninja || Debug || Yes || off&lt;br /&gt;
|-&lt;br /&gt;
| Azure Pipelines || macOS-11 amd64 || macOS amd64 DLL || AppleClang 13.0 || Make || Debug || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
“WERROR” indicates whether the {{code|USE_WERROR}} option is on, which gives a failing building build status if there are warnings in our code. Note that {{code|USE_WERROR}} only applies to ”our” code in {{code|src/}}, so you may still see warnings from stuff in {{code|libs/}}.&lt;br /&gt;
&lt;br /&gt;
“PCH” indicates whether the precompiled header is enabled.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Entities&amp;diff=8599</id>
		<title>Entities</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Entities&amp;diff=8599"/>
		<updated>2024-02-20T06:18:20Z</updated>

		<summary type="html">&lt;p&gt;Killing time: link entity directory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page lists types of ''BSP entities'', sometimes known as ''map entities''. A BSP entity is defined by a list of key-value pairs in the entity lump of a BSP file.&lt;br /&gt;
&lt;br /&gt;
Entity keys with a preceding underscore (&amp;quot;_&amp;quot;) character are keys read by the compiler. Keys with no preceding underscore are read by both the compiler and the game. See the [http://en.wikibooks.org/wiki/Q3Map2/Entity_keys q3map2] documentation for more information. The worldspawn and &amp;lt;code&amp;gt;light&amp;lt;/code&amp;gt; entities are also read by the renderer.&lt;br /&gt;
&lt;br /&gt;
To find examples of maps where a particular entity is used, you can search for it [https://users.unvanquished.net/~slipher/map-entity-directory.txt here]. This list is generated by [https://github.com/slipher/source-tools/mapents.py a script].&lt;br /&gt;
&lt;br /&gt;
==General Entities==&lt;br /&gt;
&lt;br /&gt;
===Game Entities===&lt;br /&gt;
&lt;br /&gt;
* {{Subpage|worldspawn}}&lt;br /&gt;
* {{Subpage|Buildables}}&lt;br /&gt;
&lt;br /&gt;
===Compiler Entities===&lt;br /&gt;
&lt;br /&gt;
* {{Subpage|Lights}} &amp;amp;mdash; Might also be used by the renderer for dynamic lighting. &amp;lt;!-- FIXME: Aside from what? --&amp;gt;&lt;br /&gt;
* {{Subpage|info_null}} &amp;amp;mdash; Can be used for lights, but should not be used for anything else.&lt;br /&gt;
* {{Subpage|func_group}} &amp;amp;mdash; Used for grouping world brushes in the map editor.&lt;br /&gt;
* {{Subpage|misc_model}}&lt;br /&gt;
* {{Subpage|_decal}}&lt;br /&gt;
* {{Subpage|_skybox}}&lt;br /&gt;
&lt;br /&gt;
==Control Entities==&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader}}&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|ctrl_limited}} || || ET_GENERAL || testing || testing || testing&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|ctrl_relay}} || || ET_GENERAL || testing || extending || extending&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|ctrl_script}} || || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | reserved for future use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Environment Entities==&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Scope}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_gfx}} || {{Subpage|env_animated_model}} || position ||&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_gfx}} || {{Subpage|env_lens_flare}} || position || ET_LIGHTFLARE  || testing || unclear || unclear&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_gfx}} || {{Subpage|env_particle_system}} || position || || testing || extending || extending&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_source_point}} || {{Subpage|env_portal_camera}} || position || &lt;br /&gt;
|-&lt;br /&gt;
| {{icon_gfx}} || {{Subpage|env_portal_surface}} || position || ET_PORTAL &lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|env_rumble}} || global || || testing || extending || extending&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_sound}} || {{Subpage|env_speaker}} || position || ET_SPEAKER || testing || extending || extending&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Functional Entities==&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader}}&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_bobbing}} || mover || || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|- &lt;br /&gt;
|  || {{Subpage|func_button}} || trigger-mover || ET_MOVER || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_destructable}} || (non) mover || || colspan=&amp;quot;3&amp;quot; | planning&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_door}} || trigger-mover || ET_MOVER || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_door_model}} || trigger-mover || || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_door_rotating}} || trigger-mover || ET_MOVER || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_dynamic}} || ? || || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_null}} || {{Subpage|func_group}} || NULL || NULL || colspan=&amp;quot;3&amp;quot; | mapeditor and mapcompiler domain&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_pendulum}} || mover ||  || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_plat}} || trigger-mover || || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_rotating}} || mover || ET_MOVER || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_spawn}} || (non) mover  || || colspan=&amp;quot;3&amp;quot; | planning&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_static}} || (non) mover  || || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|func_train}} || mover || ET_MOVER || colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Game Entities==&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Scope}}&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|game_end}} || global || testing || testing || testing&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|game_score}} || player || testing || testing || testin&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Information Entities==&lt;br /&gt;
&lt;br /&gt;
Info entities only provide positional information for things controlled by other processes. &amp;lt;!-- FIXME: processes is not the best word, I don't think. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Role}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_source_point}} || {{Subpage|info_alien_intermission}} || source point || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_source_point}} || {{Subpage|info_human_intermission}} || source point || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_null}} || {{Subpage|info_null}} || target point || NULL || colspan=&amp;quot;3&amp;quot; | mapcompiler domain&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|info_player_deathmatch}} || point || || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|info_player_intermission}} || point || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
|  || {{Subpage|info_player_start}} || point || || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Light Entities==&lt;br /&gt;
Also see [[Light entities]]&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Time}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_null}} || {{Subpage|light}} &lt;br /&gt;
|-&lt;br /&gt;
| {{icon_null}} || {{Subpage|lightJunior}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Pos Entities==&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_position}} || {{Subpage|path_corner}} || || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Sensor Entities==&lt;br /&gt;
Sensor fire an event (usually towards targets) when aware of another entity, event, or gamestate.&lt;br /&gt;
&lt;br /&gt;
Sensors often can be targeted to toggle, activate or deactivate their function of perceiving other entities.&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Awareness}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_sensor_state}} || {{Subpage|sensor_end}}&lt;br /&gt;
| gamestate&lt;br /&gt;
| &lt;br /&gt;
| Testing || Extending ||| Extending&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_sensor_state}} || {{Subpage|sensor_stage}}&lt;br /&gt;
| gamestate&lt;br /&gt;
| &lt;br /&gt;
| Stable || Testing || Testing&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_sensor_state}} || {{Subpage|sensor_start}}&lt;br /&gt;
| gamestate&lt;br /&gt;
| &lt;br /&gt;
| Testing || Testing || Testing&lt;br /&gt;
|- &lt;br /&gt;
| {{icon_sensor_state}} || {{Subpage|sensor_timer}}&lt;br /&gt;
| gamestate&lt;br /&gt;
| &lt;br /&gt;
| Testing || Testing || Testing&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_sensor_area}} || {{Subpage|sensor_touch}}&lt;br /&gt;
| entity&lt;br /&gt;
| &lt;br /&gt;
| Testing || Extending ||| Extending&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Target Entities==&lt;br /&gt;
&lt;br /&gt;
Targets perform no action by themselves. Instead, they are targeted by other entities.&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader|Scope}}&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_state}} || {{Subpage|target_hurt}} || activator || || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_state}} || {{Subpage|target_kill}} || activator || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_position}} || {{Subpage|target_location}} || position || ET_LOCATION || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_target_point}} || {{Subpage|target_position}} || position || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| ? || {{Subpage|target_print}} || configurable || ET_GENERAL || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|target_push}} || activator || || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|target_teleporter}} || activator || || colspan=&amp;quot;3&amp;quot; | subject to change&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Trigger Entities==&lt;br /&gt;
&lt;br /&gt;
Triggers cause a defined effect when aware of another entity, event, or gamestate.&lt;br /&gt;
&lt;br /&gt;
In that sense it's like an integration of a sensor and a target and might in some cases be modeled by a combination of them.&lt;br /&gt;
Triggers carry often the benefit of being predicted client-side (since no entity chains have to be resolved first) such as ({{Subpage|trigger_push}} and {{Subpage|trigger_teleport}}).&lt;br /&gt;
&lt;br /&gt;
{{EntityTableHeader}}&lt;br /&gt;
|- &lt;br /&gt;
| {{icon_reflect}} || {{Subpage|trigger_ammo}}&lt;br /&gt;
| || &lt;br /&gt;
|  colspan=&amp;quot;3&amp;quot; | Subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|trigger_gravity}}&lt;br /&gt;
| || &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_reflect}} || {{Subpage|trigger_heal}}&lt;br /&gt;
| || &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_reflect}} || {{Subpage|trigger_hurt}}&lt;br /&gt;
| &lt;br /&gt;
| ET_GENERAL&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Subject to change&lt;br /&gt;
|-class=&amp;quot;deprecated&amp;quot;&lt;br /&gt;
| {{icon_deprecated|icon_sensor_area}} || {{Subpage|trigger_multiple}}&lt;br /&gt;
| &lt;br /&gt;
| ET_GENERAL&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Subject to change&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|trigger_push}}&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;code&amp;gt;ET_PUSH_TRIGGER&amp;lt;/code&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|-&lt;br /&gt;
| {{icon_physics}} || {{Subpage|trigger_teleport}}&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;code&amp;gt;ET_TELEPORT_TRIGGER&amp;lt;/code&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | unclear&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8586</id>
		<title>Template:KnownGraphicalBugs</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8586"/>
		<updated>2023-12-08T14:52:26Z</updated>

		<summary type="html">&lt;p&gt;Killing time: update your graphics driver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|header=Known workarounds and fixes|content=&lt;br /&gt;
* {{ATI}}: If you run a very old Radeon HD 2000 or HD 3000 from 2007 or 2008 on Linux, you may have to set &amp;lt;code&amp;gt;R600_DEBUG=nohyperz&amp;lt;/code&amp;gt; environment variable, see ''nohyperz'' mention in [[#Notes|Notes]].}}&lt;br /&gt;
{{Note|header=Known bugs|content=&lt;br /&gt;
* {{Intel}}: People reported some [https://github.com/DaemonEngine/Daemon/issues/909 distorted textures] with Intel UHD on both Windows and Linux. We [https://gitlab.freedesktop.org/mesa/mesa/-/issues/10224 reported it] to driver developers.&lt;br /&gt;
&lt;br /&gt;
If you encounter a rendering bug, update your graphics driver. If the bug still occurs with the latest driver, please check [https://github.com/DaemonEngine/Daemon/issues?q=is%3Aopen+label%3AA-Renderer+label%3AT-Bug here] if it is already known and if yes, please tell us what graphic chip and operating system you use.&lt;br /&gt;
&lt;br /&gt;
The place to report new graphical bugs is [https://github.com/DaemonEngine/Daemon/issues/new here], see the [[Bug reporting]] page for advices.}}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=GPU_compatibility_matrix&amp;diff=8585</id>
		<title>GPU compatibility matrix</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=GPU_compatibility_matrix&amp;diff=8585"/>
		<updated>2023-12-08T14:38:39Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Useful resources */ gpuinfo.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{KnownGraphicalBugs}}&lt;br /&gt;
&lt;br /&gt;
This table gathers test results about various hardware and software configurations, &amp;lt;span style=&amp;quot;background-color: green !important; color: white !important; padding: .25em .5em;&amp;quot;&amp;gt;passed&amp;lt;/span&amp;gt; means nothing wrong is noticed and frame rate is at least &amp;lt;u&amp;gt;60 fps&amp;lt;/u&amp;gt; on common scene, &amp;lt;span style=&amp;quot;background-color: lightgreen !important; color: green !important; padding: .25em .5em;&amp;quot;&amp;gt;playable&amp;lt;/span&amp;gt; means at least &amp;lt;u&amp;gt;30 fps&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
All those tests were driven by Unvanquished developers or under Unvanquished developer supervision.&lt;br /&gt;
&lt;br /&gt;
See [[#Comprehensive_analysis|below]] for analysis, specific definitions and meanings.&lt;br /&gt;
{{GPU compatibility matrix}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comprehensive analysis ==&lt;br /&gt;
&lt;br /&gt;
Minimal configuration for the Unvanquished game is OpenGL 3.2. Unvanquished can run on OpenGL 2.1 hardware but this would not be playable because because we use models with more than 41 bones and OpenGL 2.1 cards can't accelerate them enough. It will run but it will be slow.&lt;br /&gt;
&lt;br /&gt;
Decent performance (given advanced graphical effects are disabled) starts with AMD/ATI TeraScale GPU, Intel HD Graphics (HD 4000), Nvidia Tesla-based GPUs. Though, it is strongly discouraged to buy GT218-based GPU like the Geforce 210 one as the proprietary driver for them is known to be buggy, requiring the engine to implement workarounds for it (save a game developer, do not buy this GPU!).&lt;br /&gt;
&lt;br /&gt;
To play at 4K resolutions, high-end AMD GCN/RDNA is recommended: AMD R9 390X from 2015 can handle &amp;lt;code&amp;gt;ultra&amp;lt;/code&amp;gt; preset with 4K resolution at 144Hz. AMD R7 Embedded in R series APU can handle 2K resolution with &amp;lt;code&amp;gt;medium&amp;lt;/code&amp;gt; preset (no realtime light and relief mapping disabled) as well as Intel UHD.&lt;br /&gt;
&lt;br /&gt;
Minimal configuration to run the Dæmon engine is OpenGL 2.1 with &amp;lt;code&amp;gt;ARB_half_float_vertex&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ARB_framebuffer_object&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;EXT_framebuffer_object&amp;lt;/code&amp;gt; is not enough). It includes ATI/AMD GPU starting with R300 (Radeon X300), Intel GPU starting with GMA965 (X3100) on Linux and macOS, HD Graphics on Windows, Nvidia starting with Curie (NV40, Geforce 6xxx). Wikipedia says the GMA965 Windows driver only supports OpenGL 1.5 and then would not reach the requirements for running Unvanquished on this platform. If you plan to make a game using Damon engine supporting those older cards, make sure your animated models don't have more than 41 bones.&lt;br /&gt;
&lt;br /&gt;
== How to contribute ==&lt;br /&gt;
&lt;br /&gt;
This matrix is generated from a cell sheet. Do not edit it by hand, Please ask &amp;lt;code&amp;gt;illwieckz&amp;lt;/code&amp;gt; for access to the cell sheet.&lt;br /&gt;
&lt;br /&gt;
Please sort your contributions by brand (ATI/AMD, Intel, Nvidia, Via…) then by launch date (from newer to older).&lt;br /&gt;
&lt;br /&gt;
The table also documents who may be able to reproduce a special configuration, please put your nick name and tell how much it is easy for you to reproduce a test on it (see below for keywords to use).&lt;br /&gt;
&lt;br /&gt;
Please tell at least, brand, model, model launch date (look at Wikipedia), host, memory size, the operating system, the driver (kernel mode and user mode), OpenGL and GLSL version, Unvanquished version you tested, the status, the preset and the resolution you validated and eventual notes.&lt;br /&gt;
&lt;br /&gt;
If you find out the code name and related micro architecture, please note it, same with form factor and bus.&lt;br /&gt;
&lt;br /&gt;
Other data are less relevant for diagnostic and are only useful to get a better picture of the tested hardware, don't hesitate to write down as much info as you can.&lt;br /&gt;
&lt;br /&gt;
Append the &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; character to version number if you're testing a preversion. For example use &amp;lt;code&amp;gt;0.52~&amp;lt;/code&amp;gt; to tell you tested against the to-be-released 0.52 version.&lt;br /&gt;
&lt;br /&gt;
Put a single &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; character in cell you don't have data for (do not leave empty cells). When you describe multiple configuration for the same piece of hardware, use the &amp;lt;code&amp;gt;↑&amp;lt;/code&amp;gt; character to tell the cell uses the same value as the previous line.&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
* '''hang''': the computer becomes unresponsive, requiring a hard reset;&lt;br /&gt;
* '''crash''': the game is terminated by the operating system on some unrecoverable failure;&lt;br /&gt;
* '''missing''': the game exits by itself because of some requirement not being met;&lt;br /&gt;
* '''broken''': the game loads maps but graphical bugs affecting gameplay are seen;&lt;br /&gt;
* '''glitchy''': the game loads maps but graphical bugs non-affecting gameplay are seen;&lt;br /&gt;
* '''slow''': the game is rendered properly but slowly with less than 30 fps;&lt;br /&gt;
* '''playable''': nothing wrong is noticed and frame rate is at least 30 fps but less than 60 fps;&lt;br /&gt;
* '''passed''': nothing wrong is noticed and frame rate is at least 60 fps.&lt;br /&gt;
&lt;br /&gt;
=== Availability ===&lt;br /&gt;
&lt;br /&gt;
* '''lost''': tester has lost access to the hardware;&lt;br /&gt;
* '''foreign''': tester has access to the hardware but does not own it;&lt;br /&gt;
* '''unplugged''': tester owns the hardware but testing requires to plug the hardware in a computer;&lt;br /&gt;
* '''unconfigured''': hardware is plugged in a computer but making use of it requires software changes;&lt;br /&gt;
* '''configured''': hardware and software are ready to use for testing.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
* '''extfbo''': this GPU provides {{code|ARB_framebuffer_object}} instead of {{code|ARB_framebuffer_object}};&lt;br /&gt;
* '''fakefps''': game displays high frame rate number but the experience is stuttering;&lt;br /&gt;
* '''hickups''': performance is globally correct, but sometime the framerate drops a bit for a very short time;&lt;br /&gt;
* '''lowsky''': lowering texture size using at least &amp;lt;code&amp;gt;r_picmip 1&amp;lt;/code&amp;gt; is required to avoid skybox graphical glitches;&lt;br /&gt;
* '''lowtex''': lowering texture size using at least &amp;lt;code&amp;gt;r_picmip 1&amp;lt;/code&amp;gt; is required to avoid a computer hang;&lt;br /&gt;
* '''mesamain''': running the driver from Mesa {{code|main}} at the time of the test was required to get the game running or avoid major rendering bugs;&lt;br /&gt;
* '''noaccel''': no OpenGL hardware acceleration is implemented;&lt;br /&gt;
* '''nogather''': &amp;lt;code&amp;gt;GL_ARB_texture_gather&amp;lt;/code&amp;gt; is wrongly advertised by the driver to be supported by this hardware, making the engine crash at startup (Nvidia proprietary driver bug). The engine ships some workaround for this driver bug, if you experience the crash on version 0.52 and later but can properly start the game with &amp;lt;code&amp;gt;-set r_arb_texture_gather 0&amp;lt;/code&amp;gt; engine command line option, please reopen issue [https://github.com/DaemonEngine/Daemon/issues/368 Daemon#368];&lt;br /&gt;
* '''nohalfloatvertex''': missing &amp;lt;code&amp;gt;ARB_half_float_vertex&amp;lt;/code&amp;gt; OpenGL extension;&lt;br /&gt;
* '''nohyperz''': &amp;lt;code&amp;gt;R600_DEBUG=nohyperz&amp;lt;/code&amp;gt; environment variable is required to be set to avoid graphical glitches, see issues [https://github.com/DaemonEngine/Daemon/issues/343 Daemon#343] and [https://gitlab.freedesktop.org/mesa/mesa/-/issues/3290 Mesa#3290];&lt;br /&gt;
* '''norgtc''': &amp;lt;code&amp;gt;GL_ARB_texture_compression_rgtc&amp;lt;/code&amp;gt; extension is not supported on this hardware, some texture may be loaded with swapped channels, especially normal maps. Engine implements special algorithms to workaround this, see issue [https://github.com/DaemonEngine/Daemon/issues/375 Daemon#375];&lt;br /&gt;
* '''nvidiagarbage''': this driver is so bad you have to be very lucky to get at least a desktop drawn on screen before the computer hangs. With or without the game, after some screen freezes and display server crashes the kernel will complain about the card having disconnected itself from the PCIe bus. This issue was verified on multiple cards of this generations that are known to run for months without crashing when using free open source drivers instead;&lt;br /&gt;
* '''slowmodel''': models with a lot of bones are known to induce severe frame drop on such hardware, see issue [https://github.com/Unvanquished/Unvanquished/issues/1207 Unvanquished#1207];&lt;br /&gt;
* '''tinyalu''': this hardware has a very small ALU (arithmetic logic unit), dynamic lighting must be disabled with &amp;lt;code&amp;gt;r_dynamicLight 0&amp;lt;/code&amp;gt; to prevent the driver to abort GLSL shader compilation that may lead to an engine crash, see issue [https://github.com/DaemonEngine/Daemon/issues/344 Daemon#344].&lt;br /&gt;
&lt;br /&gt;
=== Bus ===&lt;br /&gt;
&lt;br /&gt;
* '''PCI''': [https://en.wikipedia.org/wiki/Peripheral_Component_Interconnect Peripheral Component Interconnect], slow multi-purpose bus for add-on cards, obsolete;&lt;br /&gt;
* '''PCI-X''': [https://en.wikipedia.org/wiki/PCI-X Peripheral Component Interconnect eXtended], enhanced version of PCI for servers and workstations, obsolete;&lt;br /&gt;
* '''AGP''': [https://en.wikipedia.org/wiki/Accelerated_Graphics_Port Accelerated Graphics Port], high-speed bus designed for graphic cards, obsolete;&lt;br /&gt;
* '''FSB''': [https://en.wikipedia.org/wiki/Front-side_bus Front-side bus], high-speed Intel system bus for CPUs, sometime used with onboard GPUs (example: GeForce 7050 + nForce 610i/630i);&lt;br /&gt;
* '''HT''': [https://en.wikipedia.org/wiki/HyperTransport HyperTransport], high-speed AMD system bus for CPUs, sometime used with onboard GPUs (example: GeForce 6150 LE + nForce 430);&lt;br /&gt;
* '''chip''': Internal bus of a [https://en.wikipedia.org/wiki/System_on_a_chip system on a chip] (SoC), the exact communication bus technology is usually poorly documented;&lt;br /&gt;
* '''PCIe''': [https://en.wikipedia.org/wiki/PCI_Express PCI Express], high-speed multi-purpose bus for add-on cards and on-board devices, recommended;&lt;br /&gt;
* '''CXL''': [https://en.wikipedia.org/wiki/Compute_Express_Link, Compute Express Link], high-speed multi-purpose bus for add-on cards;&lt;br /&gt;
* '''TB''': [https://fr.wikipedia.org/wiki/Thunderbolt_(interface) ThunderBolt], high speed cable combining PCI Express and DisplayPort or USB-C to connect external PCI Express cards like GPUs.&lt;br /&gt;
&lt;br /&gt;
=== Form factor ===&lt;br /&gt;
&lt;br /&gt;
* '''discrete''': full height workstation extension card, with dedicated graphics memory;&lt;br /&gt;
* '''lowprofile''': low profile workstation extension card, with dedicated graphics memory;&lt;br /&gt;
* '''MXM''': [https://en.wikipedia.org/wiki/Mobile_PCI_Express_Module Mobile PCI Express module], laptop extension card, with dedicated graphics memory;&lt;br /&gt;
* '''onboard''': dedicated GPU on motherboard, low end ones may share memory with the CPU;&lt;br /&gt;
* '''integrated''': GPU integrated in CPU package or chipset, likely sharing memory with the CPU;&lt;br /&gt;
* '''SoC''': System on a chip, with the GPU likely sharing memory with the CPU;&lt;br /&gt;
&lt;br /&gt;
=== Micro architecture ===&lt;br /&gt;
&lt;br /&gt;
* '''USSA''': ATi Unified Superscalar Shader Architecture;&lt;br /&gt;
* '''GCN''': AMD Graphics Core Next;&lt;br /&gt;
* '''RDNA''': AMD Radeon DNA;&lt;br /&gt;
* '''GMA''': Intel Graphics Media Accelerator;&lt;br /&gt;
* '''GT''': Intel Graphics Technology.&lt;br /&gt;
&lt;br /&gt;
=== Memory glossary ===&lt;br /&gt;
&lt;br /&gt;
* '''HM''': HyperMemory, ATi technology using main memory when GPU memory is full;&lt;br /&gt;
* '''TC''': TurboCache, Nvidia technology using main memory when GPU memory is full;&lt;br /&gt;
* '''AR''': AcceleRAM, S3 technology using main memory when GPU memory is full.&lt;br /&gt;
&lt;br /&gt;
== Useful resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://mesamatrix.net/ Mesa Matrix]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units Wikipedia list of AMD graphics processing units]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_AMD_accelerated_processing_units Wikipedia list of AMD accelerated processing units]&lt;br /&gt;
* [https://www.x.org/wiki/RadeonFeature/ X.Org Radeon feature matrix and decoder ring]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units Wikipedia list of Intel graphics processing units]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units Wikipedia list of Nvidia graphics processing units]&lt;br /&gt;
* [https://nouveau.freedesktop.org/wiki/MesaDrivers/ Mesa Nouveau drivers]&lt;br /&gt;
* [https://nouveau.freedesktop.org/wiki/CodeNames/ Mesa Nouveau decoder ring]&lt;br /&gt;
* [https://opengl.gpuinfo.org/ User-submitted reports of OpenGL version and feature availability]&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8584</id>
		<title>Template:KnownGraphicalBugs</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8584"/>
		<updated>2023-12-08T14:30:42Z</updated>

		<summary type="html">&lt;p&gt;Killing time: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|header=Known workarounds and fixes|content=&lt;br /&gt;
* {{ATI}}: If you run a very old Radeon HD 2000 or HD 3000 from 2007 or 2008 on Linux, you may have to set &amp;lt;code&amp;gt;R600_DEBUG=nohyperz&amp;lt;/code&amp;gt; environment variable, see ''nohyperz'' mention in [[#Notes|Notes]].}}&lt;br /&gt;
{{Note|header=Known bugs|content=&lt;br /&gt;
* {{Intel}}: People reported some [https://github.com/DaemonEngine/Daemon/issues/909 distorted textures] with Intel UHD on both Windows and Linux. We [https://gitlab.freedesktop.org/mesa/mesa/-/issues/10224 reported it] to driver developers.&lt;br /&gt;
&lt;br /&gt;
If you encounter a rendering bug, please check [https://github.com/DaemonEngine/Daemon/issues?q=is%3Aopen+label%3AA-Renderer+label%3AT-Bug here]  if it is already known and if yes, please tell us what graphic chip and operating system you use.&lt;br /&gt;
&lt;br /&gt;
The place to report new graphical bugs is [https://github.com/DaemonEngine/Daemon/issues/new here], see the [[Bug reporting]] page for advices.}}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8583</id>
		<title>Template:KnownGraphicalBugs</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:KnownGraphicalBugs&amp;diff=8583"/>
		<updated>2023-12-08T14:29:34Z</updated>

		<summary type="html">&lt;p&gt;Killing time: remove confetti bug (never affected anyone besides me)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|header=Known workarounds and fixes|content=&lt;br /&gt;
* {{ATI}}: If you run a very old Radeon HD 2000 or HD 3000 from 2007 or 2008 on Linux, you may have to set &amp;lt;code&amp;gt;R600_DEBUG=nohyperz&amp;lt;/code&amp;gt; environment variable, see ''nohyperz'' mention in [[#Notes|Notes]].&lt;br /&gt;
{{Note|header=Known bugs|content=&lt;br /&gt;
* {{Intel}}: People reported some [https://github.com/DaemonEngine/Daemon/issues/909 distorted textures] with Intel UHD on both Windows and Linux. We [https://gitlab.freedesktop.org/mesa/mesa/-/issues/10224 reported it] to driver developers.&lt;br /&gt;
&lt;br /&gt;
If you encounter a rendering bug, please check [https://github.com/DaemonEngine/Daemon/issues?q=is%3Aopen+label%3AA-Renderer+label%3AT-Bug here]  if it is already known and if yes, please tell us what graphic chip and operating system you use.&lt;br /&gt;
&lt;br /&gt;
The place to report new graphical bugs is [https://github.com/DaemonEngine/Daemon/issues/new here], see the [[Bug reporting]] page for advices.}}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Known_regressions_since_Tremulous&amp;diff=8578</id>
		<title>Formats/Known regressions since Tremulous</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Known_regressions_since_Tremulous&amp;diff=8578"/>
		<updated>2023-12-08T10:49:08Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Regressions that don't make the game look broken */ lightingpsecular issue link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Formats]]&lt;br /&gt;
As a mapper or someone creating assets for the game, you may be aware of those pitfalls that can be considered as regressions when comparing with Tremulous or Quake Ⅲ.&lt;br /&gt;
&lt;br /&gt;
See also the [[Formats/Limitations that are not regressions|Limitations that are not regressions]] page for things that are not regressions.&lt;br /&gt;
&lt;br /&gt;
== Regressions that may make the game look broken ==&lt;br /&gt;
&lt;br /&gt;
=== Missing portal blending ===&lt;br /&gt;
&lt;br /&gt;
Portal blending is not implemented yet in the renderer.&lt;br /&gt;
&lt;br /&gt;
What happens is that the renderer that was used in Quake Ⅲ and Tremulous were OpenGL 1 renderers, and the Dæmon engine renderer is an OpenGL 3+ renderer. The difference between OpenGL 1 and OpenGL 3+ is similar to the difference between OpenGL 4.6 and Vulkan. Those renderers are different software. Everything from the OpenGL 1 renderer had to be re-implemented in OpenGL 3+ renderer with new code.&lt;br /&gt;
&lt;br /&gt;
So the lack of portable blending is not technically a regression as the code never existed in the renderer to begin with. It also means there is no bug in our code.&lt;br /&gt;
&lt;br /&gt;
Though, we fully agree this means a map ported from Tremulous that was using that feature will look broken and that then can be considered as a regression from a player or mapper point of view.&lt;br /&gt;
&lt;br /&gt;
From the code point of view, this is a feature request and we need someone to implement it. We are looking for renderer developers and OpenGL 3+ specialist to implement the feature in our engine.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Autosprite&amp;quot; shaders don't work ===&lt;br /&gt;
See [https://github.com/DaemonEngine/Daemon/issues/322 Daemon#322].&lt;br /&gt;
&lt;br /&gt;
== Regressions with fixes implemented but not released yet ==&lt;br /&gt;
&lt;br /&gt;
{{TODO|Remove this once Dæmon 0.54.1 is out.}}&lt;br /&gt;
&lt;br /&gt;
=== Missing RoQ video ===&lt;br /&gt;
&lt;br /&gt;
RoQ video support was removed long time ago as Unvanquished did not make use of it.&lt;br /&gt;
&lt;br /&gt;
Later the last remaining video format was removed, it was a format from an alternate reality that never happened : OGM with Vorbis and Theora. OGM with Vorbis and Theora is '''''not''''' OGG with Vorbis and Theora. The OGM format was a hack purposed for DivX piracy scene to mux XviD video with Vorbis audio, and while OGM with XviD was pretty popular, no one known tool can produce OGM with Vorbis and Theora. illwieckz tried a bunch of current and old software from the era and none was able to produce OGM with Theora and Vorbis. Neither oggenc from vorbis-tools, neither ogmtools, neither ffmpeg (recent and old), neither mencoder, neither OggMux, neither OGMMuxer, neither VirtualDubMod (modded VirtualDub for OGM support), neither ffdshow with OGM, Theora and Vorbis codecs. The only remaining thing untested is some obscure Visual Studio plugin that was mentioned in some places but for which no one file was found yet. We know something existed since Smokin' Guns game uses such OGM with Theora and Vorbis title video. That's all.&lt;br /&gt;
&lt;br /&gt;
Once that cursed OGM with Theora and Vorbis format was removed, the Theora codec was dead code and the Video support was dead code. This dead code was removed at some point because of being dead code.&lt;br /&gt;
&lt;br /&gt;
The removal of Video playing feature and the removal of RoQ support without alternative was controversial, and Dæmon 0.54.1 will bring back {{code|videoMap}} support with RoQ format.&lt;br /&gt;
&lt;br /&gt;
== Regressions that may make the game look broken, but with workaround ==&lt;br /&gt;
&lt;br /&gt;
=== Stereo sound effect not being positional ===&lt;br /&gt;
&lt;br /&gt;
Currently only mono sound files are played properly as positional audio, stereo sound files are played ''in your face''. We need to fix this.&lt;br /&gt;
&lt;br /&gt;
A simple workaround can be applied when repackaging the files: just convert the positional stereo sound as mono, this would make no difference to the player (stereo positional sound is meaningless anyway).&lt;br /&gt;
&lt;br /&gt;
== Regressions that don't make the game look broken ==&lt;br /&gt;
&lt;br /&gt;
=== Missing alphaGen lightingSpecular ===&lt;br /&gt;
&lt;br /&gt;
The {{code|alphaGen lightingSpecular}} was a subtle effect applied on some textures. This feature being missing doesn't break the rendering of the texture and if you look at the surface you may not notice something is wrong, unless you do comparative screenshots with Tremulous and Unvanquished. [https://github.com/DaemonEngine/Daemon/issues/213 Github issue]&lt;br /&gt;
&lt;br /&gt;
Implementing this feature has very low priority as there is no impact on gameplay and textures don't look bad without it. The game doesn't look broken without it and one cannot know the feature is missing just by playing the game, unless some warning tells it in log.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Known_regressions_since_Tremulous&amp;diff=8577</id>
		<title>Formats/Known regressions since Tremulous</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Known_regressions_since_Tremulous&amp;diff=8577"/>
		<updated>2023-12-07T18:18:52Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Regressions that may make the game look broken */ autosprite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Formats]]&lt;br /&gt;
As a mapper or someone creating assets for the game, you may be aware of those pitfalls that can be considered as regressions when comparing with Tremulous or Quake Ⅲ.&lt;br /&gt;
&lt;br /&gt;
See also the [[Formats/Limitations that are not regressions|Limitations that are not regressions]] page for things that are not regressions.&lt;br /&gt;
&lt;br /&gt;
== Regressions that may make the game look broken ==&lt;br /&gt;
&lt;br /&gt;
=== Missing portal blending ===&lt;br /&gt;
&lt;br /&gt;
Portal blending is not implemented yet in the renderer.&lt;br /&gt;
&lt;br /&gt;
What happens is that the renderer that was used in Quake Ⅲ and Tremulous were OpenGL 1 renderers, and the Dæmon engine renderer is an OpenGL 3+ renderer. The difference between OpenGL 1 and OpenGL 3+ is similar to the difference between OpenGL 4.6 and Vulkan. Those renderers are different software. Everything from the OpenGL 1 renderer had to be re-implemented in OpenGL 3+ renderer with new code.&lt;br /&gt;
&lt;br /&gt;
So the lack of portable blending is not technically a regression as the code never existed in the renderer to begin with. It also means there is no bug in our code.&lt;br /&gt;
&lt;br /&gt;
Though, we fully agree this means a map ported from Tremulous that was using that feature will look broken and that then can be considered as a regression from a player or mapper point of view.&lt;br /&gt;
&lt;br /&gt;
From the code point of view, this is a feature request and we need someone to implement it. We are looking for renderer developers and OpenGL 3+ specialist to implement the feature in our engine.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Autosprite&amp;quot; shaders don't work ===&lt;br /&gt;
See [https://github.com/DaemonEngine/Daemon/issues/322 Daemon#322].&lt;br /&gt;
&lt;br /&gt;
== Regressions with fixes implemented but not released yet ==&lt;br /&gt;
&lt;br /&gt;
{{TODO|Remove this once Dæmon 0.54.1 is out.}}&lt;br /&gt;
&lt;br /&gt;
=== Missing RoQ video ===&lt;br /&gt;
&lt;br /&gt;
RoQ video support was removed long time ago as Unvanquished did not make use of it.&lt;br /&gt;
&lt;br /&gt;
Later the last remaining video format was removed, it was a format from an alternate reality that never happened : OGM with Vorbis and Theora. OGM with Vorbis and Theora is '''''not''''' OGG with Vorbis and Theora. The OGM format was a hack purposed for DivX piracy scene to mux XviD video with Vorbis audio, and while OGM with XviD was pretty popular, no one known tool can produce OGM with Vorbis and Theora. illwieckz tried a bunch of current and old software from the era and none was able to produce OGM with Theora and Vorbis. Neither oggenc from vorbis-tools, neither ogmtools, neither ffmpeg (recent and old), neither mencoder, neither OggMux, neither OGMMuxer, neither VirtualDubMod (modded VirtualDub for OGM support), neither ffdshow with OGM, Theora and Vorbis codecs. The only remaining thing untested is some obscure Visual Studio plugin that was mentioned in some places but for which no one file was found yet. We know something existed since Smokin' Guns game uses such OGM with Theora and Vorbis title video. That's all.&lt;br /&gt;
&lt;br /&gt;
Once that cursed OGM with Theora and Vorbis format was removed, the Theora codec was dead code and the Video support was dead code. This dead code was removed at some point because of being dead code.&lt;br /&gt;
&lt;br /&gt;
The removal of Video playing feature and the removal of RoQ support without alternative was controversial, and Dæmon 0.54.1 will bring back {{code|videoMap}} support with RoQ format.&lt;br /&gt;
&lt;br /&gt;
== Regressions that may make the game look broken, but with workaround ==&lt;br /&gt;
&lt;br /&gt;
=== Stereo sound effect not being positional ===&lt;br /&gt;
&lt;br /&gt;
Currently only mono sound files are played properly as positional audio, stereo sound files are played ''in your face''. We need to fix this.&lt;br /&gt;
&lt;br /&gt;
A simple workaround can be applied when repackaging the files: just convert the positional stereo sound as mono, this would make no difference to the player (stereo positional sound is meaningless anyway).&lt;br /&gt;
&lt;br /&gt;
== Regressions that don't make the game look broken ==&lt;br /&gt;
&lt;br /&gt;
=== Missing alphaGen lightingSpecular ===&lt;br /&gt;
&lt;br /&gt;
The {{code|alphaGen lightingSpecular}} was a subtle effect applied on some textures. This feature being missing doesn't break the rendering of the texture and if you look at the surface you may not notice something is wrong, unless you do comparative screenshots with Tremulous and Unvanquished.&lt;br /&gt;
&lt;br /&gt;
Implementing this feature has very low priority as there is no impact on gameplay and textures don't look bad without it. The game don't look broken without it and one cannot know the feature is missing just by playing the game, unless some warning tells it in log.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=MinGW&amp;diff=8575</id>
		<title>MinGW</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=MinGW&amp;diff=8575"/>
		<updated>2023-12-06T14:28:39Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* C ABI compability with MSVC */ more detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MinGW is a GCC-based compiler toolchain targeting Windows platforms. It is used to produce the Windows releases of Unvanquished. It can be quite complicated to use successfully, in part due to the existence of different compiler &amp;quot;flavors&amp;quot;, and confusing naming schemes. This page serves as a guide to both MinGW in general, and specifically in application to building Daemon and Unvanquished. Throughout this page, &amp;quot;MinGW&amp;quot; will be used to refer to the [http://mingw-w64.org/ mingw-w64] project, which is a fork of the (now long-moribund) &amp;quot;original MinGW&amp;quot; project aiming to support both 32- and 64-bit builds. So beware: something having &amp;quot;64&amp;quot; in its name does not at all imply it is for 64-bit binaries! Same goes for &amp;quot;32&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Flavors ==&lt;br /&gt;
&lt;br /&gt;
=== Bitness: 32-bit or 64-bit ===&lt;br /&gt;
&lt;br /&gt;
Whether to compile for 32-bit (&amp;quot;i686&amp;quot; in package names) or 64-bit (&amp;quot;x86-64&amp;quot; or &amp;quot;x86_64&amp;quot;) architecture. 64-bit Windows versions are capable of running 32-bit executables in a mode called WOW (Windows-on-Windows).&lt;br /&gt;
&lt;br /&gt;
=== Threading flavor ===&lt;br /&gt;
You can get &amp;lt;code&amp;gt;win32&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;posix&amp;lt;/code&amp;gt; thread models. Daemon must be built with the &amp;lt;code&amp;gt;posix&amp;lt;/code&amp;gt; flavor, because code that uses &amp;lt;code&amp;gt;std::thread&amp;lt;/code&amp;gt; does not compile with &amp;lt;code&amp;gt;win32&amp;lt;/code&amp;gt;. In general there is no reason to use &amp;lt;code&amp;gt;win32&amp;lt;/code&amp;gt;. However, it is unfortunately the default in the APT package manager.&lt;br /&gt;
&lt;br /&gt;
=== Exception handling flavor ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sjlj&amp;lt;/code&amp;gt; (setjmp/longjmp) is available for both 32- and 64-bit builds. It has the drawback of significant runtime cost.&lt;br /&gt;
* &amp;lt;code&amp;gt;dwarf&amp;lt;/code&amp;gt; is available only for 32-bit. It has good performance, but it is said to have a drawback that exceptions can't be propagated through code compiled with a different compiler (or C code?). However, propagating exceptions through C code shouldn't be needed for Daemon.&lt;br /&gt;
* &amp;lt;code&amp;gt;seh&amp;lt;/code&amp;gt; (Structured Exception Handling) is available only for 64-bit. It has good performance and always works correctly, so it should always be used for 64-bit.&lt;br /&gt;
&lt;br /&gt;
One way to identify which exception model code was built with is to check the libgcc dependency. You'll find for example &amp;lt;code&amp;gt;libgcc_s_seh-1.dll&amp;lt;/code&amp;gt; for SEH, &amp;lt;code&amp;gt;libgcc_s_dw2-1.dll&amp;lt;/code&amp;gt; for DWARF, or &amp;lt;code&amp;gt;libgcc_s_sjlj-1.dll&amp;lt;/code&amp;gt; for sjlj. An easy way to make a C++ test program emit a libgcc dependency is to add a try/catch block.&lt;br /&gt;
&lt;br /&gt;
=== Mixing flavors ===&lt;br /&gt;
&lt;br /&gt;
Mixing different thread or exception flavors can cause problems, such as missing DLL dependencies, or exception handling not working.&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;external_deps&amp;lt;/code&amp;gt; libraries, efforts have been made to avoid depending on any thread-flavor-specific or exception-flavor-specific libraries, so it should be possible to use them with any flavor of MinGW. Exception handling glitches shouldn't be an issue since the Windows depencies are C-only.&lt;br /&gt;
&lt;br /&gt;
== Distributions ==&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling from Linux ===&lt;br /&gt;
&lt;br /&gt;
Most Linux package managers offer some form of MinGW package. Availability of different flavor combinations varies.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
APT (Debian Buster or older):&lt;br /&gt;
&amp;lt;pre&amp;gt;# 32-bit, sjlj. win32 threads are selected by default; switch it to posix&lt;br /&gt;
sudo apt install g++-mingw-w64-i686  &lt;br /&gt;
sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix&lt;br /&gt;
sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix&lt;br /&gt;
&lt;br /&gt;
# 64-bit, SEH. win32 threads are selected by default; switch it to posix&lt;br /&gt;
sudo apt install g++-mingw-w64-x86-64  &lt;br /&gt;
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix&lt;br /&gt;
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
APT (Debian Bullseye or newer):&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo apt install gcc-mingw-w64-i686-posix&amp;lt;/code&amp;gt; (32-bit, posix, sjlj)&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo apt install gcc-mingw-w64-x86-64-posix&amp;lt;/code&amp;gt; (64-bit, posix, SEH)&lt;br /&gt;
&lt;br /&gt;
==== Usage ====&lt;br /&gt;
&lt;br /&gt;
To build a CMake project, you need a &amp;quot;toolchain file&amp;quot;. Sadly, there is no official toolchain file from MinGW or CMake. For Daemon and Unvanquished we use [https://github.com/DaemonEngine/Daemon/blob/master/cmake/cross-toolchain-mingw32.cmake this (32-bit)] and [https://github.com/DaemonEngine/Daemon/blob/master/cmake/cross-toolchain-mingw64.cmake this (64-bit)]. Use it by passing &amp;lt;code&amp;gt;-DCMAKE_TOOLCHAIN_FILE=&amp;lt;path&amp;gt;&amp;lt;/code&amp;gt; on the &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt; command line.&lt;br /&gt;
&lt;br /&gt;
=== MSYS2 ===&lt;br /&gt;
&lt;br /&gt;
MSYS2 runs on Windows hosts and provides up-to-date 32-bit/DWARF/posix and 64-bit/SEH/posix toolchains. Building is done from a Bash shell in a partial emulation of a Linux environment, similar to Cygwin.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Download from [https://www.msys2.org]. &lt;br /&gt;
&lt;br /&gt;
Install dependencies to build Daemon (can be done from any MSYS2 shell flavor):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 32-bit&lt;br /&gt;
pacman -Sy mingw-w64-i686-gcc mingw64-i686-cmake make&lt;br /&gt;
# 64-bit&lt;br /&gt;
pacman -Sy mingw-w64-x86_64-gcc mingw64-x86_64-cmake make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Usage ====&lt;br /&gt;
You must open a different MSYS2 shell flavor according to which architecture you want to target: &amp;quot;MSYS2 MinGW 32-bit&amp;quot; or &amp;quot;MSYS2 MinGW 64-bit&amp;quot;. When invoking &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt;, you must pass the flag &amp;lt;code&amp;gt;-G&amp;quot;MSYS Makefiles&amp;quot;&amp;lt;/code&amp;gt;. When building Unvanquished, the flag &amp;lt;code&amp;gt;-DDAEMON_CBSE_PYTHON_PATH=&amp;lt;path&amp;gt;&amp;lt;/code&amp;gt; may be of interest, if you want to use a Python other than the one shipped with MSYS2. &amp;lt;code&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/code&amp;gt; should be in the Unix-emulation format, e.g. &amp;lt;code&amp;gt;/c/Python/python.exe&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;MinGW-W64-builds&amp;quot; (Standalone Windows version) ===&lt;br /&gt;
This distribution (see [https://sourceforge.net/projects/mingw-w64/ Sourceforge]) provides a toolchain that can be used from the Windows command prompt, without needing a Unix emulation layer. The installer allows you to choose from every valid combination of flavors. Caveat: the builds are currently somewhat outdated. At the time of writing (Febrary 2021), the newest available gcc version is 8.1.0.&lt;br /&gt;
 &lt;br /&gt;
==== Usage ====&lt;br /&gt;
&lt;br /&gt;
Choose the &amp;lt;code&amp;gt;MinGW Makefiles&amp;lt;/code&amp;gt; generator in CMake. The location of the toolchain used is determined by finding the first one in your PATH environment variable. Relative to the installation root, the PATH entry should be at &amp;lt;code&amp;gt;mingw32\bin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;mingw64\bin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After running CMake, compile by running &amp;lt;code&amp;gt;mingw32-make&amp;lt;/code&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
==== Work around linker error with &amp;lt;code&amp;gt;difftime&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
To build Unvanquished 0.52 or higher, a small hack is needed to avoid a linker error, because Lua depends on an MSVCRT function which was not added to MinGW's import lib yet as of 8.1.0. Since you are on Windows, you can link to mscvrt.dll directly. In the CMake GUI, check &amp;quot;Advanced&amp;quot; and find the variable &amp;lt;code&amp;gt;CMAKE_CXX_STANDARD_LIBRARIES&amp;lt;/code&amp;gt;. Add &amp;lt;code&amp;gt;&amp;amp;nbsp;C:/windows/system32/msvcrt.dll&amp;lt;/code&amp;gt; at the end of the list (or &amp;lt;code&amp;gt;&amp;amp;nbsp;C:/windows/syswow64/msvcrt.dll&amp;lt;/code&amp;gt; if you are building a 32-bit binary on a 64-bit system).&lt;br /&gt;
&lt;br /&gt;
== Built-in DLL dependencies ==&lt;br /&gt;
&lt;br /&gt;
There are a few DLLs shipped as part of MinGW that most programs will depend on. These are also available as static libraries (a fully static binary can be produced with the &amp;lt;code&amp;gt;-static&amp;lt;/code&amp;gt; flag), but dynamic is the default. These are:&lt;br /&gt;
* &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;libstdc++&amp;lt;/code&amp;gt; (for C++ programs)&lt;br /&gt;
* &amp;lt;code&amp;gt;libssp&amp;lt;/code&amp;gt; (if stack protection is enabled)&lt;br /&gt;
* &amp;lt;code&amp;gt;libwinpthread&amp;lt;/code&amp;gt; (if threads are used)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;libstdc++&amp;lt;/code&amp;gt; is both thread- and exception-flavor-dependent, but unlike &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt;, the DLL does not have the flavor written in the filename. This means that you can't easily tell if you have the right one (nor can the Windows executable loader). [https://github.com/lucasg/Dependencies Dependencies] is a good tool to investigate such issues.&lt;br /&gt;
&lt;br /&gt;
When distributing a binary release of Daemon, you must ship these DLLs alongside the executable, else you will run into [https://github.com/Unvanquished/Unvanquished/issues/716 this issue]. Note that unlike Daemon's other DLL dependencies (from the &amp;lt;code&amp;gt;external_deps&amp;lt;/code&amp;gt; package), the MinGW DLLs are not automatically copied to the build directory as part of the build process. See &amp;lt;code&amp;gt;extra_dll_list&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;findDll&amp;lt;/code&amp;gt; in the [https://github.com/Unvanquished/release-scripts/blob/master/build-release Unvanquished release script].&lt;br /&gt;
&lt;br /&gt;
== C ABI compability with MSVC ==&lt;br /&gt;
&lt;br /&gt;
On 32-bit x86, GCC has a different default stack alignment (16 bytes) than MSVC (4 bytes). This can cause problems when MSVC-compiled code calls into GCC-compiled code and the alignment is less than expected. One solution, which we use to build MSVC-compatible &amp;lt;code&amp;gt;external_deps&amp;lt;/code&amp;gt; DLLs, is to use a GCC flag (&amp;lt;code&amp;gt;-mpreferred-stack-boundary=&amp;lt;/code&amp;gt;) to change the presumed stack alignment. Another, which we use to handle jumps from 3rd-party binaries to our (MinGW-built) code, is to put the annotation &amp;lt;code&amp;gt;__attribute__((force_align_arg_pointer))&amp;lt;/code&amp;gt; on the functions which may be called with less alignment than expected, instructing the compiler to perform alignment when the function is called.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-mms-bitfields&amp;lt;/code&amp;gt; should be enabled to ensure that the layout of structs containing bitfields matches. This is on by default.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8565</id>
		<title>Template:User game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8565"/>
		<updated>2023-11-25T08:26:17Z</updated>

		<summary type="html">&lt;p&gt;Killing time: only Flatpak affects the default homepath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{loc|}}} |false| | &amp;lt;p&amp;gt;If you installed the game using Flatpak, see [[Game locations]] for specific paths.&amp;lt;/p&amp;gt; }}&lt;br /&gt;
The default user directory is:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default user directory ([[homepath]])&lt;br /&gt;
|- &lt;br /&gt;
! Linux &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;#xdg&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;%USERPROFILE%\Documents\My Games\Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/Library/Application Support/Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''#xdg''': {{XdgDataHome_clarification}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8564</id>
		<title>Template:User game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8564"/>
		<updated>2023-11-25T08:02:24Z</updated>

		<summary type="html">&lt;p&gt;Killing time: homepath link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{loc|}}} |false| | {{Other_game_locations}} }}&lt;br /&gt;
The default user directory is:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default user directory ([[homepath]])&lt;br /&gt;
|- &lt;br /&gt;
! Linux &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;#xdg&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;%USERPROFILE%\Documents\My Games\Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/Library/Application Support/Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''#xdg''': {{XdgDataHome_clarification}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Homepath&amp;diff=8563</id>
		<title>Homepath</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Homepath&amp;diff=8563"/>
		<updated>2023-11-25T08:01:30Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Created page with &amp;quot;The ''homepath'' is the user data directory for Unvanquished and the Daemon engine.  == Default locations ==  {{User game locations}}   == Configuration ==  The homepath can b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''homepath'' is the user data directory for Unvanquished and the Daemon engine.&lt;br /&gt;
&lt;br /&gt;
== Default locations ==&lt;br /&gt;
&lt;br /&gt;
{{User game locations}} &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The homepath can be set on the command line using the &amp;lt;code&amp;gt;-homepath&amp;lt;/code&amp;gt; option. You must use this if you want to run more than one instance of Daemon concurrently (for example both a dedicated server and a client), because there is a single-instance restriction: only one instance of the Daemon engine can use a given homepath at a time.&lt;br /&gt;
&lt;br /&gt;
== Homepath contents ==&lt;br /&gt;
&lt;br /&gt;
In the root of the homepath may be found log files, the client's RSA key, the console command history, and temporary .nexe files for the currently running gamelogic modules. It may contain the following subdirectories:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Directory&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;base/&amp;lt;/code&amp;gt;&lt;br /&gt;
| For Linux [[launcher]] users, default install path for engine&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;condump/&amp;lt;/code&amp;gt; &lt;br /&gt;
| Records of console output, saved with the &amp;lt;code&amp;gt;condump&amp;lt;/code&amp;gt; command&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Executable (via &amp;lt;code&amp;gt;/exec&amp;lt;/code&amp;gt;) scripts of console commands, in particular &amp;lt;code&amp;gt;autogen.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;crashdump/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Crash dumps (see [[Breakpad]])&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;demos/&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Tutorials/Demo recording|Recordings of gameplay sessions]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;game/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Readable and writable area for gamelogic&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;glsl/&amp;lt;/code&amp;gt;&lt;br /&gt;
| GLSL shader cache&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pkg/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downloaded [[Formats/DPK|DPK]] packages (maps, mods)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;screenshots/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Screenshots&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;videos/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Videos made from [[Tutorials/Demo recording|demos]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Demo_recording&amp;diff=8562</id>
		<title>Tutorials/Demo recording</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Demo_recording&amp;diff=8562"/>
		<updated>2023-11-25T07:40:14Z</updated>

		<summary type="html">&lt;p&gt;Killing time: update commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
Demos are recorded segments of gameplay that may be replayed at a later time. The engine also supports rendering demos directly to a video file.&lt;br /&gt;
&lt;br /&gt;
Demo commands:&lt;br /&gt;
* Begin recording with &amp;lt;code&amp;gt;/demo_record&amp;lt;/code&amp;gt; (optionally followed by a name for the demo).&lt;br /&gt;
* Stop recording with &amp;lt;code&amp;gt;/demo_record_stop&amp;lt;/code&amp;gt;, or by disconnecting.&lt;br /&gt;
* Get a list of demo filenames with &amp;lt;code&amp;gt;/dir demos&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Play back a demo with &amp;lt;code&amp;gt;/demo &amp;lt;var&amp;gt;demo_name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Convert the currently playing demo to video form with &amp;lt;code&amp;gt;/demo_video&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Stop recording to video with &amp;lt;code&amp;gt;/demo_video_stop&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Configure ''all'' games to be recorded as demos with &amp;lt;code&amp;gt;/cl_autorecord 1&amp;lt;/code&amp;gt; {{Verify}}.&lt;br /&gt;
&lt;br /&gt;
{{TODO|Write about altering time scale and things like that.}}&lt;br /&gt;
&lt;br /&gt;
==Video editing==&lt;br /&gt;
&lt;br /&gt;
Once you've recorded a demo to video, you'll probably want to do some amount of editing to make it interesting.&lt;br /&gt;
&lt;br /&gt;
There is a comprehensive table comparing different video editing software on [http://en.wikipedia.org/wiki/Comparison_of_video_editing_software Wikipedia].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Game_locations&amp;diff=8561</id>
		<title>Game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Game_locations&amp;diff=8561"/>
		<updated>2023-11-25T07:14:49Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* When using the Universal zip */ nuke basepath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== When using the Unvanquished launcher ==&lt;br /&gt;
&lt;br /&gt;
{{Game_locations|loc=false}}&lt;br /&gt;
== When installed using Flatpak ==&lt;br /&gt;
When installed using Flatpak, the default user path is:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default user directory (homepath)&lt;br /&gt;
|- &lt;br /&gt;
! Linux (Flatpak)&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.var/app/net.unvanquished.Unvanquished/data/unvanquished/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The system directorys follows a different layout and can be split and stored in various places (as system install or user install). When installed system-wide, here is the parent directory for the {{code|pkg}} directory, to be used as ''engine path'' (even if it's not the engine path) in tools like [[Tools/NetRadiant|NetRadiant]]:&lt;br /&gt;
&lt;br /&gt;
{{code|/var/lib/flatpak/app/net.unvanquished.Unvanquished/current/active/files}}&lt;br /&gt;
&lt;br /&gt;
== When using the Universal zip ==&lt;br /&gt;
&lt;br /&gt;
When using [[Universal zip]], the default system paths are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default binary directory (libpath)&lt;br /&gt;
|-&lt;br /&gt;
! Linux/Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;Extracted directory&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;Extracted directory&amp;gt;/Unvanquished.app/Contents/MacOS&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default user paths are the same as the launcher ones.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Getting_started_with_NetRadiant&amp;diff=8560</id>
		<title>Tutorials/Getting started with NetRadiant</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Getting_started_with_NetRadiant&amp;diff=8560"/>
		<updated>2023-11-25T07:08:45Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Start up NetRadiant for the first time */ eradicate &amp;quot;basepath&amp;quot; terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
{{Recommended level editor}}&lt;br /&gt;
&lt;br /&gt;
==Getting and installing NetRadiant==&lt;br /&gt;
&lt;br /&gt;
* Download a prebuilt archive from the [https://netradiant.gitlab.io/page/download/ NetRadiant download page].&lt;br /&gt;
&lt;br /&gt;
* Just unzip the archive and run the {{code|netradiant}} binary.&lt;br /&gt;
&lt;br /&gt;
Arch Linux users can also use the [https://aur.archlinux.org/packages/netradiant-git netradiant-git] PKGBUILD to get the editor.&lt;br /&gt;
&lt;br /&gt;
{{NetRadiant-custom}}&lt;br /&gt;
&lt;br /&gt;
==Gamepack==&lt;br /&gt;
&lt;br /&gt;
NetRadiant is designed to work with many Quake-based games, not just Unvanquished. The Unvanquished gamepack is provided with NetRadiant so you have nothing more to do. Just make sure the current game selected for mapping in NetRadiant is Unvanquished.&lt;br /&gt;
&lt;br /&gt;
==Start up NetRadiant for the first time==&lt;br /&gt;
&lt;br /&gt;
When you first start up NetRadiant you will be asked what game you want to edit levels for. &lt;br /&gt;
&lt;br /&gt;
* If Unvanquished is not listed, then you don't have the right NetRadiant package.&lt;br /&gt;
* If you don't want to see this dialog on startup you can untick the second checkbox.&lt;br /&gt;
&lt;br /&gt;
[[File:NetRadiant global preferences.png]]&lt;br /&gt;
&lt;br /&gt;
You may also be asked for the game's ''engine path'' if NetRadiant can't find it. This is the &amp;quot;default binary directory&amp;quot; in the table below. This is the location where the game stores its {{code|pkg}} folder holding the many {{code|.dpk}} resources.&lt;br /&gt;
&lt;br /&gt;
[[File:NetRadiant engine path not found.png]]&lt;br /&gt;
&lt;br /&gt;
{{Note|content={{System game locations}}}}&lt;br /&gt;
&lt;br /&gt;
Finally you should be greeted by NetRadiant's default interface:&lt;br /&gt;
&lt;br /&gt;
[[File:NetRadiant main window default layout.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure you have a ''common'' shader category. If you do not, contact the devs via [[chat]] or the {{forums}}.&lt;br /&gt;
&lt;br /&gt;
==Setting some recommended options==&lt;br /&gt;
&lt;br /&gt;
* Main window, menu ''Edit &amp;gt; Preferences'', tab ''Settings'', '''disable''' ''Add entity and brush number comments on map write''.&lt;br /&gt;
* Main window, menu ''Edit &amp;gt; Preferences'', tab ''Settings/Brush'', '''enable''' ''Always use caulk for new brushes''.&lt;br /&gt;
* Main window, menu ''Edit &amp;gt; Preferences'', tab ''Interface/Layout'', '''select''' the layout with three 2D view and texture browser, the one on the absolute right in NetRadiant preferences.&lt;br /&gt;
* Texture browser, menu ''View'', '''enable''' ''Shaders Only''.&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
This is not a complete guide. Another tutorial will be required to tell how to make a complete map with required entities and all, but if you already mapped for other games before, this will give you the prerequisites you may miss.&lt;br /&gt;
&lt;br /&gt;
===Editing an existing map===&lt;br /&gt;
&lt;br /&gt;
Let's imagine you want to edit the {{code|chasm}} map :&lt;br /&gt;
&lt;br /&gt;
* Locate the {{code|pkg/map-chasm_1.2.dpk}} file in your installation directory (see above) and extract it as {{code|pkg/map-chasm_src.dpkdir}} in your user directory (see above). The {{code|.dpk}} file is a zip file with a different extension, so if your system does not recognize it, just make a copy with a {{code|.zip}} extension and extract it.&lt;br /&gt;
* In the end you'll get something that looks like {{code|pkg/map-chasm_src.dpkdir/maps/chasm.map}} (and other files in the dpkdir). Just open that file in NetRadiant and do some edits, then build the map using the build menu. Congratulation, you can now load your edited map in game!&lt;br /&gt;
&lt;br /&gt;
===Making a new map from scratch===&lt;br /&gt;
&lt;br /&gt;
Let's imagine you want to make a map named {{code|castle}}:&lt;br /&gt;
&lt;br /&gt;
* Create a folder in your user directory (see above) in a way it is named {{code|pkg/map-castle_src.dpkdir}}.&lt;br /&gt;
* Create a subfolder named {{code|maps}} this way: {{code|pkg/map-castle_src.dpkdir/maps}}.&lt;br /&gt;
* Add a file named {{code|DEPS}} this way: {{code|pkg/map-castle_src.dpkdir/DEPS}}. For a start, just write {{code|tex-all}} in this file.&lt;br /&gt;
* Open NetRadiant, save the default empty file as {{code|pkg/map-castle_src.dpkdir/maps/castle.map}}.&lt;br /&gt;
* Click the refresh button on the toolbar, all the texture sets must appear in the texture browser! Now you can start mapping.&lt;br /&gt;
&lt;br /&gt;
===Becoming a mapper===&lt;br /&gt;
&lt;br /&gt;
See [[Tutorials/Mapping guide|Mapping guide]].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:System_game_locations&amp;diff=8559</id>
		<title>Template:System game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:System_game_locations&amp;diff=8559"/>
		<updated>2023-11-25T06:18:32Z</updated>

		<summary type="html">&lt;p&gt;Killing time: libpath link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{loc|}}} |false| | {{Other_game_locations}} }}&lt;br /&gt;
When using the [[Unvanquished launcher]], the default system paths are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default binary directory ([[libpath]])&lt;br /&gt;
|-&lt;br /&gt;
! Linux &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;#xdg&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished/base&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;%ProgramFiles%\Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/Games/Unvanquished/Unvanquished.app/Contents/MacOS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''#xdg''': {{XdgDataHome_clarification|subdirectory=base}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:System_game_locations&amp;diff=8558</id>
		<title>Template:System game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:System_game_locations&amp;diff=8558"/>
		<updated>2023-11-25T03:08:14Z</updated>

		<summary type="html">&lt;p&gt;Killing time: no such thing as basepath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{loc|}}} |false| | {{Other_game_locations}} }}&lt;br /&gt;
When using the [[Unvanquished launcher]], the default system paths are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default binary directory (libpath)&lt;br /&gt;
|-&lt;br /&gt;
! Linux &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;#xdg&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished/base&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;%ProgramFiles%\Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/Games/Unvanquished/Unvanquished.app/Contents/MacOS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''#xdg''': {{XdgDataHome_clarification|subdirectory=base}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Server/Running&amp;diff=8557</id>
		<title>Server/Running</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Server/Running&amp;diff=8557"/>
		<updated>2023-11-25T01:19:02Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Directories */ remove basepath and libpath discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Server]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
Servers can be quickly setup over LAN by starting a match in-game, however this is not as powerful or efficient as running a dedicated server separately.&lt;br /&gt;
&lt;br /&gt;
=Netiquette=&lt;br /&gt;
&lt;br /&gt;
{{Note|content=Unvanquished is currently a small community. Please don't aim to create a server in order to only compete for players.&lt;br /&gt;
&lt;br /&gt;
Division of players will disallow larger matches.}}&lt;br /&gt;
&lt;br /&gt;
Servers may be needed in some geographical places to reduce ping delay.&lt;br /&gt;
&lt;br /&gt;
=Getting the server=&lt;br /&gt;
&lt;br /&gt;
Our standard [https://unvanquished.net/download/ download] contains the server. The binary is named {{code|daemonded}}.&lt;br /&gt;
&lt;br /&gt;
To install on an headless server, you may prefer to download the [https://unvanquished.net/download/zip universal zip], example with Linux:&lt;br /&gt;
&lt;br /&gt;
 wget --content-disposition https://unvanquished.net/download/zip&lt;br /&gt;
 unzip unvanquished_{{Current|GameVersion}}.zip&lt;br /&gt;
 cd unvanquished_{{Current|GameVersion}}&lt;br /&gt;
 unzip linux-amd64.zip&lt;br /&gt;
&lt;br /&gt;
=Starting the Server=&lt;br /&gt;
&lt;br /&gt;
Just running {{code|./daemonded}} with a map may be enough:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded +map plat23&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You always need to start a map (here, this is done by passing the {{code|+map plat23}} argument).&lt;br /&gt;
&lt;br /&gt;
==Network configuration==&lt;br /&gt;
&lt;br /&gt;
By default the server listening port is {{code|27960}}, it is an {{code|UDP}} port. You may have to open this port in your firewall or redirect it to the machine running the server.&lt;br /&gt;
&lt;br /&gt;
This is the same port as Quake Ⅲ Arena, so other games derivated from the Quake Ⅲ engine may share the same port and while the engine selects the next port available if the default one is already taken, you may want to enforce a port number if you host multiple games or game servers to avoid the port for each server to change according to the server start order.&lt;br /&gt;
&lt;br /&gt;
=Advanced starting=&lt;br /&gt;
&lt;br /&gt;
You may want to customize the way it runs, for example change the listening port (here for both IPv4 and IPv6, {{code|27960}} is the default port):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded -set net_port 27960 -set net_port6 27960 +map plat23&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or store the unvanquished server configuration in a specific folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded -homepath home/ +map plat23&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or tell the game server to also look for {{code|.dpk}} files you're distributing on your web server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded -pakpath /var/www/pkg +map plat23&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Server configuration==&lt;br /&gt;
&lt;br /&gt;
A ready-to use server configuration template can be found on {{SourceFile|dist/configs}} folder of Unvanquished repository.&lt;br /&gt;
&lt;br /&gt;
You just need to copy the {{code|config}} and {{code|game}} folders into your user game directory.&lt;br /&gt;
&lt;br /&gt;
{{Note|content={{User game locations}}}}&lt;br /&gt;
&lt;br /&gt;
You may want to edit the {{code|config/server.cfg}} file to change some things like the server name or things like that.&lt;br /&gt;
&lt;br /&gt;
After that, you can run the server this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded +exec server.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set arbitrary ports and run the configuration this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded -set net_port 27960 -set net_port6 27960 +exec server.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Options ordering==&lt;br /&gt;
&lt;br /&gt;
You can combine those options, but every {{code|-option}} starting with a {{code|-}} must precede every {{code|+command}} starting with a {{code|+}}.&lt;br /&gt;
&lt;br /&gt;
==Quick list of useful options==&lt;br /&gt;
&lt;br /&gt;
* {{code|-curses}} &amp;amp;mdash; enabled ncurses console interface (default behavior is to disable it so messages remain on-screen after crashes).&lt;br /&gt;
* {{code|-set net_port &amp;lt;port-number&amp;gt;}} and {{code|-set net_port &amp;lt;port-number&amp;gt;}} &amp;amp;mdash; customize the default port, by default is is {{code|27960}}.&lt;br /&gt;
* {{code|-pakpath &amp;lt;directory&amp;gt;}} &amp;amp;mdash; load more {{code|.dpk}} files from another directory.&lt;br /&gt;
* {{code|+map &amp;lt;map-name&amp;gt;}} &amp;amp;mdash; without a map the server will kill itself.&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
&lt;br /&gt;
If installing from the universal zip, the default directory where the {{code|.dpk}} are stored is in {{code|pkg/}} relative to the extraction directory.&lt;br /&gt;
&lt;br /&gt;
An optional package directory is called a ''pakpath''. Additional custom paths can be added using the {{code|-pakpath}} option. You can add as many as you want.&lt;br /&gt;
&lt;br /&gt;
The default user directory is called the ''homepath''. It can be customized with the {{code|-homepath}} option.&lt;br /&gt;
&lt;br /&gt;
The executable {{code|daemonded}} (''daemon dedicated'') should be included with your installation.&lt;br /&gt;
&lt;br /&gt;
So, if you need to be explicit on every path, you can do something like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./daemonded -homepath ${HOME}/.local/share/unvanquished \&lt;br /&gt;
 -pakpath /var/www/unvanquished/pkg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Standard game locations===&lt;br /&gt;
&lt;br /&gt;
See [[Game locations]] for details.&lt;br /&gt;
&lt;br /&gt;
==Script tutorial==&lt;br /&gt;
&lt;br /&gt;
Here is a tutorial to make a server script : [[Server/Script tutorial]].&lt;br /&gt;
&lt;br /&gt;
=Configuration and Operation=&lt;br /&gt;
&lt;br /&gt;
To discover more commands than are listed here, you can type the {{code|/listCmds}} command, and to discover configuration variables, you can type the {{code|/listCvars}} command.&lt;br /&gt;
&lt;br /&gt;
There is command and cvar completion, you can type a first letter (eg 'g') and press '''Tab''' to list available options starting with that letter.&lt;br /&gt;
&lt;br /&gt;
If you are in a terminal: '''Shift+Page Up''' allows you to scroll and the opposite for down.&lt;br /&gt;
&lt;br /&gt;
You can also search in what is ''already printed'' using grep, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/listCmds&lt;br /&gt;
/grep map&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Server Config File==&lt;br /&gt;
Here is the template for the server config: {{SourceFile|dist/configs/config/server.cfg}}.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; folder is stored in the &amp;lt;code&amp;gt;homepath&amp;lt;/code&amp;gt; folder (see above).&lt;br /&gt;
&lt;br /&gt;
For example on Linux it would be: &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished/config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ensure your server mode is not set to '2' unless you want your server to be listed for other players.&lt;br /&gt;
&lt;br /&gt;
 # Server mode&lt;br /&gt;
 # 0 - local server&lt;br /&gt;
 # 1 - LAN server&lt;br /&gt;
 # 2 - public server&lt;br /&gt;
&lt;br /&gt;
Public servers will want to set sv_hostname to a non-default value&lt;br /&gt;
&lt;br /&gt;
==Map rotation and map layouts==&lt;br /&gt;
&lt;br /&gt;
* [[Server/Map rotation|Map rotation]] &amp;amp;mdash; to customize the map loading order and on which condition a map is loaded or not.&lt;br /&gt;
* [[Server/Map layouts|Map layouts]] &amp;amp;mdash; default building locations.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
&lt;br /&gt;
{{NoteWiki|content=Please add common and useful commands, not every one.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| devmap&lt;br /&gt;
| Loads a map with &amp;lt;code&amp;gt;sv_cheats&amp;lt;/code&amp;gt; enabled. &amp;lt;code&amp;gt;sv_cheats&amp;lt;/code&amp;gt; cannot otherwise be changed during play&lt;br /&gt;
|-&lt;br /&gt;
| listadmins&lt;br /&gt;
| List current admins in-game&lt;br /&gt;
|-&lt;br /&gt;
| listlayouts&lt;br /&gt;
| List available layouts (for this map?)&lt;br /&gt;
|-&lt;br /&gt;
| listplayers&lt;br /&gt;
| List current players in-game&lt;br /&gt;
|-&lt;br /&gt;
| listmaps&lt;br /&gt;
| List maps available to the server&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Cvars==&lt;br /&gt;
&lt;br /&gt;
{{NoteWiki|content=Please add common and useful commands, not every one.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cvar&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| g_dretchPunt&lt;br /&gt;
| Allow dretches to be pushes out of the way by bigger aliens?{{Verify}}&lt;br /&gt;
|-&lt;br /&gt;
| g_friendlyfire&lt;br /&gt;
| Allows players to hurt their team&lt;br /&gt;
|- &lt;br /&gt;
| g_gravity&lt;br /&gt;
| Gravity.&lt;br /&gt;
|-&lt;br /&gt;
| sv_maxclients&lt;br /&gt;
| Maximum number of players on the server&lt;br /&gt;
|-&lt;br /&gt;
| g_maxGameClients&lt;br /&gt;
| Maximum number of players in teams (ignoring spectators)&lt;br /&gt;
|-&lt;br /&gt;
| g_motd&lt;br /&gt;
| Message displayed to joining players (Message Of The Day)&lt;br /&gt;
|-&lt;br /&gt;
| g_password&lt;br /&gt;
| Password to enter game&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Game administration=&lt;br /&gt;
&lt;br /&gt;
==Become admin==&lt;br /&gt;
&lt;br /&gt;
To make yourself an in-game admin&lt;br /&gt;
&lt;br /&gt;
# Enter the game make sure you've set your in-game name (otherwise set it in the player settings)&lt;br /&gt;
# In the console, (&amp;lt;Shift&amp;gt;&amp;lt;Escape&amp;gt; or the key below the escape key) use &amp;lt;code&amp;gt;/register&amp;lt;/code&amp;gt;, it should say your account is now registered.&lt;br /&gt;
# Using &amp;lt;code&amp;gt;/listplayers&amp;lt;/code&amp;gt;, find your player number&lt;br /&gt;
# Finaly, go into an admin console (you may want to launch the game manually) and &amp;lt;code&amp;gt;/setlevel (your number) (your level)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also possible to modify the file ./game/admin.dat but the server will require a reboot to take the change into account.&lt;br /&gt;
&lt;br /&gt;
Here are the levels:&lt;br /&gt;
&lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 5&lt;br /&gt;
 name    = ^1Server Operator&lt;br /&gt;
 flags   = ALLFLAGS -IMMUTABLE -INCOGNITO&lt;br /&gt;
 &lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 4&lt;br /&gt;
 name    = ^3Senior Admin&lt;br /&gt;
 flags   = listplayers admintest adminhelp time putteam spec999 warn kick mute showbans ban namelog buildlog ADMINCHAT register unregister l0 l1&lt;br /&gt;
 &lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 3&lt;br /&gt;
 name    = ^2Junior Admin&lt;br /&gt;
 flags   = listplayers admintest adminhelp time putteam spec999 warn kick mute ADMINCHAT buildlog register unregister l0 l1 &lt;br /&gt;
  &lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 2&lt;br /&gt;
 name    = ^6Team Manager&lt;br /&gt;
 flags   = listplayers admintest adminhelp time putteam spec999 register unregister&lt;br /&gt;
 &lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 1&lt;br /&gt;
 name    = ^5Server Regular&lt;br /&gt;
 flags   = listplayers admintest adminhelp time register unregister&lt;br /&gt;
 &lt;br /&gt;
 [level]&lt;br /&gt;
 level   = 0&lt;br /&gt;
 name    = ^4Unknown Player&lt;br /&gt;
 flags   = listplayers admintest adminhelp time register&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Libpath&amp;diff=8556</id>
		<title>Libpath</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Libpath&amp;diff=8556"/>
		<updated>2023-11-25T01:05:22Z</updated>

		<summary type="html">&lt;p&gt;Killing time: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''libpath'' is a path used by the Daemon engine when opening certain resources. There is exactly one libpath. Normally, it is the same as the directory containing the engine binary (see [[Game locations]]), but it can be customized with the (rarely used) &amp;lt;code&amp;gt;-libpath&amp;lt;/code&amp;gt; command line option.&lt;br /&gt;
&lt;br /&gt;
The following resources are located using the libpath:&lt;br /&gt;
* The Breakpad support binary&lt;br /&gt;
* NaCl support binaries&lt;br /&gt;
* A gamelogic module, if the cvar &amp;lt;code&amp;gt;vm.[cs]game.type&amp;lt;/code&amp;gt; is set to a nonzero value.&lt;br /&gt;
&lt;br /&gt;
Additionally, the &amp;lt;code&amp;gt;pkg&amp;lt;/code&amp;gt; subdirectory of the libpath is added as a pak search path. But this is not required to exist.&lt;br /&gt;
&lt;br /&gt;
Excluding the gamelogic, shared libraries (.so/.dll/.dylib) are always located using the engine's actual path, as they are loaded automatically by the operating system before the program even starts.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Libpath&amp;diff=8555</id>
		<title>Libpath</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Libpath&amp;diff=8555"/>
		<updated>2023-11-25T01:04:14Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Created page with &amp;quot;The ''libpath'' is a path used by the Daemon engine when opening certain resources. There is exactly one libpath. Normally, it is the same as the directory containing the engi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''libpath'' is a path used by the Daemon engine when opening certain resources. There is exactly one libpath. Normally, it is the same as the directory containing the engine binary, but it can be customized with the (rarely used) &amp;lt;code&amp;gt;-libpath&amp;lt;/code&amp;gt; command line option.&lt;br /&gt;
&lt;br /&gt;
The following resources are located using the libpath:&lt;br /&gt;
* The Breakpad support binary&lt;br /&gt;
* NaCl support binaries&lt;br /&gt;
* A gamelogic module, if the cvar &amp;lt;code&amp;gt;vm.[cs]game.type&amp;lt;/code&amp;gt; is set to a nonzero value.&lt;br /&gt;
&lt;br /&gt;
Additionally, the &amp;lt;code&amp;gt;pkg&amp;lt;/code&amp;gt; subdirectory of the libpath is added as a pak search path. But this is not required to exist.&lt;br /&gt;
&lt;br /&gt;
Excluding the gamelogic, shared libraries (.so/.dll/.dylib) are always located using the engine's actual path, as they are loaded automatically by the operating system before the program even starts.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Filesystem&amp;diff=8554</id>
		<title>Filesystem</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Filesystem&amp;diff=8554"/>
		<updated>2023-11-24T22:18:20Z</updated>

		<summary type="html">&lt;p&gt;Killing time: s/basepath/libpath/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unvanquished stores its resources (maps, sounds, textures, models etc) in ''packages''.  To be able to use your own resources in the game you must put them in a package.&lt;br /&gt;
&lt;br /&gt;
Note: The Unvanquished filesystem rules differ from Tremulous and Quake.&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
A package is simply a zip-file or a folder containing resources.  When a package is loaded its contents are extracted into a virtual filesystem (analogous to a hidden folder).  If two packages have the same file, the file that was first extracted always wins out -- files cannot be overwritten once they are in the filesystem (this differs greatly to the traditional quake behavior).&lt;br /&gt;
&lt;br /&gt;
The game only loads packages as it needs them:&lt;br /&gt;
* Main ''unvanquished'' package (containing base game resources) is always loaded first.&lt;br /&gt;
* Map packages as they are necessary&lt;br /&gt;
* Any packages that the above say they depend on (eg texture-packs)&lt;br /&gt;
Other packages can be forced to load using fs_extrapaks (detailed below).&lt;br /&gt;
&lt;br /&gt;
Every package has a version number.  When a package is loaded the latest version is used. For example:&lt;br /&gt;
  tex-awesometextures_2016-04-25.dpkdir&lt;br /&gt;
In this case an enterprising author made their package version an ISO date (YYYY-MM-DD) to ensure that the latest version always has the 'largest' version number.  There are [[Packaging Version Guidelines|recommended versioning guidelines]] that go into more detail. To load multiple version of the same package, the one with the 'largest' version number must list the ones with 'smaller' version number as dependencies in DEPS file.&lt;br /&gt;
&lt;br /&gt;
There are two ways packages can be stored: as dpks or dpkdirs.  Packages ending in .dpkdir are plain folders whilst .dpk's are zip-compressed files.  Generally it's easier to work with a dpkdir folder and then make a compressed copy only when needed to send over the web.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
Packages can be stored in the 'pkg' folder found in two places: the game installation path (&amp;quot;libpath&amp;quot;) or the user's own personal path (&amp;quot;homepath&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
{{Game locations}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Pakpaths&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Pak search paths ===&lt;br /&gt;
The directories in which Daemon searches for packages, known as '''pakpaths''', are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;homepath&amp;gt;/pkg&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;libpath&amp;gt;/pkg&amp;lt;/code&amp;gt;&lt;br /&gt;
* Any additional locations added by the &amp;lt;code&amp;gt;-pakpath&amp;lt;/code&amp;gt; command line switch&lt;br /&gt;
&lt;br /&gt;
== Filesystem priority ==&lt;br /&gt;
Once a file is in the filesystem, nothing can change it or replace it.  If two packages have the same file then the first one to be loaded becomes dominant. The moment a package is loaded, if it contains a DEPS file, its dependencies are loaded recursively in the order of the DEPS file.&lt;br /&gt;
&lt;br /&gt;
The names of packages to load come from:&lt;br /&gt;
# fs_extrapaks if set: each pak in the space-separated values is loaded starting from the left.&lt;br /&gt;
# main package configured by &amp;lt;code&amp;gt;fs_basepak&amp;lt;/code&amp;gt; (default: &amp;quot;unvanquished&amp;quot;)&lt;br /&gt;
# map, as needed.&lt;br /&gt;
&lt;br /&gt;
Dependencies are loaded immediately after their parent package, in the order specified in the DEPS file. Recursive dependencies are loaded in depth-first order.&lt;br /&gt;
&lt;br /&gt;
Whole-game modifications can still use the main unvanquished package by listing it as one of their dependencies.  Otherwise fs_extrapaks can just be used.&lt;br /&gt;
&lt;br /&gt;
= Packaging Details =&lt;br /&gt;
&lt;br /&gt;
See {{Formats|DPK}} for more details.&lt;br /&gt;
&lt;br /&gt;
== Naming ==&lt;br /&gt;
&lt;br /&gt;
Map package names ''must'' start with ''map-'' prefix or the engine will not list and not load them. The package name after the ''map-'' prefix must be the bsp base name, for example ''map-station15_1.0.dpk'' contains the ''maps/station15.bsp'' file. As best practice, it's recommended texture package names start with the ''tex-'' prefix. It's recommended packages shipping mixed resources (map models, sounds, gfx…) are named using a ''res-'' prefix. More similar prefixes would be defined in the future if needed.&lt;br /&gt;
&lt;br /&gt;
Packages have three parts to their filename:&lt;br /&gt;
* the package basename (eg map-nano)&lt;br /&gt;
* the version (eg 2)&lt;br /&gt;
* the extension (eg .dpk)&lt;br /&gt;
In this case our filename would be ''map-nano_2.dpk''&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* Underscores must be used to separate the name from the version, but may not be used anywhere else&lt;br /&gt;
* Authors intending to release their work should follow the [[Packaging Version Guidelines]]&lt;br /&gt;
&lt;br /&gt;
Sometimes a fourth section (a [https://en.wikipedia.org/wiki/checksum checksum]) is included when auto-downloading maps.  This should never be added manually.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
* '''.dpkdir''' is for folders&lt;br /&gt;
* '''.dpk''' is for zip-compressed packages&lt;br /&gt;
&lt;br /&gt;
To convert from a dpkdir to a dpk: &lt;br /&gt;
# Compress the ''contents'' of a dpkdir (not the folder itself) into a zip-file&lt;br /&gt;
# Rename this zip file so that it ends with .dpk&lt;br /&gt;
&lt;br /&gt;
= Filesystem layout =&lt;br /&gt;
Every package is 'extracted' into the same root folder in the filesystem. &lt;br /&gt;
&lt;br /&gt;
It is recommended you follow the traditional folder-structure for your packages.  When there is a chance files from another package may have similiar names, you should make a subfolder with your packages name to avoid a clash.  Examples of this are below.&lt;br /&gt;
&lt;br /&gt;
== Recommended folder structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder&lt;br /&gt;
! Description and notes&lt;br /&gt;
! Example&lt;br /&gt;
|-&lt;br /&gt;
| /about&lt;br /&gt;
| Info and licensing about your package.  &lt;br /&gt;
| /about/map-parpax.txt&lt;br /&gt;
|-&lt;br /&gt;
| /textures&lt;br /&gt;
| .crn texture files&lt;br /&gt;
| /textures/parpax_evillair/&lt;br /&gt;
|-&lt;br /&gt;
| /sound&lt;br /&gt;
| .opus sound files&lt;br /&gt;
| /sound/parpax&lt;br /&gt;
|-&lt;br /&gt;
| /scripts&lt;br /&gt;
| .shader, .particle files&lt;br /&gt;
|&lt;br /&gt;
/scripts/parpax_custom.shader&lt;br /&gt;
/scripts/parpax.particle&lt;br /&gt;
|-&lt;br /&gt;
| /minimaps&lt;br /&gt;
| .crn picture, .minimap description file&lt;br /&gt;
| &lt;br /&gt;
/minimaps/parpax_upper.crn&lt;br /&gt;
/minimaps/parpax_lower.crn&lt;br /&gt;
/minimaps/parpax.minimap&lt;br /&gt;
|-&lt;br /&gt;
| /map&lt;br /&gt;
| .map, .bsp, .navMesh (for bots)&lt;br /&gt;
| /map/parpax.bsp&lt;br /&gt;
|-&lt;br /&gt;
| /meta&lt;br /&gt;
| &amp;quot;Loading screen&amp;quot; picture of a map level (.jpg so it can be use by third party tools), .arena metadata file containing the real name&lt;br /&gt;
|&lt;br /&gt;
/meta/parpax/parpax.jpg&lt;br /&gt;
/meta/parpax/parpax.arena&lt;br /&gt;
|-&lt;br /&gt;
| /gfx&lt;br /&gt;
| Colorgrade (lossless)&lt;br /&gt;
| /gfx/parpax/colorgrading.png&lt;br /&gt;
|-&lt;br /&gt;
| /DEPS (file)&lt;br /&gt;
| Depedencies file.  See next section.&lt;br /&gt;
| /DEPS&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example of meta in loading screen:&lt;br /&gt;
[[File:Downloading_map_compiling_GLSL_shaders.png]]&lt;br /&gt;
&lt;br /&gt;
== DEPS file ==&lt;br /&gt;
A DEPS file in the root of a package tells the game what dependencies are required for this package.  Dependant packages are loaded after the current package, so if any files clash then the dependencies 'lose out'.&lt;br /&gt;
&lt;br /&gt;
Example contents of a DEPS file (from map-parpax_2.5.1.dpk):&lt;br /&gt;
 res-ambient&lt;br /&gt;
 tex-common&lt;br /&gt;
 tex-ex&lt;br /&gt;
 tex-exm&lt;br /&gt;
 tex-pk01&lt;br /&gt;
 tex-pk02&lt;br /&gt;
 tex-space&lt;br /&gt;
 tex-trak5&lt;br /&gt;
&lt;br /&gt;
= Guides =&lt;br /&gt;
&lt;br /&gt;
== Creating your own package ==&lt;br /&gt;
Find your user's package directory&lt;br /&gt;
 [[File:Dir homepkg.png]]&lt;br /&gt;
&lt;br /&gt;
Create a dpkdir folder&lt;br /&gt;
 [[File:Dir_homepkg_newfolder.png]]&lt;br /&gt;
&lt;br /&gt;
Place inside the files you want to use.  Make sure you follow the filesystem organisation guidelines, or [[User:Kangz|kangz]] will eat you.&lt;br /&gt;
 [[File:Dir inpackage.png]]&lt;br /&gt;
&lt;br /&gt;
If your package is a map, you can ''/devmap mapname'' in the [[console]] to load it.  Otherwise you may want to force it to be loaded with ''fs_extrapaks''.&lt;br /&gt;
&lt;br /&gt;
 $ unvanquished -set fs_extrapaks tutorialexample&lt;br /&gt;
&lt;br /&gt;
== Using the latest resources from git ==&lt;br /&gt;
&lt;br /&gt;
See [[Tutorials/Running Unvanquished from Git|Running Unvanquished from Git]].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Filesystem&amp;diff=8539</id>
		<title>Filesystem</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Filesystem&amp;diff=8539"/>
		<updated>2023-11-24T10:42:46Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Overview */ fix mistakes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unvanquished stores its resources (maps, sounds, textures, models etc) in ''packages''.  To be able to use your own resources in the game you must put them in a package.&lt;br /&gt;
&lt;br /&gt;
Note: The Unvanquished filesystem rules differ from Tremulous and Quake.&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
A package is simply a zip-file or a folder containing resources.  When a package is loaded its contents are extracted into a virtual filesystem (analogous to a hidden folder).  If two packages have the same file, the file that was first extracted always wins out -- files cannot be overwritten once they are in the filesystem (this differs greatly to the traditional quake behavior).&lt;br /&gt;
&lt;br /&gt;
The game only loads packages as it needs them:&lt;br /&gt;
* Main ''unvanquished'' package (containing base game resources) is always loaded first.&lt;br /&gt;
* Map packages as they are necessary&lt;br /&gt;
* Any packages that the above say they depend on (eg texture-packs)&lt;br /&gt;
Other packages can be forced to load using fs_extrapaks (detailed below).&lt;br /&gt;
&lt;br /&gt;
Every package has a version number.  When a package is loaded the latest version is used. For example:&lt;br /&gt;
  tex-awesometextures_2016-04-25.dpkdir&lt;br /&gt;
In this case an enterprising author made their package version an ISO date (YYYY-MM-DD) to ensure that the latest version always has the 'largest' version number.  There are [[Packaging Version Guidelines|recommended versioning guidelines]] that go into more detail. To load multiple version of the same package, the one with the 'largest' version number must list the ones with 'smaller' version number as dependencies in DEPS file.&lt;br /&gt;
&lt;br /&gt;
There are two ways packages can be stored: as dpks or dpkdirs.  Packages ending in .dpkdir are plain folders whilst .dpk's are zip-compressed files.  Generally it's easier to work with a dpkdir folder and then make a compressed copy only when needed to send over the web.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
Packages can be stored in the 'pkg' folder found in two places: the game installation path (&amp;quot;basepath&amp;quot;) or the user's own personal path (&amp;quot;homepath&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
{{Game locations}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Pakpaths&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Pak search paths ===&lt;br /&gt;
The directories in which Daemon searches for packages, known as '''pakpaths''', are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;homepath&amp;gt;/pkg&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;basepath&amp;gt;/pkg&amp;lt;/code&amp;gt;&lt;br /&gt;
* Any additional locations added by the &amp;lt;code&amp;gt;-pakpath&amp;lt;/code&amp;gt; command line switch&lt;br /&gt;
&lt;br /&gt;
== Filesystem priority ==&lt;br /&gt;
Once a file is in the filesystem, nothing can change it or replace it.  If two packages have the same file then the first one to be loaded becomes dominant. The moment a package is loaded, if it contains a DEPS file, its dependencies are loaded recursively in the order of the DEPS file.&lt;br /&gt;
&lt;br /&gt;
The names of packages to load come from:&lt;br /&gt;
# fs_extrapaks if set: each pak in the space-separated values is loaded starting from the left.&lt;br /&gt;
# main package configured by &amp;lt;code&amp;gt;fs_basepak&amp;lt;/code&amp;gt; (default: &amp;quot;unvanquished&amp;quot;)&lt;br /&gt;
# map, as needed.&lt;br /&gt;
&lt;br /&gt;
Dependencies are loaded immediately after their parent package, in the order specified in the DEPS file. Recursive dependencies are loaded in depth-first order.&lt;br /&gt;
&lt;br /&gt;
Whole-game modifications can still use the main unvanquished package by listing it as one of their dependencies.  Otherwise fs_extrapaks can just be used.&lt;br /&gt;
&lt;br /&gt;
= Packaging Details =&lt;br /&gt;
&lt;br /&gt;
See {{Formats|DPK}} for more details.&lt;br /&gt;
&lt;br /&gt;
== Naming ==&lt;br /&gt;
&lt;br /&gt;
Map package names ''must'' start with ''map-'' prefix or the engine will not list and not load them. The package name after the ''map-'' prefix must be the bsp base name, for example ''map-station15_1.0.dpk'' contains the ''maps/station15.bsp'' file. As best practice, it's recommended texture package names start with the ''tex-'' prefix. It's recommended packages shipping mixed resources (map models, sounds, gfx…) are named using a ''res-'' prefix. More similar prefixes would be defined in the future if needed.&lt;br /&gt;
&lt;br /&gt;
Packages have three parts to their filename:&lt;br /&gt;
* the package basename (eg map-nano)&lt;br /&gt;
* the version (eg 2)&lt;br /&gt;
* the extension (eg .dpk)&lt;br /&gt;
In this case our filename would be ''map-nano_2.dpk''&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* Underscores must be used to separate the name from the version, but may not be used anywhere else&lt;br /&gt;
* Authors intending to release their work should follow the [[Packaging Version Guidelines]]&lt;br /&gt;
&lt;br /&gt;
Sometimes a fourth section (a [https://en.wikipedia.org/wiki/checksum checksum]) is included when auto-downloading maps.  This should never be added manually.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
* '''.dpkdir''' is for folders&lt;br /&gt;
* '''.dpk''' is for zip-compressed packages&lt;br /&gt;
&lt;br /&gt;
To convert from a dpkdir to a dpk: &lt;br /&gt;
# Compress the ''contents'' of a dpkdir (not the folder itself) into a zip-file&lt;br /&gt;
# Rename this zip file so that it ends with .dpk&lt;br /&gt;
&lt;br /&gt;
= Filesystem layout =&lt;br /&gt;
Every package is 'extracted' into the same root folder in the filesystem. &lt;br /&gt;
&lt;br /&gt;
It is recommended you follow the traditional folder-structure for your packages.  When there is a chance files from another package may have similiar names, you should make a subfolder with your packages name to avoid a clash.  Examples of this are below.&lt;br /&gt;
&lt;br /&gt;
== Recommended folder structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder&lt;br /&gt;
! Description and notes&lt;br /&gt;
! Example&lt;br /&gt;
|-&lt;br /&gt;
| /about&lt;br /&gt;
| Info and licensing about your package.  &lt;br /&gt;
| /about/map-parpax.txt&lt;br /&gt;
|-&lt;br /&gt;
| /textures&lt;br /&gt;
| .crn texture files&lt;br /&gt;
| /textures/parpax_evillair/&lt;br /&gt;
|-&lt;br /&gt;
| /sound&lt;br /&gt;
| .opus sound files&lt;br /&gt;
| /sound/parpax&lt;br /&gt;
|-&lt;br /&gt;
| /scripts&lt;br /&gt;
| .shader, .particle files&lt;br /&gt;
|&lt;br /&gt;
/scripts/parpax_custom.shader&lt;br /&gt;
/scripts/parpax.particle&lt;br /&gt;
|-&lt;br /&gt;
| /minimaps&lt;br /&gt;
| .crn picture, .minimap description file&lt;br /&gt;
| &lt;br /&gt;
/minimaps/parpax_upper.crn&lt;br /&gt;
/minimaps/parpax_lower.crn&lt;br /&gt;
/minimaps/parpax.minimap&lt;br /&gt;
|-&lt;br /&gt;
| /map&lt;br /&gt;
| .map, .bsp, .navMesh (for bots)&lt;br /&gt;
| /map/parpax.bsp&lt;br /&gt;
|-&lt;br /&gt;
| /meta&lt;br /&gt;
| &amp;quot;Loading screen&amp;quot; picture of a map level (.jpg so it can be use by third party tools), .arena metadata file containing the real name&lt;br /&gt;
|&lt;br /&gt;
/meta/parpax/parpax.jpg&lt;br /&gt;
/meta/parpax/parpax.arena&lt;br /&gt;
|-&lt;br /&gt;
| /gfx&lt;br /&gt;
| Colorgrade (lossless)&lt;br /&gt;
| /gfx/parpax/colorgrading.png&lt;br /&gt;
|-&lt;br /&gt;
| /DEPS (file)&lt;br /&gt;
| Depedencies file.  See next section.&lt;br /&gt;
| /DEPS&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example of meta in loading screen:&lt;br /&gt;
[[File:Downloading_map_compiling_GLSL_shaders.png]]&lt;br /&gt;
&lt;br /&gt;
== DEPS file ==&lt;br /&gt;
A DEPS file in the root of a package tells the game what dependencies are required for this package.  Dependant packages are loaded after the current package, so if any files clash then the dependencies 'lose out'.&lt;br /&gt;
&lt;br /&gt;
Example contents of a DEPS file (from map-parpax_2.5.1.dpk):&lt;br /&gt;
 res-ambient&lt;br /&gt;
 tex-common&lt;br /&gt;
 tex-ex&lt;br /&gt;
 tex-exm&lt;br /&gt;
 tex-pk01&lt;br /&gt;
 tex-pk02&lt;br /&gt;
 tex-space&lt;br /&gt;
 tex-trak5&lt;br /&gt;
&lt;br /&gt;
= Guides =&lt;br /&gt;
&lt;br /&gt;
== Creating your own package ==&lt;br /&gt;
Find your user's package directory&lt;br /&gt;
 [[File:Dir homepkg.png]]&lt;br /&gt;
&lt;br /&gt;
Create a dpkdir folder&lt;br /&gt;
 [[File:Dir_homepkg_newfolder.png]]&lt;br /&gt;
&lt;br /&gt;
Place inside the files you want to use.  Make sure you follow the filesystem organisation guidelines, or [[User:Kangz|kangz]] will eat you.&lt;br /&gt;
 [[File:Dir inpackage.png]]&lt;br /&gt;
&lt;br /&gt;
If your package is a map, you can ''/devmap mapname'' in the [[console]] to load it.  Otherwise you may want to force it to be loaded with ''fs_extrapaks''.&lt;br /&gt;
&lt;br /&gt;
 $ unvanquished -set fs_extrapaks tutorialexample&lt;br /&gt;
&lt;br /&gt;
== Using the latest resources from git ==&lt;br /&gt;
&lt;br /&gt;
See [[Tutorials/Running Unvanquished from Git|Running Unvanquished from Git]].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8538</id>
		<title>Template:User game locations</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Template:User_game_locations&amp;diff=8538"/>
		<updated>2023-11-24T10:39:50Z</updated>

		<summary type="html">&lt;p&gt;Killing time: launcher does not affect homepath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{loc|}}} |false| | {{Other_game_locations}} }}&lt;br /&gt;
&lt;br /&gt;
The default user directory is:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform&lt;br /&gt;
! Default user directory (homepath)&lt;br /&gt;
|- &lt;br /&gt;
! Linux &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;#xdg&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/.local/share/unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Windows&lt;br /&gt;
| &amp;lt;code&amp;gt;%USERPROFILE%\Documents\My Games\Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! macOS&lt;br /&gt;
| &amp;lt;code&amp;gt;${HOME}/Library/Application Support/Unvanquished&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''#xdg''': {{XdgDataHome_clarification}}&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Making_an_awesome_mod&amp;diff=8535</id>
		<title>Making an awesome mod</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Making_an_awesome_mod&amp;diff=8535"/>
		<updated>2023-11-24T08:58:01Z</updated>

		<summary type="html">&lt;p&gt;Killing time: update filenames with new arch strings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Build the game =&lt;br /&gt;
We start with an idea, like having grangers shoot rockets made out of cake.&lt;br /&gt;
 &lt;br /&gt;
Apply the changes and [[Compiling the source|compile the source]].&lt;br /&gt;
&lt;br /&gt;
Depending on the changes we need to build the client and server vms (cgame and sgame).&lt;br /&gt;
&lt;br /&gt;
= Package Manually =&lt;br /&gt;
After building the game we have following needed files in the build folder&lt;br /&gt;
 cgame-i686.nexe&lt;br /&gt;
 cgame-amd64.nexe&lt;br /&gt;
 cgame-armhf.exe&lt;br /&gt;
 sgame-i686.nexe&lt;br /&gt;
 sgame-amd64.nexe&lt;br /&gt;
 sgame-armhf.nexe&lt;br /&gt;
&lt;br /&gt;
 cgame-i686-stripped.nexe&lt;br /&gt;
 cgame-amd64-stripped.nexe&lt;br /&gt;
 cgame-armhf-stripped.exe&lt;br /&gt;
 sgame-i686-stripped.nexe&lt;br /&gt;
 sgame-amd64-stripped.nexe&lt;br /&gt;
 sgame-armhf-stripped.nexe&lt;br /&gt;
&lt;br /&gt;
Copy one of the sets and remove -stripped from the names if there.&lt;br /&gt;
&lt;br /&gt;
Now create a text file named DEPS which contains&lt;br /&gt;
 unvanquished&lt;br /&gt;
and place it in the same folder as your .nexe files&lt;br /&gt;
&lt;br /&gt;
You can now place other assets in that folder to overwrite any original files.&lt;br /&gt;
 &lt;br /&gt;
Keep the folder structure in mind. See the original assets for that&lt;br /&gt;
 unvanquished_src.dpkdir https://github.com/UnvanquishedAssets/unvanquished_src.dpkdir&lt;br /&gt;
 res-ambient_src.dpkdir https://github.com/UnvanquishedAssets/res-ambient_src.dpkdir&lt;br /&gt;
 res-buildables_src.dpkdir https://github.com/UnvanquishedAssets/res-buildables_src.dpkdir&lt;br /&gt;
 res-legacy_src.dpkdir https://github.com/UnvanquishedAssets/res-legacy_src.dpkdir&lt;br /&gt;
 res-players_src.dpkdir https://github.com/UnvanquishedAssets/res-players_src.dpkdir&lt;br /&gt;
 res-soundtrack_src.dpkdir https://github.com/UnvanquishedAssets/res-soundtrack_src.dpkdir&lt;br /&gt;
 res-voices_src.dpkdir https://github.com/UnvanquishedAssets/res-voices_src.dpkdir&lt;br /&gt;
 res-weapons_src.dpkdir https://github.com/UnvanquishedAssets/res-weapons_src.dpkdir&lt;br /&gt;
&lt;br /&gt;
Now zip the folder and rename it to &lt;br /&gt;
 mod-superawesomemod_0.0.1.dpk&lt;br /&gt;
more naming infos at the [[Packaging version guidelines]]&lt;br /&gt;
&lt;br /&gt;
= Run a Mod =&lt;br /&gt;
&lt;br /&gt;
Place your mod now into the pak folder&lt;br /&gt;
&lt;br /&gt;
And when starting the game or server you use following command&lt;br /&gt;
 ./daemon -set fs_extrapaks mod-superawesomemod&lt;br /&gt;
&lt;br /&gt;
The page [[Hosting one's own awesome mod]] provide details on how to host such server with downloadable files.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8534</id>
		<title>Tutorials/Modifying paks</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8534"/>
		<updated>2023-11-24T08:38:44Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Method 2: Working from a source Git repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
When working on changes to Unvanquished game paks, it is inconvenient to work directly with the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; package file format (see [[Formats/DPK|DPK]]) used in production, since it is a [https://en.wikipedia.org/wiki/ZIP_(file_format) Zip] archive. Hence, the {{engine}} supports the &amp;lt;code&amp;gt;.dpkdir&amp;lt;/code&amp;gt; package directory format for working in the native filesystem. This article details a couple of possible workflows for development using a dpkdir.&lt;br /&gt;
&lt;br /&gt;
== Method 0: Modifying the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package ==&lt;br /&gt;
&lt;br /&gt;
If you are building the Unvanquished gamelogic, then it is easy to modify the contents of the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package, which are stored in the same Git repository as the source code. Suppose you have the code checked out in the directory &amp;lt;code&amp;gt;stuff/Unvanquished&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
# Make your modifications to the package contents in &amp;lt;code&amp;gt;stuff/Unvanquished/pkg/unvanquished_src.dpkdir/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Add the command line args &amp;lt;code&amp;gt;-pakpath stuff/Unvanquished/pkg&amp;lt;/code&amp;gt; when starting Daemon.&lt;br /&gt;
&lt;br /&gt;
In fact, if you are building gamelogic, it is better to always add the pakpath option like this to ensure there are no hiccups due to an out-of-sync &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package (but see [[Compatibility]]).&lt;br /&gt;
&lt;br /&gt;
== Method 1: Quick and dirty modifications to an existing zipped package ==&lt;br /&gt;
&lt;br /&gt;
# Find the package you want to modify in the [[Filesystem#Pakpaths|pakpath]]. Let's say it's &amp;lt;code&amp;gt;res-weapons&amp;lt;/code&amp;gt; and the file is called &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Extract &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt; into a folder named &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; is a [[Filesystem#Naming|version string]] which is arbitrary, but must be &amp;quot;greater&amp;quot; than &amp;lt;code&amp;gt;0.51&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt; should be in the same directory as the original dpk. &lt;br /&gt;
# Make your modifications inside the dpkdir directory tree.&lt;br /&gt;
# Start/restart the game. A &amp;lt;code&amp;gt;/devmap&amp;lt;/code&amp;gt; (map change) suffices—it is not necessary to restart the entire program.&lt;br /&gt;
&lt;br /&gt;
A disadvantage of this method: it is easy to forget to delete the dpkdir when you are done.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Working from a source Git repository ==&lt;br /&gt;
This section describes a workflow for working from source for a package that has its own repository (likely something in [https://github.com/UnvanquishedAssets UnvanquishedAssets]).&lt;br /&gt;
&lt;br /&gt;
{{Note|This method likely requires specialized knowledge of asset building to get working correctly.}}&lt;br /&gt;
&lt;br /&gt;
# Check out the Git repository. E.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cd morestuff &amp;amp;&amp;amp; git clone https://github.com/UnvanquishedAssets/res-weapons_src.dpkdir.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Make your modifications in the directory tree of the Git repository.&lt;br /&gt;
# Build assets. In general, the game may not be able to load assets in their source form. For example if you're modifying a map, you'll need to build it with NetRadiant. In the &amp;lt;code&amp;gt;res-weapons&amp;lt;/code&amp;gt; example, there are some IQE models that must be converted to IQM so that the engine can load them. For Unvanquished releases, [[Tools/Urcheon|Urcheon]] handles this part for all types of assets.&lt;br /&gt;
# Launch Unvanquished, specifying the ''parent'' directory of the repository as a pakpath. E.g. &amp;lt;code&amp;gt;./daemon -pakpath morestuff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rapid iteration ==&lt;br /&gt;
&lt;br /&gt;
Once you have Daemon running with the right flags and filesystem cvars, you should be able to test new sets of modifications without restarting the whole program.&lt;br /&gt;
&lt;br /&gt;
* Forcing a map change (e.g. with &amp;lt;code&amp;gt;/devmap&amp;lt;/code&amp;gt;) is the most reliable way to ensure assets are reloaded as it performs a full filesystem reload. If you create or delete any files, this method MUST be preferred in order to update the file list.&lt;br /&gt;
* If you only modify files used by the cgame/client, you can use &amp;lt;code&amp;gt;/vid_restart&amp;lt;/code&amp;gt; to restart only the client. This method is of interest because it preserves game state.&lt;br /&gt;
* If you only modify files used by the sgame, you can use &amp;lt;code&amp;gt;/restart&amp;lt;/code&amp;gt; to restart only the server. This method is of interest because it is considerably faster.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* Use the &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; command in the in-game console to verify that files are being loaded from your dpkdir:&lt;br /&gt;
&lt;br /&gt;
 /which scripts/blaster.shader&lt;br /&gt;
 File &amp;quot;scripts/blaster.shader&amp;quot; found in &amp;quot;C:\Users\slipher\Documents\My Games\Unvanquished\pkg/res-weapons_0.51.dpk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* In your operating system's settings you can associate the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; file extension with a zip archive browser such as 7-Zip to enable convenient inspection of paks ([[Formats/DPK|DPK]] packages make use of Zip format).&lt;br /&gt;
&lt;br /&gt;
* If you want to [[Filesystem#Creating your own package|create a new package]] rather than modify an existing one, set the cvar &amp;lt;code&amp;gt;fs_extrapaks&amp;lt;/code&amp;gt; to the package name. This forces your package to be loaded first, before &amp;lt;code&amp;gt;fs_basepak&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8533</id>
		<title>Tutorials/Modifying paks</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8533"/>
		<updated>2023-11-24T08:37:31Z</updated>

		<summary type="html">&lt;p&gt;Killing time: major rework because unvanquished_src.dpkdir is no longer a submodule&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
When working on changes to Unvanquished game paks, it is inconvenient to work directly with the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; package file format (see [[Formats/DPK|DPK]]) used in production, since it is a [https://en.wikipedia.org/wiki/ZIP_(file_format) Zip] archive. Hence, the {{engine}} supports the &amp;lt;code&amp;gt;.dpkdir&amp;lt;/code&amp;gt; package directory format for working in the native filesystem. This article details a couple of possible workflows for development using a dpkdir.&lt;br /&gt;
&lt;br /&gt;
== Method 0: Modifying the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package ==&lt;br /&gt;
&lt;br /&gt;
If you are building the Unvanquished gamelogic, then it is easy to modify the contents of the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package, which are stored in the same Git repository as the source code. Suppose you have the code checked out in the directory &amp;lt;code&amp;gt;stuff/Unvanquished&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
# Make your modifications to the package contents in &amp;lt;code&amp;gt;stuff/Unvanquished/pkg/unvanquished_src.dpkdir/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Add the command line args &amp;lt;code&amp;gt;-pakpath stuff/Unvanquished/pkg&amp;lt;/code&amp;gt; when starting Daemon.&lt;br /&gt;
&lt;br /&gt;
In fact, if you are building gamelogic, it is better to always add the pakpath option like this to ensure there are no hiccups due to an out-of-sync &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package (but see [[Compatibility]]).&lt;br /&gt;
&lt;br /&gt;
== Method 1: Quick and dirty modifications to an existing zipped package ==&lt;br /&gt;
&lt;br /&gt;
# Find the package you want to modify in the [[Filesystem#Pakpaths|pakpath]]. Let's say it's &amp;lt;code&amp;gt;res-weapons&amp;lt;/code&amp;gt; and the file is called &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Extract &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt; into a folder named &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; is a [[Filesystem#Naming|version string]] which is arbitrary, but must be &amp;quot;greater&amp;quot; than &amp;lt;code&amp;gt;0.51&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt; should be in the same directory as the original dpk. &lt;br /&gt;
# Make your modifications inside the dpkdir directory tree.&lt;br /&gt;
# Start/restart the game. A &amp;lt;code&amp;gt;/devmap&amp;lt;/code&amp;gt; (map change) suffices—it is not necessary to restart the entire program.&lt;br /&gt;
&lt;br /&gt;
A disadvantage of this method: it is easy to forget to delete the dpkdir when you are done.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Working from a source Git repository ==&lt;br /&gt;
This section describes a workflow for working from source for a package that has its own repository (likely something in [https://github.com/UnvanquishedAssets UnvanquishedAssets]).&lt;br /&gt;
&lt;br /&gt;
{{Note|This method likely requires specialized knowledge of asset building to get working correctly.}}&lt;br /&gt;
&lt;br /&gt;
# Check out the Git repository. E.g. &amp;lt;code&amp;gt;cd morestuff &amp;amp;&amp;amp; git clone https://github.com/UnvanquishedAssets/res-weapons_src.dpkdir.git&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Make your modifications in the directory tree of the Git repository.&lt;br /&gt;
# Build assets. In general, the game may not be able to load assets in their source form. For example if you're modifying a map, you'll need to build it with NetRadiant. In the &amp;lt;code&amp;gt;res-weapons&amp;lt;/code&amp;gt; example, there are some IQE models that must be converted to IQM so that the engine can load them. For Unvanquished releases, [[Tools/Urcheon|Urcheon]] handles this part for all types of assets.&lt;br /&gt;
# Launch Unvanquished, specifying the ''parent'' directory of the repository as a pakpath. E.g. &amp;lt;code&amp;gt;./daemon -pakpath morestuff&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Rapid iteration ==&lt;br /&gt;
&lt;br /&gt;
Once you have Daemon running with the right flags and filesystem cvars, you should be able to test new sets of modifications without restarting the whole program.&lt;br /&gt;
&lt;br /&gt;
* Forcing a map change (e.g. with &amp;lt;code&amp;gt;/devmap&amp;lt;/code&amp;gt;) is the most reliable way to ensure assets are reloaded as it performs a full filesystem reload. If you create or delete any files, this method MUST be preferred in order to update the file list.&lt;br /&gt;
* If you only modify files used by the cgame/client, you can use &amp;lt;code&amp;gt;/vid_restart&amp;lt;/code&amp;gt; to restart only the client. This method is of interest because it preserves game state.&lt;br /&gt;
* If you only modify files used by the sgame, you can use &amp;lt;code&amp;gt;/restart&amp;lt;/code&amp;gt; to restart only the server. This method is of interest because it is considerably faster.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* Use the &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; command in the in-game console to verify that files are being loaded from your dpkdir:&lt;br /&gt;
&lt;br /&gt;
 /which scripts/blaster.shader&lt;br /&gt;
 File &amp;quot;scripts/blaster.shader&amp;quot; found in &amp;quot;C:\Users\slipher\Documents\My Games\Unvanquished\pkg/res-weapons_0.51.dpk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* In your operating system's settings you can associate the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; file extension with a zip archive browser such as 7-Zip to enable convenient inspection of paks ([[Formats/DPK|DPK]] packages make use of Zip format).&lt;br /&gt;
&lt;br /&gt;
* If you want to [[Filesystem#Creating your own package|create a new package]] rather than modify an existing one, set the cvar &amp;lt;code&amp;gt;fs_extrapaks&amp;lt;/code&amp;gt; to the package name. This forces your package to be loaded first, before &amp;lt;code&amp;gt;fs_basepak&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compatibility&amp;diff=8532</id>
		<title>Compatibility</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compatibility&amp;diff=8532"/>
		<updated>2023-11-24T05:10:49Z</updated>

		<summary type="html">&lt;p&gt;Killing time: unvanquished_src.dpkdir no longer a submodule&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inter-module compatibility =&lt;br /&gt;
&lt;br /&gt;
Unvanquished has many software components: engine binaries, based on the Daemon repository (client and server); gamelogic binaries, based on the Unvanquished repository (cgame and sgame); and various other files shipped in DPKs, which may be used by any of the binaries. Currently, all components are on a single release cycle. A given user normally has only one version of the client installed, but different servers may distribute differing versions of the other components via the auto-download mechanism. This means many different combinations of versions of the components are possible. It can be difficult to reason about which combinations will work correctly, and even which combinations ought to be allowed.&lt;br /&gt;
&lt;br /&gt;
In the rest of this article, &amp;quot;Unvanquished&amp;quot; refers to the eponymous Git repository, not the game.&lt;br /&gt;
&lt;br /&gt;
== Desired use cases ==&lt;br /&gt;
=== Use cases we want to support ===&lt;br /&gt;
* &amp;lt;b&amp;gt;Develop on next-release branch (e.g. &amp;lt;code&amp;gt;0.52.0/sync&amp;lt;/code&amp;gt;) of all repos (Daemon, Unvanquished)&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Develop on master branch of all repos&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Build client from latest master and connect to latest-release servers&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt; We should be able to play with everyone on a client with the latest bug fixes.&lt;br /&gt;
* &amp;lt;b&amp;gt;Build server from latest master and host with latest-release DPKs&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt; Likewise with a server.&lt;br /&gt;
* &amp;lt;b&amp;gt;Develop Unvanquished on master, using latest-release DPKs&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt; Development for simple cases should be accessible, not requiring &amp;lt;code&amp;gt;-pakpath&amp;lt;/code&amp;gt; flags etc. Compatibility with the latest-release &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; DPK doesn't need to be perfect; it's OK if there are a few warnings or slightly messed up things in the UI. But it should be usable for basic experimentation.&lt;br /&gt;
&lt;br /&gt;
=== Use cases we don't really care about ===&lt;br /&gt;
* &amp;lt;i&amp;gt;Using cgame and sgame built from different commits.&amp;lt;/i&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Per-repository guidance ==&lt;br /&gt;
&lt;br /&gt;
=== Daemon ===&lt;br /&gt;
&lt;br /&gt;
Adding or removing an IPC call must be done on the next-release branch.&lt;br /&gt;
&lt;br /&gt;
When developing Daemon master, you need to keep in mind compatibility with both the latest release and the current master of the gamelogic.&lt;br /&gt;
&lt;br /&gt;
=== Unvanquished ===&lt;br /&gt;
&lt;br /&gt;
Try to keep the submodule pointer to Daemon at a commits which is compatible with the Unvanquished commit containing them. We want to get a harmonious set of components when we do a recursive checkout of some Unvanquished commit.&lt;br /&gt;
&lt;br /&gt;
Changing the &amp;lt;code&amp;gt;playerState_t&amp;lt;/code&amp;gt; netcode is acceptable because the netcode table is stored in the gamelogic and we recommend always building cgame and sgame together.&lt;br /&gt;
&lt;br /&gt;
It's OK to put gameplay changes on master. As of May 2022, we have a nightly build server, so it would be nice to be able to test them there.&lt;br /&gt;
&lt;br /&gt;
=== *.dkpdir repos from UnvanquishedAssets ===&lt;br /&gt;
&lt;br /&gt;
There isn't a lot of precedent here. Probably it's best to do anything except bug fixes on a next-release branch. If possible, we want to avoid any situation where developers are required to use any unreleased stuff from these to get a working setup.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8531</id>
		<title>Tutorials/Modifying paks</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Modifying_paks&amp;diff=8531"/>
		<updated>2023-11-24T05:03:28Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Tips */ cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
When working on changes to Unvanquished game paks, it is inconvenient to work directly with the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; package file format (see [[Formats/DPK|DPK]]) used in production, since it is a [https://en.wikipedia.org/wiki/ZIP_(file_format) Zip] archive. Hence, the {{engine}} supports the &amp;lt;code&amp;gt;.dpkdir&amp;lt;/code&amp;gt; package directory format for working in the native filesystem. This article details a couple of possible workflows for development using a dpkdir.&lt;br /&gt;
&lt;br /&gt;
== Method 1: Quick and dirty modifications to an existing zipped package ==&lt;br /&gt;
&lt;br /&gt;
# Find the package you want to modify in the [[Filesystem#Pakpaths|pakpath]]. Let's say it's &amp;lt;code&amp;gt;res-weapons&amp;lt;/code&amp;gt; and the file is called &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Extract &amp;lt;code&amp;gt;res-weapons_0.51.dpk&amp;lt;/code&amp;gt; into a folder named &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt;. (&amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; is a [[Filesystem#Naming|version string]] which is arbitrary, but must be &amp;quot;greater&amp;quot; than &amp;lt;code&amp;gt;0.51&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;res-weapons_src.dpkdir&amp;lt;/code&amp;gt; should be in the same directory as the original dpk. &lt;br /&gt;
# Make your modifications inside the dpkdir directory tree.&lt;br /&gt;
# Start/restart the game. A &amp;lt;code&amp;gt;/devmap&amp;lt;/code&amp;gt; (map change) suffices—it is not necessary to restart the entire program.&lt;br /&gt;
&lt;br /&gt;
A disadvantage of this method: it is easy to forget to delete the dpkdir when you are done.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Working from the source Git repository ==&lt;br /&gt;
This section describes a workflow for working from source for the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
{{TODO|How well does this work with the other repositories under [https://github.com/UnvanquishedAssets UnvanquishedAssets]?}}&lt;br /&gt;
&lt;br /&gt;
# Check out the Git repository. If you have already [[Getting the source|checked out the &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; repository]], then the &amp;lt;code&amp;gt;unvanquished&amp;lt;/code&amp;gt; package source exists as a submodule located at &amp;lt;code&amp;gt;Unvanquished/pkg/unvanquished_src.dpkdir&amp;lt;/code&amp;gt;. Alternatively, you can check out any dpkdir repository directly.&lt;br /&gt;
# Ensure your repo is up to date:&amp;lt;pre&amp;gt;cd pkg/unvanquished_src.dpkdir&amp;amp;#10;git fetch origin &amp;amp;&amp;amp; git checkout origin/master&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Make your modifications in the directory tree of the Git repository.&lt;br /&gt;
# Launch Unvanquished, specifying the ''parent'' directory of the repository as a pakpath. Supposing you checked out the Unvanquished repository at &amp;lt;code&amp;gt;~/code/Unvanquished&amp;lt;/code&amp;gt;, the command might be &amp;lt;code&amp;gt;~/code/Unvanquished/build/daemon -pakpath ~/code/Unvanquished/pkg&amp;lt;/code&amp;gt;. Adding the pakpath requires a full restart, but subsequent pak reloads can be done via a map change.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* Use the &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; command in the in-game console to verify that files are being loaded from your dpkdir:&lt;br /&gt;
&lt;br /&gt;
 /which scripts/blaster.shader&lt;br /&gt;
 File &amp;quot;scripts/blaster.shader&amp;quot; found in &amp;quot;C:\Users\slipher\Documents\My Games\Unvanquished\pkg/res-weapons_0.51.dpk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* In your operating system's settings you can associate the &amp;lt;code&amp;gt;.dpk&amp;lt;/code&amp;gt; file extension with a zip archive browser such as 7-Zip to enable convenient inspection of paks ([[Formats/DPK|DPK]] packages make use of Zip format).&lt;br /&gt;
&lt;br /&gt;
* If you want to [[Filesystem#Creating your own package|create a new package]] rather than modify an existing one, set the cvar &amp;lt;code&amp;gt;fs_extrapaks&amp;lt;/code&amp;gt; to the package name. This forces your package to be loaded first, before &amp;lt;code&amp;gt;fs_basepak&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Hosting_one%27s_own_awesome_mod&amp;diff=8530</id>
		<title>Hosting one's own awesome mod</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Hosting_one%27s_own_awesome_mod&amp;diff=8530"/>
		<updated>2023-11-24T04:17:02Z</updated>

		<summary type="html">&lt;p&gt;Killing time: disconnect download was nuked&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|content=The page [[Server/Running]] provides extra information on server configuration.}}&lt;br /&gt;
&lt;br /&gt;
For now, it's only some notes, I'll improve over them later (soon enough).&lt;br /&gt;
&lt;br /&gt;
Building the dpk (additions to how to build mod):&lt;br /&gt;
&lt;br /&gt;
* with 7zip: &amp;lt;code&amp;gt;cd mod-&amp;lt;name&amp;gt;_src.dpkdir;  7z -tzip -mx=9 a ../mod-&amp;lt;name&amp;gt;_&amp;lt;version&amp;gt;.dpk .&amp;lt;/code&amp;gt;&lt;br /&gt;
* can simply depends on Unvanquished, the mod's content will be applied on top of Unvanquished's data&lt;br /&gt;
&lt;br /&gt;
To host a mod, one needs two types of software servers on the host machine:&lt;br /&gt;
&lt;br /&gt;
* an HTTP server (https does NOT work)&lt;br /&gt;
* daemonded&lt;br /&gt;
&lt;br /&gt;
Starting daemonded: &amp;lt;code&amp;gt;./daemonded -homepath server +exec server.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unvanquished provides it's own &amp;lt;code&amp;gt;maprotation.cfg&amp;lt;/code&amp;gt; file internally, which is used by default by provided file (&amp;lt;code&amp;gt;rotation1 { goto defaultRotation }&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Things to change in &amp;lt;code&amp;gt;config/server.cfg&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_hostname &amp;quot;my awesome server&amp;quot;&amp;lt;/code&amp;gt;: name displayed on server list&lt;br /&gt;
* &amp;lt;code&amp;gt;g_motd &amp;quot;my awesome mod&amp;quot;&amp;lt;/code&amp;gt;: what to display when people connect&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_allowdownload 1&amp;lt;/code&amp;gt;: must be 1, since people won't have your mod otherwise&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_dl_maxRate &amp;quot;1000&amp;quot;&amp;lt;/code&amp;gt;: seems pretty useless, related to UDP download, slow as hell anyway&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_wwwBaseURL &amp;quot;example.com/unvanquished/pkg&amp;quot;&amp;lt;/code&amp;gt;: where to find the files to download, do not put protocol&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_wwwDownload &amp;quot;1&amp;quot;&amp;lt;/code&amp;gt;: enable HTTP download (otherwise only slow UDP download will work)&lt;br /&gt;
* &amp;lt;code&amp;gt;sv_wwwFallbackURL &amp;quot;dl.unvanquished.net/pkg&amp;quot;&amp;lt;/code&amp;gt;: where to find packages you don't provide, a rather good idea, don't you think?&lt;br /&gt;
* &amp;lt;code&amp;gt;set fs_extrapaks mod-awesome&amp;lt;/code&amp;gt;: mods to load at startup, relative to pakpath (TODO: document), up to the first underscore (_), since text after is reserved to versioning and extension. Last version will (probably?) always be used.&lt;br /&gt;
&lt;br /&gt;
Last but not least, place in &amp;lt;code&amp;gt;example.com/unvanquished/pkg&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* the dpk files people will need&lt;br /&gt;
* a file named &amp;lt;code&amp;gt;PAKSERVER&amp;lt;/code&amp;gt; containing the text &amp;lt;code&amp;gt;ALLOW_UNRESTRICTED_DOWNLOAD&amp;lt;/code&amp;gt;, you can download a ready to use one [https://dl.unvanquished.net/pkg/PAKSERVER there].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/RoQ&amp;diff=8528</id>
		<title>Formats/RoQ</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/RoQ&amp;diff=8528"/>
		<updated>2023-11-21T00:06:57Z</updated>

		<summary type="html">&lt;p&gt;Killing time: 256x256 restriction doesn't apply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Formats]]&lt;br /&gt;
[[Category:Video]]&lt;br /&gt;
The RoQ video format is a legacy format inherited from legacy id Tech engines.&lt;br /&gt;
&lt;br /&gt;
{{Note|The RoQ format will be available starting with Dæmon 0.55.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
The only usage of RoQ videos in the {{engine}} is to be used on in-game surfaces using the {{code|videoMap}} material keyword.&lt;br /&gt;
&lt;br /&gt;
In practice any resolution is supported, as long as the dimensions are divisible by 16. The sound channel will be ignored.&lt;br /&gt;
&lt;br /&gt;
Here is a command to convert a given {{code|video.webm}} into a {{code|video.roq}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ffmpeg -i video.webm -an -vf scale=&amp;quot;256:256&amp;quot; -r 30 video.roq&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
The [https://wiki.multimedia.cx/index.php?title=RoQ Multimedia Wiki] says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;RoQ is a full motion video format originally developed for The 11th Hour by Graeme Devine. The format was later used as the FMV format for Quake III: Arena and derivative games.&lt;br /&gt;
&lt;br /&gt;
According to excerpts of Devine's 11th Hour development journal published in Wired at http://www.wired.com/wired/archive/3.08/shipping.html, the RoQ format was named after Devine's newborn daughter, Roqee. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [https://3dfxdev.net/edgewiki/index.php?title=ROQ_Videos Edge wiki] also says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;RoQ is a video file format that originated in The 11th Hour game. After Graeme Devine, the creator of the format joined id Software, the RoQ file format has been in use in every game the company has released such as Quake III, Return to Castle Wolfenstein and DOOM 3.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The format only supports 30 frames per second framerate. There is a space designated for FPS in the file header, but it is ignored by the reference implementation.&lt;br /&gt;
&lt;br /&gt;
About video resolution in predecessor engines, the Edge wiki says:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Videos may technically be up to 65520 x 65520 pixels with both dimensions divisible by 16 and produce a valid RoQ file, but none of id Software’s games will play back a video with dimensions that aren’t a power of two, most likely because of OpenGL’s texture sizing restrictions.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [https://openarena.fandom.com/wiki/RoQ OpenArena wiki] says that Quake Ⅲ was able to use video resolutions up to {{code|512×512}} for cinematic and that video resolution should not be greater than {{code|256×256}} to be played as an in-game surface with the {{code|videoMap}} material keyword. The {{engine}} doesn't support cinematic but supports the {{code|videoMap}} material keyword.&lt;br /&gt;
&lt;br /&gt;
The RoQ format supports mono, stereo, with 22050 Hz being the only rate supported, or the absence of any audio channel. We have no usage for RoQ sound in the {{engine}}.&lt;br /&gt;
&lt;br /&gt;
The ffmpeg video codec is {{code|roqvideo}} and the audio codec is {{code|roq_dpcm}}.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Launcher&amp;diff=8519</id>
		<title>Launcher</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Launcher&amp;diff=8519"/>
		<updated>2023-11-18T07:07:50Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Benefits of the launcher&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Unvanquished launcher}}&lt;br /&gt;
{{InfoDownloadLauncher}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Download the launcher==&lt;br /&gt;
&lt;br /&gt;
The {{launcher}} can be downloaded from the [https://unvanquished.net/download download page].&lt;br /&gt;
&lt;br /&gt;
==Free and libre software==&lt;br /&gt;
&lt;br /&gt;
The {{launcher}} is free and libre software and supports installing, updating and running the game on Linux, Windows and macOS.&lt;br /&gt;
&lt;br /&gt;
The source repository for the {{launcher}} is there : [https://github.com/Unvanquished/updater github.com/Unvanquished/updater].&lt;br /&gt;
&lt;br /&gt;
==Cross platform==&lt;br /&gt;
&lt;br /&gt;
The {{launcher}} is provided for Linux, Windows and macOS.&lt;br /&gt;
&lt;br /&gt;
==Benefits of the launcher==&lt;br /&gt;
&lt;br /&gt;
The most obvious benefit of using the launcher is that you immediately find out when there is a new release, and can acquire it with one click. Some additional nice things:&lt;br /&gt;
* Installing a release that you already have functions as a &amp;quot;repair&amp;quot; operation. If any files are missing or corrupted, the launcher detects this and redownloads them.&lt;br /&gt;
* Transfers less data: when downloading a new release, any packages reused from a previous release that you already have do not need to be downloaded again, unlike if you had used the [[universal zip]].&lt;br /&gt;
* (Linux and Windows) Installs &amp;lt;code&amp;gt;unv://&amp;lt;/code&amp;gt; protocol handler which works with the [https://unvanquished.net/servers web server list].&lt;br /&gt;
* (Linux and [TODO]Windows) Instructs the OS that the good GPU should be used, for those laptops that have dual Intel and Nvidia GPUs.&lt;br /&gt;
* (Mac) The downloaded executable won't have pesky &amp;quot;quarantine&amp;quot; attributes interfering with running it.&lt;br /&gt;
* (Windows) TODO: install firewall rules allowing LAN games to be played&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Universal_zip&amp;diff=8518</id>
		<title>Universal zip</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Universal_zip&amp;diff=8518"/>
		<updated>2023-11-18T06:45:16Z</updated>

		<summary type="html">&lt;p&gt;Killing time: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Unvanquished universal zip contains the Daemon engine binaries for all supported platforms, plus the DPK packages, for an Unvanquished release. &amp;quot;Universal&amp;quot; refers to the fact that it includes software for multiple operating systems and architectures. It is a reference archive primarily intended for archival. It is not recommended for users to run the game from the universal zip as it may lack convenient integration or may even not run if the operating system does not allow programs to run from random places.&lt;br /&gt;
&lt;br /&gt;
{{InfoDownloadLauncher}}&lt;br /&gt;
&lt;br /&gt;
However, the launcher may be unsupported for second-tier platforms such as 32-bit Linux, leaving the universal zip as the only option to acquire official binaries.&lt;br /&gt;
&lt;br /&gt;
Universal zips starting from Unvanquished version 0.17 can be found at https://dl.unvanquished.net/release/. Universal zips for more recent releases can also be found [https://github.com/Unvanquished/Unvanquished/releases on GitHub].&lt;br /&gt;
&lt;br /&gt;
The universal zip is produced by [https://github.com/Unvanquished/release-scripts/blob/master/make-unizip this script].&lt;br /&gt;
&lt;br /&gt;
As one of the installation steps, the {{launcher}} downloads the same set of files which are present in the universal zip to the installation directory. However, the source is a [https://en.wikipedia.org/wiki/BitTorrent torrent] rather than a zip file.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8517</id>
		<title>User:Killing time</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8517"/>
		<updated>2023-11-18T05:45:12Z</updated>

		<summary type="html">&lt;p&gt;Killing time: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.unvanquished.net/index.php?title=Special%3AAllPages&amp;amp;from=&amp;amp;to=&amp;amp;namespace=0&amp;amp;hideredirects=1 All Pages]&lt;br /&gt;
&lt;br /&gt;
== Integrating patches from freem's fork ==&lt;br /&gt;
Patch list from mod-deadbeef_0.54+6.dpk&lt;br /&gt;
{|&lt;br /&gt;
! Title&lt;br /&gt;
! Category&lt;br /&gt;
! Upstream&lt;br /&gt;
! Dep&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0001-AI-remove-skillset || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0002-fix-crash-if-using-BotActionFollow-on-a-disconnected || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0003-do-not-deprecate-glm-vec3-VEC2GLM-glm-vec3-v-yet || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0004-use-placement-new-for-gentities || || || || Seems incomplete as there is no destructor.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0005-remove-useless-newlines-in-Svcmd_EntityShow_f || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0006-BoundedVector-move-in-own-file-complete-API || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0007-create-a-map_entity_t-struct-in-own-header-file || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0008-glm-sg_spawn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0009-replace-trap_SetBrushModel-with-G_CM_SetBrushModel || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0010-respect-constness-of-things || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0011-style-and-G_Spawn-improved-error-report || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0012-replace-defines-by-enum-ent_version_t-remove-unused- || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0013-use-std-string-inside-G_ResolveEntityKeyword || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0014-G_FireEntityRandomly-G_FireEntity-G_HandleActCall-is || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0015-G_ModelIndex-takes-a-std-string || || || || StringRef would be better&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0016-remove-struct-gentityTargetChoice_t-from-sg_entities || || || 0014 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0017-G_NewString-no-longer-uses-BG_Alloc || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0018-gentityCallDefinition_t-name-is-a-const-char || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0019-turn-gentityCallDefinition_t-name-into-std-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0020-mapEntity_t-names-are-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0021-mapEntity_t-groupName-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0022-mapEntity_t-message-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0023-mapEntity_t-model-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0024-mapEntity_t-model2-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0025-mapEntity_t-shaderKey-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0026-mapEntity_t-shaderReplacement-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0027-gentity_t-classname-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0028-gentityCallDefinition_t-action-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0029-make-gentityCallDefinition_t-safer-and-compact-it || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0030-make-mapEntity_t-targets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0031-make-mapEntity_t-calltargets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0032-remove-useless-empty-calltarget-target || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0033-finish-half-baked-botTarget_t-interface || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0034-add-botMemory_t-hasEnemy || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0035-finish-half-baked-GentityRef_impl || || || || Implementation of get() is just wrong&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0036-more-static-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0037-Rewrite-BotSearchForEnemy-to-use-a-std-vector || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0038-GMP-optionally-do-not-regenerate-if-there-is-OM || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0039-AI-add-g_bot_medistatDistance-to-fine-tune-medistati || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0040-HUD-Draw-time-to-completion-for-buildings-in-constru || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0041-Refactor-EV_NO_SPAWNS-to-EV_MAIN_REPORTS_NO_SPAWNS-f || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0042-HUD-Implement-a-base-status-HUD-element || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0043-HUD-Show-construction-time-with-ghost-buildables || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0044-MOD-give-a-repeatRate-option-to-upgrades || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0045-remove-duplicated-alertedToEnemy-from-alien-BTs || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0046-AI-humans-do-not-know-how-to-flee-from-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0047-BotActionBuy-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0048-BT-add-percentSkill-condition || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0049-MAP-support-target_force_win-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0050-MAP-support-targetname3-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0051-BT-implement-action-reload || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0052-BT-add-condition-weaponIsReady || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0053-merge-as-many-.-Attributes_t-stuff-as-possible-into- || || || || I dislike it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0054-move-.-_RANGE-variables-into-weaponAttributes_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0055-give-abuildupg-weapon-the-entries-it-needs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0056-move-abuilder-upg-spit-configuration-in-right-file || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0057-remove-per-melee-weapon-width-height-damage-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0058-remove-dretch-specific-variables-in-favor-of-weaponA || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0059-move-painsaw-and-mantis-specifics-into-FireMelee || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0060-allow-to-spawn-with-a-gun-class-in-devmap || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0061-remove-most-shotgun-specific-variables || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0062-remove-SMG-RIFLE-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0063-remove-CHAINGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0064-remove-MDRIVER-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0065-remove-LASGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0066-MOD-make-doKnockback-a-weapon-attr-entry-as-for-miss || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0067-move-BG_MeansOfDeathByName-into-bg_parse.cpp-static || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0068-add-a-minimal-BG_BoundingBox-for-class_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0069-code-deduplication-style-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0070-AI-aliens-fight-back-at-saner-dist-400qu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0071-AI-aliens-flee-reliably || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0072-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0073-AI-aliens-go-grab-poison || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0074-more-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0075-AI-humans-do-not-repair-in-heat-of-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0076-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0077-AI-human-bots-try-to-keep-distance-with-enemy-buildi || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0078-AI-human-bots-try-to-repair-every-15s || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0079-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0080-BotTargetInAttackRange-use-correct-maxs-height || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0081-sg_admin.cpp-add-missing-include || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0082-bot-cpp-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0083-MOD-weapons-cfg-can-change-means-of-death-like-missi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0084-rcFilterGaps-walkableRadius-2-is-walkable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0085-CMD-remove-bots-from-listplayers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0086-move-spawning-level-vars-out-of-global-scope || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0087-migrate-a-bunch-of-API-to-glm || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0088-sever-links-with-CBSE || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0089-make-gentity_t-entity-a-std-unique_ptr || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0090-BG_PlayerStateToEntityState-remove-useless-arg || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0091-DOC-add-HOSTING-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0092-DOC-add-PACKAGING-file-without-the-mod-section || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0093-DOC-add-LAYOUTS-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0094-DOC-add-info-about-nexe-file-names-in-PACKAGING || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0095-PM_AddTouchEnt-PM_ClipVelocity-constness || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0096-meansOfDeath_t-is-not-an-int || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0097-mitigate-BotTargetIsVisible-crash-for-coordinate-tar || bot || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0098-glm-G_UnlaggedOn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0099-remove-unused-G_FindClosestEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0100-glm-Beacon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0101-unify-BG_BoundingBox-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0102-glm-sg_buildable.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0103-glm-sg_buildpoints.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0104-glm-sg_client.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0105-glm-sg_cmds.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0106-glm-Beacon.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0107-glm-sg_buildable.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0108-glm-sg_client.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0109-glm-sg_combat.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0110-glm-sg_missile.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0111-glm-sg_utils.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0112-glm-sg_weapon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0113-remove-duplicated-trap_SetConfigstringRestrictions-p || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0114-replace-some-trap_-calls-with-G_CM_-equiv || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0115-remove-unused-G_CM_ClipToEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0116-remove-silly-function || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0117-glm-sg_physics.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0118-glm-sg_admin.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0119-sg_cm_world.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0120-sg_spawn_mover.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0121-G_MoverGroup-cleanup-beware-non-trivial-clean || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0122-glm-G_KillBrushModel-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0123-glm-G_TryPushingEntity || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0124-glm-sg_active.cpp-P_DamageFeedback || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0125-glm-sg_active.cpp-ClientShove || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0126-glm-sg_active.cpp-PushBot || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0127-glm-sg_active.cpp-G_TouchTriggers || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0128-glm-sg_active.cpp-BeaconAutoTag || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0129-glm-sg_active.cpp-ClientTimerActions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0130-glm-sg_active.cpp-ClientEvents || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0131-glm-sg_active.cpp-G_UnlaggedOff || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0132-glm-sg_active.cpp-G_UnlaggedDetectCollisions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0133-glm-sg_active.cpp-ClientThink_real || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0134-glm-sg_main.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0135-glm-remaining-components-for-the-vec3_t-at-least || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0136-glm-unlagged_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0137-glm-buildLog_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0138-glm-clientPersistant_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0139-glm-sg_spawn.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0140-glm-g_client_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0141-glm-sgame-components-HealthComponent.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0142-move-gentity_t-animation-into-map_entity.h-glm-vec4 || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0143-glm-gentity_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0144-sgame-VEC2GLM-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0145-sgame-codestyle || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0146-sg_cm_world.cpp-cleanup-hopefully || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0147-glm-trace-in-cgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0148-glm-trace-by-return-sgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0149-glm-trace-API-by-return-shared || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0150-fix-activate-entities-not-being-triggered-when-playe || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0151-do-not-prevent-building-a-unique-if-the-current-one- || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0152-glm-BG_EvaluateTrajectory-BG_EvaluateTrajectoryDelta || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0153-bots-invert-check-if-a-healing-source-is-horizontall || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0154-Implement-default-navgen-config-applies-to-all-maps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0155-Invalidate-GentityRef-on-player-death || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0156-dretch-and-mantis-bots-attack-enemies-while-wall-cli || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0157-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0158-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0159-translation-ship-them-even-if-incomplete || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0160-rmlui-implement-standard-b-i-em-tags || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0161-rmlui-implement-custom-web-tag-for-common-unvanquish || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0162-rmlui-implement-standard-ul-li-tag || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0163-ui-rewrite-gampelay-guide-and-developer-message-with || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0164-ui-add-option-for-cg_marks || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0165-presets-graphics-disable-marks-in-lowest-profile || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0166-cg_rocket_draw-support-emoticons-in-map-and-author-n || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0167-ui-fix-endline-in-RML-translatable-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0168-utils-generate_rml_pot-escape-double-quotes-when-wri || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0169-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0170-Incrementally-update-server-list-hacky-way || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0171-Fix-refreshing-internet-server-list-after-local || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0172-Improve-incremental-server-list-population || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0173-Remove-unused-enum-constant-BF_POWER || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0174-Properly-destroy-entity-when-reverting-construction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0175-Fix-buildlog-see-more-message || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0176-Don-t-use-in-place-StripColors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0177-improve-bot-lcannon-handling-do-not-always-charge-to || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0178-Fix-ADMBP-buffer-overflows || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0179-Avoid-double-newlines-on-ADMBP-buffer-split || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0180-Bump-submodules-daemon-RmlUi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0181-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0182-Nit-use-BOT_DEFAULT_BEHAVIOR-constant || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0183-Remove-too-spammy-cg_showmiss-log || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0184-Convert-cg_showmiss-to-a-logger-cgame.prediction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0185-Don-t-localize-sounds-incorrectly-in-third-person || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0186-sync-submodules || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0187-use-g_fillBotsTeamVotesPercent-again-2777 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0188-fix-bug-in-bot-behavior-function-percentClips-2776 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0189-Enable-missile-config-bad-token-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0190-Remove-unused-entity-field-flight-splash-damage || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0191-Get-buildable-explosion-parameters-from-attrs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0192-Document-missile-splash-damage-parameters || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0193-Unused-missile-attribute-spriteCharge || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0194-Unused-missile-attribute-rotates || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0195-Unused-missile-attribute-renderfx || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0196-Unused-missile-attribute-impactFlightDir || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0197-complete-botTarget_t-even-more-gentity_t-ref-support || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0198-AI-know-about-all-friendly-buildings || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0199-AIEntityToGentity-checks-reachability-for-allied-stu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0200-rewrite-G_NewCallDefinition-again || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0201-g_admin_level_t-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0202-do-not-memset-non-PoD || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0203-bg_parse.cpp-do-not-confuse-types || || || || cleans up a bsearch, but better std::lower_bound&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0204-silence-conditional-uninitialized || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0205-FOFS-is-offsetof || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0206-fix-Wcomma || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0207-remove-unused-macros || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0208-use-static-when-possible || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0209-define-missing-ctors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0210-fix-sign-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0211-fix-Wtautological-unsigned-enum-zero-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0212-update-deps-daemon-rmlui-to-warn-less || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0213-add-a-script-to-prepare-release || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0214-pkg-unvanquished_src.dpkdir-is-no-longer-a-submodule || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0215-minor-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0216-G_IterateCallEndpoints-uses-a-reference-instead-of-p || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0217-include-changelog-file-in-welcome-page || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0218-fix-recast-limiting-number-rc_layers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0219-GMP-give-a-1s-repeatrate-to-grenades-and-firebomb || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0220-do-not-gitignore-buildable-folder || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0221-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0222-GMP-allow-big-aliens-to-attack-medistation-at-any-an || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0223-remove-dead-botTeam-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0224-make-release.sh-stop-if-build-failed || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0225-release.sh-now-stores-patches-in-a-tarball || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0226-fix-loads-of-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0227-Add-g_bot_traceClient-for-BT-debugging || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0228-readme-add-help-for-submodule-method-of-working || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0229-Warning-fix-macro-redefinition-of-AS_OVER_RT3 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0230-BotActionFight-fix-wrong-comment || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0231-inspired-from-Don-t-give-spectators-WP_ALEVEL0 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0232-Nuke-bisphere-trace-gamelogic-fallout || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0233-Bots-forbid-actions-while-dead || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0234-Debug-draw-fix-DU_DRAW_QUADS-mode || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0235-Define-lifetime-attribute-in-missile-configs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0236-Fix-intermittently-disappearing-mara-zaps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0237-repair-shader-replacement-entities || || #2806 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0238-fix-func_desctructable-not-being-linked-on-reset || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0239-GMP-corpses-do-not-block-movers || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0240-HUD-dmg-feedback-on-movers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0241-glm-VectorCopy-in-sg_spawn_mover.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0242-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0243-give-can-give-mantis-staminaDrain || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0244-Implement-the-Biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0245-make-bots-buy-the-biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0246-Biokit-changes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0247-Sudden-Death || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0248-show-g_maxMiners-value-in-teamstatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0249-random-building-for-bots || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0250-bugfix-bots-build-drill-leech-even-when-BP-are-negat || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0251-bot-tactic-menu || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0252-complete-refill-for-clip-weapons-even-the-current-cl || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0253-force-weapon-change-on-ammo-refill || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0254-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0255-update-the-MOTD-when-the-cvar-is-changed || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0256-scoreboard-layout-changes || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0257-voting-improvements-add-colours-and-formatting || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0258-do-not-crash-if-a-sound-is-unknown || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0259-release.sh-also-generates-changelog-for-debug-purpos || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0260-warn-when-game-should-be-ended-by-an-event || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0261-do-not-disable-cg_drawentity-when-map-has-fog || debug || || || Seems to be missing a piece (unused 'scan')&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0262-traditional-is-not-deprecated || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0263-say-the-original-value-when-trigger_heal-have-negati || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0264-TMP-give-bbox-info-of-entities-don-t-remove-orphan-b || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0265-Revert-rmlui-implement-standard-ul-li-tag || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0266-CFG-sane-default-config-for-bots || bots || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Reformatting_the_source&amp;diff=8495</id>
		<title>Reformatting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Reformatting_the_source&amp;diff=8495"/>
		<updated>2023-11-04T23:21:48Z</updated>

		<summary type="html">&lt;p&gt;Killing time: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Daemon and Unvanquished repositories suffer from differing code style conventions and fractally varying choice of indentation (spaces vs. tabs). The inconsistency is a constant source of friction for developers.&lt;br /&gt;
I (slipher) propose that we may reformat the source code (in one big commit) if we have all of the following:&lt;br /&gt;
&lt;br /&gt;
# Whitespace-ignoring replacements for 'git diff' and 'git blame'&lt;br /&gt;
# A configuration file for some cross-platform formatting tool which produces satisfying results&lt;br /&gt;
# Instructions on how to install the formatting tool&lt;br /&gt;
# A script to rewrite a chain of commits using the formatting tool (for use with unmerged branches)&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;p&amp;gt;freem suggests a method for configuring git blame to ignore a particular commit:&lt;br /&gt;
#* https://www.moxio.com/blog/43/ignoring-bulk-change-commits-with-git-blame&lt;br /&gt;
#* https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revltrevgt&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Here is a [https://github.com/slipher/source-tools/blob/master/wsdiff.sh prototype Bash script] for doing a whitespace-ignoring invocation of git diff, which works by plugging into Git as an [https://git-scm.com/docs/git#Documentation/git.txt-codeGITEXTERNALDIFFcode external diff tool] and processing both sides of the diff with clang-format. It is probably a bad idea to use it without specifying specific paths, since in that case, if used across the reformatting commit, it will have to process every source file in the tree. {{TODO|See how slow that really is.}}&amp;lt;/p&amp;gt;&lt;br /&gt;
# WIP: https://github.com/Unvanquished/Unvanquished/pull/2622&lt;br /&gt;
# ?&lt;br /&gt;
# ?&lt;br /&gt;
&lt;br /&gt;
== Areas requiring special attention ==&lt;br /&gt;
&lt;br /&gt;
Some people have noted difficulties with autoformatters and lambda functions. [https://github.com/Unvanquished/Unvanquished/blob/master/src/cgame/cg_api.cpp cg_api.cpp] is one file with a lot of lambdas.&lt;br /&gt;
&lt;br /&gt;
We should consider if we want to preserve formatting of tables such as &amp;lt;code&amp;gt;fields&amp;lt;/code&amp;gt; (for map entities) in [https://github.com/Unvanquished/Unvanquished/blob/master/src/sgame/sg_spawn.cpp sg_spawn.cpp].&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=UI/LibRocket_bugs&amp;diff=8494</id>
		<title>UI/LibRocket bugs</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=UI/LibRocket_bugs&amp;diff=8494"/>
		<updated>2023-11-04T23:14:57Z</updated>

		<summary type="html">&lt;p&gt;Killing time: comment on current status of most bugs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OutOfDate}}&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
&lt;br /&gt;
{{TODO|Check if those issues still exists, if yes report them on issue tracker and delete this page once everything is reported.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;r_gamma does not affect UI&amp;lt;/s&amp;gt; Not desired. When I use r_gamma to compensate for an overly dark map I don't want it to fuck up the UI.&lt;br /&gt;
* &amp;lt;s&amp;gt;borders are shady.  Sometimes they simply don't appear&amp;lt;/s&amp;gt; Not seeing this as of 2023&lt;br /&gt;
* &amp;lt;s&amp;gt;objects 'jiggle' around when their class (eg :hover activated) changes, even though their size should not change.&amp;lt;/s&amp;gt; Not seeing this of 2023&lt;br /&gt;
* &amp;lt;s&amp;gt;causes wincing pain&amp;lt;/s&amp;gt; Sounds like a you problem&lt;br /&gt;
&lt;br /&gt;
Sound:&lt;br /&gt;
* &amp;lt;s&amp;gt;sound loops from the last game keep playing in the loadscreen&amp;lt;/s&amp;gt; Not seeing this as of 2023&lt;br /&gt;
&lt;br /&gt;
Internal:&lt;br /&gt;
* rocketDebug does not work for HUD &amp;lt;- https://github.com/Unvanquished/Unvanquished/pull/1845 is an abandoned effort to get the debugger working again&lt;br /&gt;
* ui_restart causes crashes &amp;lt;- I guess the modern equivalent is reloadHud? Needs testing&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;select&amp;amp;gt; Drop-down menus:&lt;br /&gt;
* large lists can go off-screen&lt;br /&gt;
* &amp;lt;s&amp;gt;misinterpret mouse coords (sometimes) and highlight/select the wrong entry&amp;lt;/s&amp;gt; Not seeing this of 2023&lt;br /&gt;
&lt;br /&gt;
Game start:&lt;br /&gt;
* &amp;lt;s&amp;gt;Errors in RML/CSS cause silent failures -&amp;gt; crash (sometimes)&amp;lt;/s&amp;gt; Not seeing this as of 2023&lt;br /&gt;
&lt;br /&gt;
Match start:&lt;br /&gt;
* various HUD files are 'flashed' for a frame [fixed] &amp;lt;- despite this being labeled [fixed] long ago, I recently fixed an instance of this in 2023 (c4dd3db81). Still not sure if all cases are fixed &lt;br /&gt;
&lt;br /&gt;
Match load:&lt;br /&gt;
* &amp;lt;s&amp;gt;mouse cursor visible and locked to top-left corner&amp;lt;/s&amp;gt; We just did a bunch of work on ensuring the right kind of cursor is displayed at the right time. Should be fixed&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8493</id>
		<title>Maps</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8493"/>
		<updated>2023-11-03T21:04:22Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Add Repositories section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Maps]]&lt;br /&gt;
&lt;br /&gt;
== Map repositories ==&lt;br /&gt;
&lt;br /&gt;
Places you can download DPKs or source repositories for various maps.&lt;br /&gt;
&lt;br /&gt;
=== Ready-to-play DPKs for Unvanquished ===&lt;br /&gt;
&lt;br /&gt;
All of the URLs here are HTTP servers used to provide automatic downloads when a player connects to a server but lacks a needed pak, so they will have other kinds of paks besides maps. You can find these URLs by setting &amp;lt;code&amp;gt;/logs.level.client.pakDownload debug&amp;lt;/code&amp;gt; in the console and connecting to a server while missing a pak, then looking for the console line starting &amp;lt;code&amp;gt;Debug: Checking for PAKSERVER in &amp;lt;/code&amp;gt;. The rest of the line is the download base URL.&lt;br /&gt;
&lt;br /&gt;
Excluding the &amp;quot;official&amp;quot; maps in the Unvanquished release, the vast majority of available maps were originally made for Tremulous or other games. The owners of servers mentioned here have generally done some testing and touch-ups to ensure the maps work correctly in Unvanquished, but not everything works 100%.&lt;br /&gt;
&lt;br /&gt;
* Official maps: https://dl.unvanquished.net/pkg/&lt;br /&gt;
* Maps from the server &amp;quot;Map&amp;amp;Bot Testing EU&amp;quot; run by Sweet: https://users.unvanquished.net/~sweet/pkg/. 350 maps as of November 2023.&lt;br /&gt;
* Maps from the server &amp;quot;deadbeef&amp;quot; run by bmorel: http://deadbeef.fr/unvanquished/. 313 maps as of November 2023. Has a directory with [[Levelshot|levelshots]].&lt;br /&gt;
&lt;br /&gt;
=== Tremulous maps in original form (.pk3) ===&lt;br /&gt;
&lt;br /&gt;
You can also find a bunch of maps from Tremulous: [https://dl.unvanquished.net/mercenaries-guild/public_html/maps/].&lt;br /&gt;
Despite this link being on official's Unvanquished's server, those are *not* officially supported and require modifications to be played. If you are lucky, you can get them working (locally) by simply renaming them in your own unvanquished/pkg folder like this: {{code|map-${name}_${version}.dpk}}.&lt;br /&gt;
And despite all this, there is no guarantee those will work, and even less that they'll be bug-free.&lt;br /&gt;
&lt;br /&gt;
Feel free to meet us on [https://unvanquished.net/chat/] to ask what needs to be done to have those more widely used by server owners!&lt;br /&gt;
&lt;br /&gt;
=== Source repositories ===&lt;br /&gt;
&lt;br /&gt;
Git repositories with sources (.map files). For mappers and project maintainers. Must be built with NetRadiant or Urcheon to be playable.&lt;br /&gt;
&lt;br /&gt;
* Official maps are in the [https://github.com/UnvanquishedAssets UnvanquishedAssets] organization on Github. The map &amp;lt;code&amp;gt;$mapname$&amp;lt;/code&amp;gt; can be found at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://github.com/UnvanquishedAssets/map-$mapname$_src.dpkdir&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://github.com/InterstellarOasis/InterstellarOasis Interstellar Oasis] is a collection of &amp;quot;first-class&amp;quot; source ports by illwieckz of Tremulous maps. These are unofficial maps, but the work is done by one of the Unvanquished project heads.&lt;br /&gt;
* [https://github.com/Masmblr?tab=repositories Masmblr's Github] has source repositories for 26 Tremulous maps created by himself.&lt;br /&gt;
&lt;br /&gt;
==Official Unvanquished Maps==&lt;br /&gt;
&lt;br /&gt;
These maps are distributed with the default installation&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Antares'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Antares}}&lt;br /&gt;
|[[File:antares.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Chasm'''&lt;br /&gt;
* Two route design&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Outside area&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Chasm}}&lt;br /&gt;
|[[File:Levelshots-Snowstation-b4.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Forlorn'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Forlorn}}&lt;br /&gt;
|[[File:Forlorn.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Parpax'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Many branching paths&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Elevators&lt;br /&gt;
by Viech&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Parpax}}&lt;br /&gt;
|[[File:Levelshots-Parpax_compressed.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Perseus'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Perseus}}&lt;br /&gt;
|[[File:Perseus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Platform 23'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Replacement for ATCS&lt;br /&gt;
* Two route design&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Plat23}}&lt;br /&gt;
|[[File:Levelshots-Plat23-b11.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Spacetracks'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Many Elevators&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Spacetracks}}&lt;br /&gt;
|[[ File:Levelshots-Spacetracks-r1.jpg |400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Station15'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
* Elevators&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Station15}}&lt;br /&gt;
|[[File:Levelshots-Station15-r1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Thunder'''&lt;br /&gt;
* Very large&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Thunder}}&lt;br /&gt;
|[[File:Levelshot-thunder.jpeg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Vega'''&lt;br /&gt;
* Large&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Vega}}&lt;br /&gt;
|[[File:vega.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Yocto'''&lt;br /&gt;
* Vertical&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Yocto}}&lt;br /&gt;
|[[File:Levelshot-Yocto-b1a.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Gentrified Maps=&lt;br /&gt;
&lt;br /&gt;
Maps that were born in Tremulous.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''.:U.T:C.S:.'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Two route design&lt;br /&gt;
* Small&lt;br /&gt;
&lt;br /&gt;
{{Subpage|UTCS}}&lt;br /&gt;
| [[File:Levelshot-Utcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Arachnid 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Arachnid}}&lt;br /&gt;
| [[File:Levelshots-Arachnid2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Beyond Derelict'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
by Danny &amp;quot;Megabite&amp;quot; Marcus&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Derelict}}&lt;br /&gt;
|[[File:Levelshots-Derelict.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Karith Station 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Outside area&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
* Elevators&lt;br /&gt;
by Godmil&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Karith}}&lt;br /&gt;
|[[File:Levelshots-Karith.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| '''Meep'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
By Catalyc&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Meep}}&lt;br /&gt;
|[[File:Levelshots-Meep.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Methane (beta 1)'''&lt;br /&gt;
* Large&lt;br /&gt;
* Vertically complex&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Methane}}&lt;br /&gt;
|[[File:Levelshots-Methane-beta1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nano!'''&lt;br /&gt;
* Very Small&lt;br /&gt;
* Symmetrical&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nano}}&lt;br /&gt;
|[[File:Levelshots-Nano.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nexus 6'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nexus}}&lt;br /&gt;
|[[File:Levelshots-Nexus6.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Niveus : Outpost 652'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Niveus}}&lt;br /&gt;
|[[File:Levelshots-Niveus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Orion I - communication ship (beta 2)'''&lt;br /&gt;
* Varied rooms, corridors and layers with some vents&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Xenom[GER]&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Orion}}&lt;br /&gt;
|[[File:Levelshots-Orion.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Procyon - '''&lt;br /&gt;
* Varied rooms, corridors and layers and vents&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Procyon}}&lt;br /&gt;
|[[File:Levelshots-procyon.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Sirius - '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Sirius}}&lt;br /&gt;
|[[File:Levelshots-sirius.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Tremor'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Large rooms and corridors&lt;br /&gt;
* Crawl spaces (underground section)&lt;br /&gt;
by Vedacon&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Tremor}}&lt;br /&gt;
|[[File:Levelshots-Tremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Uranium124 '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Small sized&lt;br /&gt;
by CoderNem&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Uranium124}}&lt;br /&gt;
|[[File:Levelshots-uranium124.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==community maps==&lt;br /&gt;
&lt;br /&gt;
Maps produced (and not already listed) by the community which are known to work for unvanquished, for both tremulous and unvanquished.&lt;br /&gt;
&lt;br /&gt;
Licences of images is the same as the map itself, this will be updated later.&lt;br /&gt;
This section have lot of things to do, including adding author's names, licencing informations, simple map descriptions, etc.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''area3'''&lt;br /&gt;
|[[File:Levelshots-area3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''atcshd'''&lt;br /&gt;
|[[File:Levelshots-atcshd.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ctcs'''&lt;br /&gt;
|[[File:Levelshots-ctcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''dretchstorm'''&lt;br /&gt;
|[[File:Levelshots-dretchstorm.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''fortification'''&lt;br /&gt;
|[[File:Levelshots-fortification.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hamunaptra'''&lt;br /&gt;
|[[File:Levelshots-hamunaptra.png|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hangar28'''&lt;br /&gt;
|[[File:Levelshots-hangar28.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''jota'''&lt;br /&gt;
|[[File:Levelshots-jota.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''openfield'''&lt;br /&gt;
|[[File:Levelshots-openfield.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''peorongateb3'''&lt;br /&gt;
|[[File:Levelshots-peorongateb3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ptcs2'''&lt;br /&gt;
|[[File:Levelshots-ptcs2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''rsmse'''&lt;br /&gt;
|[[File:Levelshots-rsmse.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''stahl'''&lt;br /&gt;
|[[File:Levelshots-stahl.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''terminus'''&lt;br /&gt;
|[[File:Levelshots-terminus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''transit'''&lt;br /&gt;
|[[File:Levelshots-transit.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''uncreation'''&lt;br /&gt;
|[[File:Levelshots-uncreation.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''urbanp2'''&lt;br /&gt;
|[[File:Levelshots-urbanp2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''usstremor'''&lt;br /&gt;
|[[File:Levelshots-usstremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Levelshot&amp;diff=8492</id>
		<title>Levelshot</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Levelshot&amp;diff=8492"/>
		<updated>2023-11-03T20:51:13Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Created page with &amp;quot;A &amp;lt;em&amp;gt;levelshot&amp;lt;/em&amp;gt; is the image displayed fullscreen in the game while a map is loading. Unvanquished game code expects the levelshot image file at the (extension-independen...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;lt;em&amp;gt;levelshot&amp;lt;/em&amp;gt; is the image displayed fullscreen in the game while a map is loading. Unvanquished game code expects the levelshot image file at the (extension-independent) path &amp;lt;code&amp;gt;meta/$mapname$/$mapname$&amp;lt;/code&amp;gt; in the VFS. Conventionally, a levelshot is based on a screenshot of some part of the map.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8491</id>
		<title>Maps</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8491"/>
		<updated>2023-11-03T18:27:00Z</updated>

		<summary type="html">&lt;p&gt;Killing time: use level 2 headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Maps]]&lt;br /&gt;
There is an unofficial (but still led by one of unvanquished's fellow and main developpers) effort to port a number of tremulous maps [https://github.com/InterstellarOasis/InterstellarOasis].&lt;br /&gt;
&lt;br /&gt;
You can also find a bunch of maps from tremulous [https://dl.unvanquished.net/mercenaries-guild/public_html/maps/].&lt;br /&gt;
Despite this link being on official's Unvanquished's server, those are *not* officially supported and require modifications to be played. If you are lucky, you can get them working (locally) by simply renaming them in your own unvanquished/pkg folder like this: {{code|map-${name}_${version}.dpk}}.&lt;br /&gt;
And despite all this, there is no guarantee those will work, and even less that they'll be bug-free.&lt;br /&gt;
&lt;br /&gt;
Feel free to meet us on [https://unvanquished.net/chat/] to ask what needs to be done to have those more widely used by server owners!&lt;br /&gt;
&lt;br /&gt;
==Official Unvanquished Maps==&lt;br /&gt;
&lt;br /&gt;
These maps are distributed with the default installation&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Antares'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Antares}}&lt;br /&gt;
|[[File:antares.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Chasm'''&lt;br /&gt;
* Two route design&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Outside area&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Chasm}}&lt;br /&gt;
|[[File:Levelshots-Snowstation-b4.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Forlorn'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Forlorn}}&lt;br /&gt;
|[[File:Forlorn.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Parpax'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Many branching paths&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Elevators&lt;br /&gt;
by Viech&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Parpax}}&lt;br /&gt;
|[[File:Levelshots-Parpax_compressed.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Perseus'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Perseus}}&lt;br /&gt;
|[[File:Perseus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Platform 23'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Replacement for ATCS&lt;br /&gt;
* Two route design&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Plat23}}&lt;br /&gt;
|[[File:Levelshots-Plat23-b11.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Spacetracks'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Many Elevators&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Spacetracks}}&lt;br /&gt;
|[[ File:Levelshots-Spacetracks-r1.jpg |400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Station15'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
* Elevators&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Station15}}&lt;br /&gt;
|[[File:Levelshots-Station15-r1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Thunder'''&lt;br /&gt;
* Very large&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Thunder}}&lt;br /&gt;
|[[File:Levelshot-thunder.jpeg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Vega'''&lt;br /&gt;
* Large&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Vega}}&lt;br /&gt;
|[[File:vega.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Yocto'''&lt;br /&gt;
* Vertical&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Yocto}}&lt;br /&gt;
|[[File:Levelshot-Yocto-b1a.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Gentrified Maps=&lt;br /&gt;
&lt;br /&gt;
Maps that were born in Tremulous.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''.:U.T:C.S:.'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Two route design&lt;br /&gt;
* Small&lt;br /&gt;
&lt;br /&gt;
{{Subpage|UTCS}}&lt;br /&gt;
| [[File:Levelshot-Utcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Arachnid 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Arachnid}}&lt;br /&gt;
| [[File:Levelshots-Arachnid2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Beyond Derelict'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
by Danny &amp;quot;Megabite&amp;quot; Marcus&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Derelict}}&lt;br /&gt;
|[[File:Levelshots-Derelict.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Karith Station 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Outside area&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
* Elevators&lt;br /&gt;
by Godmil&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Karith}}&lt;br /&gt;
|[[File:Levelshots-Karith.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| '''Meep'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
By Catalyc&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Meep}}&lt;br /&gt;
|[[File:Levelshots-Meep.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Methane (beta 1)'''&lt;br /&gt;
* Large&lt;br /&gt;
* Vertically complex&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Methane}}&lt;br /&gt;
|[[File:Levelshots-Methane-beta1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nano!'''&lt;br /&gt;
* Very Small&lt;br /&gt;
* Symmetrical&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nano}}&lt;br /&gt;
|[[File:Levelshots-Nano.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nexus 6'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nexus}}&lt;br /&gt;
|[[File:Levelshots-Nexus6.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Niveus : Outpost 652'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Niveus}}&lt;br /&gt;
|[[File:Levelshots-Niveus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Orion I - communication ship (beta 2)'''&lt;br /&gt;
* Varied rooms, corridors and layers with some vents&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Xenom[GER]&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Orion}}&lt;br /&gt;
|[[File:Levelshots-Orion.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Procyon - '''&lt;br /&gt;
* Varied rooms, corridors and layers and vents&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Procyon}}&lt;br /&gt;
|[[File:Levelshots-procyon.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Sirius - '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Sirius}}&lt;br /&gt;
|[[File:Levelshots-sirius.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Tremor'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Large rooms and corridors&lt;br /&gt;
* Crawl spaces (underground section)&lt;br /&gt;
by Vedacon&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Tremor}}&lt;br /&gt;
|[[File:Levelshots-Tremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Uranium124 '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Small sized&lt;br /&gt;
by CoderNem&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Uranium124}}&lt;br /&gt;
|[[File:Levelshots-uranium124.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==community maps==&lt;br /&gt;
&lt;br /&gt;
Maps produced (and not already listed) by the community which are known to work for unvanquished, for both tremulous and unvanquished.&lt;br /&gt;
&lt;br /&gt;
Licences of images is the same as the map itself, this will be updated later.&lt;br /&gt;
This section have lot of things to do, including adding author's names, licencing informations, simple map descriptions, etc.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''area3'''&lt;br /&gt;
|[[File:Levelshots-area3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''atcshd'''&lt;br /&gt;
|[[File:Levelshots-atcshd.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ctcs'''&lt;br /&gt;
|[[File:Levelshots-ctcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''dretchstorm'''&lt;br /&gt;
|[[File:Levelshots-dretchstorm.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''fortification'''&lt;br /&gt;
|[[File:Levelshots-fortification.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hamunaptra'''&lt;br /&gt;
|[[File:Levelshots-hamunaptra.png|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hangar28'''&lt;br /&gt;
|[[File:Levelshots-hangar28.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''jota'''&lt;br /&gt;
|[[File:Levelshots-jota.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''openfield'''&lt;br /&gt;
|[[File:Levelshots-openfield.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''peorongateb3'''&lt;br /&gt;
|[[File:Levelshots-peorongateb3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ptcs2'''&lt;br /&gt;
|[[File:Levelshots-ptcs2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''rsmse'''&lt;br /&gt;
|[[File:Levelshots-rsmse.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''stahl'''&lt;br /&gt;
|[[File:Levelshots-stahl.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''terminus'''&lt;br /&gt;
|[[File:Levelshots-terminus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''transit'''&lt;br /&gt;
|[[File:Levelshots-transit.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''uncreation'''&lt;br /&gt;
|[[File:Levelshots-uncreation.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''urbanp2'''&lt;br /&gt;
|[[File:Levelshots-urbanp2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''usstremor'''&lt;br /&gt;
|[[File:Levelshots-usstremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Game&amp;diff=8490</id>
		<title>Game</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Game&amp;diff=8490"/>
		<updated>2023-11-03T02:32:19Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Killing time moved page Game to Unvanquished&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Unvanquished]]&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Unvanquished&amp;diff=8489</id>
		<title>Unvanquished</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Unvanquished&amp;diff=8489"/>
		<updated>2023-11-03T02:32:18Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Killing time moved page Game to Unvanquished&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Unvanquished game}}&lt;br /&gt;
Unvanquished development is proud to present you our game: '''Unvanquished'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Unvanquished is a free, open-source first-person strategy game shooter, pitting technologically advanced human soldiers against hordes of highly adaptable aliens. Players can choose from either team, providing for an entirely different experience on both sides, as humans focus on long-range firepower while aliens rely instead on quick movement and stealth. The goal of each match is to destroy the enemy base, preventing members of the opposing team from spawning. Upgrades for both teams are earned by a combination of individual performance and team map control, unlocking access to more powerful weapons and equipment for the humans, and larger, more ferocious forms for the aliens.&lt;br /&gt;
&lt;br /&gt;
Our project has been in development since the summer of 2011, with our very first alpha release being made on February 29th, 2012. Ever since, we have made monthly alpha releases, with each new release adding new content in the form of assets, maps, gameplay, or engine features. Our development team consists of a mix of skilled hobbyists and seasoned professionals from around the world, and we are always receptive to new team members, both from the community and beyond.&lt;br /&gt;
&lt;br /&gt;
Unvanquished is a fork of [https://tremulous.net Tremulous], powered by the Dæmon engine. The {{engine}} that powers our game is ultimately based off [https://ioquake3.org Quake 3], along with features from [https://www.moddb.com/mods/etxreal ET:XreaL], as well as our own coding efforts.&lt;br /&gt;
&lt;br /&gt;
-- [https://unvanquished.net/about/ Unvanquished About page].&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Download the game==&lt;br /&gt;
&lt;br /&gt;
The {{game}} can be downloaded from the '''[https://unvanquished.net download page]'''.&lt;br /&gt;
&lt;br /&gt;
{{InfoDownloadLauncher}}&lt;br /&gt;
&lt;br /&gt;
==Game source code==&lt;br /&gt;
&lt;br /&gt;
Unvanquished source trees are tracked on {{git}} repositories to make contributions easier and help projects to port their game on it:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Unvanquished/Unvanquished Unvanquished game code repository]&lt;br /&gt;
* [https://github.com/UnvanquishedAssets/UnvanquishedAssets Unvanquished data repository]&lt;br /&gt;
&lt;br /&gt;
==Game mechanics==&lt;br /&gt;
&lt;br /&gt;
===Real time strategy game===&lt;br /&gt;
&lt;br /&gt;
Unvanquished is a real time strategy game: build your base, strengthen your defenses, create outposts. To win the game your team must deny the opposite team the ability to return in game by destroying their spawnpoints.&lt;br /&gt;
&lt;br /&gt;
===Team-based first person shooter===&lt;br /&gt;
&lt;br /&gt;
As a player you play with a team. A game ends when either the human team wins or the alien team wins. Your feats of arm contribute to your team momentum and unlock abilities, weapons and buildables.&lt;br /&gt;
&lt;br /&gt;
===Class-based online warfare===&lt;br /&gt;
&lt;br /&gt;
As an alien you spawn as a builder or as an attack form, and you evolve to other classes as the game continues. As an human you chose the construction kit and do the builder job to fight the resource war, or prefer the rifle to fight and destroy. With your earned credits you buy more advanced weaponry and armors.&lt;br /&gt;
&lt;br /&gt;
==Game history==&lt;br /&gt;
&lt;br /&gt;
'''Unvanquished''' is a fork and a continuation of the [https://tremulous.net Tremulous] game, itself inspired by the Quake 2 mod [http://www.planetgloom.com/ Gloom]. After having been a Quake 3 mod, Tremulous was released as standalone 1.1.0 version in 2006. Tremulous attracted a lot of attention and gained a wide popularity, benefiting from the open source release of Quake 3 code by idSoftware and from the open source community interest. At the time, Linux users have seen in games like Nexuiz (ancestor of [https://xonotic.org Xonotic]) and Tremulous the proof open source games were possible. It was also a time where Linux gaming market was very small and such games drained a lot of attention thanks to their care of the Linux user base.&lt;br /&gt;
&lt;br /&gt;
{{Game and engine lineage}}&lt;br /&gt;
&lt;br /&gt;
===The Tremulous 1.2 release that never came===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the highly-expected 1.2 version of Tremulous never came, despite a “gameplay preview” having been distributed. In the mean time, there was multiple projects working on the open sourced code of Quake 3, including the engine, with projects like ioquake3 and XreaL. Despite XreaL having never really been used by a game at the time except for a small proof of concept shooter, the showcase of the various implemented features caught the eyes of many peoples. People tried to build alternate engines for Tremulous reusing some XreaL improvements, those efforts gave birth to [https://tremfusion.net/ TremFusion] in 2008.&lt;br /&gt;
&lt;br /&gt;
===The rise of XreaL and Tremfusion engines===&lt;br /&gt;
&lt;br /&gt;
The Wolfenstein: Enemy Territory code was then open sourced and XreaL started to mix XreaL with it to produce ET:XreaL. A project to revive Tremulous attracted some people and some information was delivered about the project under the TremZ name, while the engine, forked of ET:XreaL was then named OpenWolf. The TremZ name was not definitive, neither the OpenWolf name. Another Tremulous mod that went nowhere kindly gave the Unvanquished name and the domain name. The git repository and organization was renamed from TremZ to Unvanquished, the engine renamed to Dæmon, and the game was released as first alpha under the Unvanquished name on February 29 of 2012.&lt;br /&gt;
&lt;br /&gt;
===The birth of Unvanquished and Dæmon engine===&lt;br /&gt;
&lt;br /&gt;
From the beginning, Unvanquished was heavily linked to Tremulous, as most early members of the Unvanquished project were already heavily invested in Tremulous or renowned Tremulous projects.&lt;br /&gt;
&lt;br /&gt;
Stijn “Ingar” Buys was a member of the official Tremulous team when working on the Tremulous 1.2 project and joined the Unvanquished team as level designer and among other things contributed the Vega map and the Vega texture set, initially targeted for Tremulous, and then adapted and improved for the Dæmon engine features. Ingar was also known to distribute builds of the {{Tools|NetRadiant}} level editor and Tremulous game pack, he did it for Unvanquished for multiple years as well.&lt;br /&gt;
&lt;br /&gt;
Jan “Stannum” van der Weg was a member of the original Tremulous team who already released standalone Tremulous 1.1.0 and earliest mods (his ''Transit'' map is one of the oldest Tremulous map, known to already been featured in tremulous-q3-1.0.0 froom 2005), Stannum joined the Unvanquished team for 3D Modeling &amp;amp; Animation and provided multiple models and textures for the game.&lt;br /&gt;
&lt;br /&gt;
Amanieu d'Antras and Corentin “kangz” Wallez who were already known for their work on their successful TremFusion engine before joined the team for Engine Development.&lt;br /&gt;
&lt;br /&gt;
Jack “EmperorJack” Purvis, Cody “Supertanker” Jackson, Paweł “Pevel” Micek and Maximilian “Viech” Stahlberg were renowned mappers from Tremulous community and were well known for their popular maps. They joined the Unvanquished team for Level Design and ported or remade some of their Tremulous maps for Unvanquished: Thunder (EmperorJack), Spacetracks and Station15 (Supertanker), Perseus, Antares and Yocto (Pevel), and Parpax (Viech).&lt;br /&gt;
&lt;br /&gt;
Many others peoples who joined Unvanquished were already heavily invested in Tremulous community projects or related projects like ioquake3. You can read all their names and get more information about Unvanquished people and contributions on the [https://unvanquished.net/about/ Unvanquished About page].&lt;br /&gt;
&lt;br /&gt;
Initial project head was composed of kharnov, Harsh “Ishq” Modi, and Maximilian “Viech” Stahlberg. In 2017 kharnov had chosen Thomas “illwieckz” Debesse to replace him at the project head as he had to focus on other topics in its life.&lt;br /&gt;
&lt;br /&gt;
===Free and open source again===&lt;br /&gt;
&lt;br /&gt;
Based on the free open source Tremulous game, the Unvanquished game was never intended to not be free, but with time some assets were merged with problematic licenses like Creative Commons licenses with non-commercial clauses and some models just lacked the appropriate license mention from the author. After multiple years of reaching pasts contributors, the game became libre again in 2020 (see our [https://unvanquished.net/now-we-are-free/ Now we are free!] blog post).&lt;br /&gt;
&lt;br /&gt;
On a related topic, Unvanquished wiki was using a license that was considered non-free because of a non-commercial clause, in fact nobody was able to explain why this clause was there, it may have been a mistake. After years of reaching contributors to get permissions to relicense and rewriting other pages, the wiki was liberated on 2021, see the [[Wiki relicensing]] page and the [https://unvanquished.net/unvanquished-0-52-1-better-freer-stronger/ Unvanquished 0.52.1 blog post].&lt;br /&gt;
&lt;br /&gt;
==Game and engine features==&lt;br /&gt;
&lt;br /&gt;
More information about {{engine|link=no}} and {{game}} features can be found on the {{engine}} page.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8487</id>
		<title>Maps</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Maps&amp;diff=8487"/>
		<updated>2023-11-01T01:08:28Z</updated>

		<summary type="html">&lt;p&gt;Killing time: navmash no longer needed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Maps]]&lt;br /&gt;
There is an unofficial (but still led by one of unvanquished's fellow and main developpers) effort to port a number of tremulous maps [https://github.com/InterstellarOasis/InterstellarOasis].&lt;br /&gt;
&lt;br /&gt;
You can also find a bunch of maps from tremulous [https://dl.unvanquished.net/mercenaries-guild/public_html/maps/].&lt;br /&gt;
Despite this link being on official's Unvanquished's server, those are *not* officially supported and require modifications to be played. If you are lucky, you can get them working (locally) by simply renaming them in your own unvanquished/pkg folder like this: {{code|map-${name}_${version}.dpk}}.&lt;br /&gt;
And despite all this, there is no guarantee those will work, and even less that they'll be bug-free.&lt;br /&gt;
&lt;br /&gt;
Feel free to meet us on [https://unvanquished.net/chat/] to ask what needs to be done to have those more widely used by server owners!&lt;br /&gt;
&lt;br /&gt;
=Official Unvanquished Maps=&lt;br /&gt;
&lt;br /&gt;
These maps are distributed with the default installation&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Antares'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Antares}}&lt;br /&gt;
|[[File:antares.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Chasm'''&lt;br /&gt;
* Two route design&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Outside area&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Chasm}}&lt;br /&gt;
|[[File:Levelshots-Snowstation-b4.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Forlorn'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Forlorn}}&lt;br /&gt;
|[[File:Forlorn.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Parpax'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Many branching paths&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Elevators&lt;br /&gt;
by Viech&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Parpax}}&lt;br /&gt;
|[[File:Levelshots-Parpax_compressed.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Perseus'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Perseus}}&lt;br /&gt;
|[[File:Perseus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Platform 23'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Replacement for ATCS&lt;br /&gt;
* Two route design&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Plat23}}&lt;br /&gt;
|[[File:Levelshots-Plat23-b11.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Spacetracks'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Many Elevators&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Spacetracks}}&lt;br /&gt;
|[[ File:Levelshots-Spacetracks-r1.jpg |400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Station15'''&lt;br /&gt;
* Varied rooms and corridors&lt;br /&gt;
* Elevators&lt;br /&gt;
by Supertanker&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Station15}}&lt;br /&gt;
|[[File:Levelshots-Station15-r1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Thunder'''&lt;br /&gt;
* Very large&lt;br /&gt;
by EmperorJack&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Thunder}}&lt;br /&gt;
|[[File:Levelshot-thunder.jpeg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Vega'''&lt;br /&gt;
* Large&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Vega}}&lt;br /&gt;
|[[File:vega.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Yocto'''&lt;br /&gt;
* Vertical&lt;br /&gt;
by Pevel&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Yocto}}&lt;br /&gt;
|[[File:Levelshot-Yocto-b1a.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Gentrified Maps=&lt;br /&gt;
&lt;br /&gt;
Maps that were born in Tremulous.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''.:U.T:C.S:.'''&lt;br /&gt;
* Symmetrical&lt;br /&gt;
* Two route design&lt;br /&gt;
* Small&lt;br /&gt;
&lt;br /&gt;
{{Subpage|UTCS}}&lt;br /&gt;
| [[File:Levelshot-Utcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Arachnid 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces and piping&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Arachnid}}&lt;br /&gt;
| [[File:Levelshots-Arachnid2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Beyond Derelict'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
by Danny &amp;quot;Megabite&amp;quot; Marcus&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Derelict}}&lt;br /&gt;
|[[File:Levelshots-Derelict.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Karith Station 2'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Outside area&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Large&lt;br /&gt;
* Elevators&lt;br /&gt;
by Godmil&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Karith}}&lt;br /&gt;
|[[File:Levelshots-Karith.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| '''Meep'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
By Catalyc&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Meep}}&lt;br /&gt;
|[[File:Levelshots-Meep.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| '''Methane (beta 1)'''&lt;br /&gt;
* Large&lt;br /&gt;
* Vertically complex&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Methane}}&lt;br /&gt;
|[[File:Levelshots-Methane-beta1.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nano!'''&lt;br /&gt;
* Very Small&lt;br /&gt;
* Symmetrical&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nano}}&lt;br /&gt;
|[[File:Levelshots-Nano.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Nexus 6'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Crawl spaces&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Nexus}}&lt;br /&gt;
|[[File:Levelshots-Nexus6.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Niveus : Outpost 652'''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Medium sized&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Niveus}}&lt;br /&gt;
|[[File:Levelshots-Niveus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Orion I - communication ship (beta 2)'''&lt;br /&gt;
* Varied rooms, corridors and layers with some vents&lt;br /&gt;
* Medium sized&lt;br /&gt;
by Xenom[GER]&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Orion}}&lt;br /&gt;
|[[File:Levelshots-Orion.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Procyon - '''&lt;br /&gt;
* Varied rooms, corridors and layers and vents&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Procyon}}&lt;br /&gt;
|[[File:Levelshots-procyon.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Sirius - '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Large sized&lt;br /&gt;
by Ingar&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Sirius}}&lt;br /&gt;
|[[File:Levelshots-sirius.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''Tremor'''&lt;br /&gt;
* Medium sized&lt;br /&gt;
* Large rooms and corridors&lt;br /&gt;
* Crawl spaces (underground section)&lt;br /&gt;
by Vedacon&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Tremor}}&lt;br /&gt;
|[[File:Levelshots-Tremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''Uranium124 '''&lt;br /&gt;
* Varied rooms, corridors and layers&lt;br /&gt;
* Small sized&lt;br /&gt;
by CoderNem&lt;br /&gt;
&lt;br /&gt;
{{Subpage|Uranium124}}&lt;br /&gt;
|[[File:Levelshots-uranium124.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=community maps=&lt;br /&gt;
&lt;br /&gt;
Maps produced (and not already listed) by the community which are known to work for unvanquished, for both tremulous and unvanquished.&lt;br /&gt;
&lt;br /&gt;
Licences of images is the same as the map itself, this will be updated later.&lt;br /&gt;
This section have lot of things to do, including adding author's names, licencing informations, simple map descriptions, etc.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name and Description&lt;br /&gt;
! Levelshot&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|'''area3'''&lt;br /&gt;
|[[File:Levelshots-area3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''atcshd'''&lt;br /&gt;
|[[File:Levelshots-atcshd.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ctcs'''&lt;br /&gt;
|[[File:Levelshots-ctcs.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''dretchstorm'''&lt;br /&gt;
|[[File:Levelshots-dretchstorm.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''fortification'''&lt;br /&gt;
|[[File:Levelshots-fortification.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hamunaptra'''&lt;br /&gt;
|[[File:Levelshots-hamunaptra.png|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''hangar28'''&lt;br /&gt;
|[[File:Levelshots-hangar28.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''jota'''&lt;br /&gt;
|[[File:Levelshots-jota.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''openfield'''&lt;br /&gt;
|[[File:Levelshots-openfield.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''peorongateb3'''&lt;br /&gt;
|[[File:Levelshots-peorongateb3.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''ptcs2'''&lt;br /&gt;
|[[File:Levelshots-ptcs2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''rsmse'''&lt;br /&gt;
|[[File:Levelshots-rsmse.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''stahl'''&lt;br /&gt;
|[[File:Levelshots-stahl.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''terminus'''&lt;br /&gt;
|[[File:Levelshots-terminus.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''transit'''&lt;br /&gt;
|[[File:Levelshots-transit.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''uncreation'''&lt;br /&gt;
|[[File:Levelshots-uncreation.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''urbanp2'''&lt;br /&gt;
|[[File:Levelshots-urbanp2.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''usstremor'''&lt;br /&gt;
|[[File:Levelshots-usstremor.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats&amp;diff=8478</id>
		<title>Formats</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats&amp;diff=8478"/>
		<updated>2023-10-30T23:13:54Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Add skin to list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Formats]]&lt;br /&gt;
Unvanquished makes use of various formats to store data in repositories, to package and deliver them to players, and to load them in game.&lt;br /&gt;
&lt;br /&gt;
==Engine-specific formats==&lt;br /&gt;
&lt;br /&gt;
Engine-specific formats are implemented in the engine and support is the same for all mods.&lt;br /&gt;
&lt;br /&gt;
* {{Subpage|Audio}};&lt;br /&gt;
* {{Subpage|Image}};&lt;br /&gt;
* {{Subpage|Material}};&lt;br /&gt;
* {{Subpage|Model}};&lt;br /&gt;
* {{Subpage|Skin}};&lt;br /&gt;
* {{Subpage|BSP}};&lt;br /&gt;
* {{Subpage|DPK}};&lt;br /&gt;
* {{Subpage|GLSL}}.&lt;br /&gt;
&lt;br /&gt;
==Game-specific formats==&lt;br /&gt;
&lt;br /&gt;
Games-specific formats are implemented in the game code and mods may implement variants.&lt;br /&gt;
&lt;br /&gt;
* {{Subpage|Particle}};&lt;br /&gt;
* {{Subpage|Trail}};&lt;br /&gt;
* {{Subpage|Behavior tree}};&lt;br /&gt;
* {{Subpage|Navigation mesh}};&lt;br /&gt;
* {{Subpage|Navcon}};&lt;br /&gt;
* [[Server/Map layout|Map layout]];&lt;br /&gt;
* [[Server/Map rotation|Map rotation]].&lt;br /&gt;
&lt;br /&gt;
==Editor-specific formats==&lt;br /&gt;
&lt;br /&gt;
Editor-specific formats are implemented by editors and are not expected to be loaded in game (support is usually not implemented by game engines).&lt;br /&gt;
&lt;br /&gt;
* {{Subpage|Map}}.&lt;br /&gt;
&lt;br /&gt;
==More==&lt;br /&gt;
&lt;br /&gt;
If you're porting data from Tremulous or Quake Ⅲ or you're an experienced artist with Tremulous or Quake Ⅲ experience, you may want to read the {{Subpage|Known regressions since Tremulous}} page.&lt;br /&gt;
&lt;br /&gt;
You may also want to read the {{Subpage|Limitations that are not regressions}} page for things that are not implemented yet but you may find documentation about, or things that only work with legacy Tremulous or Quake Ⅲ formats for now.&lt;br /&gt;
&lt;br /&gt;
Some knowledge that should be sorted and properly written in dedicated place can be found in the [[Data dark magic]] page.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Skin&amp;diff=8477</id>
		<title>Formats/Skin</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Skin&amp;diff=8477"/>
		<updated>2023-10-30T23:07:30Z</updated>

		<summary type="html">&lt;p&gt;Killing time: Created page with &amp;quot;A skin is used to display a model with different textures than it was originally loaded with. Skin files conventionally have the suffix &amp;lt;code&amp;gt;.skin&amp;lt;/code&amp;gt;....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A skin is used to display a [[Formats/Model|model]] with different textures than it was originally loaded with. Skin files conventionally have the suffix &amp;lt;code&amp;gt;.skin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Usage in Unvanquished ==&lt;br /&gt;
&lt;br /&gt;
Skins are used with [https://github.com/UnvanquishedAssets/res-players_src.dpkdir/tree/master/models/players/|human player models] to swap armors or add the helmet.&lt;br /&gt;
&lt;br /&gt;
== Minimal .skin example ==&lt;br /&gt;
  foo,&amp;lt;texture name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a model that has only a single texture, this skin file can be used to replace it with a different one. &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; is an arbitrary word that has no effect. &amp;lt;code&amp;gt;&amp;lt;texture name&amp;gt;&amp;lt;/code&amp;gt; should be replaced with the name of the desired [[Formats/Material|Q3 shader]] or an image path.&lt;br /&gt;
&lt;br /&gt;
== Source code keywords ==&lt;br /&gt;
* Engine: &amp;lt;code&amp;gt;skin_t&amp;lt;/code&amp;gt;&lt;br /&gt;
* Gamelogic: &amp;lt;code&amp;gt;trap_R_RegisterSkin&amp;lt;/code&amp;gt;&lt;br /&gt;
* Both: &amp;lt;code&amp;gt;customSkin&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;refEntity_t&amp;lt;/code&amp;gt; member)&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Behavior_tree&amp;diff=8476</id>
		<title>Formats/Behavior tree</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Behavior_tree&amp;diff=8476"/>
		<updated>2023-10-30T21:11:24Z</updated>

		<summary type="html">&lt;p&gt;Killing time: fix various mistakes and fill in missing info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Formats]]&lt;br /&gt;
[[Category:Bots]]&lt;br /&gt;
Behavior trees file format is game-specific (mods may modify it).&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
Bot behaviors are decided individually, at each &amp;quot;frame&amp;quot; (read: server's main loop passage), starting from a root node. Evaluation stops at a node which returns STATUS_RUNNING, or when the root node returns success or failure. An overview can be found in the [https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control) Wikipedia article].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Syntax Reference =&lt;br /&gt;
&lt;br /&gt;
Behavior trees use a specific syntax, which obey following rules (guessed from actual implementation and some C++ readings):&lt;br /&gt;
&lt;br /&gt;
* Each node or leaf returns either &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt;.&lt;br /&gt;
* whitespace has no semantic meaning&lt;br /&gt;
* comments (C and C++-style) can either:&lt;br /&gt;
:* start with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; and go to the end of line&lt;br /&gt;
:* start with &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt; and go to next &amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;, including out of current line. These do not nest.&lt;br /&gt;
* actions and conditions taking parameters must enclose those withing parentheses, separated with commas (i.e. &amp;lt;code&amp;gt;roamInRadius( E_H_REACTOR, 500 )&amp;lt;/code&amp;gt;)&lt;br /&gt;
* if an action or a condition does not need parameters, parentheses are optional&lt;br /&gt;
* strings start and end with a double quote &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* values can't be stored or modified (additions, subtractions, multiplications, etc)&lt;br /&gt;
* no user-defined function (but files can be included, and C++ functions can be written in the game logic and be used in the behavior tree)&lt;br /&gt;
* each possible path should (TODO: verify, even if I fail to understand why one would break that willingly) end by one or more action&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
It is not possible to do mathematical operations such as additions, multiplications, divisions, ...&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
&lt;br /&gt;
There are several keywords:&lt;br /&gt;
&lt;br /&gt;
* behavior&lt;br /&gt;
* action&lt;br /&gt;
* sequence&lt;br /&gt;
* selector&lt;br /&gt;
* fallback&lt;br /&gt;
* concurrent&lt;br /&gt;
* decorator&lt;br /&gt;
* condition&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;behavior&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 behavior NAME&lt;br /&gt;
&lt;br /&gt;
Include named behavior at current place. This does not make a new copy of the referenced tree, so if you include the same behavior more than once, node-specific state (e.g. timers) will be shared between the includes.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;action&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 action NAME&lt;br /&gt;
&lt;br /&gt;
 action NAME()&lt;br /&gt;
&lt;br /&gt;
 action NAME( param )&lt;br /&gt;
&lt;br /&gt;
 action NAME( param1, param2, ..., paramN )&lt;br /&gt;
&lt;br /&gt;
Leaves of the tree, they trigger an action from the bot.&lt;br /&gt;
&lt;br /&gt;
=== List of actions ===&lt;br /&gt;
&lt;br /&gt;
Titles provide a link to more detailed pages.&lt;br /&gt;
TODO: have something more time-resilient (one page per call, with it's changelog, maybe?)&lt;br /&gt;
&lt;br /&gt;
==== 0.53.1 ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* activateUpgrade&lt;br /&gt;
* aimAtGoal&lt;br /&gt;
* alternateStrafe&lt;br /&gt;
* buy&lt;br /&gt;
* changeGoal&lt;br /&gt;
* classDodge&lt;br /&gt;
* deactivateUpgrade&lt;br /&gt;
* equip&lt;br /&gt;
* evolve&lt;br /&gt;
* evolveTo&lt;br /&gt;
* fight&lt;br /&gt;
* fireWeapon&lt;br /&gt;
* flee&lt;br /&gt;
* gesture&lt;br /&gt;
* heal&lt;br /&gt;
* jump&lt;br /&gt;
* moveInDir&lt;br /&gt;
* moveTo&lt;br /&gt;
* moveToGoal&lt;br /&gt;
* repair&lt;br /&gt;
* resetStuckTime&lt;br /&gt;
* roam&lt;br /&gt;
* roamInRadius&lt;br /&gt;
* rush&lt;br /&gt;
* say&lt;br /&gt;
* strafeDodge&lt;br /&gt;
* suicide&lt;br /&gt;
* teleport&lt;br /&gt;
&lt;br /&gt;
=== Creating new actions ===&lt;br /&gt;
&lt;br /&gt;
Actions are exported in the &amp;lt;code&amp;gt;AIActionMap_s AIActions[]&amp;lt;/code&amp;gt; C array.&lt;br /&gt;
Actions always return a status.&lt;br /&gt;
Actions can take a variable number of parameters (they have minimum and maximum parameter numbers).&lt;br /&gt;
Parameter types are not described by API.&lt;br /&gt;
&lt;br /&gt;
== {{Discouraged}} The &amp;lt;code&amp;gt;concurrent&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
DO NOT USE. It is impossible to have more than one running action, so there is no known case where this does anything useful. &lt;br /&gt;
&lt;br /&gt;
 concurrent&lt;br /&gt;
 {&lt;br /&gt;
 	NODE_1&lt;br /&gt;
 	NODE_2&lt;br /&gt;
 	...&lt;br /&gt;
 	NODE_N&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Concurrent nodes evaluate each children until one returns &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differences with sequence:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt; does not trigger a return&lt;br /&gt;
* Returns either &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt; except if one child failed &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* if 2 tasks were previously in &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt; and the 1st returns &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt;, concurrent returns immediately.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;sequence&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 sequence&lt;br /&gt;
 {&lt;br /&gt;
 	NODE_1&lt;br /&gt;
 	NODE_2&lt;br /&gt;
 	...&lt;br /&gt;
  	NODE_N&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Sequential nodes evaluate each children one after the other, as long as they return &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt;.&lt;br /&gt;
Return last child's status.&lt;br /&gt;
&lt;br /&gt;
* Sequence breaks if a child returns &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt;&lt;br /&gt;
* Starts at last &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt;, if any. Nodes that completed successfully in a previous frame are not rerun, as long as the sequence is running continually.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;selector&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 selector&lt;br /&gt;
 {&lt;br /&gt;
 	NODE_1&lt;br /&gt;
 	NODE_2&lt;br /&gt;
 	...&lt;br /&gt;
 	NODE_N&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selector nodes evaluate each children one after the other, as long as they return &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Return last child's status.&lt;br /&gt;
Unlike sequence, this node is stateless: it does not restart from the last &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;fallback&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 fallback&lt;br /&gt;
 {&lt;br /&gt;
 	NODE_1&lt;br /&gt;
 	NODE_2&lt;br /&gt;
 	...&lt;br /&gt;
  	NODE_N&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Fallback nodes start by evaluating the first children, and switch to the next one if a child returns &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt;. It will continue from the last &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt; child.&lt;br /&gt;
Return last child's status.&lt;br /&gt;
&lt;br /&gt;
Difference with sequence:&lt;br /&gt;
&lt;br /&gt;
* Sequence switch to the next child on &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt;, while fallback switch to the next child on code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Difference with selector:&lt;br /&gt;
* Starts at last &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt;, if any&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;decorator&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
 decorator TYPE( VALUE )&lt;br /&gt;
 {&lt;br /&gt;
 	NODE_1&lt;br /&gt;
 	NODE_2&lt;br /&gt;
 	...&lt;br /&gt;
 	NODE_N&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Decorator nodes alters their children's behavior.&lt;br /&gt;
Decorator types:&lt;br /&gt;
&lt;br /&gt;
* return&lt;br /&gt;
* invert&lt;br /&gt;
* timer&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; decorator ==&lt;br /&gt;
&lt;br /&gt;
Force children nodes to return a specific value&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;invert&amp;lt;/code&amp;gt; decorator ==&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;code&amp;gt;invert&amp;lt;/code&amp;gt; node will negate the return value of its node, &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;code&amp;gt; is turned into &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; is turned into &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;STATUS_RUNNING&amp;lt;/code&amp;gt; is unaffected.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;timer&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
On encountering a &amp;lt;code&amp;gt;timer( &amp;lt;i&amp;gt;N&amp;lt;/i&amp;gt; )&amp;lt;/code&amp;gt; node, &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; is immediately returned if the timer's child node has already returned &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; within the last N milliseconds.&lt;br /&gt;
&lt;br /&gt;
The node may run more often than every N milliseconds if it keeps returning success.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;condition&amp;lt;/code&amp;gt; keyword ==&lt;br /&gt;
&lt;br /&gt;
  condition EXPRESSION&lt;br /&gt;
&lt;br /&gt;
  condition EXPRESSION&lt;br /&gt;
  {&lt;br /&gt;
  	NODE&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
The first form immediately returns ''EXPRESSION'' as its status: &amp;lt;code&amp;gt;STATUS_SUCCESS&amp;lt;/code&amp;gt; for true and &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; for false.&lt;br /&gt;
&lt;br /&gt;
The second form returns &amp;lt;code&amp;gt;STATUS_FAILURE&amp;lt;/code&amp;gt; if the expression is false, or otherwise the child's status. Note that ''EXPRESSION'' is re-evaluated every frame. If it becomes false at any time during execution of the child node, the child subtree aborts and the condition node returns failure.&lt;br /&gt;
&lt;br /&gt;
The idiom&lt;br /&gt;
  sequence {&lt;br /&gt;
    condition EXPRESSION&lt;br /&gt;
    action myLongRunningAction&lt;br /&gt;
  }&lt;br /&gt;
is used to check a condition once before starting an action, but in subsequent continue doing the action without re-evaluating the condition.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* only executes a single child.&lt;br /&gt;
* EXPRESSION can include function calls.&lt;br /&gt;
&lt;br /&gt;
== Operators ==&lt;br /&gt;
&lt;br /&gt;
Operators are listed in the &amp;lt;code&amp;gt;AIOpMap_s conditionOps[]&amp;lt;/code&amp;gt; array.&lt;br /&gt;
operators sorted by precedence (1st have higher priority):&lt;br /&gt;
* &amp;quot;!&amp;quot;&lt;br /&gt;
* &amp;quot;&amp;lt;&amp;quot;&lt;br /&gt;
* &amp;quot;&amp;lt;=&amp;quot;&lt;br /&gt;
* &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
* &amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
* &amp;quot;==&amp;quot;&lt;br /&gt;
* &amp;quot;!=&amp;quot;&lt;br /&gt;
* &amp;quot;&amp;amp;&amp;amp;&amp;quot;&lt;br /&gt;
* &amp;quot;||&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
Return value is &amp;quot;boxed&amp;quot; (&amp;lt;code&amp;gt;AIBox&amp;lt;T&amp;gt;()&amp;lt;/code&amp;gt;) in the C++ code.&lt;br /&gt;
Conditions are exported in the &amp;lt;code&amp;gt;AIConditionMap_s conditionFuncs[]&amp;lt;/code&amp;gt; array.&lt;br /&gt;
&lt;br /&gt;
=== List of functions (as of 0.53.1) ===&lt;br /&gt;
&lt;br /&gt;
* alertedToEnemy&lt;br /&gt;
* aliveTime&lt;br /&gt;
* baseRushScore&lt;br /&gt;
* buildingIsDamaged&lt;br /&gt;
* canEvolveTo&lt;br /&gt;
* class&lt;br /&gt;
* cvar&lt;br /&gt;
* directPathTo&lt;br /&gt;
* distanceTo&lt;br /&gt;
* goalBuildingType&lt;br /&gt;
* goalIsDead&lt;br /&gt;
* goalTeam&lt;br /&gt;
* goalType&lt;br /&gt;
* haveUpgrade&lt;br /&gt;
* haveWeapon&lt;br /&gt;
* healScore&lt;br /&gt;
* inAttackRange&lt;br /&gt;
* isVisible&lt;br /&gt;
* matchTime&lt;br /&gt;
* momentum&lt;br /&gt;
* percentAmmo&lt;br /&gt;
* percentHealth&lt;br /&gt;
* random&lt;br /&gt;
* skill&lt;br /&gt;
* stuckTime&lt;br /&gt;
* team&lt;br /&gt;
* teamateHasWeapon&lt;br /&gt;
* weapon&lt;br /&gt;
&lt;br /&gt;
== Pre-defined symbols ==&lt;br /&gt;
&lt;br /&gt;
Some values are pre-defined and usable as action's or function's parameters.&lt;br /&gt;
&lt;br /&gt;
Those are exported by calling a macro named 'D' (yes, I know).&lt;br /&gt;
List of exported symbols:&lt;br /&gt;
&lt;br /&gt;
* human upgrades (including medkit)&lt;br /&gt;
* human weapons (excluding blaster)&lt;br /&gt;
* team names (aliens, humans, and none)&lt;br /&gt;
* alien buildings&lt;br /&gt;
* human buildings&lt;br /&gt;
* &amp;lt;code&amp;gt;E_GOAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;E_ENEMY&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;E_DAMAGEDBUILDING&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;E_SELF&amp;lt;/code&amp;gt;&lt;br /&gt;
* classes (human ones, alien ones, and &amp;lt;code&amp;gt;PCL_NONE&amp;lt;/code&amp;gt;)&lt;br /&gt;
* moves (forward, backward, right, left)&lt;br /&gt;
* some say commands (all, team, area, area_team)&lt;br /&gt;
* task/check status names (running, success, failure)&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Parameters needs to be (un)wrapped in C++ before being accessed.&lt;br /&gt;
&lt;br /&gt;
Parameters can be of the following (C) types:&lt;br /&gt;
* float&lt;br /&gt;
* int (probably better assume 32 bit signed integers)&lt;br /&gt;
* string (probably better assume null-terminated)&lt;br /&gt;
&lt;br /&gt;
To provide a value to an action or check, the C++ code must UnBox (&amp;lt;code&amp;gt;AIUnBox&amp;lt;T&amp;gt;()&amp;lt;/code&amp;gt;) it.&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8475</id>
		<title>User:Killing time</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8475"/>
		<updated>2023-10-30T04:05:37Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Integrating patches from freem's fork */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Integrating patches from freem's fork ==&lt;br /&gt;
Patch list from mod-deadbeef_0.54+6.dpk&lt;br /&gt;
{|&lt;br /&gt;
! Title&lt;br /&gt;
! Category&lt;br /&gt;
! Upstream&lt;br /&gt;
! Dep&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0001-AI-remove-skillset || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0002-fix-crash-if-using-BotActionFollow-on-a-disconnected || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0003-do-not-deprecate-glm-vec3-VEC2GLM-glm-vec3-v-yet || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0004-use-placement-new-for-gentities || || || || Seems incomplete as there is no destructor.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0005-remove-useless-newlines-in-Svcmd_EntityShow_f || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0006-BoundedVector-move-in-own-file-complete-API || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0007-create-a-map_entity_t-struct-in-own-header-file || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0008-glm-sg_spawn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0009-replace-trap_SetBrushModel-with-G_CM_SetBrushModel || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0010-respect-constness-of-things || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0011-style-and-G_Spawn-improved-error-report || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0012-replace-defines-by-enum-ent_version_t-remove-unused- || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0013-use-std-string-inside-G_ResolveEntityKeyword || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0014-G_FireEntityRandomly-G_FireEntity-G_HandleActCall-is || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0015-G_ModelIndex-takes-a-std-string || || || || StringRef would be better&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0016-remove-struct-gentityTargetChoice_t-from-sg_entities || || || 0014 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0017-G_NewString-no-longer-uses-BG_Alloc || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0018-gentityCallDefinition_t-name-is-a-const-char || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0019-turn-gentityCallDefinition_t-name-into-std-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0020-mapEntity_t-names-are-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0021-mapEntity_t-groupName-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0022-mapEntity_t-message-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0023-mapEntity_t-model-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0024-mapEntity_t-model2-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0025-mapEntity_t-shaderKey-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0026-mapEntity_t-shaderReplacement-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0027-gentity_t-classname-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0028-gentityCallDefinition_t-action-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0029-make-gentityCallDefinition_t-safer-and-compact-it || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0030-make-mapEntity_t-targets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0031-make-mapEntity_t-calltargets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0032-remove-useless-empty-calltarget-target || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0033-finish-half-baked-botTarget_t-interface || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0034-add-botMemory_t-hasEnemy || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0035-finish-half-baked-GentityRef_impl || || || || Implementation of get() is just wrong&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0036-more-static-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0037-Rewrite-BotSearchForEnemy-to-use-a-std-vector || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0038-GMP-optionally-do-not-regenerate-if-there-is-OM || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0039-AI-add-g_bot_medistatDistance-to-fine-tune-medistati || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0040-HUD-Draw-time-to-completion-for-buildings-in-constru || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0041-Refactor-EV_NO_SPAWNS-to-EV_MAIN_REPORTS_NO_SPAWNS-f || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0042-HUD-Implement-a-base-status-HUD-element || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0043-HUD-Show-construction-time-with-ghost-buildables || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0044-MOD-give-a-repeatRate-option-to-upgrades || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0045-remove-duplicated-alertedToEnemy-from-alien-BTs || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0046-AI-humans-do-not-know-how-to-flee-from-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0047-BotActionBuy-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0048-BT-add-percentSkill-condition || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0049-MAP-support-target_force_win-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0050-MAP-support-targetname3-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0051-BT-implement-action-reload || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0052-BT-add-condition-weaponIsReady || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0053-merge-as-many-.-Attributes_t-stuff-as-possible-into- || || || || I dislike it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0054-move-.-_RANGE-variables-into-weaponAttributes_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0055-give-abuildupg-weapon-the-entries-it-needs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0056-move-abuilder-upg-spit-configuration-in-right-file || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0057-remove-per-melee-weapon-width-height-damage-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0058-remove-dretch-specific-variables-in-favor-of-weaponA || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0059-move-painsaw-and-mantis-specifics-into-FireMelee || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0060-allow-to-spawn-with-a-gun-class-in-devmap || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0061-remove-most-shotgun-specific-variables || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0062-remove-SMG-RIFLE-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0063-remove-CHAINGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0064-remove-MDRIVER-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0065-remove-LASGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0066-MOD-make-doKnockback-a-weapon-attr-entry-as-for-miss || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0067-move-BG_MeansOfDeathByName-into-bg_parse.cpp-static || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0068-add-a-minimal-BG_BoundingBox-for-class_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0069-code-deduplication-style-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0070-AI-aliens-fight-back-at-saner-dist-400qu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0071-AI-aliens-flee-reliably || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0072-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0073-AI-aliens-go-grab-poison || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0074-more-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0075-AI-humans-do-not-repair-in-heat-of-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0076-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0077-AI-human-bots-try-to-keep-distance-with-enemy-buildi || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0078-AI-human-bots-try-to-repair-every-15s || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0079-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0080-BotTargetInAttackRange-use-correct-maxs-height || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0081-sg_admin.cpp-add-missing-include || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0082-bot-cpp-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0083-MOD-weapons-cfg-can-change-means-of-death-like-missi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0084-rcFilterGaps-walkableRadius-2-is-walkable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0085-CMD-remove-bots-from-listplayers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0086-move-spawning-level-vars-out-of-global-scope || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0087-migrate-a-bunch-of-API-to-glm || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0088-sever-links-with-CBSE || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0089-make-gentity_t-entity-a-std-unique_ptr || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0090-BG_PlayerStateToEntityState-remove-useless-arg || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0091-DOC-add-HOSTING-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0092-DOC-add-PACKAGING-file-without-the-mod-section || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0093-DOC-add-LAYOUTS-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0094-DOC-add-info-about-nexe-file-names-in-PACKAGING || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0095-PM_AddTouchEnt-PM_ClipVelocity-constness || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0096-meansOfDeath_t-is-not-an-int || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0097-mitigate-BotTargetIsVisible-crash-for-coordinate-tar || bot || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0098-glm-G_UnlaggedOn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0099-remove-unused-G_FindClosestEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0100-glm-Beacon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0101-unify-BG_BoundingBox-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0102-glm-sg_buildable.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0103-glm-sg_buildpoints.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0104-glm-sg_client.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0105-glm-sg_cmds.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0106-glm-Beacon.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0107-glm-sg_buildable.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0108-glm-sg_client.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0109-glm-sg_combat.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0110-glm-sg_missile.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0111-glm-sg_utils.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0112-glm-sg_weapon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0113-remove-duplicated-trap_SetConfigstringRestrictions-p || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0114-replace-some-trap_-calls-with-G_CM_-equiv || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0115-remove-unused-G_CM_ClipToEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0116-remove-silly-function || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0117-glm-sg_physics.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0118-glm-sg_admin.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0119-sg_cm_world.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0120-sg_spawn_mover.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0121-G_MoverGroup-cleanup-beware-non-trivial-clean || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0122-glm-G_KillBrushModel-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0123-glm-G_TryPushingEntity || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0124-glm-sg_active.cpp-P_DamageFeedback || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0125-glm-sg_active.cpp-ClientShove || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0126-glm-sg_active.cpp-PushBot || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0127-glm-sg_active.cpp-G_TouchTriggers || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0128-glm-sg_active.cpp-BeaconAutoTag || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0129-glm-sg_active.cpp-ClientTimerActions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0130-glm-sg_active.cpp-ClientEvents || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0131-glm-sg_active.cpp-G_UnlaggedOff || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0132-glm-sg_active.cpp-G_UnlaggedDetectCollisions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0133-glm-sg_active.cpp-ClientThink_real || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0134-glm-sg_main.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0135-glm-remaining-components-for-the-vec3_t-at-least || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0136-glm-unlagged_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0137-glm-buildLog_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0138-glm-clientPersistant_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0139-glm-sg_spawn.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0140-glm-g_client_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0141-glm-sgame-components-HealthComponent.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0142-move-gentity_t-animation-into-map_entity.h-glm-vec4 || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0143-glm-gentity_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0144-sgame-VEC2GLM-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0145-sgame-codestyle || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0146-sg_cm_world.cpp-cleanup-hopefully || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0147-glm-trace-in-cgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0148-glm-trace-by-return-sgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0149-glm-trace-API-by-return-shared || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0150-fix-activate-entities-not-being-triggered-when-playe || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0151-do-not-prevent-building-a-unique-if-the-current-one- || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0152-glm-BG_EvaluateTrajectory-BG_EvaluateTrajectoryDelta || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0153-bots-invert-check-if-a-healing-source-is-horizontall || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0154-Implement-default-navgen-config-applies-to-all-maps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0155-Invalidate-GentityRef-on-player-death || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0156-dretch-and-mantis-bots-attack-enemies-while-wall-cli || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0157-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0158-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0159-translation-ship-them-even-if-incomplete || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0160-rmlui-implement-standard-b-i-em-tags || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0161-rmlui-implement-custom-web-tag-for-common-unvanquish || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0162-rmlui-implement-standard-ul-li-tag || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0163-ui-rewrite-gampelay-guide-and-developer-message-with || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0164-ui-add-option-for-cg_marks || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0165-presets-graphics-disable-marks-in-lowest-profile || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0166-cg_rocket_draw-support-emoticons-in-map-and-author-n || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0167-ui-fix-endline-in-RML-translatable-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0168-utils-generate_rml_pot-escape-double-quotes-when-wri || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0169-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0170-Incrementally-update-server-list-hacky-way || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0171-Fix-refreshing-internet-server-list-after-local || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0172-Improve-incremental-server-list-population || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0173-Remove-unused-enum-constant-BF_POWER || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0174-Properly-destroy-entity-when-reverting-construction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0175-Fix-buildlog-see-more-message || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0176-Don-t-use-in-place-StripColors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0177-improve-bot-lcannon-handling-do-not-always-charge-to || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0178-Fix-ADMBP-buffer-overflows || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0179-Avoid-double-newlines-on-ADMBP-buffer-split || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0180-Bump-submodules-daemon-RmlUi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0181-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0182-Nit-use-BOT_DEFAULT_BEHAVIOR-constant || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0183-Remove-too-spammy-cg_showmiss-log || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0184-Convert-cg_showmiss-to-a-logger-cgame.prediction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0185-Don-t-localize-sounds-incorrectly-in-third-person || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0186-sync-submodules || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0187-use-g_fillBotsTeamVotesPercent-again-2777 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0188-fix-bug-in-bot-behavior-function-percentClips-2776 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0189-Enable-missile-config-bad-token-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0190-Remove-unused-entity-field-flight-splash-damage || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0191-Get-buildable-explosion-parameters-from-attrs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0192-Document-missile-splash-damage-parameters || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0193-Unused-missile-attribute-spriteCharge || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0194-Unused-missile-attribute-rotates || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0195-Unused-missile-attribute-renderfx || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0196-Unused-missile-attribute-impactFlightDir || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0197-complete-botTarget_t-even-more-gentity_t-ref-support || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0198-AI-know-about-all-friendly-buildings || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0199-AIEntityToGentity-checks-reachability-for-allied-stu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0200-rewrite-G_NewCallDefinition-again || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0201-g_admin_level_t-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0202-do-not-memset-non-PoD || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0203-bg_parse.cpp-do-not-confuse-types || || || || cleans up a bsearch, but better std::lower_bound&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0204-silence-conditional-uninitialized || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0205-FOFS-is-offsetof || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0206-fix-Wcomma || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0207-remove-unused-macros || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0208-use-static-when-possible || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0209-define-missing-ctors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0210-fix-sign-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0211-fix-Wtautological-unsigned-enum-zero-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0212-update-deps-daemon-rmlui-to-warn-less || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0213-add-a-script-to-prepare-release || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0214-pkg-unvanquished_src.dpkdir-is-no-longer-a-submodule || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0215-minor-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0216-G_IterateCallEndpoints-uses-a-reference-instead-of-p || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0217-include-changelog-file-in-welcome-page || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0218-fix-recast-limiting-number-rc_layers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0219-GMP-give-a-1s-repeatrate-to-grenades-and-firebomb || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0220-do-not-gitignore-buildable-folder || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0221-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0222-GMP-allow-big-aliens-to-attack-medistation-at-any-an || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0223-remove-dead-botTeam-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0224-make-release.sh-stop-if-build-failed || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0225-release.sh-now-stores-patches-in-a-tarball || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0226-fix-loads-of-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0227-Add-g_bot_traceClient-for-BT-debugging || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0228-readme-add-help-for-submodule-method-of-working || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0229-Warning-fix-macro-redefinition-of-AS_OVER_RT3 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0230-BotActionFight-fix-wrong-comment || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0231-inspired-from-Don-t-give-spectators-WP_ALEVEL0 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0232-Nuke-bisphere-trace-gamelogic-fallout || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0233-Bots-forbid-actions-while-dead || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0234-Debug-draw-fix-DU_DRAW_QUADS-mode || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0235-Define-lifetime-attribute-in-missile-configs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0236-Fix-intermittently-disappearing-mara-zaps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0237-repair-shader-replacement-entities || || #2806 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0238-fix-func_desctructable-not-being-linked-on-reset || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0239-GMP-corpses-do-not-block-movers || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0240-HUD-dmg-feedback-on-movers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0241-glm-VectorCopy-in-sg_spawn_mover.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0242-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0243-give-can-give-mantis-staminaDrain || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0244-Implement-the-Biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0245-make-bots-buy-the-biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0246-Biokit-changes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0247-Sudden-Death || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0248-show-g_maxMiners-value-in-teamstatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0249-random-building-for-bots || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0250-bugfix-bots-build-drill-leech-even-when-BP-are-negat || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0251-bot-tactic-menu || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0252-complete-refill-for-clip-weapons-even-the-current-cl || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0253-force-weapon-change-on-ammo-refill || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0254-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0255-update-the-MOTD-when-the-cvar-is-changed || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0256-scoreboard-layout-changes || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0257-voting-improvements-add-colours-and-formatting || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0258-do-not-crash-if-a-sound-is-unknown || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0259-release.sh-also-generates-changelog-for-debug-purpos || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0260-warn-when-game-should-be-ended-by-an-event || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0261-do-not-disable-cg_drawentity-when-map-has-fog || debug || || || Seems to be missing a piece (unused 'scan')&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0262-traditional-is-not-deprecated || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0263-say-the-original-value-when-trigger_heal-have-negati || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0264-TMP-give-bbox-info-of-entities-don-t-remove-orphan-b || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0265-Revert-rmlui-implement-standard-ul-li-tag || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0266-CFG-sane-default-config-for-bots || bots || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8474</id>
		<title>User:Killing time</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8474"/>
		<updated>2023-10-30T02:58:22Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Integrating patches from freem's fork */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Integrating patches from freem's fork ==&lt;br /&gt;
{|&lt;br /&gt;
! Title&lt;br /&gt;
! Category&lt;br /&gt;
! Upstream&lt;br /&gt;
! Dep&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0001-AI-remove-skillset || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0002-fix-crash-if-using-BotActionFollow-on-a-disconnected || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0003-do-not-deprecate-glm-vec3-VEC2GLM-glm-vec3-v-yet || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0004-use-placement-new-for-gentities || || || || Seems incomplete as there is no destructor.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0005-remove-useless-newlines-in-Svcmd_EntityShow_f || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0006-BoundedVector-move-in-own-file-complete-API || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0007-create-a-map_entity_t-struct-in-own-header-file || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0008-glm-sg_spawn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0009-replace-trap_SetBrushModel-with-G_CM_SetBrushModel || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0010-respect-constness-of-things || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0011-style-and-G_Spawn-improved-error-report || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0012-replace-defines-by-enum-ent_version_t-remove-unused- || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0013-use-std-string-inside-G_ResolveEntityKeyword || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0014-G_FireEntityRandomly-G_FireEntity-G_HandleActCall-is || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0015-G_ModelIndex-takes-a-std-string || || || || StringRef would be better&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0016-remove-struct-gentityTargetChoice_t-from-sg_entities || || || 0014 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0017-G_NewString-no-longer-uses-BG_Alloc || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0018-gentityCallDefinition_t-name-is-a-const-char || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0019-turn-gentityCallDefinition_t-name-into-std-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0020-mapEntity_t-names-are-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0021-mapEntity_t-groupName-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0022-mapEntity_t-message-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0023-mapEntity_t-model-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0024-mapEntity_t-model2-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0025-mapEntity_t-shaderKey-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0026-mapEntity_t-shaderReplacement-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0027-gentity_t-classname-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0028-gentityCallDefinition_t-action-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0029-make-gentityCallDefinition_t-safer-and-compact-it || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0030-make-mapEntity_t-targets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0031-make-mapEntity_t-calltargets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0032-remove-useless-empty-calltarget-target || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0033-finish-half-baked-botTarget_t-interface || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0034-add-botMemory_t-hasEnemy || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0035-finish-half-baked-GentityRef_impl || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0036-more-static-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0037-Rewrite-BotSearchForEnemy-to-use-a-std-vector || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0038-GMP-optionally-do-not-regenerate-if-there-is-OM || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0039-AI-add-g_bot_medistatDistance-to-fine-tune-medistati || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0040-HUD-Draw-time-to-completion-for-buildings-in-constru || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0041-Refactor-EV_NO_SPAWNS-to-EV_MAIN_REPORTS_NO_SPAWNS-f || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0042-HUD-Implement-a-base-status-HUD-element || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0043-HUD-Show-construction-time-with-ghost-buildables || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0044-MOD-give-a-repeatRate-option-to-upgrades || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0045-remove-duplicated-alertedToEnemy-from-alien-BTs || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0046-AI-humans-do-not-know-how-to-flee-from-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0047-BotActionBuy-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0048-BT-add-percentSkill-condition || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0049-MAP-support-target_force_win-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0050-MAP-support-targetname3-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0051-BT-implement-action-reload || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0052-BT-add-condition-weaponIsReady || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0053-merge-as-many-.-Attributes_t-stuff-as-possible-into- || || || || I dislike it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0054-move-.-_RANGE-variables-into-weaponAttributes_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0055-give-abuildupg-weapon-the-entries-it-needs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0056-move-abuilder-upg-spit-configuration-in-right-file || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0057-remove-per-melee-weapon-width-height-damage-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0058-remove-dretch-specific-variables-in-favor-of-weaponA || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0059-move-painsaw-and-mantis-specifics-into-FireMelee || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0060-allow-to-spawn-with-a-gun-class-in-devmap || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0061-remove-most-shotgun-specific-variables || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0062-remove-SMG-RIFLE-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0063-remove-CHAINGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0064-remove-MDRIVER-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0065-remove-LASGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0066-MOD-make-doKnockback-a-weapon-attr-entry-as-for-miss || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0067-move-BG_MeansOfDeathByName-into-bg_parse.cpp-static || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0068-add-a-minimal-BG_BoundingBox-for-class_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0069-code-deduplication-style-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0070-AI-aliens-fight-back-at-saner-dist-400qu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0071-AI-aliens-flee-reliably || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0072-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0073-AI-aliens-go-grab-poison || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0074-more-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0075-AI-humans-do-not-repair-in-heat-of-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0076-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0077-AI-human-bots-try-to-keep-distance-with-enemy-buildi || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0078-AI-human-bots-try-to-repair-every-15s || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0079-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0080-BotTargetInAttackRange-use-correct-maxs-height || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0081-sg_admin.cpp-add-missing-include || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0082-bot-cpp-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0083-MOD-weapons-cfg-can-change-means-of-death-like-missi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0084-rcFilterGaps-walkableRadius-2-is-walkable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0085-CMD-remove-bots-from-listplayers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0086-move-spawning-level-vars-out-of-global-scope || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0087-migrate-a-bunch-of-API-to-glm || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0088-sever-links-with-CBSE || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0089-make-gentity_t-entity-a-std-unique_ptr || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0090-BG_PlayerStateToEntityState-remove-useless-arg || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0091-DOC-add-HOSTING-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0092-DOC-add-PACKAGING-file-without-the-mod-section || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0093-DOC-add-LAYOUTS-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0094-DOC-add-info-about-nexe-file-names-in-PACKAGING || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0095-PM_AddTouchEnt-PM_ClipVelocity-constness || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0096-meansOfDeath_t-is-not-an-int || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0097-mitigate-BotTargetIsVisible-crash-for-coordinate-tar || bot || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0098-glm-G_UnlaggedOn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0099-remove-unused-G_FindClosestEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0100-glm-Beacon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0101-unify-BG_BoundingBox-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0102-glm-sg_buildable.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0103-glm-sg_buildpoints.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0104-glm-sg_client.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0105-glm-sg_cmds.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0106-glm-Beacon.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0107-glm-sg_buildable.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0108-glm-sg_client.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0109-glm-sg_combat.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0110-glm-sg_missile.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0111-glm-sg_utils.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0112-glm-sg_weapon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0113-remove-duplicated-trap_SetConfigstringRestrictions-p || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0114-replace-some-trap_-calls-with-G_CM_-equiv || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0115-remove-unused-G_CM_ClipToEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0116-remove-silly-function || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0117-glm-sg_physics.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0118-glm-sg_admin.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0119-sg_cm_world.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0120-sg_spawn_mover.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0121-G_MoverGroup-cleanup-beware-non-trivial-clean || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0122-glm-G_KillBrushModel-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0123-glm-G_TryPushingEntity || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0124-glm-sg_active.cpp-P_DamageFeedback || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0125-glm-sg_active.cpp-ClientShove || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0126-glm-sg_active.cpp-PushBot || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0127-glm-sg_active.cpp-G_TouchTriggers || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0128-glm-sg_active.cpp-BeaconAutoTag || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0129-glm-sg_active.cpp-ClientTimerActions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0130-glm-sg_active.cpp-ClientEvents || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0131-glm-sg_active.cpp-G_UnlaggedOff || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0132-glm-sg_active.cpp-G_UnlaggedDetectCollisions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0133-glm-sg_active.cpp-ClientThink_real || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0134-glm-sg_main.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0135-glm-remaining-components-for-the-vec3_t-at-least || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0136-glm-unlagged_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0137-glm-buildLog_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0138-glm-clientPersistant_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0139-glm-sg_spawn.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0140-glm-g_client_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0141-glm-sgame-components-HealthComponent.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0142-move-gentity_t-animation-into-map_entity.h-glm-vec4 || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0143-glm-gentity_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0144-sgame-VEC2GLM-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0145-sgame-codestyle || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0146-sg_cm_world.cpp-cleanup-hopefully || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0147-glm-trace-in-cgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0148-glm-trace-by-return-sgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0149-glm-trace-API-by-return-shared || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0150-fix-activate-entities-not-being-triggered-when-playe || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0151-do-not-prevent-building-a-unique-if-the-current-one- || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0152-glm-BG_EvaluateTrajectory-BG_EvaluateTrajectoryDelta || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0153-bots-invert-check-if-a-healing-source-is-horizontall || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0154-Implement-default-navgen-config-applies-to-all-maps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0155-Invalidate-GentityRef-on-player-death || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0156-dretch-and-mantis-bots-attack-enemies-while-wall-cli || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0157-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0158-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0159-translation-ship-them-even-if-incomplete || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0160-rmlui-implement-standard-b-i-em-tags || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0161-rmlui-implement-custom-web-tag-for-common-unvanquish || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0162-rmlui-implement-standard-ul-li-tag || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0163-ui-rewrite-gampelay-guide-and-developer-message-with || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0164-ui-add-option-for-cg_marks || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0165-presets-graphics-disable-marks-in-lowest-profile || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0166-cg_rocket_draw-support-emoticons-in-map-and-author-n || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0167-ui-fix-endline-in-RML-translatable-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0168-utils-generate_rml_pot-escape-double-quotes-when-wri || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0169-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0170-Incrementally-update-server-list-hacky-way || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0171-Fix-refreshing-internet-server-list-after-local || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0172-Improve-incremental-server-list-population || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0173-Remove-unused-enum-constant-BF_POWER || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0174-Properly-destroy-entity-when-reverting-construction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0175-Fix-buildlog-see-more-message || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0176-Don-t-use-in-place-StripColors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0177-improve-bot-lcannon-handling-do-not-always-charge-to || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0178-Fix-ADMBP-buffer-overflows || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0179-Avoid-double-newlines-on-ADMBP-buffer-split || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0180-Bump-submodules-daemon-RmlUi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0181-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0182-Nit-use-BOT_DEFAULT_BEHAVIOR-constant || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0183-Remove-too-spammy-cg_showmiss-log || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0184-Convert-cg_showmiss-to-a-logger-cgame.prediction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0185-Don-t-localize-sounds-incorrectly-in-third-person || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0186-sync-submodules || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0187-use-g_fillBotsTeamVotesPercent-again-2777 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0188-fix-bug-in-bot-behavior-function-percentClips-2776 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0189-Enable-missile-config-bad-token-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0190-Remove-unused-entity-field-flight-splash-damage || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0191-Get-buildable-explosion-parameters-from-attrs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0192-Document-missile-splash-damage-parameters || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0193-Unused-missile-attribute-spriteCharge || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0194-Unused-missile-attribute-rotates || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0195-Unused-missile-attribute-renderfx || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0196-Unused-missile-attribute-impactFlightDir || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0197-complete-botTarget_t-even-more-gentity_t-ref-support || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0198-AI-know-about-all-friendly-buildings || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0199-AIEntityToGentity-checks-reachability-for-allied-stu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0200-rewrite-G_NewCallDefinition-again || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0201-g_admin_level_t-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0202-do-not-memset-non-PoD || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0203-bg_parse.cpp-do-not-confuse-types || || || || cleans up a bsearch, but better std::lower_bound&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0204-silence-conditional-uninitialized || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0205-FOFS-is-offsetof || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0206-fix-Wcomma || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0207-remove-unused-macros || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0208-use-static-when-possible || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0209-define-missing-ctors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0210-fix-sign-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0211-fix-Wtautological-unsigned-enum-zero-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0212-update-deps-daemon-rmlui-to-warn-less || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0213-add-a-script-to-prepare-release || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0214-pkg-unvanquished_src.dpkdir-is-no-longer-a-submodule || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0215-minor-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0216-G_IterateCallEndpoints-uses-a-reference-instead-of-p || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0217-include-changelog-file-in-welcome-page || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0218-fix-recast-limiting-number-rc_layers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0219-GMP-give-a-1s-repeatrate-to-grenades-and-firebomb || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0220-do-not-gitignore-buildable-folder || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0221-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0222-GMP-allow-big-aliens-to-attack-medistation-at-any-an || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0223-remove-dead-botTeam-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0224-make-release.sh-stop-if-build-failed || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0225-release.sh-now-stores-patches-in-a-tarball || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0226-fix-loads-of-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0227-Add-g_bot_traceClient-for-BT-debugging || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0228-readme-add-help-for-submodule-method-of-working || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0229-Warning-fix-macro-redefinition-of-AS_OVER_RT3 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0230-BotActionFight-fix-wrong-comment || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0231-inspired-from-Don-t-give-spectators-WP_ALEVEL0 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0232-Nuke-bisphere-trace-gamelogic-fallout || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0233-Bots-forbid-actions-while-dead || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0234-Debug-draw-fix-DU_DRAW_QUADS-mode || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0235-Define-lifetime-attribute-in-missile-configs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0236-Fix-intermittently-disappearing-mara-zaps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0237-repair-shader-replacement-entities || || #2806 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0238-fix-func_desctructable-not-being-linked-on-reset || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0239-GMP-corpses-do-not-block-movers || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0240-HUD-dmg-feedback-on-movers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0241-glm-VectorCopy-in-sg_spawn_mover.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0242-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0243-give-can-give-mantis-staminaDrain || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0244-Implement-the-Biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0245-make-bots-buy-the-biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0246-Biokit-changes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0247-Sudden-Death || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0248-show-g_maxMiners-value-in-teamstatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0249-random-building-for-bots || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0250-bugfix-bots-build-drill-leech-even-when-BP-are-negat || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0251-bot-tactic-menu || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0252-complete-refill-for-clip-weapons-even-the-current-cl || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0253-force-weapon-change-on-ammo-refill || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0254-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0255-update-the-MOTD-when-the-cvar-is-changed || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0256-scoreboard-layout-changes || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0257-voting-improvements-add-colours-and-formatting || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0258-do-not-crash-if-a-sound-is-unknown || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0259-release.sh-also-generates-changelog-for-debug-purpos || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0260-warn-when-game-should-be-ended-by-an-event || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0261-do-not-disable-cg_drawentity-when-map-has-fog || debug || || || Seems to be missing a piece (unused 'scan')&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0262-traditional-is-not-deprecated || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0263-say-the-original-value-when-trigger_heal-have-negati || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0264-TMP-give-bbox-info-of-entities-don-t-remove-orphan-b || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0265-Revert-rmlui-implement-standard-ul-li-tag || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0266-CFG-sane-default-config-for-bots || bots || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8455</id>
		<title>User:Killing time</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=User:Killing_time&amp;diff=8455"/>
		<updated>2023-10-29T04:08:18Z</updated>

		<summary type="html">&lt;p&gt;Killing time: /* Integrating patches from freem's fork */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Integrating patches from freem's fork ==&lt;br /&gt;
{|&lt;br /&gt;
! Title&lt;br /&gt;
! Category&lt;br /&gt;
! Upstream&lt;br /&gt;
! Dep&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0001-AI-remove-skillset || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0002-fix-crash-if-using-BotActionFollow-on-a-disconnected || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0003-do-not-deprecate-glm-vec3-VEC2GLM-glm-vec3-v-yet || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0004-use-placement-new-for-gentities || || || || Seems incomplete as there is no destructor.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0005-remove-useless-newlines-in-Svcmd_EntityShow_f || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0006-BoundedVector-move-in-own-file-complete-API || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0007-create-a-map_entity_t-struct-in-own-header-file || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0008-glm-sg_spawn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0009-replace-trap_SetBrushModel-with-G_CM_SetBrushModel || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0010-respect-constness-of-things || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0011-style-and-G_Spawn-improved-error-report || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0012-replace-defines-by-enum-ent_version_t-remove-unused- || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0013-use-std-string-inside-G_ResolveEntityKeyword || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0014-G_FireEntityRandomly-G_FireEntity-G_HandleActCall-is || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0015-G_ModelIndex-takes-a-std-string || || || || StringRef would be better&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0016-remove-struct-gentityTargetChoice_t-from-sg_entities || || || 0014 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0017-G_NewString-no-longer-uses-BG_Alloc || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0018-gentityCallDefinition_t-name-is-a-const-char || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0019-turn-gentityCallDefinition_t-name-into-std-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0020-mapEntity_t-names-are-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0021-mapEntity_t-groupName-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0022-mapEntity_t-message-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0023-mapEntity_t-model-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0024-mapEntity_t-model2-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0025-mapEntity_t-shaderKey-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0026-mapEntity_t-shaderReplacement-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0027-gentity_t-classname-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0028-gentityCallDefinition_t-action-is-a-std-string || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0029-make-gentityCallDefinition_t-safer-and-compact-it || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0030-make-mapEntity_t-targets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0031-make-mapEntity_t-calltargets-a-BoundedVector || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0032-remove-useless-empty-calltarget-target || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0033-finish-half-baked-botTarget_t-interface || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0034-add-botMemory_t-hasEnemy || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0035-finish-half-baked-GentityRef_impl || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0036-more-static-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0037-Rewrite-BotSearchForEnemy-to-use-a-std-vector || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0038-GMP-optionally-do-not-regenerate-if-there-is-OM || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0039-AI-add-g_bot_medistatDistance-to-fine-tune-medistati || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0040-HUD-Draw-time-to-completion-for-buildings-in-constru || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0041-Refactor-EV_NO_SPAWNS-to-EV_MAIN_REPORTS_NO_SPAWNS-f || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0042-HUD-Implement-a-base-status-HUD-element || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0043-HUD-Show-construction-time-with-ghost-buildables || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0044-MOD-give-a-repeatRate-option-to-upgrades || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0045-remove-duplicated-alertedToEnemy-from-alien-BTs || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0046-AI-humans-do-not-know-how-to-flee-from-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0047-BotActionBuy-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0048-BT-add-percentSkill-condition || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0049-MAP-support-target_force_win-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0050-MAP-support-targetname3-from-AMP || amp || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0051-BT-implement-action-reload || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0052-BT-add-condition-weaponIsReady || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0053-merge-as-many-.-Attributes_t-stuff-as-possible-into- || || || || I dislike it&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0054-move-.-_RANGE-variables-into-weaponAttributes_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0055-give-abuildupg-weapon-the-entries-it-needs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0056-move-abuilder-upg-spit-configuration-in-right-file || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0057-remove-per-melee-weapon-width-height-damage-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0058-remove-dretch-specific-variables-in-favor-of-weaponA || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0059-move-painsaw-and-mantis-specifics-into-FireMelee || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0060-allow-to-spawn-with-a-gun-class-in-devmap || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0061-remove-most-shotgun-specific-variables || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0062-remove-SMG-RIFLE-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0063-remove-CHAINGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0064-remove-MDRIVER-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0065-remove-LASGUN-specific-vars || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0066-MOD-make-doKnockback-a-weapon-attr-entry-as-for-miss || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0067-move-BG_MeansOfDeathByName-into-bg_parse.cpp-static || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0068-add-a-minimal-BG_BoundingBox-for-class_t || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0069-code-deduplication-style-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0070-AI-aliens-fight-back-at-saner-dist-400qu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0071-AI-aliens-flee-reliably || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0072-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0073-AI-aliens-go-grab-poison || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0074-more-alien-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0075-AI-humans-do-not-repair-in-heat-of-a-fight || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0076-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0077-AI-human-bots-try-to-keep-distance-with-enemy-buildi || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0078-AI-human-bots-try-to-repair-every-15s || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0079-human-bt-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0080-BotTargetInAttackRange-use-correct-maxs-height || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0081-sg_admin.cpp-add-missing-include || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0082-bot-cpp-cleanup || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0083-MOD-weapons-cfg-can-change-means-of-death-like-missi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0084-rcFilterGaps-walkableRadius-2-is-walkable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0085-CMD-remove-bots-from-listplayers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0086-move-spawning-level-vars-out-of-global-scope || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0087-migrate-a-bunch-of-API-to-glm || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0088-sever-links-with-CBSE || nuke || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0089-make-gentity_t-entity-a-std-unique_ptr || || || 0004 ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0090-BG_PlayerStateToEntityState-remove-useless-arg || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0091-DOC-add-HOSTING-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0092-DOC-add-PACKAGING-file-without-the-mod-section || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0093-DOC-add-LAYOUTS-file || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0094-DOC-add-info-about-nexe-file-names-in-PACKAGING || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0095-PM_AddTouchEnt-PM_ClipVelocity-constness || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0096-meansOfDeath_t-is-not-an-int || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0097-mitigate-BotTargetIsVisible-crash-for-coordinate-tar || bot || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0098-glm-G_UnlaggedOn || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0099-remove-unused-G_FindClosestEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0100-glm-Beacon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0101-unify-BG_BoundingBox-functions || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0102-glm-sg_buildable.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0103-glm-sg_buildpoints.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0104-glm-sg_client.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0105-glm-sg_cmds.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0106-glm-Beacon.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0107-glm-sg_buildable.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0108-glm-sg_client.cpp-internals || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0109-glm-sg_combat.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0110-glm-sg_missile.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0111-glm-sg_utils.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0112-glm-sg_weapon.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0113-remove-duplicated-trap_SetConfigstringRestrictions-p || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0114-replace-some-trap_-calls-with-G_CM_-equiv || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0115-remove-unused-G_CM_ClipToEntity || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0116-remove-silly-function || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0117-glm-sg_physics.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0118-glm-sg_admin.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0119-sg_cm_world.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0120-sg_spawn_mover.cpp-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0121-G_MoverGroup-cleanup-beware-non-trivial-clean || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0122-glm-G_KillBrushModel-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0123-glm-G_TryPushingEntity || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0124-glm-sg_active.cpp-P_DamageFeedback || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0125-glm-sg_active.cpp-ClientShove || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0126-glm-sg_active.cpp-PushBot || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0127-glm-sg_active.cpp-G_TouchTriggers || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0128-glm-sg_active.cpp-BeaconAutoTag || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0129-glm-sg_active.cpp-ClientTimerActions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0130-glm-sg_active.cpp-ClientEvents || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0131-glm-sg_active.cpp-G_UnlaggedOff || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0132-glm-sg_active.cpp-G_UnlaggedDetectCollisions || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0133-glm-sg_active.cpp-ClientThink_real || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0134-glm-sg_main.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0135-glm-remaining-components-for-the-vec3_t-at-least || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0136-glm-unlagged_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0137-glm-buildLog_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0138-glm-clientPersistant_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0139-glm-sg_spawn.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0140-glm-g_client_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0141-glm-sgame-components-HealthComponent.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0142-move-gentity_t-animation-into-map_entity.h-glm-vec4 || || #2831 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0143-glm-gentity_t || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0144-sgame-VEC2GLM-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0145-sgame-codestyle || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0146-sg_cm_world.cpp-cleanup-hopefully || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0147-glm-trace-in-cgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0148-glm-trace-by-return-sgame || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0149-glm-trace-API-by-return-shared || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0150-fix-activate-entities-not-being-triggered-when-playe || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0151-do-not-prevent-building-a-unique-if-the-current-one- || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0152-glm-BG_EvaluateTrajectory-BG_EvaluateTrajectoryDelta || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0153-bots-invert-check-if-a-healing-source-is-horizontall || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0154-Implement-default-navgen-config-applies-to-all-maps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0155-Invalidate-GentityRef-on-player-death || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0156-dretch-and-mantis-bots-attack-enemies-while-wall-cli || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0157-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0158-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0159-translation-ship-them-even-if-incomplete || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0160-rmlui-implement-standard-b-i-em-tags || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0161-rmlui-implement-custom-web-tag-for-common-unvanquish || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0162-rmlui-implement-standard-ul-li-tag || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0163-ui-rewrite-gampelay-guide-and-developer-message-with || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0164-ui-add-option-for-cg_marks || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0165-presets-graphics-disable-marks-in-lowest-profile || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0166-cg_rocket_draw-support-emoticons-in-map-and-author-n || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0167-ui-fix-endline-in-RML-translatable-string || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0168-utils-generate_rml_pot-escape-double-quotes-when-wri || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0169-translation-update-pot-and-po-files || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0170-Incrementally-update-server-list-hacky-way || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0171-Fix-refreshing-internet-server-list-after-local || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0172-Improve-incremental-server-list-population || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0173-Remove-unused-enum-constant-BF_POWER || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0174-Properly-destroy-entity-when-reverting-construction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0175-Fix-buildlog-see-more-message || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0176-Don-t-use-in-place-StripColors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0177-improve-bot-lcannon-handling-do-not-always-charge-to || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0178-Fix-ADMBP-buffer-overflows || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0179-Avoid-double-newlines-on-ADMBP-buffer-split || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0180-Bump-submodules-daemon-RmlUi || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0181-Updated-translations || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0182-Nit-use-BOT_DEFAULT_BEHAVIOR-constant || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0183-Remove-too-spammy-cg_showmiss-log || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0184-Convert-cg_showmiss-to-a-logger-cgame.prediction || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0185-Don-t-localize-sounds-incorrectly-in-third-person || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0186-sync-submodules || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0187-use-g_fillBotsTeamVotesPercent-again-2777 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0188-fix-bug-in-bot-behavior-function-percentClips-2776 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0189-Enable-missile-config-bad-token-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0190-Remove-unused-entity-field-flight-splash-damage || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0191-Get-buildable-explosion-parameters-from-attrs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0192-Document-missile-splash-damage-parameters || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0193-Unused-missile-attribute-spriteCharge || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0194-Unused-missile-attribute-rotates || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0195-Unused-missile-attribute-renderfx || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0196-Unused-missile-attribute-impactFlightDir || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0197-complete-botTarget_t-even-more-gentity_t-ref-support || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0198-AI-know-about-all-friendly-buildings || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0199-AIEntityToGentity-checks-reachability-for-allied-stu || bots || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0200-rewrite-G_NewCallDefinition-again || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0201-g_admin_level_t-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0202-do-not-memset-non-PoD || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0203-bg_parse.cpp-do-not-confuse-types || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0204-silence-conditional-uninitialized || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0205-FOFS-is-offsetof || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0206-fix-Wcomma || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0207-remove-unused-macros || || #2832 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0208-use-static-when-possible || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0209-define-missing-ctors || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0210-fix-sign-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0211-fix-Wtautological-unsigned-enum-zero-compare || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0212-update-deps-daemon-rmlui-to-warn-less || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0213-add-a-script-to-prepare-release || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0214-pkg-unvanquished_src.dpkdir-is-no-longer-a-submodule || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0215-minor-cleanup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0216-G_IterateCallEndpoints-uses-a-reference-instead-of-p || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0217-include-changelog-file-in-welcome-page || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0218-fix-recast-limiting-number-rc_layers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0219-GMP-give-a-1s-repeatrate-to-grenades-and-firebomb || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0220-do-not-gitignore-buildable-folder || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0221-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0222-GMP-allow-big-aliens-to-attack-medistation-at-any-an || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0223-remove-dead-botTeam-variable || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0224-make-release.sh-stop-if-build-failed || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0225-release.sh-now-stores-patches-in-a-tarball || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0226-fix-loads-of-warnings || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0227-Add-g_bot_traceClient-for-BT-debugging || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0228-readme-add-help-for-submodule-method-of-working || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0229-Warning-fix-macro-redefinition-of-AS_OVER_RT3 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0230-BotActionFight-fix-wrong-comment || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0231-inspired-from-Don-t-give-spectators-WP_ALEVEL0 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0232-Nuke-bisphere-trace-gamelogic-fallout || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0233-Bots-forbid-actions-while-dead || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0234-Debug-draw-fix-DU_DRAW_QUADS-mode || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0235-Define-lifetime-attribute-in-missile-configs || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0236-Fix-intermittently-disappearing-mara-zaps || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#090&amp;quot; | 0237-repair-shader-replacement-entities || || #2806 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0238-fix-func_desctructable-not-being-linked-on-reset || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0239-GMP-corpses-do-not-block-movers || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0240-HUD-dmg-feedback-on-movers || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0241-glm-VectorCopy-in-sg_spawn_mover.cpp || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0242-cleanup || glm || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0243-give-can-give-mantis-staminaDrain || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0244-Implement-the-Biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0245-make-bots-buy-the-biokit || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0246-Biokit-changes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0247-Sudden-Death || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0248-show-g_maxMiners-value-in-teamstatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0249-random-building-for-bots || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0250-bugfix-bots-build-drill-leech-even-when-BP-are-negat || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0251-bot-tactic-menu || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0252-complete-refill-for-clip-weapons-even-the-current-cl || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#888&amp;quot; | 0253-force-weapon-change-on-ammo-refill || || #2782 || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0254-GMP-do-not-require-jumping-to-pass-telenodes || gameplay || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0255-update-the-MOTD-when-the-cvar-is-changed || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0256-scoreboard-layout-changes || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0257-voting-improvements-add-colours-and-formatting || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0258-do-not-crash-if-a-sound-is-unknown || bugfix || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0259-release.sh-also-generates-changelog-for-debug-purpos || personal-infra || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0260-warn-when-game-should-be-ended-by-an-event || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0261-do-not-disable-cg_drawentity-when-map-has-fog || debug || || || Seems to be missing a piece (unused 'scan')&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0262-traditional-is-not-deprecated || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0263-say-the-original-value-when-trigger_heal-have-negati || debug || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0264-TMP-give-bbox-info-of-entities-don-t-remove-orphan-b || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0265-Revert-rmlui-implement-standard-ul-li-tag || gui || || ||&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#FFF&amp;quot; | 0266-CFG-sane-default-config-for-bots || bots || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Killing time</name></author>
	</entry>
</feed>