<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openclonk.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marky</id>
	<title>OpenClonk Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openclonk.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marky"/>
	<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/w/Special:Contributions/Marky"/>
	<updated>2026-04-28T22:42:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=Style_Guidelines&amp;diff=1885</id>
		<title>Style Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=Style_Guidelines&amp;diff=1885"/>
		<updated>2019-06-17T17:03:03Z</updated>

		<summary type="html">&lt;p&gt;Marky: /* Data Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document specifies the preferred source code style of files inside the&lt;br /&gt;
OpenClonk source tree. Some of the style rules are also stated implicitly&lt;br /&gt;
inside the examples.&lt;br /&gt;
&lt;br /&gt;
=== All-encompassing Guidelines ===&lt;br /&gt;
==== Line endings ====&lt;br /&gt;
Use a single line feed character (ASCII 10) for line endings.&lt;br /&gt;
&lt;br /&gt;
==== Indentation ====&lt;br /&gt;
Indent your code with tabs (ASCII 9). Use space (ASCII 32) for all other&lt;br /&gt;
formatting.&lt;br /&gt;
&lt;br /&gt;
==== Braces ====&lt;br /&gt;
Braces are on their own line, on the same level of indentation as the&lt;br /&gt;
structure they belong to. You may add braces around single statements in&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt; statements if the first block or an &amp;lt;tt&amp;gt;else&amp;lt;/tt&amp;gt; block has them.&lt;br /&gt;
&lt;br /&gt;
 if (count &amp;lt; 10)&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;Too few thingies!&amp;quot;);&lt;br /&gt;
 	AddMore();&lt;br /&gt;
 }&lt;br /&gt;
 else&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;We have enough&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Spaces ====&lt;br /&gt;
Function names are not followed by space. Commas are. No space follows opening&lt;br /&gt;
brackets (&amp;quot;[&amp;quot;) or parentheses (&amp;quot;(&amp;quot;). Also no space preceeds closing brackets&lt;br /&gt;
(&amp;quot;]&amp;quot;) or parentheses (&amp;quot;)&amp;quot;), or commas. &amp;quot;::&amp;quot;, &amp;quot;-&amp;gt;&amp;quot;, &amp;quot;.&amp;quot; and unary operators do not&lt;br /&gt;
require spaces. Other binary operators do.&lt;br /&gt;
&lt;br /&gt;
Keywords (&amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt; etc.) are followed by a space.&lt;br /&gt;
&lt;br /&gt;
==== Parentheses ====&lt;br /&gt;
Do not use parentheses unless they are required for precedence or the code&lt;br /&gt;
gets confusing without them. Remember other people may have confusion&lt;br /&gt;
thresholds different from you.&lt;br /&gt;
&lt;br /&gt;
==== Control Structures ====&lt;br /&gt;
Control structures with a single statements are written without braces. If the&lt;br /&gt;
statement spans multiple lines, you may add braces for readability. Structures&lt;br /&gt;
without a statement contain a comment denoting this.&lt;br /&gt;
&lt;br /&gt;
 while (*dest++ = *src++)&lt;br /&gt;
 	/* empty */;&lt;br /&gt;
&lt;br /&gt;
Cascades in a &amp;lt;tt&amp;gt;switch&amp;lt;/tt&amp;gt; statement are marked by a FALLTHROUGH&lt;br /&gt;
comment. Code that cannot be reached has an assertion. &amp;lt;tt&amp;gt;case&amp;lt;/tt&amp;gt; elements&lt;br /&gt;
are not indented.&lt;br /&gt;
&lt;br /&gt;
 switch (foo)&lt;br /&gt;
 {&lt;br /&gt;
 case FOO_HEX:&lt;br /&gt;
 	accept_hex = true;&lt;br /&gt;
 	// FALLTHROUGH&lt;br /&gt;
 case FOO_DEC:&lt;br /&gt;
 	accept_num = true;&lt;br /&gt;
 	break;&lt;br /&gt;
 default:&lt;br /&gt;
 	assert(!&amp;quot;Invalid foo value&amp;quot;);&lt;br /&gt;
 	// Do something meaningful here anyway, if possible;&lt;br /&gt;
 	// try to not leave the program in an ill-defined state.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
 // Single-line comments look like this&lt;br /&gt;
&lt;br /&gt;
 // Multi-line comments look like this. Using C++-style comments&lt;br /&gt;
 // helps if you need to comment out large pieces of code later, or if the length of&lt;br /&gt;
 // the comment changes over time. Of course you could still use #if 0 ... #endif&lt;br /&gt;
 // to achieve that.&lt;br /&gt;
&lt;br /&gt;
 /* You may also write multi-line comments like this. Make sure you write enough&lt;br /&gt;
    text to warrant a multi-line comment. Also be sure to write in full sentences. */&lt;br /&gt;
&lt;br /&gt;
==== Type Casting ====&lt;br /&gt;
Do not use C-style or function style casts. Use a template cast instead.&lt;br /&gt;
&lt;br /&gt;
=== Source File Layout ===&lt;br /&gt;
==== Copyright Header ====&lt;br /&gt;
Every source file begins with a copyright header. If you make significant&lt;br /&gt;
changes to the code, you may (but are not required to) add your name to the&lt;br /&gt;
list of copyright holders in &amp;lt;tt&amp;gt;COPYING&amp;lt;/tt&amp;gt;. If you choose to add yourself, use your real name,&lt;br /&gt;
not a nickname. Legally recognized pseudonyms are accepted, as are names of&lt;br /&gt;
legal entities.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
  * OpenClonk, http://www.openclonk.org&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2009-2014, The OpenClonk Team and contributors&lt;br /&gt;
  *&lt;br /&gt;
  * Other legalese goes here, but has been omitted for brevity. See an&lt;br /&gt;
  * existing file for a template.&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
The copyright header is followed by an empty line. Put a comment explaining&lt;br /&gt;
the purpose of the file next, and leave another blank line after this.&lt;br /&gt;
&lt;br /&gt;
==== Inclusion Guards ====&lt;br /&gt;
If you are writing a header file, use #include guards. If your file is called&lt;br /&gt;
&#039;&#039;C4Foo.h&#039;&#039;, your guard should be &amp;lt;tt&amp;gt;INC_&#039;&#039;C4Foo&#039;&#039;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 #ifndef INC_C4Foo&lt;br /&gt;
 #define INC_C4Foo&lt;br /&gt;
 class C4Foo;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO: Precompiled headers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== #include Directives ====&lt;br /&gt;
Include local headers first. Put the filename in double quotes, and use&lt;br /&gt;
forward slashes as directory separators.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;Standard.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;StdBuf.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Leave a blank line before system headers. Use angle brackets to include these,&lt;br /&gt;
and sort them alphabetically.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;map&amp;gt;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
==== Preprocessor Macros ====&lt;br /&gt;
Do not &amp;lt;tt&amp;gt;#define&amp;lt;/tt&amp;gt; values in headers. Use &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt; instead, or&lt;br /&gt;
&amp;lt;tt&amp;gt;enum&amp;lt;/tt&amp;gt; if you are declaring an enumeration.&lt;br /&gt;
&lt;br /&gt;
Do not &amp;lt;tt&amp;gt;#define&amp;lt;/tt&amp;gt; inline functions either, use &amp;lt;tt&amp;gt;inline&amp;lt;/tt&amp;gt;. If your&lt;br /&gt;
functions need to work on multiple data types, overload the function or write&lt;br /&gt;
a &amp;lt;tt&amp;gt;template&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If, despite of the above, you still need to write a macro, use an all-uppercase&lt;br /&gt;
name. If your macro contains a compound statement, enclose it in a &amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt;&lt;br /&gt;
loop to allow its use in &amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt; statements. A terminating semicolon&lt;br /&gt;
should be provided at the place of invocation. This makes parsing the source&lt;br /&gt;
easier for pretty-printers and editors. Consider undefining your macro when&lt;br /&gt;
you are done using it.&lt;br /&gt;
&lt;br /&gt;
 #define FOO(a, b) do { \&lt;br /&gt;
 	bar += (a); \&lt;br /&gt;
 	bar /= (b); \&lt;br /&gt;
 } while(0)&lt;br /&gt;
&lt;br /&gt;
==== Data Types ====&lt;br /&gt;
Do not use the Win32 style integer declarations &amp;lt;tt&amp;gt;DWORD&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;BOOL&amp;lt;/tt&amp;gt; except when interfacing with the Windows API. If you need a guarantee about the size of your variables, use&lt;br /&gt;
the C99 types &amp;lt;tt&amp;gt;int&#039;&#039;XX&#039;&#039;_t&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;uint&#039;&#039;XX&#039;&#039;_t&amp;lt;/tt&amp;gt;. If you don&#039;t&lt;br /&gt;
need that guarantee, use &amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt;. If you need a variable that is large&lt;br /&gt;
enough to store a pointer on your current platform, use &amp;lt;tt&amp;gt;intptr_t&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you come across code that still uses Win32 types, consider changing it if&lt;br /&gt;
you are working on code in the vicinity. Don&#039;t commit changes that only&lt;br /&gt;
consist of replacing &amp;lt;tt&amp;gt;DWORD&amp;lt;/tt&amp;gt; by &amp;lt;tt&amp;gt;uint32_t&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When declaring a pointer, put a space in front of the asterisk, and none&lt;br /&gt;
after. This saves some confusion when declaring multiple variables at once.&lt;br /&gt;
The same goes for references.&lt;br /&gt;
&lt;br /&gt;
Assign variable values in separate lines, because this improves readability. Do not assign variable values and declare other variables of the same type in the same line, because this reduces readability.&lt;br /&gt;
&lt;br /&gt;
 int *foo, *bar;&lt;br /&gt;
 char *Qux(const char *quux);&lt;br /&gt;
 int a = 1;&lt;br /&gt;
 int b = 2;&lt;br /&gt;
 int c, d, e;&lt;br /&gt;
&lt;br /&gt;
==== Functions ====&lt;br /&gt;
Functions that are not used outside of the containing file are placed inside&lt;br /&gt;
of an anonymous namespace.&lt;br /&gt;
&lt;br /&gt;
 namespace&lt;br /&gt;
 {&lt;br /&gt;
 	int Frobnicate(const char *foo);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Functions that are used across multiple files are prototyped inside a common&lt;br /&gt;
header. The prototypes should be grouped where appropriate, and ordered&lt;br /&gt;
logically or, failing that, alphabetically.&lt;br /&gt;
&lt;br /&gt;
Function and class names begin with a capital letter, and use camel casing. If&lt;br /&gt;
you need to embed acronyms inside the name, pretend the acronym was all lower&lt;br /&gt;
case. Member variables use the same convention, but begin with a lower case&lt;br /&gt;
letter. Do not use hungarian prefixes.&lt;br /&gt;
&lt;br /&gt;
 XmlDocument *ParseXmlFile(const char *file);&lt;br /&gt;
&lt;br /&gt;
When passing arguments that may be changed by the called function, pass them&lt;br /&gt;
as pointers. This makes it obvious that they may be changed. Use constant&lt;br /&gt;
references for all other parameters, unless they are a primitive type.&lt;br /&gt;
&lt;br /&gt;
==== Class Members ====&lt;br /&gt;
No class member variable should be declared &amp;lt;tt&amp;gt;public&amp;lt;/tt&amp;gt; unless necessary.&lt;br /&gt;
Consider using &amp;lt;tt&amp;gt;GetFoo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;SetFoo&amp;lt;/tt&amp;gt; accessors. If you want to &lt;br /&gt;
declare a compound data type that allows direct access to its members, use&lt;br /&gt;
&amp;lt;tt&amp;gt;struct&amp;lt;/tt&amp;gt;. Do not add more functions than constructors, destructors, and&lt;br /&gt;
assignment operators to &amp;lt;tt&amp;gt;struct&amp;lt;/tt&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
Mark all class members that do not change the visible state of the object&lt;br /&gt;
&amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;. If you need to modify internal state that is not visible from&lt;br /&gt;
outside of the class, mark the state variable &amp;lt;tt&amp;gt;mutable&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=Building_with_Linux&amp;diff=1878</id>
		<title>Building with Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=Building_with_Linux&amp;diff=1878"/>
		<updated>2018-12-19T22:18:49Z</updated>

		<summary type="html">&lt;p&gt;Marky: Moved the &amp;quot;in short version&amp;quot; to the top.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= In short =&lt;br /&gt;
&lt;br /&gt;
If you prefer doing things on the command line, this is a short alternate path to getting a working build (tested on Ubuntu 17.10, the use of &amp;lt;kbd&amp;gt;ninja&amp;lt;/kbd&amp;gt; is optional):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# apt-get install git cmake build-essential libpng-dev libjpeg-dev ninja-build \&lt;br /&gt;
  libfreetype6-dev libglew-dev libreadline-dev libsdl2-dev libqt5widgets5 \&lt;br /&gt;
  qtbase5-dev libalut-dev libvorbis-dev libopenal-dev libdw-dev&lt;br /&gt;
$ git clone https://github.com/openclonk/openclonk &amp;amp;&amp;amp; cd openclonk &amp;amp;&amp;amp; cmake . -GNinja &amp;amp;&amp;amp; ninja openclonk&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did it this way you can skip the rest of the tutorial. Otherwise, if you prefer using GUIs, have a look at the rest of this page.&lt;br /&gt;
&lt;br /&gt;
= Get the sources =&lt;br /&gt;
&lt;br /&gt;
To get the sources, you need to clone our git repository. Enter the command&lt;br /&gt;
&lt;br /&gt;
$ git clone git://git.openclonk.org/openclonk.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;OpenClonk team members:&#039;&#039; Use &amp;quot;ssh://git@git.openclonk.org/openclonk.git&amp;quot; instead.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you now have the bleeding edge of OpenClonk development on your hard drive! There is a lot of stuff and most likely you won&#039;t understand much of it. Here&#039;s a quick orientation guide of the actually important bits:&lt;br /&gt;
* &amp;quot;docs&amp;quot; - the sources of our documentation&lt;br /&gt;
* &amp;quot;planet&amp;quot; - these are the game resources - scripts, graphics and everything to explain how to make a game out of them&lt;br /&gt;
* &amp;quot;src&amp;quot; - all the source code of the game engine. Lots of C++ ahead.&lt;br /&gt;
&lt;br /&gt;
= Get it to Compile =&lt;br /&gt;
&lt;br /&gt;
This is nice, but we are interested in seeing the game run, aren&#039;t we? For this, we need a program that will take all those C++ files and make an executable file out of it. Unfortunately, programming is complicated stuff so even setting up the tools and the environment has become a bit of science. But this won&#039;t stop us.&lt;br /&gt;
&lt;br /&gt;
== Get the Compiler Tools ==&lt;br /&gt;
&lt;br /&gt;
Before you can start building an executable, you will need some more tools:&lt;br /&gt;
* make, gcc for building (this may be part of your Linux distribution already)&lt;br /&gt;
&lt;br /&gt;
== Get Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Like most big programs, OpenClonk doesn&#039;t stand on its own. Some things (like opening PNG images) were already programmed by other programers far better than we could ever do. Simply get the following packages (they may have different names on your distribution):&lt;br /&gt;
* libsdl2-dev&lt;br /&gt;
* libopenal-dev&lt;br /&gt;
* libminiupnpc-dev&lt;br /&gt;
* libgl1-mesa-dev (will most likely be already installed after you got libsdl2-dev)&lt;br /&gt;
* libxrandr-dev (will most likely be installed already after you got libsdl2-dev)&lt;br /&gt;
* qtbase5-dev&lt;br /&gt;
* libfreetype6-dev&lt;br /&gt;
* libjpeg-dev&lt;br /&gt;
* libpng-dev&lt;br /&gt;
* libglew-dev&lt;br /&gt;
&lt;br /&gt;
== Get CMake ==&lt;br /&gt;
&lt;br /&gt;
Before all this becomes useful, we still need something that tells the compiler &#039;&#039;how&#039;&#039; all those sources and libraries should be compiled together.&lt;br /&gt;
&lt;br /&gt;
For this you need a project file. But there is none - we have to consult &#039;&#039;another&#039;&#039; program to generate it for us. This might seem confusing - but the point is that there are a lot of build environments, and having all those project files next to each other would become a problem in the long run.&lt;br /&gt;
&lt;br /&gt;
Get the cmake package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the installation, start the CMake GUI from the start menu. Put the path you cloned the repository into the source code path field.&lt;br /&gt;
&lt;br /&gt;
[[File:cmake-gui-linux_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now click the &amp;quot;Configure&amp;quot; button in the lower left. It will ask what compiler we want to use. Select the compiler you want to use, most likely the &amp;quot;Unix Makefile&amp;quot; will be the one that you need.&lt;br /&gt;
&lt;br /&gt;
[[File:cmake-gui-linux.png]]&lt;br /&gt;
&lt;br /&gt;
If you get some error messages (in red), you&#039;re probably missing some dependencies. CMake will tell you which ones are missing, and you just need to install those, too.&lt;br /&gt;
&lt;br /&gt;
Repeat the &amp;quot;Configure&amp;quot; step, until CMake no longer gives you error messages. It may still show you some missing paths, but that shouldn&#039;t affect you:&lt;br /&gt;
&lt;br /&gt;
The last step is to click the &amp;quot;Generate&amp;quot; button. If you can click &amp;quot;Generate&amp;quot; and you do not get an error message, you&#039;re good.&lt;br /&gt;
&lt;br /&gt;
== Your First Build ==&lt;br /&gt;
&lt;br /&gt;
Okay, now we have everything needed to make OpenClonk run for the first time. Open a terminal in the build directory that you configured in cmake, where the makefiles are located now. Enter the command&lt;br /&gt;
&lt;br /&gt;
make -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
You could simply call make, but it will take a little longer to compile then: Instead, we start $(nproc) parallel jobs, where $(nproc) will be substituted by the amount of threads your processor can handle.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=Build_OpenClonk&amp;diff=1877</id>
		<title>Build OpenClonk</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=Build_OpenClonk&amp;diff=1877"/>
		<updated>2018-12-19T21:36:38Z</updated>

		<summary type="html">&lt;p&gt;Marky: Added link to the &amp;quot;building with linux&amp;quot; page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windows users can check out these tutorials:&lt;br /&gt;
&lt;br /&gt;
[[Building_with_Windows|Building with Visual C++]]&lt;br /&gt;
&lt;br /&gt;
[[Building_with_MinGW|Building with MinGW]]&lt;br /&gt;
&lt;br /&gt;
[[Building_with_Linux|Building with Linux]]&lt;br /&gt;
&lt;br /&gt;
Otherwise, here is how you can build OpenClonk in three easy steps:&lt;br /&gt;
&lt;br /&gt;
== 1. Get the source code ==&lt;br /&gt;
See [[Git Workflow]]&lt;br /&gt;
&lt;br /&gt;
== 2. Install Build tools and libraries ==&lt;br /&gt;
OpenClonk has a couple of dependencies on other libraries. Please refer to the Readme.*.txt in the freshly checked out source tree.&lt;br /&gt;
: For Windows, we provide prebuilt packages of libraries:&lt;br /&gt;
:* [http://www.openclonk.org/openclonk-deps-vc90.zip for Microsoft C++ users]&lt;br /&gt;
:* [http://www.openclonk.org/mingwlibs2.zip for GNU Compiler Collection users]&lt;br /&gt;
== 3. Compile the game ==&lt;br /&gt;
Again, the Readme.*.txt has the details, as this step is highly platform dependent. But it&#039;s also comparatively uncomplicated: If you installed everything that&#039;s listed, and it doesn&#039;t build, you found a bug.&lt;br /&gt;
&lt;br /&gt;
= Building a debug engine =&lt;br /&gt;
&lt;br /&gt;
The Clonk source code contains lots of little pieces of code that check that the engine works correctly. They can often help finding or preventing bugs, but slow the game down, so they are skipped in normal builds. To enable them, pass -DCMAKE_BUILD_TYPE=Debug to cmake, choose the Debug build in the IDE, or pass --enable-debug to configure. If you are using the GNU Compiler Collection, you can also enable [http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html the libstdc++ debug mode] by passing CPPFLAGS=-D_GLIBCXX_DEBUG to configure.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=Building_with_Linux&amp;diff=1835</id>
		<title>Building with Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=Building_with_Linux&amp;diff=1835"/>
		<updated>2017-07-09T19:46:21Z</updated>

		<summary type="html">&lt;p&gt;Marky: Created page with &amp;quot;= Get the sources =  Let&amp;#039;s just assume you already have the sources :p  = Get it to Compile =  This is nice, but we are interested in seeing the game run, aren&amp;#039;t we? For this,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Get the sources =&lt;br /&gt;
&lt;br /&gt;
Let&#039;s just assume you already have the sources :p&lt;br /&gt;
&lt;br /&gt;
= Get it to Compile =&lt;br /&gt;
&lt;br /&gt;
This is nice, but we are interested in seeing the game run, aren&#039;t we? For this, we need a program that will take all those C++ files and make an executable file out of it. Unfortunately, programming is complicated stuff so even setting up the tools and the environment has become a bit of science. But this won&#039;t stop us.&lt;br /&gt;
&lt;br /&gt;
== Get the Compiler Tools ==&lt;br /&gt;
&lt;br /&gt;
Before you can start building an executable, you will need some more tools:&lt;br /&gt;
* make, gcc for building (this may be part of your Linux distribution already)&lt;br /&gt;
&lt;br /&gt;
== Get Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Like most big programs, OpenClonk doesn&#039;t stand on its own. Some things (like opening PNG images) were already programmed by other programers far better than we could ever do. Simply get the following packages:&lt;br /&gt;
* libsdl2-dev&lt;br /&gt;
* libopenal-dev&lt;br /&gt;
* libminiupnpc-dev&lt;br /&gt;
* libgl1-mesa-dev (will most likely be already installed after you got libsdl2-dev)&lt;br /&gt;
* libxrandr-dev (will most likely be installed already after you got libsdl2-dev)&lt;br /&gt;
* qtbase5-dev&lt;br /&gt;
* libfreetype6-dev&lt;br /&gt;
* libjpeg-dev&lt;br /&gt;
* libglew-dev&lt;br /&gt;
&lt;br /&gt;
== Get CMake ==&lt;br /&gt;
&lt;br /&gt;
Before all this becomes useful, we still need something that tells the compiler &#039;&#039;how&#039;&#039; all those sources and libraries should be compiled together.&lt;br /&gt;
&lt;br /&gt;
For this you need a project file. But there is none - we have to consult &#039;&#039;another&#039;&#039; program to generate it for us. This might seem confusing - but the point is that there are a lot of build environments, and having all those project files next to each other would become a problem in the long run.&lt;br /&gt;
&lt;br /&gt;
Get the cmake package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the installation, start the CMake GUI from the start menu. Put the path you cloned the repository into the source code path field.&lt;br /&gt;
&lt;br /&gt;
[[File:build_windows_cmake3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now click the &amp;quot;Configure&amp;quot; button in the lower left. It will ask what compiler we want to use. Select the compiler you want to use, most likely the &amp;quot;Unix Makefile&amp;quot; will be the one that you need.&lt;br /&gt;
&lt;br /&gt;
[[File:build_windows_cmake4.png]]&lt;br /&gt;
&lt;br /&gt;
If you get some error messages (in red), you&#039;re probably missing some dependencies. Cmake will tell you which ones are missing, and you just need to install those, too.&lt;br /&gt;
&lt;br /&gt;
Repeat the &amp;quot;Configure&amp;quot; step, until Cmake no longer gives you error messages. It may still show you some missing paths, but that shouldn&#039;t affect you:&lt;br /&gt;
&lt;br /&gt;
The last step is to click the &amp;quot;Generate&amp;quot; button. If you can click &amp;quot;Generate&amp;quot; and you do not get an error message, you&#039;re good.&lt;br /&gt;
&lt;br /&gt;
== Your First Build ==&lt;br /&gt;
&lt;br /&gt;
Okay, now we have everything needed to make OpenClonk run for the first time. Open a terminal in the build directory that you configured in cmake, where the makefiles are located now. Enter the command&lt;br /&gt;
&lt;br /&gt;
make -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
You could simply call make, but it will take a little longer to compile then: Instead, we start $(nproc) parallel jobs, where $(nproc) will be substituted by the amount of threads your processor can handle.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=Development&amp;diff=1834</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=Development&amp;diff=1834"/>
		<updated>2017-07-09T19:29:06Z</updated>

		<summary type="html">&lt;p&gt;Marky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
OpenClonk is an open project. That means it depends on people coming in and helping out. People just like you! This page should give you an idea what you could do in order to get involved.&lt;br /&gt;
&lt;br /&gt;
=== Use Development Snapshots ===&lt;br /&gt;
&lt;br /&gt;
OpenClonk is continously in development. The &amp;quot;current&amp;quot; version can change daily! If you want to follow the development, it is a good idea to make sure you are able to run development versions. You will not need to build them yourself - just use the development snapshots linked below and you should be ready to go.&lt;br /&gt;
&lt;br /&gt;
* Development Snapshots - [http://www.openclonk.org/nightly-builds/ www.openclonk.org/nightly-builds/]&lt;br /&gt;
* Blog - [http://blog.openclonk.org blog.openclonk.org]&lt;br /&gt;
* Changelog - [http://git.openclonk.org/openclonk.git git.openclonk.org/openclonk.git]&lt;br /&gt;
* Browse source - [http://git.openclonk.org/openclonk.git/tree/refs/heads/master git.openclonk.org/openclonk.git/tree/refs/heads/master]&lt;br /&gt;
&lt;br /&gt;
=== Report Bugs ===&lt;br /&gt;
&lt;br /&gt;
We cannot possibly account for every possible configuration out there. If you see something that&#039;s wrong, we would really like to know about it. Especially if you are willing to actively work with us in finding a solution for the problem.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s how you can reach us:&lt;br /&gt;
&lt;br /&gt;
* IRC - [irc://irc.euirc.net/openclonk-dev #openclonk-dev] on irc.euirc.net (Problems connecting? Use irc.ham.de.euirc.net)&lt;br /&gt;
* Bugtracker - [http://bugs.openclonk.org bugs.openclonk.org]&lt;br /&gt;
* Forum - [http://forum.openclonk.org forum.openclonk.org]&lt;br /&gt;
&lt;br /&gt;
=== Contribute Scripts or Game Content ===&lt;br /&gt;
&lt;br /&gt;
Just like Clonk Rage before, most things in OpenClonk can be changed without touching the engine. Instead, we rely on a script language and a flexible game content system to make up our game content. This means that you can get involved easily - without having to learn C++ first! Traditionally, developing own objects and scenarios and sharing them with others has been how pretty much all of today&#039;s developers started out.&lt;br /&gt;
&lt;br /&gt;
* Developer Documentation [http://docs.openclonk.org/en/sdk/ docs.openclonk.org/en/sdk/]&lt;br /&gt;
* Forum - [http://forum.openclonk.org forum.openclonk.org]&lt;br /&gt;
* Style Guide - [http://wiki.openclonk.org/w/C4Script_Style_Guidelines wiki.openclonk.org/w/C4Script_Style_Guidelines]&lt;br /&gt;
* Contribute changes - [[Git Workflow]]&lt;br /&gt;
* [http://crucible.openclonk.org Crucible] for code review&lt;br /&gt;
* Are you a sound artist? Here is a list of [[missing sounds]] you can contribute.&lt;br /&gt;
* Game content external to the main game: [[List Of Community Creations]]&lt;br /&gt;
&lt;br /&gt;
=== Build OpenClonk Yourself ===&lt;br /&gt;
&lt;br /&gt;
When delving deeper into OpenClonk, you will often find yourself in the situation that you need a closer look at what makes OpenClonk tick internally. At that point, it is a good idea to assume the perspective of developers - get the source code and build it in your own development environment.&lt;br /&gt;
&lt;br /&gt;
* Tutorial for Windows - [http://wiki.openclonk.org/w/Building_with_Windows wiki.openclonk.org/w/Building_with_Windows]&lt;br /&gt;
* Tutorial for Linux - [http://wiki.openclonk.org/w/Building_with_Linux wiki.openclonk.org/w/Building_with_Linux]&lt;br /&gt;
* General instructions - [http://wiki.openclonk.org/w/Build_OpenClonk wiki.openclonk.org/w/Build_OpenClonk]&lt;br /&gt;
* Git Workflow Guide - [http://wiki.openclonk.org/w/Git_Workflow wiki.openclonk.org/w/Git_Workflow]&lt;br /&gt;
* Git Repository - [http://git.openclonk.org/openclonk.git git.openclonk.org/openclonk.git]&lt;br /&gt;
* Source Code Structure - [http://wiki.openclonk.org/w/Source_code_structure wiki.openclonk.org/w/Source_code_structure]&lt;br /&gt;
&lt;br /&gt;
=== Hack the OpenClonk Engine ===&lt;br /&gt;
&lt;br /&gt;
Maybe you already are well-versed in C++ and want to help out actually diagnosing problems? Or - even better - have your own ideas on engine improvements? We are always glad to look at patches.&lt;br /&gt;
&lt;br /&gt;
* Wondering where to start? - [[GSoC2011Ideas|Ideas page]]&lt;br /&gt;
* Debugging synchronization losses - [http://wiki.openclonk.org/w/Sync_losses wiki.openclonk.org/w/Sync_Losses]&lt;br /&gt;
* Style Guide - [http://wiki.openclonk.org/w/Style_Guidelines wiki.openclonk.org/w/Style_Guidelines]&lt;br /&gt;
* Forum, developers&#039; corner - [http://forum.openclonk.org/board_show.pl?bid=5 forum.openclonk.org]&lt;br /&gt;
* Contribute changes - [[Git Workflow]]&lt;br /&gt;
&lt;br /&gt;
=== Internal Links ===&lt;br /&gt;
&lt;br /&gt;
* [[Release Steps]]&lt;br /&gt;
* [http://londeroth.org/~ck/oc-release/oc-release.cgi The release button]&lt;br /&gt;
&lt;br /&gt;
=== Legal Stuff ===&lt;br /&gt;
&lt;br /&gt;
OpenClonk uses the ISC license for code (engine and script) and CC-by for most other media. Read more about the [[License | license stuff]] here.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=List_Of_Community_Creations&amp;diff=1826</id>
		<title>List Of Community Creations</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=List_Of_Community_Creations&amp;diff=1826"/>
		<updated>2017-06-24T14:37:05Z</updated>

		<summary type="html">&lt;p&gt;Marky: Added the Hazard pack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below a list of all scenarios and objects developed by the OpenClonk community and which do not appear in the main game. Download links to the latest version are provided if available as well as links to a repository. The OC Version indicates what version of OC is needed to play this creation.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Name&lt;br /&gt;
! DL&lt;br /&gt;
! Repository&lt;br /&gt;
! OC Version&lt;br /&gt;
! Main author(s)&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocf.png|text-bottom|x18px|link=]]&lt;br /&gt;
! [http://wiki.openclonk.org/w/Base_Melees Base Melees]&lt;br /&gt;
! &lt;br /&gt;
! [https://github.com/MDT-Maikel/basemelees GitHub]&lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! Maikel&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocs.png|text-bottom|x18px|link=]]&lt;br /&gt;
! ClonkFest&lt;br /&gt;
! &lt;br /&gt;
! [https://github.com/clonkspot/ClonkFest.ocs GitHub]&lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! Sven2&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocf.png|text-bottom|x18px|link=]]&lt;br /&gt;
! Hazard&lt;br /&gt;
! &lt;br /&gt;
! [https://github.com/gitMarky/Hazard GitHub]&lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! Marky&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocf.png|text-bottom|x18px|link=]]&lt;br /&gt;
! [http://forum.openclonk.org/topic_show.pl?tid=3268 Knüppeln]&lt;br /&gt;
! &lt;br /&gt;
! [https://github.com/TheThow/OpenClonk-Stuff GitHub]&lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! KKenny&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocf.png|text-bottom|x18px|link=]]&lt;br /&gt;
! [http://forum.openclonk.org/topic_show.pl?tid=2817 Lands of Mystery]&lt;br /&gt;
! &lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
! Sayned&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocs.png|text-bottom|x18px|link=]]&lt;br /&gt;
! [http://wiki.openclonk.org/w/Tower_of_Despair Tower of Despair]&lt;br /&gt;
! [[File:Download.png|text-bottom|x18px|link=https://mwf-data.clonkspot.org/60/14860/OCTowerV0.5.ocs]]&lt;br /&gt;
! [https://github.com/MDT-Maikel/OCTower GitHub]&lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! Maikel, Sven2&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocd.png|text-bottom|x18px|link=]]&lt;br /&gt;
! Some object&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
! [[File:Ocs.png|text-bottom|x18px|link=]]&lt;br /&gt;
! [http://forum.openclonk.org/topic_show.pl?pid=32527#pid32527 Winter food]&lt;br /&gt;
! &lt;br /&gt;
! &lt;br /&gt;
! [http://www.openclonk.org/nightly-builds/ snapshot]&lt;br /&gt;
! Armin&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please complete this list by adding your own creations. The list is sorted alphabetically according to the name of the creation.&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
	<entry>
		<id>https://wiki.openclonk.org/index.php?title=C4Script_Documentation&amp;diff=1825</id>
		<title>C4Script Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.openclonk.org/index.php?title=C4Script_Documentation&amp;diff=1825"/>
		<updated>2017-06-24T14:35:26Z</updated>

		<summary type="html">&lt;p&gt;Marky: Added list of community creations in &amp;quot;Further links&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:C4Script.png|right|frame]]&lt;br /&gt;
Like the previous Clonk titles, OpenClonk offers countless possibilites to create your own scenarios, objects and campaigns. Since [http://www.clonk.de/classics.php?lng=en Clonk 4], one of Clonk&#039;s most remarkable features has been it&#039;s extensibility. The complete content is scripted in C4Script, Clonk&#039;s own powerful scripting language, has been developed further since 1998. Now, it feels pretty much like a typical C-style scripting language. If you know other programming languages, you will have no problem to familarize yourself with C4Script and if you never programmed before, it can be a good introduction and practice to programming.&lt;br /&gt;
&lt;br /&gt;
You may want to develop based on the latest game data there is. See the [http://www.openclonk.org/nightly-builds/ nightly builds] page for the most current builds.&lt;br /&gt;
&lt;br /&gt;
== [http://docs.openclonk.org/en/sdk/ OpenClonk Documentation] ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cpem.gif|left|link=http://docs.openclonk.org/en/sdk/]] The [http://docs.openclonk.org/en/sdk/ documentation] is a complete reference for everything you need to know about the script language C4Script and its data structures, how the the game data is organized and about the APIs for e.g. dynamic landscape generation, using the particle or the effect system.&lt;br /&gt;
Note that the documentation is also still [http://docs.openclonk.org/de/sdk/ available in German], however it lacks maintenance, so always refer to the English version for recent stuff.&lt;br /&gt;
&lt;br /&gt;
== [http://wiki.openclonk.org/w/Developing_Content_with_Eclipse C4 Development Toolkit] ==&lt;br /&gt;
&lt;br /&gt;
[[File:C4dt.png|left|52px|link=http://wiki.openclonk.org/w/Developing_Content_with_Eclipse]] The [http://wiki.openclonk.org/w/Developing_Content_with_Eclipse C4 Development Toolkit], or short C4DT, is a plugin for Eclipse. Using Eclipse with C4DT for Clonk development makes it very comfortable as the editor offers many useful features for editing and debugging scripts you might know from other IDEs.&lt;br /&gt;
&lt;br /&gt;
== Tutorials series ==&lt;br /&gt;
* [[Tutorial: Scenario Creation]]&lt;br /&gt;
* [[Tutorial: Map Generator - The Basics]]&lt;br /&gt;
&lt;br /&gt;
== Further links ==&lt;br /&gt;
* [[Artists Guide|Graphics]] - Render and texture 3D-models&lt;br /&gt;
* [[Artists_Guide#Sounds_.26_Music|Sounds and music]] - Include sound effects and music into the game&lt;br /&gt;
* [[C4Script Style Guidelines]]&lt;br /&gt;
* [http://forum.openclonk.org/board_show.pl?bid=7 Scenario &amp;amp; Object Development forum]&lt;br /&gt;
* [[Git Workflow]] - How to use our repository&lt;br /&gt;
* [[Developers Guide]] - For engine developers&lt;br /&gt;
* [[List Of Community Creations]] - List of community creations&lt;/div&gt;</summary>
		<author><name>Marky</name></author>
	</entry>
</feed>