<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pioneerspacesim.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laarmen</id>
	<title>PioneerWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pioneerspacesim.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laarmen"/>
	<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/wiki/Special:Contributions/Laarmen"/>
	<updated>2026-06-19T08:25:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Keyboard_and_mouse_controls&amp;diff=4306</id>
		<title>Keyboard and mouse controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Keyboard_and_mouse_controls&amp;diff=4306"/>
		<updated>2021-11-22T12:36:43Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Main console ==&lt;br /&gt;
&lt;br /&gt;
*F1: Change camera view. &lt;br /&gt;
*F2: Use the map system. &lt;br /&gt;
*F3: Look at your own information. &lt;br /&gt;
*F4: Select targets, operate autopilot and communicate. &lt;br /&gt;
*SHIFT-F1 to F5: Time compression &lt;br /&gt;
*PgUp / PgDwn: Increase / decrease time compression &lt;br /&gt;
*CTRL click on Time compression icons: Force time compression &lt;br /&gt;
&lt;br /&gt;
*CTRL-Print Screen: Save screenshot &lt;br /&gt;
&lt;br /&gt;
*CTRL-F9: Quick save &lt;br /&gt;
*CTRL-Q: Quit instantly &lt;br /&gt;
*ALT-F1: Change view to fly by camera &lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
*Numbers or click to select &lt;br /&gt;
&lt;br /&gt;
== Map System ==&lt;br /&gt;
&lt;br /&gt;
*F5: Galactic sector view &lt;br /&gt;
*F6: System orbit view &lt;br /&gt;
*F7: Star system information &lt;br /&gt;
*F8: Galactic view &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Galactic sector view ===&lt;br /&gt;
&lt;br /&gt;
*Arrows: Rotate &lt;br /&gt;
*Page Up/Down: Scroll Z &lt;br /&gt;
*W, A, S ,D: Move on the plane &lt;br /&gt;
*R, F: Move up and down &lt;br /&gt;
*C: Center to where I am &lt;br /&gt;
*H: Center to selected system &lt;br /&gt;
*Enter: Enable/Disable automatic system selection &lt;br /&gt;
*Space: Set Hyperspace Target to Lock or Follow Selection &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Orbital view ===&lt;br /&gt;
&lt;br /&gt;
*click / unclick (planet or ship) sets / unsets as navigation target, and to focus on it &lt;br /&gt;
*Hold right mouse to rotate the view &lt;br /&gt;
&lt;br /&gt;
== In flight ==&lt;br /&gt;
&lt;br /&gt;
*F5: Turns off the autopilot, and changes between manual flight and set speed flight &lt;br /&gt;
*F6: Undercarriage &lt;br /&gt;
*F7: Hyperdrive &lt;br /&gt;
*F8: Set lower thrust speed &lt;br /&gt;
*F9: Toggle missile / scanner panel on / off &lt;br /&gt;
&lt;br /&gt;
*CTRL click on Autopilot icon: Cycle Heading control to forward, afterward and off (note: Ctrl+F5 doesn not work, must use mouse) &lt;br /&gt;
*R: Toggle rotation damping &lt;br /&gt;
&lt;br /&gt;
*Tab: Cycle through full HUD/HUD without labels/No HUD and cockpit &lt;br /&gt;
*`: Lua console &lt;br /&gt;
&lt;br /&gt;
*Clicking on an object (planet, star, station, ship), will select it as a target. &lt;br /&gt;
*CTRL click on a object, will select it as a target and as reference body. &lt;br /&gt;
&lt;br /&gt;
=== Views ===&lt;br /&gt;
&lt;br /&gt;
*KP 8: Front Camera / Rotate External/Sidereal Up &lt;br /&gt;
*KP 2: Rear Camera / Rotate External/Sidereal Down &lt;br /&gt;
*KP 4: Left Camera / Rotate External/Sidereal Left &lt;br /&gt;
*KP 6: Right Camera / Rotate External/Sidereal Right &lt;br /&gt;
*KP 9: Top Camera &lt;br /&gt;
*KP 3: Bottom Camera / Roll External/Sidereal Right &lt;br /&gt;
*+: Zoom in (external/sidereal view only) &lt;br /&gt;
*-: Zoom out (external/sidereal view only) &lt;br /&gt;
*Home: Reset zoom (sidereal view only) &lt;br /&gt;
*, and .: In fixed view, roll camera &lt;br /&gt;
&lt;br /&gt;
In external views, third mouse button rotates the view.&lt;br /&gt;
&lt;br /&gt;
(NOTE: If you do not have a numeric keypad, please rebind the view direction controls from the View tab in the Settings screen)&lt;br /&gt;
&lt;br /&gt;
=== Scanner ===&lt;br /&gt;
&lt;br /&gt;
*\: Toggle scanner mode &lt;br /&gt;
*]: Increase scanner range &lt;br /&gt;
*[: Decrease scanner range &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
&lt;br /&gt;
*T: Target object in crosshair &lt;br /&gt;
*Space: Fire laser &lt;br /&gt;
*M: Launch missile &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Manual control&amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
*W, S: Forward/backward thrust &lt;br /&gt;
*A, D: Left/right lateral thrust &lt;br /&gt;
*R, F: Up/down lateral thrust &lt;br /&gt;
*Q,E; I,O: Roll CCW/CW &lt;br /&gt;
*J,L:&amp;amp;nbsp;Yaw left/right &lt;br /&gt;
*I,K: Pitch down/up &lt;br /&gt;
*X, P: Kill rotation &lt;br /&gt;
*V: Toggle rotation damping &lt;br /&gt;
&lt;br /&gt;
Holding the right mouse also rotates the ship.&lt;br /&gt;
&lt;br /&gt;
Hold SHIFT + &amp;lt;key&amp;gt; to low power thrust and smooth turns.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Set speed&amp;quot; control mode ===&lt;br /&gt;
&lt;br /&gt;
Thrust and rotation are same as above&lt;br /&gt;
&lt;br /&gt;
*Enter, T: Set speed faster &lt;br /&gt;
*Right Shift, G: Set speed slower&lt;br /&gt;
&lt;br /&gt;
Engaging any of the translation thrusters will tempralily disengage Set Speed Mode, until the directional thrust is cut.&lt;br /&gt;
&lt;br /&gt;
A useful tip when you need to approach ships, either in combat, or a SAR mission for example. Pressing ctrl+LMB on the tartget will set it as the reference frame. Then the Set Speed mode will work relative to the ship, which in practice acts like a match speed mode, if speed is set to 0.&lt;br /&gt;
&lt;br /&gt;
== Joystick Controls ==&lt;br /&gt;
&lt;br /&gt;
== Cheats and debug ==&lt;br /&gt;
&lt;br /&gt;
*CTRL-I: Debug informations (FPS and other statistics). &lt;br /&gt;
*CTRL-F10: Object viewer. Shows the currently targeted object. It allows for editing the properties of target planet &lt;br /&gt;
*CTRL-F12: Spawn a hostile ship &lt;br /&gt;
*Console: ~ or ´ depending on keyboard. Some useful commands for debugging/testing code/contributions are given [[Lua_Console|here]], but remember, cheating is for weaklings. However, it is allowed to restore borked saves.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=3846</id>
		<title>Pioneer Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=3846"/>
		<updated>2018-11-14T18:15:20Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Add a link to the Github main page!!!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Pioneer is a space adventure game set in the Milkyway galaxy at the turn of the 31st century. The game is open-ended, and you are free to explore the millions of star systems in the game. You can land on planets, slingshot past gas giants, and burn yourself to a crisp flying between binary star systems.&lt;br /&gt;
&lt;br /&gt;
If you are new to pioneer you may want to know [[How_to_start|how to start]].&lt;br /&gt;
&lt;br /&gt;
*[http://pioneerspacesim.net/download Download Pioneer] for Windows, Linux and Mac OSX &lt;br /&gt;
&lt;br /&gt;
Please make this wiki nice. Add stuff about mods, dev, whatever. Be awesome! [[Getting_started|How to get started]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#bbffbb; border:2px solid #99ee99; padding:2px 2px 4px 4px; vertical-align: top&amp;quot; width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
=== Community ===&lt;br /&gt;
&lt;br /&gt;
*[http://pioneerspacesim.net/ Pioneer Space Sim Homepage]&lt;br /&gt;
*[https://github.com/pioneerspacesim/pioneer/ Main Github repository]&lt;br /&gt;
*[http://spacesimcentral.com/ssc/forum/23-pioneer/ Community forum] &lt;br /&gt;
*[http://pioneerspacesim.net/forum Developer forum] &lt;br /&gt;
*[http://webchat.freenode.net/?channels=#pioneer Pioneer Space Sim on IRC] &lt;br /&gt;
*[http://pioneerspacesim.net/+ Pioneer Space Sim] on Google+ &lt;br /&gt;
*[http://twitter.com/pioneerspacesim @pioneerspacesim] on Twitter &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*[[Manual|Basic Manual]] &lt;br /&gt;
*[[Flight_UI|Flight UI]] &lt;br /&gt;
*[[Keyboard_and_mouse_controls|Keyboard and mouse controls]] &lt;br /&gt;
*[[Tutorials|Tutorials]] (Outdated and WIP) &lt;br /&gt;
*[[Mission_Types_and_BBS|Mission Types and BBS]] &lt;br /&gt;
*[[Settings_Menu|Settings Menu]] &lt;br /&gt;
*[[FAQ|FAQ]] &lt;br /&gt;
*[[Media_Coverage|Media Coverage]] &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;background:#fff9b1; border:2px solid #f0fe66; padding:2px 2px 4px 4px; vertical-align: top&amp;quot; width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
=== The Pioneer Universe ===&lt;br /&gt;
&lt;br /&gt;
*[[Pioneer_Universe|Pioneer Universe]] &lt;br /&gt;
*[http://pioneerwiki.com/wiki/Category:Ships Ships] (work in progress) &lt;br /&gt;
*[http://pioneerwiki.com/wiki/Category:Manufacturers Manufacturers] (work in progress) &lt;br /&gt;
*[[Places_of_interest|Places of interest]] &lt;br /&gt;
*[[Ship_Equipment|Ship Equipment]] (work in progress) &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0ff; border:2px solid #c6c9ff; padding:2px 2px 4px 4px; vertical-align: top&amp;quot; width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
=== Content Creation ===&lt;br /&gt;
&lt;br /&gt;
*[[Mods|Mods]]&lt;br /&gt;
*[[Scripting_and_Mission_Creation|Scripting and Mission Creation]] &lt;br /&gt;
*[[Custom_Systems|Custom Systems]] &lt;br /&gt;
*[[Design_and_Concept_art|Design and Concept art]] &lt;br /&gt;
*[[Modeling,_Texturing,_Graphics_Design|Modeling, Texturing, Graphics Design]] &lt;br /&gt;
*[[Music_and_Sound|Music and Sound]] &lt;br /&gt;
*[[Translations|Translations]] &lt;br /&gt;
*[[Licensing|Licensing]] &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;background:#fff3e3; border:2px solid #ffc9c9; padding:2px 2px 4px 4px; vertical-align: top&amp;quot; width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
=== Development ===&lt;br /&gt;
&lt;br /&gt;
*[[Design_Scope|Game Scope]] &lt;br /&gt;
*[[How_you_can_contribute|How you can contribute]] &lt;br /&gt;
*[[Getting_Started_with_Development|Getting Started with Development]] &lt;br /&gt;
**[[How_to_communicate|How to communicate]] &lt;br /&gt;
**[[Using_git_and_GitHub|Using git and GitHub]] &lt;br /&gt;
**[[Code_style|Code style]]&lt;br /&gt;
**[[Development_team|Development team]]  &lt;br /&gt;
**[[Engine_Overview|Engine internals overview]] &lt;br /&gt;
*[[Development_Model|Development Model]] &lt;br /&gt;
*[[Design_Workflow|Design and Project Management Workflow]] &lt;br /&gt;
*[https://github.com/pioneerspacesim/pioneer/issues Issue tracker] &lt;br /&gt;
*[[Roadmap|Roadmap]] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pioneer is brought to you by a flock of [https://github.com/pioneerspacesim/pioneer/blob/master/AUTHORS.txt opensource beardy-weirdies], and is [http://www.gnu.org/licenses/gpl.html Free Software]&lt;br /&gt;
&lt;br /&gt;
'''__NOTOC__'''&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=FAQ&amp;diff=3436</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=FAQ&amp;diff=3436"/>
		<updated>2017-08-22T09:13:00Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
== About the Game ==&lt;br /&gt;
&lt;br /&gt;
=== What is Pioneer? ===&lt;br /&gt;
&lt;br /&gt;
Pioneer is a freeform single player space adventure in the spirit of [https://en.wikipedia.org/wiki/Frontier:_Elite_II Frontier: Elite II].&lt;br /&gt;
&lt;br /&gt;
=== Is this a game or a simulation? ===&lt;br /&gt;
&lt;br /&gt;
Frontier was a game, but with a newtonian flight model and a slightly more scientific flavour to the universe than usually in space games. Pioneer will follow this same path.&lt;br /&gt;
&lt;br /&gt;
=== Can I play online? ===&lt;br /&gt;
&lt;br /&gt;
There will be no multiplayer. This does not rule out the possibility of minor network features, but multiplayer as it is commonly known is not compatible with the core mechanics of Pioneer. See for instance [[Network_features|Network features]], and [[ServerAgent|ServerAgent]] for more, or our dev-forum [http://pioneerspacesim.net/forum/viewtopic.php?f=3&amp;amp;t=216 here]&lt;br /&gt;
&lt;br /&gt;
=== Can I colonize planets, build space stations or conquer the universe? ===&lt;br /&gt;
&lt;br /&gt;
No, these are out of the game scope. While the game universe might not stay static for the duration of a game, the player can not generally influence major events.&lt;br /&gt;
&lt;br /&gt;
=== Can I walk around space stations and planets? ===&lt;br /&gt;
&lt;br /&gt;
No, you cannot exit your ship. The ship is always your avatar.&lt;br /&gt;
&lt;br /&gt;
=== Is the universe pre-defined or randomly generated? ===&lt;br /&gt;
&lt;br /&gt;
There are millions of stars in the galaxy. A few hundred on them are based on real-world astronomic catalogues. some of the planets (obvious ones being in the Sol system) are pre-defined, but most things are procedurally generated. This means that a planet does not exist until you actually visit it, but it will be generated the same way for every player.&lt;br /&gt;
&lt;br /&gt;
=== Can I hire crew for my ship? ===&lt;br /&gt;
&lt;br /&gt;
Yes. You can hire crew. But they don't do very much at the moment.&lt;br /&gt;
&lt;br /&gt;
=== Are savegames compatible between releases? ===&lt;br /&gt;
&lt;br /&gt;
While the game is still in alpha, this cannot be guaranteed. The situation will stabilize in a few years.&lt;br /&gt;
&lt;br /&gt;
=== Are savegames compatible between Mods? ===&lt;br /&gt;
&lt;br /&gt;
Again as with savegames between alpha versions, compatability between mods can not be guaranteed. It all depends on what mods you have installed.&lt;br /&gt;
&lt;br /&gt;
=== Where is star system X from Frontier? Can I buy ship Y? ===&lt;br /&gt;
&lt;br /&gt;
Although Pioneer started out as a clone of Frontier, it no longer is, thus references to the Frontier universe have been removed, and we aim at making Pioneer far better than Frontier. Thus, you will have to figure out new trade routes! But don't worry, Newtonian physics will remain, as well as single player.&lt;br /&gt;
&lt;br /&gt;
== Gameplay ==&lt;br /&gt;
&lt;br /&gt;
=== How do I take screenshots? ===&lt;br /&gt;
&lt;br /&gt;
Ctrl+Printscreen saves .png files in the same directory where the game .ini and savegames are. You can cycle through full HUD/HUD without labels and cursor/No HUD and cockpit using TAB as described in [http://pioneerwiki.com/wiki/Keyboard_and_mouse_controls#In_flight [1]].&lt;br /&gt;
&lt;br /&gt;
=== How do I find star X in the star map ===&lt;br /&gt;
&lt;br /&gt;
First it is important to note that just like in real life, names are not unique. The star map allows the player to search for either name or coordinates of a system. The search is done in the local region of the currently selected system.&lt;br /&gt;
&lt;br /&gt;
Thus a standard way of finding a system is to type in the name in the search field in the lower right corner of the star map. If you know the system is within a few ly from your position, then have your current location selected when you do the search, since it only does a &amp;quot;local&amp;quot; seach in space. If the search fails, go to the sector where the star is supposed to be, either by typing the coordinates into the search field, or by using arrows, mark a nearby star in that system, and do another search. You can scroll the star map super fast by holding in the Shift key.&lt;br /&gt;
&lt;br /&gt;
=== I have a Taxi mission to system X, but which starport? ===&lt;br /&gt;
&lt;br /&gt;
For Taxi missions any starport will do, as long as you dock before the deadline.&lt;br /&gt;
&lt;br /&gt;
=== Starsystem names are not unique ===&lt;br /&gt;
&lt;br /&gt;
This is not a bug, space is big, and just here on Earth it is quite common with cities and villages sharing the same name, sometimes quite close.&lt;br /&gt;
&lt;br /&gt;
=== I picked up a mission to a starport in a system, but when I search for the system, it seems that it doesn't have the destination starport, or even uninhabited. ===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there could be multiple systems with the same name. Each mission states the coordinates (Sirius (1,0,-1) for example) of the destination system, and you can enter them into the search field on the sector map, to find the correct system.&lt;br /&gt;
&lt;br /&gt;
=== I end up &amp;quot;a big number&amp;quot; AU away from the star when I hyper jump to a system ===&lt;br /&gt;
&lt;br /&gt;
This happens in binary star systems. You can select the star you want to jump to from the [[Manual#System_info|System View]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How/where do I report my bug/crash ===&lt;br /&gt;
&lt;br /&gt;
Bug reporting is the most important part where you as a player can help the community. When you encounter something that seems strange or odd in the game, please report it, preferably to our [https://github.com/pioneerspacesim/pioneer/issues issue tracker], but you can also stop by the [http://webchat.freenode.net/?channels=#pioneer IRC channel].&lt;br /&gt;
&lt;br /&gt;
When having problems with graphics, or pioneer not starting/crashing, please attach the files '''output.txt''' and '''opengl.txt''' from the pioneer [http://pioneerwiki.com/wiki/FAQ#Where_is_the_configuration_file.2C_saved_games.2C_screenshots.3F config folder] in your home folder / My Documents folder. If you didn't get the '''output.txt''' file, then make sure '''RedirectStdio=1''' in '''config.ini'''.&lt;br /&gt;
&lt;br /&gt;
It is important to include as much of the following information as possible in each issue report, much of this is available to use from the '''output.txt''' and '''opengl.txt''' but if you cannot attach them then please tell us:&lt;br /&gt;
&lt;br /&gt;
*The version of pioneer you are trying to run (''build date or ingame version number'') &lt;br /&gt;
*What operating system you are running, Windows XP/Vista/7/8/10, Linux (''what distribution''), OSX. &lt;br /&gt;
*Your computers system specifications - CPU / RAM / Graphics card. &lt;br /&gt;
*Whether you have downloaded it from our site, or if you are building it from the source code. &lt;br /&gt;
&lt;br /&gt;
=== Where is the configuration file, saved games, screenshots? ===&lt;br /&gt;
&lt;br /&gt;
*Windows: My Documents\Pioneer &lt;br /&gt;
*OS X: /Users/your_username/Library/Application Support/Pioneer &lt;br /&gt;
*Linux: /home/your_username/.pioneer &lt;br /&gt;
&lt;br /&gt;
=== Where is the Mac version? ===&lt;br /&gt;
&lt;br /&gt;
Pioneer is built for both Windows and Linux on the same machine, thus these are our main releases, and are always in sync with each other. To build a Mac release we actually need access to a Mac machine, which, unfortunately, none of the developers currently have. If you have a Mac which can compile and upload pioneer for us on a regular basis, then please contact us (IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== My OpenGL Version is below 3.1, &amp;quot;Pioneer cannot run on your graphics card&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Open your pioneer configuration file, and set: &amp;quot;RendererName=Opengl 2.1&amp;quot;. This should allow pioneer to run, provided your hardware supports OpenGL 2.1, which it should if you were able to run Pioneer up until 2014-11-18 when support was dropped. Note, support for multiple renderers was added 2017-03-03, i.e. both OpenGL 2.1 and 3.1; however, you need to edit your configuration file to select the proper one, as no auto-detection is done. Actually, if your hardware isn't extraordinarily old, OpenGL 3.1 should be supported if you update your drivers.&lt;br /&gt;
&lt;br /&gt;
You can also find older versions (pre 20141119 on [http://www.moddb.com/games/pioneer/downloads moddb].&lt;br /&gt;
&lt;br /&gt;
=== Where do I find older versions of Pioneer ===&lt;br /&gt;
&lt;br /&gt;
You can find older versions starting from December 2014 (2014-12-05) on our [http://sourceforge.net/projects/pioneerspacesim/files sourceforge] page. 2014-11-18 was the last version supporting OpenGL 2, between 2014-11-19 to 2014-12-07 Pioneer required OpenGL 3.2. From 2014-12-08 only OpenGL 3.1 is required. Over at [http://www.moddb.com/games/pioneer/downloads moddb] they have windows version going further back in time.&lt;br /&gt;
&lt;br /&gt;
=== I'm getting graphical issues ===&lt;br /&gt;
&lt;br /&gt;
Such as wrong textures, ships missing from the view, text display glitches. '''Updating the display drivers usually solve these problems.'''&lt;br /&gt;
&lt;br /&gt;
These usually occur on older graphics adapters, or because of outdated GPU drivers. Not too old NVidia and ATI cards are usually enough to play the game, but integrated GPUs are usually not enough.&lt;br /&gt;
&lt;br /&gt;
=== I'm getting graphical issues, such as snow-like sky and transparent terrain ===&lt;br /&gt;
&lt;br /&gt;
This is probably caused by the eclipse shader which isn't supported by some open source graphic drivers. You could install the propritary drivers, if available, or disable the eclipse effect by adding DisableEclipse=1 to your pioneer configuration file (config.ini).&lt;br /&gt;
&lt;br /&gt;
=== I see blank untextured Gas Giants and I'm using an ATI graphic card under GNU/Linux with open source drivers (Mesa R600) ===&lt;br /&gt;
&lt;br /&gt;
With chipsets using the R600 gallium drivers the shader fails to compile. There is a workaround that uses less noise octaves. This produces less detailed texture maps for the gas/ice giants but they still look good and at least the program runs.&lt;br /&gt;
&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;AMD_MESA_HACKS=1&amp;lt;/code&amp;gt; in ~/.pioneer/config.ini or disable GPU jobs entirely by setting &amp;lt;code&amp;gt;EnableGpujobs=0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I'm getting text rendering artefacts ===&lt;br /&gt;
&lt;br /&gt;
Some system monitoring HUD utilities, like MSI Afterburner can cause distorted text rendering. Try switching the HUD utility off.&lt;br /&gt;
&lt;br /&gt;
=== The game freezes at the intro screen ===&lt;br /&gt;
&lt;br /&gt;
If you cannot start the game at all, edit the configuration file and change value DisableShaders to 1.&lt;br /&gt;
&lt;br /&gt;
=== The game crashes on start with an error message about imgui_draw.cpp ===&lt;br /&gt;
&lt;br /&gt;
Check if any parent folder of Pioneer has any accented letters (e.g éáűúóü etc.). If so, copy the game to somewhere, where there's none of these in the folder tree.&lt;br /&gt;
&lt;br /&gt;
=== The game crashes after the loading screen. I'm using ATI free drivers on GNU/Linux. ===&lt;br /&gt;
&lt;br /&gt;
If you are getting a GL_INVALID_ENUM in console, could be because some ships uses textures in a format that, because of patents, is not included in the main mesa package. Search for libtxc-dxtn or libtxc_dxtn in your distribution and install it.&lt;br /&gt;
&lt;br /&gt;
=== The game hangs when I turn on the ''Enable Cockpit (EXPERIMENTAL)'' option ===&lt;br /&gt;
&lt;br /&gt;
It's because it's an experimental feature right now, infrastructure mostly. You need a cockpit model for to be able to use it.&lt;br /&gt;
&lt;br /&gt;
You can find one heavily WIP one posted on the Community Forums. Note that it's a highly experimental feature right no, so please treat it accordingly.&lt;br /&gt;
&lt;br /&gt;
=== My joystick is &amp;quot;drifting&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The game has a deadzone setting, but it is only accessible through the configuration file. Open config.ini and raise the JoystickDeadzone value.&lt;br /&gt;
&lt;br /&gt;
=== I'm getting poor performance ===&lt;br /&gt;
&lt;br /&gt;
The heaviest part of the game is planetary terrain generation. Turn down the &amp;quot;Detail distance&amp;quot; and &amp;quot;Fractal detail&amp;quot; settings, they have the most impact for performance. Reducing screen resolution is also recommended, this can be done in the [[Settings_Menu|Settings Menu]], or manualy to a custom values by editing your personal configuration file, on linux: &amp;lt;code&amp;gt;~/.pioneer/config.ini&amp;lt;/code&amp;gt;. On Windows: &amp;lt;code&amp;gt;Documents/pioneer/config.ini&amp;lt;/code&amp;gt; Look for &amp;lt;code&amp;gt;ScrHeight&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ScrWidth&amp;lt;/code&amp;gt; entries.&lt;br /&gt;
&lt;br /&gt;
=== I've enabled anti-aliasing in the config file, but it does not work ===&lt;br /&gt;
&lt;br /&gt;
Make sure the AA settings are not overridden by your graphics card settings, on NVidia AA should be set to &amp;quot;application controlled&amp;quot; mode.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Full screen mode is incorrectly scaled ===&lt;br /&gt;
&lt;br /&gt;
If you are on Windows, try:&lt;br /&gt;
&amp;lt;pre&amp;gt;Sounds like windows 7 desktop-scaling issues.&lt;br /&gt;
Try adding some compatability modes to the Pioneer.exe.&lt;br /&gt;
Right click it and Choose properties -&amp;gt; Compatability -&amp;gt; Tick&lt;br /&gt;
Disable desktop scaling, and Disable desktop composition.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
=== How much development is being made? ===&lt;br /&gt;
&lt;br /&gt;
Development is sporadic, but no month goes by without some change to the source, fixing bugs, cleaning up code, introducing new content and/or features; see [https://github.com/pioneerspacesim/pioneer/blob/master/Changelog.txt Changelog.txt]. All contributors work on pioneer for free when they have time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What's the deal with the inconsistent UI interface? ===&lt;br /&gt;
&lt;br /&gt;
Pioneer started transitioning to a &amp;quot;NewUI&amp;quot; defined in easy-to-change Lua files ([https://github.com/pioneerspacesim/pioneer/pull/2589 #2589], merged in 2013), that do not require recompilation, thus ideal for users to play around with, extend and ideally contribute any improvements back into the project.&lt;br /&gt;
&lt;br /&gt;
The NewUI screens are the nice &amp;quot;blue&amp;quot; frames, such as Options/Settings, BBS, ShipMarket, Commodity market, Lobby, ShipInfo, etc. The migration to NewUI has stalled somewhat, and the SectorView (F2), communications/autopilot (F4), and others are still defined in the old hard coded C++ source code.&lt;br /&gt;
&lt;br /&gt;
Due to lack of time, and coders, transition has stalled for now, although SystemInfo is halfway there ([https://github.com/pioneerspacesim/pioneer/pull/3564 #3564]).&lt;br /&gt;
&lt;br /&gt;
But since the summer of 2016 work is being done to move Pioneer to a dear-imgui based UI. New HUD is already in master.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Do you accept contributions? ===&lt;br /&gt;
&lt;br /&gt;
Hell yes! Pioneer is not any one persons personal project. It is the sum of the contributions made by the people who play and care about the continued development of the game. See: [[How_you_can_contribute|How to contribute]].&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=2664</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=2664"/>
		<updated>2014-07-07T12:58:39Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: /* The Lego™ way */  fix list layout.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only Ship properties (as in PropertyMap) suffixed with _cap&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_cap;&lt;br /&gt;
ship.Properties().Get(&amp;quot;ecm_cap&amp;quot;, ecm_cap); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_cap &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_cap);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Equipment = import(&amp;quot;Equipment&amp;quot;)&lt;br /&gt;
Game.player:AddEquip(Equipment.cargo.hydrogen, 2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;br /&gt;
&lt;br /&gt;
=== Creating equipment ===&lt;br /&gt;
There are basically two ways to create a new piece of equipment for Pioneer.&lt;br /&gt;
&lt;br /&gt;
==== The fast way ====&lt;br /&gt;
You can just instantiate a new EquipType. Its only argument is a table whose only mandatory content are a &amp;lt;code&amp;gt;capabilities&amp;lt;/code&amp;gt; table with the modifiers to apply at install time and a &amp;lt;code&amp;gt;slots&amp;lt;/code&amp;gt; table/string with the name of the slots to install the piece in, stored in the array part of the table. The rest of the table content will get copied in the new object.&lt;br /&gt;
&lt;br /&gt;
Here is the creation of the basic ECM, for instance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ecm_basic = EquipType.new({&lt;br /&gt;
    name=&amp;quot;Basic ECM&amp;quot;, description=&amp;quot;&amp;quot;,&lt;br /&gt;
    slots=&amp;quot;ecm&amp;quot;, price=600000, modifiers={mass=2000, ecm_power=2}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since there is only one slot to install it in, you can just use a single string instead of a full table, the constructor will do the smart thing.&lt;br /&gt;
&lt;br /&gt;
Please bear in mind that the object created this way will be stored as reference every time it gets installed, if you want each piece to be its own object you will have to use another method.&lt;br /&gt;
&lt;br /&gt;
Note that for more specific pieces of equipment such as hyperdrives, you would use HyperdriveType instead of EquipType, with its own specifications.&lt;br /&gt;
&lt;br /&gt;
TODO: Document HyperdriveType&lt;br /&gt;
&lt;br /&gt;
==== The Lego™ way ====&lt;br /&gt;
&lt;br /&gt;
You can actually use any object as a piece of equipment as long as it has the following methods:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;IsValidSlot(slot, ship)&amp;lt;/code&amp;gt; returning &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the slot is valid, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. The &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt; argument is here for those who would want some variable behaviour, even though I don't see any use case at the moment.&lt;br /&gt;
* &amp;lt;code&amp;gt;GetDefaultSlot(ship)&amp;lt;/code&amp;gt; returns a single string indicating the default slot for the piece of equipment.&lt;br /&gt;
* &amp;lt;code&amp;gt;Install(ship, num, slot)&amp;lt;/code&amp;gt;. This gets called when installing the piece of equipment in the EquipSet. &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt; is obviously the targetted ship, &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; is the number of pieces planned to be installed, and &amp;lt;code&amp;gt;slot&amp;lt;/code&amp;gt; is the slot it gets installed in. You don't need to check if there is enough place in the slot for the equipment, this has been sorted out already. Typically, it is in this function that the modifiers are applied to the ship. When you're done, just return the number of pieces actually installed.&lt;br /&gt;
* &amp;lt;code&amp;gt;Uninstall(ship, num, slot)&amp;lt;/code&amp;gt;. It is the exact counterpart of &amp;lt;code&amp;gt;Install()&amp;lt;/code&amp;gt;, just return the number of pieces actually uninstalled.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=2663</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=2663"/>
		<updated>2014-07-07T12:56:16Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Updating this page to match the actual interface.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only Ship properties (as in PropertyMap) suffixed with _cap&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_cap;&lt;br /&gt;
ship.Properties().Get(&amp;quot;ecm_cap&amp;quot;, ecm_cap); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_cap &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_cap);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Equipment = import(&amp;quot;Equipment&amp;quot;)&lt;br /&gt;
Game.player:AddEquip(Equipment.cargo.hydrogen, 2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;br /&gt;
&lt;br /&gt;
=== Creating equipment ===&lt;br /&gt;
There are basically two ways to create a new piece of equipment for Pioneer.&lt;br /&gt;
&lt;br /&gt;
==== The fast way ====&lt;br /&gt;
You can just instantiate a new EquipType. Its only argument is a table whose only mandatory content are a &amp;lt;code&amp;gt;capabilities&amp;lt;/code&amp;gt; table with the modifiers to apply at install time and a &amp;lt;code&amp;gt;slots&amp;lt;/code&amp;gt; table/string with the name of the slots to install the piece in, stored in the array part of the table. The rest of the table content will get copied in the new object.&lt;br /&gt;
&lt;br /&gt;
Here is the creation of the basic ECM, for instance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ecm_basic = EquipType.new({&lt;br /&gt;
    name=&amp;quot;Basic ECM&amp;quot;, description=&amp;quot;&amp;quot;,&lt;br /&gt;
    slots=&amp;quot;ecm&amp;quot;, price=600000, modifiers={mass=2000, ecm_power=2}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since there is only one slot to install it in, you can just use a single string instead of a full table, the constructor will do the smart thing.&lt;br /&gt;
&lt;br /&gt;
Please bear in mind that the object created this way will be stored as reference every time it gets installed, if you want each piece to be its own object you will have to use another method.&lt;br /&gt;
&lt;br /&gt;
Note that for more specific pieces of equipment such as hyperdrives, you would use HyperdriveType instead of EquipType, with its own specifications.&lt;br /&gt;
&lt;br /&gt;
TODO: Document HyperdriveType&lt;br /&gt;
&lt;br /&gt;
==== The Lego™ way ====&lt;br /&gt;
&lt;br /&gt;
You can actually use any object as a piece of equipment as long as it has the following methods:&lt;br /&gt;
&lt;br /&gt;
  * &amp;lt;code&amp;gt;IsValidSlot(slot, ship)&amp;lt;/code&amp;gt; returning &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the slot is valid, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. The &amp;lt;code&amp;gt;ship&amp;lt;/ship&amp;gt; argument is here for those who would want some variable behaviour, even though I don't see any use case at the moment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;GetDefaultSlot(ship)&amp;lt;/code&amp;gt; returns a single string indicating the default slot for the piece of equipment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Install(ship, num, slot)&amp;lt;/code&amp;gt;. This gets called when installing the piece of equipment in the EquipSet. &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt; is obviously the targetted ship, &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; is the number of pieces planned to be installed, and &amp;lt;code&amp;gt;slot&amp;lt;/slot&amp;gt; is the slot it gets installed in. You don't need to check if there is enough place in the slot for the equipment, this has been sorted out already. Typically, it is in this function that the modifiers are applied to the ship. When you're done, just return the number of pieces actually installed.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Uninstall(ship, num, slot)&amp;lt;/code&amp;gt;. It is the exact counterpart of &amp;lt;code&amp;gt;Install()&amp;lt;/code&amp;gt;, just return the number of pieces actually uninstalled.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Scripting_and_Mission_Creation&amp;diff=2662</id>
		<title>Scripting and Mission Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Scripting_and_Mission_Creation&amp;diff=2662"/>
		<updated>2014-07-07T12:45:05Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: n-e has been merged.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Introduction to Mission Scripting]]&lt;br /&gt;
** [[Interacting with the game: Event-based programming]]&lt;br /&gt;
** [[Interacting with the player: BBS forms]]&lt;br /&gt;
** [[Lua-based equipment]]&lt;br /&gt;
** [[Lua_Scripting]] (old)&lt;br /&gt;
** [[Surviving a reload]]&lt;br /&gt;
* [http://eatenbyagrue.org/f/pioneer/codedoc/ Lua API Reference]&lt;br /&gt;
* [[Ship_AI]]&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Using_git_and_GitHub&amp;diff=2661</id>
		<title>Using git and GitHub</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Using_git_and_GitHub&amp;diff=2661"/>
		<updated>2014-07-07T12:33:09Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Copy-pasta gone wrong, I suppose.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Developing on pioneer means using the version control tool 'git' and the [https://github.com/ github] website. git especially has a reputation for having a steep learning curve, so here we'll try to give you enough knowledge to be dangerous!&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
A working installation of git, a GitHub account, and comfort with using the command line of your chosen operating system.&lt;br /&gt;
&lt;br /&gt;
The GitHub sign-up page is [https://github.com/signup/free here]. Make a note of your user name as you'll need it to make your local pioneer repository.&lt;br /&gt;
&lt;br /&gt;
On Linux, git is available in all distributions using the standard tools such as APT, yum or emerge. Since there is a wide range of file browsers and graphical environments, this tutorial limits itself to the command line interface.&lt;br /&gt;
&lt;br /&gt;
On Windows you have two options, [http://msysgit.github.com/ Git for Windows] aka msysgit, or [http://windows.github.com/ Github for Windows] which is essentially msysgit but with some extra stuff bundled. Some of which is good ([https://github.com/dahlbyk/posh-git posh git]) and some of which is well, not (github's 'friendly' gui). Since both include the same command line tools and cross platform gui tools, either is fine for our purposes here. The github one may be more convenient to install.&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, git will have been installed with XCode as git is built into the XCode IDE. However, usage of git from from within an IDE isn't something I'm familiar with so isn't covered here. If you want to follow along with this document then if you elected to install the XCode command line tools, then the git commands below should work unaltered from a terminal window. If you didn't then you'll need to use &amp;lt;code&amp;gt;xcrun&amp;lt;/code&amp;gt; to run the commands in terminal, either by adding &amp;lt;code&amp;gt;xcrun&amp;lt;/code&amp;gt; in front of each of the commands or aliasing &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gitk&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;xcrun git&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xcrun gitk&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;~/.profile&amp;lt;/code&amp;gt;. Have a look at [http://www.cocoanetics.com/2012/07/you-dont-need-the-xcode-command-line-tools/ this guide] for details.&lt;br /&gt;
&lt;br /&gt;
== Creating your pioneer repositories ==&lt;br /&gt;
&lt;br /&gt;
Git, as a version control system, stores all source files for Pioneer (or any other project you've chosen to manage with git) along with their histories in '''repositories''' (usually shortened to just 'repos').  These are areas of a computer's file system where has git has been told to track and manage changes to the files placed in them. &lt;br /&gt;
&lt;br /&gt;
There are three different repositories that you mainly deal with when developing pioneer.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; repo. This is the main Pioneer repository stored on GitHub. This is read-only except to the core team (and even they don't do their development there).&lt;br /&gt;
* The &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repo. This is a public Pioneer repository personal to you, but stored on GitHub under your username, so other people can see the changes put into it. This is read-only to everyone except you.&lt;br /&gt;
* The &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repo. This is your personal Pioneer repository on your computer, not accessible by anyone else.&lt;br /&gt;
&lt;br /&gt;
Before you can start developing you need to setup both your Pioneer &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repositories.&lt;br /&gt;
&lt;br /&gt;
=== Your origin repository ===&lt;br /&gt;
&lt;br /&gt;
Your &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repository you make on GitHub. To do that, make sure that you're logged in there and go to the main [https://github.com/pioneerspacesim/pioneer GitHub Pioneer page] in your web browser, and click the 'Fork' button at the top of that page:&lt;br /&gt;
[[File:ForkPioneer.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GitHub will clank and whirr as it makes a copy of the main Pioneer repo under your username. Eventually it will finish, and you'll end up on page almost exactly like the main GitHub Pioneer page, but instead of being named &amp;lt;code&amp;gt;pioneerspacesim/pioneer&amp;lt;/code&amp;gt; your copy is named &amp;lt;code&amp;gt;&amp;lt;your github user name&amp;gt;/pioneer&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Having made your &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repo, you're now ready to make your local one.&lt;br /&gt;
&lt;br /&gt;
=== Your local repository ===&lt;br /&gt;
&lt;br /&gt;
You make your &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repository by cloning a copy of your new &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repository to your local machine. &lt;br /&gt;
&lt;br /&gt;
At the command line, navigate to where on your filesystem you want to put your local git repos. For instance on Linux I put mine in &amp;lt;code&amp;gt;~/repos&amp;lt;/code&amp;gt; whilst on Windows I put them in &amp;lt;code&amp;gt;c:\develop\github-repos&amp;lt;/code&amp;gt;. You can move the folder at a later time without breaking anything. Once you're there execute the following command replacing &amp;lt;code&amp;gt;your github username&amp;lt;/code&amp;gt; with, well, your github username.&lt;br /&gt;
&lt;br /&gt;
 git clone git://github.com/your gituhub username/pioneer.git&lt;br /&gt;
&lt;br /&gt;
Just like clicking Fork on the main Pioneer GitHub repo made a clone of it under your GitHub account, this makes a clone of that clone to your local machine. Expect this to take some time, just like before, as it copies all the files and the complete history of the project to your filesystem, only now it's sucking the data from GitHub to your machine, rather than copying things around within GitHub's data centre (so it will probably take even longer; however, a modern coputer does it on the order of minutes).&lt;br /&gt;
&lt;br /&gt;
Eventually this operation will complete, and you'll have a shiny new directory named &amp;lt;code&amp;gt;pioneer&amp;lt;/code&amp;gt; which git -- with a little encouragement -- will manage for you, your &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repo.&lt;br /&gt;
&lt;br /&gt;
We're almost done with repository setup, but there is one more thing we need to attend to. When you did &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt;, it automatically set &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; to point to your Pioneer repository on GitHub. However it didn't set &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; to point the main Pioneer Repository. We'll need to do that manually.&lt;br /&gt;
&lt;br /&gt;
We must to be inside the repository to do this, in fact all the git commands from now on, you need to be inside a repository to execute any of the git commands shown. So enter the pioneer repository directory, before doing:&lt;br /&gt;
&lt;br /&gt;
 git remote add upstream git://github.com/pioneerspacesim/pioneer.git&lt;br /&gt;
&lt;br /&gt;
...to define &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; as the main Pioneer repository. You'll notice you defined &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; as a &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; is also defined as a &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt;. We'll explain more about remotes later on.&lt;br /&gt;
&lt;br /&gt;
You can now view the result of our commands, i.e. see how we link the &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; to your git repo, and upstream to the central pioneer repository.&lt;br /&gt;
&lt;br /&gt;
 git remote -v&lt;br /&gt;
&lt;br /&gt;
== Basic operations ==&lt;br /&gt;
&lt;br /&gt;
At this point you might want to consider searching for tutorials. There are many good ones on git out there. If you're familiar with svn look [http://git.or.cz/course/svn.html here], and [http://marklodato.github.io/visual-git-guide/index-en.html this] is a nice visual representation of different commands, which might be helpful. Basic git tutorials on youtube: [https://www.youtube.com/watch?v=vaNGbk6HN9Y part 0], [https://www.youtube.com/watch?v=DQUcmNO4diQ part 1].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;branch-name&amp;gt; ; git checkout &amp;lt;branch-name&amp;gt;&lt;br /&gt;
 git checkout -b &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 gitk&lt;br /&gt;
&lt;br /&gt;
 git add -A ; git commit&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;branch name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating your branches ==&lt;br /&gt;
&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
&lt;br /&gt;
 git merge&lt;br /&gt;
&lt;br /&gt;
 git pull --ff-only upstream master&lt;br /&gt;
&lt;br /&gt;
 git merge master&lt;br /&gt;
&lt;br /&gt;
== Resolving Conflicts ==&lt;br /&gt;
&lt;br /&gt;
== Making a pull request ==&lt;br /&gt;
&lt;br /&gt;
== Getting code from other branches ==&lt;br /&gt;
 &lt;br /&gt;
 git checkout &amp;lt;branch-name&amp;gt; -- &amp;lt;file-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git merge &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting other developer's branches ==&lt;br /&gt;
&lt;br /&gt;
 git remote&lt;br /&gt;
&lt;br /&gt;
 git remote add &amp;lt;remote&amp;gt; &amp;lt;url&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git remote update&lt;br /&gt;
&lt;br /&gt;
 git checkout -b &amp;lt;branch-name&amp;gt; --track &amp;lt;remote&amp;gt;/&amp;lt;remote-branch-name&lt;br /&gt;
&lt;br /&gt;
== Keeping things tidy ==&lt;br /&gt;
&lt;br /&gt;
 git branch -d &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git branch -D &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git clean -n&lt;br /&gt;
&lt;br /&gt;
 git clean -f&lt;br /&gt;
&lt;br /&gt;
== Reviewing a pull request ==&lt;br /&gt;
&lt;br /&gt;
== Rebasing and cherry picking ==&lt;br /&gt;
&lt;br /&gt;
'''Warning''': Rebasing and cherry picking, although sometimes useful, can cause problems for other developers if you use them on commits that have already been published to github. Be careful and give sufficient warnings if you find you needing to use them in that situation.&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 gitk&lt;br /&gt;
&lt;br /&gt;
 git rebase &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pushing to upstream Pioneer Master ==&lt;br /&gt;
For those with push access to https://github.com/pioneerspacesim/pioneer this is one way to push code to master. First make sure you have a resonable setup:&lt;br /&gt;
&lt;br /&gt;
 git remote -v&lt;br /&gt;
  origin	https://github.com/myusername/pioneer.git (fetch)&lt;br /&gt;
  origin	https://github.com/myusername/pioneer.git (push)&lt;br /&gt;
  upstream	https://github.com/pioneerspacesim/pioneer.git (fetch)&lt;br /&gt;
  upstream	https://github.com/pioneerspacesim/pioneer.git (push)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git merge --no-commit --no-ff feature_branch&lt;br /&gt;
&lt;br /&gt;
Document changes to Changelog.txt, then add it, from the pioneer root folder:&lt;br /&gt;
&lt;br /&gt;
 git add Changelog.txt&lt;br /&gt;
 git commit &lt;br /&gt;
&lt;br /&gt;
This has now included the Changelog edit into the merge commit. Now do a dry run:&lt;br /&gt;
&lt;br /&gt;
 git push upstream master --dry-run&lt;br /&gt;
&lt;br /&gt;
Check that the right commits will be pushed with&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
And let us do it for real this time:&lt;br /&gt;
&lt;br /&gt;
 git push upstream master&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please note: NEVER do a force push to pioneer master!&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1352</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1352"/>
		<updated>2013-04-26T22:54:43Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: /* Version 1.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1071</id>
		<title>Pioneer Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1071"/>
		<updated>2013-03-02T15:41:57Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: /* Content Creation */ say that new-equipment is not yet merged&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pioneer is a space adventure game set in the milkyway galaxy at the turn of the 31st century. The game is open-ended, and you are free to explore the millions of star systems in the game. You can land on planets, slingshot past gas giants, and burn yourself to a crisp flying between binary star systems.&lt;br /&gt;
----&lt;br /&gt;
If you are new to pioneer you may want to know [[How to start| how to start]].&lt;br /&gt;
&lt;br /&gt;
* [http://pioneerspacesim.net/download Download Pioneer] for Windows, Linux and Mac OSX&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/pioneerspacesim/files/nightly/ Development Builds] (warning, may be more unstable than a release) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Please make this wiki nice. Add stuff about mods, dev, whatever. Be awesome! [[Getting started|How to get started]].&lt;br /&gt;
&lt;br /&gt;
And write a nice front page and get rid of this, ok? :)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#bbffbb; border:2px solid #99ee99;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===Community===&lt;br /&gt;
* [http://pioneerspacesim.net/ Pioneer Space Sim Homepage]&lt;br /&gt;
* [http://pioneerspacesim.net/forum Forums]&lt;br /&gt;
* [http://webchat.freenode.net/?channels=#pioneer Pioneer Space Sim on IRC]&lt;br /&gt;
* [http://pioneerspacesim.net/+ Pioneer Space Sim] on Google+&lt;br /&gt;
* [http://twitter.com/pioneerspacesim @pioneerspacesim] on Twitter&lt;br /&gt;
----&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Keyboard and mouse controls]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
* [[Media Coverage]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff9b1; border:2px solid #f0fe66;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===The Pioneer universe===&lt;br /&gt;
* [[Story]]&lt;br /&gt;
* [http://pioneerwiki.com/wiki/Category:Ships Ships] (work in progress)&lt;br /&gt;
* [[Places of interest]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#f0f0ff; border:2px solid #c6c9ff; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Content Creation===&lt;br /&gt;
* [[Mods]]&lt;br /&gt;
* [[Introduction to Mission Scripting]]&lt;br /&gt;
** [[Interacting with the game: Event-based programming]]&lt;br /&gt;
** [[Interacting with the player: BBS forms]]&lt;br /&gt;
** [[Lua-based equipment]] (NOT YET MERGED!)&lt;br /&gt;
** [[Surviving a reload]]&lt;br /&gt;
* [http://eatenbyagrue.org/f/pioneer/codedoc/ Lua API Reference]&lt;br /&gt;
* Ships and stations&lt;br /&gt;
** [[Making your first ship]]&lt;br /&gt;
** [[Creating Ships and Stations]]&lt;br /&gt;
* Models&lt;br /&gt;
** [[Model system]]&lt;br /&gt;
** [[Model viewer]]&lt;br /&gt;
** [[Transitioning to the new model system]]&lt;br /&gt;
** Making models&lt;br /&gt;
*** [[Textures]]&lt;br /&gt;
*** [[Transparency]]&lt;br /&gt;
*** [[Optimising geometry]]&lt;br /&gt;
*** [[Modelling stations]]&lt;br /&gt;
** [[3DS Max]]&lt;br /&gt;
** [[:Category:Blender|Blender]]&lt;br /&gt;
*** [[Blender Tips]]&lt;br /&gt;
*** [[UV coordinates in Blender]]&lt;br /&gt;
*** [[Asteroids and rocks in Blender]]&lt;br /&gt;
*** [[Scripting Blender]]&lt;br /&gt;
** [[GIMP Tips]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[Sound Effects]]&lt;br /&gt;
* [[Translations]]&lt;br /&gt;
* [[Licensing]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff3e3; border:2px solid #ffc9c9; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Development===&lt;br /&gt;
* [[Design Scope|Game Scope]]&lt;br /&gt;
* [[Getting Started with Development]]&lt;br /&gt;
** [[How to communicate]]&lt;br /&gt;
** [[Using git and GitHub]] (work in progress)&lt;br /&gt;
** [[Core Team]]&lt;br /&gt;
* [[Development Model]]&lt;br /&gt;
* [[Design_Workflow|Design and Project Management Workflow]]&lt;br /&gt;
* [https://github.com/pioneerspacesim/pioneer/issues Issue tracker]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pioneer is brung to you by a flock of [https://github.com/pioneerspacesim/pioneer/blob/master/AUTHORS.txt opensource beardy-weirdies], and is [http://www.gnu.org/licenses/gpl.html Free Software]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Using_git_and_GitHub&amp;diff=1070</id>
		<title>Using git and GitHub</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Using_git_and_GitHub&amp;diff=1070"/>
		<updated>2013-03-02T14:09:51Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Simplify the paragraphs about Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Developing on pioneer means using the version control tool 'git' and the [https://github.com/ github] website. git especially has a reputation for having a steep learning curve, so here we'll try to give you enough knowledge to be dangerous!&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
A working installation of git, a GitHub account, and comfort with using the command line of your chosen operating system.&lt;br /&gt;
&lt;br /&gt;
The GitHub sign-up page is [https://github.com/signup/free here]. Make a note of your user name as you'll need it to make your local pioneer repository.&lt;br /&gt;
&lt;br /&gt;
On Linux, git is available in all distributions using the standard tools such as APT, yum or emerge. Since there is a wide range of file browsers and graphical environments, this tutorial limits itself to the command line interface.&lt;br /&gt;
&lt;br /&gt;
On Windows you have two options, [http://msysgit.github.com/ Git for Windows] aka msysgit, or [http://windows.github.com/ Github for Windows] which is essentially msysgit but with some extra stuff bundled. Some of which is good ([https://github.com/dahlbyk/posh-git posh git]) and some of which is well, not (github's 'friendly' gui). Since both include the same command line tools and cross platform gui tools, either is fine for our purposes here. The github one may be more convenient to install.&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, git will have been installed with XCode as git is built into the XCode IDE. However, usage of git from from within an IDE isn't something I'm familiar with so isn't covered here. If you want to follow along with this document then if you elected to install the XCode command line tools, then the git commands below should work unaltered from a terminal window. If you didn't then you'll need to use &amp;lt;code&amp;gt;xcrun&amp;lt;/code&amp;gt; to run the commands in terminal, either by adding &amp;lt;code&amp;gt;xcrun&amp;lt;/code&amp;gt; in front of each of the commands or aliasing &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gitk&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;xcrun git&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xcrun gitk&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;~/.profile&amp;lt;/code&amp;gt;. Have a look at [http://www.cocoanetics.com/2012/07/you-dont-need-the-xcode-command-line-tools/ this guide] for details.&lt;br /&gt;
&lt;br /&gt;
== Creating your pioneer repositories ==&lt;br /&gt;
&lt;br /&gt;
Git, as a version control system, stores all source files for Pioneer (or any other project you've chosen to manage with git) along with their histories in '''repositories''' (usually shortened to just 'repos').  These are areas of a computer's file system where has git has been told to track and manage changes to the files placed in them. &lt;br /&gt;
&lt;br /&gt;
There are three different repositories that you mainly deal with when developing pioneer.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; repo. This is the main Pioneer repository stored on GitHub. This is read-only except to the core team (and even they don't do their development there).&lt;br /&gt;
* The &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repo. This is a public Pioneer repository personal to you, but stored on GitHub under your username, so other people can see the changes put into it. This is read-only to everyone except you.&lt;br /&gt;
* The &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repo. This is your personal Pioneer repository on your computer, not accessible by anyone else.&lt;br /&gt;
&lt;br /&gt;
Before you can start developing you need to setup both your Pioneer &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repositories.&lt;br /&gt;
&lt;br /&gt;
=== Your origin repository ===&lt;br /&gt;
&lt;br /&gt;
Your &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repository you make on GitHub. To do that, make sure that you're logged in there and go to the main [https://github.com/pioneerspacesim/pioneer GitHub Pioneer page] in your web browser, and click the 'Fork' button at the top of that page:&lt;br /&gt;
[[File:ForkPioneer.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GitHub will clank and whirr as it makes a copy of the main Pioneer repo under your username. Eventually it will finish, and you'll end up on page almost exactly like the main GitHub Pioneer page, but instead of being named &amp;lt;code&amp;gt;pioneerspacesim/pioneer&amp;lt;/code&amp;gt; your copy is named &amp;lt;code&amp;gt;&amp;lt;your github user name&amp;gt;/pioneer&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Having made your &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repo, you're now ready to make your local one.&lt;br /&gt;
&lt;br /&gt;
=== Your local repository ===&lt;br /&gt;
&lt;br /&gt;
You make your your &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repository by cloning a copy of you new &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; repository to you local machine. &lt;br /&gt;
&lt;br /&gt;
At the command line, navigate to where on your filesystem you want to put your local git repos. For instance on Linux I put mine in &amp;lt;code&amp;gt;~/repos&amp;lt;/code&amp;gt; whilst on Windows I put them in &amp;lt;code&amp;gt;c:\develop\github-repos&amp;lt;/code&amp;gt;. Once you're there execute the following command replacing &amp;lt;code&amp;gt;your github username&amp;lt;/code&amp;gt; with, well, your github username.&lt;br /&gt;
&lt;br /&gt;
 git clone git://github.com/your gituhub username/pioneer.git&lt;br /&gt;
&lt;br /&gt;
Just like clicking Fork on the main Pioneer GitHub repo made a clone of it under your GitHub account, this makes a clone of that clone on your local machine. Expect this to take some time, just like before, as it copies all the files and the complete history of the project to your filesystem, only now it's sucking the data from GitHub to your machine, rather than copying things around within GitHub's data centre (so it will probably take even longer).&lt;br /&gt;
&lt;br /&gt;
Eventually this operation will complete, and you'll have a shiny new directory named &amp;lt;code&amp;gt;pioneer&amp;lt;/code&amp;gt; which git -- with a little encouragement -- will manage for you, your &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; repo.&lt;br /&gt;
&lt;br /&gt;
We're almost done with repository setup, but there is one more thing we need to attend to. When you did &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt;, it automatically set &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; to point to your Pioneer repository on GitHub. However it didn't set &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; to point the main Pioneer Repository. We'll need to do that manually.&lt;br /&gt;
&lt;br /&gt;
We must to be inside the repository to do this, in fact all the git commands from now on, you need to be inside a repository to execute any of the git commands shown. So enter the pioneer repository directory, before doing:&lt;br /&gt;
&lt;br /&gt;
 git remote add upstream git://github.com/pioneerspacesim/pioneer.git&lt;br /&gt;
&lt;br /&gt;
...to define &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; as the main Pioneer repository. You'll notice you defined &amp;lt;code&amp;gt;upstream&amp;lt;/code&amp;gt; as a &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; is also defined as a &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt;. We'll explain more about remotes later on.&lt;br /&gt;
&lt;br /&gt;
== Basic operations ==&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;branch-name&amp;gt; ; git checkout &amp;lt;branch-name&amp;gt;&lt;br /&gt;
 git checkout -b &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 gitk&lt;br /&gt;
&lt;br /&gt;
 git add -A ; git commit&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;branch name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating your branches ==&lt;br /&gt;
&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
&lt;br /&gt;
 git merge&lt;br /&gt;
&lt;br /&gt;
 git pull --ff-only upstream master&lt;br /&gt;
&lt;br /&gt;
 git merge master&lt;br /&gt;
&lt;br /&gt;
== Resolving Conflicts ==&lt;br /&gt;
&lt;br /&gt;
== Making a pull request ==&lt;br /&gt;
&lt;br /&gt;
== Getting code from other branches ==&lt;br /&gt;
 &lt;br /&gt;
 git checkout &amp;lt;branch-name&amp;gt; -- &amp;lt;file-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git merge &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting other developer's branches ==&lt;br /&gt;
&lt;br /&gt;
 git remote&lt;br /&gt;
&lt;br /&gt;
 git remote add &amp;lt;remote&amp;gt; &amp;lt;url&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git remote update&lt;br /&gt;
&lt;br /&gt;
 git checkout -b &amp;lt;branch-name&amp;gt; --track &amp;lt;remote&amp;gt;/&amp;lt;remote-branch-name&lt;br /&gt;
&lt;br /&gt;
== Keeping things tidy ==&lt;br /&gt;
&lt;br /&gt;
 git branch -d &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git branch -D &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git clean -n&lt;br /&gt;
&lt;br /&gt;
 git clean -f&lt;br /&gt;
&lt;br /&gt;
== Reviewing a pull request ==&lt;br /&gt;
&lt;br /&gt;
== Rebasing and cherry picking ==&lt;br /&gt;
&lt;br /&gt;
'''Warning''': Rebasing and cherry picking, although sometimes useful, can cause problems for other developers if you use them on commits that have already been published to github. Be careful and give sufficient warnings if you find you needing to use them in that situation.&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 gitk&lt;br /&gt;
&lt;br /&gt;
 git rebase &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;branch-name&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1069</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1069"/>
		<updated>2013-03-02T13:38:37Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(cargo.hydrogen, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;br /&gt;
&lt;br /&gt;
=== Creating equipment ===&lt;br /&gt;
There are basically two ways to create a new piece of equipment for Pioneer.&lt;br /&gt;
&lt;br /&gt;
==== The fast way ====&lt;br /&gt;
You can just instantiate a new EquipType. Its only argument is a table whose only mandatory content are a &amp;lt;code&amp;gt;modifiers&amp;lt;/code&amp;gt; table with the modifiers to apply at install time and a &amp;lt;code&amp;gt;slots&amp;lt;/code&amp;gt; with the name of the slots to install the piece in, stored in the array part of the table. The rest of the table content will get copied in the new object.&lt;br /&gt;
&lt;br /&gt;
Here is the creation of the basic ECM, for instance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ecm_basic = EquipType.new({&lt;br /&gt;
    name=&amp;quot;Basic ECM&amp;quot;, description=&amp;quot;&amp;quot;,&lt;br /&gt;
    slots=&amp;quot;ecm&amp;quot;, price=600000, modifiers={mass=2000, ecm_power=2}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since there is only one slot to install it in, you can just use a single string instead of a full table.&lt;br /&gt;
&lt;br /&gt;
Please bear in mind that the object created this way will be stored as reference every time it gets installed, if you want each piece to be its own object you will have to use another method.&lt;br /&gt;
&lt;br /&gt;
Note that for more specific pieces of equipment such as hyperdrives, you would use HyperdriveType instead of EquipType, with its own specifications.&lt;br /&gt;
&lt;br /&gt;
TODO: Document HyperdriveType&lt;br /&gt;
&lt;br /&gt;
==== The Lego™ way ====&lt;br /&gt;
&lt;br /&gt;
You can actually use any object as a piece of equipment as long as it has the following methods:&lt;br /&gt;
&lt;br /&gt;
  * &amp;lt;code&amp;gt;IsValidSlot(slot, ship)&amp;lt;/code&amp;gt; returning &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the slot is valid, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. The &amp;lt;code&amp;gt;ship&amp;lt;/ship&amp;gt; argument is here for those who would want some variable behaviour, even though I don't see any use case at the moment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;GetDefaultSlot(ship)&amp;lt;/code&amp;gt; returns a single string indicating the default slot for the piece of equipment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Install(ship, num, slot)&amp;lt;/code&amp;gt;. This gets called when installing the piece of equipment in the EquipSet. &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt; is obviously the targetted ship, &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; is the number of pieces planned to be installed, and &amp;lt;code&amp;gt;slot&amp;lt;/slot&amp;gt; is the slot it gets installed in. You don't need to check if there is enough place in the slot for the equipment, this has been sorted out already. Typically, it is in this function that the modifiers are applied to the ship. When you're done, just return the number of pieces actually installed.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Uninstall(ship, num, slot)&amp;lt;/code&amp;gt;. It is the exact counterpart of &amp;lt;code&amp;gt;Install()&amp;lt;/code&amp;gt;, just return the number of pieces actually uninstalled.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1068</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1068"/>
		<updated>2013-03-02T13:35:03Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(cargo.hydrogen, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;br /&gt;
&lt;br /&gt;
=== Creating equipment ===&lt;br /&gt;
There are basically two ways to create a new piece of equipment for Pioneer.&lt;br /&gt;
&lt;br /&gt;
==== The fast way ====&lt;br /&gt;
You can just instantiate a new EquipType. Its only argument is a table whose only mandatory content are a &amp;lt;code&amp;gt;modifiers&amp;lt;/code&amp;gt; table with the modifiers to apply at install time and a &amp;lt;code&amp;gt;slots&amp;lt;/code&amp;gt; with the name of the slots to install the piece in, stored in the array part of the table. The rest of the table content will get copied in the new object.&lt;br /&gt;
&lt;br /&gt;
Here is the creation of the basic ECM, for instance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ecm_basic = EquipType.new({&lt;br /&gt;
    name=&amp;quot;Basic ECM&amp;quot;, description=&amp;quot;&amp;quot;,&lt;br /&gt;
    slots=&amp;quot;ecm&amp;quot;, price=600000, modifiers={mass=2000, ecm_power=2}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since there is only one slot to install it in, you can just use a single string instead of a full table.&lt;br /&gt;
&lt;br /&gt;
Please bear in mind that the object created this way will be stored as reference every time it gets installed, if you want each piece to be its own object you will have to use another method.&lt;br /&gt;
&lt;br /&gt;
Note that for more specific pieces of equipment such as hyperdrives, you would use HyperdriveType instead of EquipType, with its own specifications.&lt;br /&gt;
&lt;br /&gt;
TODO: Document HyperdriveType&lt;br /&gt;
&lt;br /&gt;
==== The Lego™ way ====&lt;br /&gt;
&lt;br /&gt;
You can actually use any object as a piece of equipment as long as it has the following methods:&lt;br /&gt;
&lt;br /&gt;
  * &amp;lt;code&amp;gt;IsValidSlot(slot, ship)&amp;lt;/code&amp;gt; returning &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the slot is valid, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. The &amp;lt;code&amp;gt;ship&amp;lt;/ship&amp;gt; argument is here for those who would want some variable behaviour, even though I don't see any use case at the moment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;GetDefaultSlot(ship)&amp;lt;/code&amp;gt; returns a single string indicating the default slot for the piece of equipment.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Install(ship, num, slot)&amp;lt;/code&amp;gt;. This gets called when installing the piece of equipment in the EquipSet. &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt; is obviously the targetted ship, &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; is the number of pieces planned to be installed, and &amp;lt;code&amp;gt;slot&amp;lt;/slot&amp;gt; is the slot it gets installed in. You don't need to check if there is enough place in the slot for the equipment, this has been sorted out already. Typically, it is in this function that the modifiers are applied to the ship. When you're done, just return the number of pieces actually installed.&lt;br /&gt;
  * &amp;lt;code&amp;gt;Uninstall(ship, num, slot)&amp;lt;/code&amp;gt;. It is the exact counterpart of &amp;lt;code&amp;gt;Install()&amp;lt;/code&amp;gt;, just return the number of pieces actually uninstalled.&lt;br /&gt;
&lt;br /&gt;
  * &amp;lt;code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1067</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1067"/>
		<updated>2013-03-02T13:05:05Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(cargo.hydrogen, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;br /&gt;
&lt;br /&gt;
=== Creating equipment ===&lt;br /&gt;
There are basically two ways to create a new piece of equipment for Pioneer.&lt;br /&gt;
&lt;br /&gt;
==== The fast way ====&lt;br /&gt;
You can just instantiate a new EquipType. Its only argument is a table whose only mandatory content are a &amp;lt;code&amp;gt;modifiers&amp;lt;/code&amp;gt; table with the modifiers to apply at install time and a &amp;lt;code&amp;gt;slots&amp;lt;/code&amp;gt; with the name of the slots to install the piece in, stored in the array part of the table. The rest of the table content will get copied in the new object.&lt;br /&gt;
&lt;br /&gt;
Here is the creation of the basic ECM, for instance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ecm_basic = EquipType.new({&lt;br /&gt;
    name=&amp;quot;Basic ECM&amp;quot;, description=&amp;quot;&amp;quot;,&lt;br /&gt;
    slots=&amp;quot;ecm&amp;quot;, price=600000, modifiers={mass=2000, ecm_power=2}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since there is only one slot to install it in, you can just use a single string instead of a full table.&lt;br /&gt;
&lt;br /&gt;
Please bear in mind that the object created this way will be stored as reference every time it gets installed, if you want each piece to be its own object you will have to use another method.&lt;br /&gt;
&lt;br /&gt;
Note that for more specific pieces of equipment such as hyperdrives, you would use HyperdriveType instead of EquipType, with its own specifications.&lt;br /&gt;
&lt;br /&gt;
TODO: Document HyperdriveType&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1056</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1056"/>
		<updated>2013-03-01T16:31:40Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;br /&gt;
&lt;br /&gt;
== From the Lua side ==&lt;br /&gt;
=== Accessing the equipment ===&lt;br /&gt;
The Lua interface to fetch, count, etc, the equipment hasn't changed much, I tried to keep the API changes to a minimum.&lt;br /&gt;
The difference is that instead of manipulating constants (well, strings) you will use straight Lua object.&lt;br /&gt;
For instance, instead of&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(&amp;quot;HYDROGEN&amp;quot;, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
You'll write&lt;br /&gt;
&amp;lt;code&amp;gt;Game.player:AddEquip(cargo.hydrogen, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The canonical equipment is stored in 2 tables, &amp;lt;code&amp;gt;equipment&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cargo&amp;lt;/code&amp;gt;&lt;br /&gt;
The slot names are not in caps anymore, and are the following (with their default size):&lt;br /&gt;
  * cargo=0,&lt;br /&gt;
  * engine=1,&lt;br /&gt;
  * laser_front=1,&lt;br /&gt;
  * laser_rear=0,&lt;br /&gt;
  * missile=0,&lt;br /&gt;
  * ecm=1,&lt;br /&gt;
  * scanner=1,&lt;br /&gt;
  * radar=1,&lt;br /&gt;
  * hypercloud=1,&lt;br /&gt;
  * hull_autorepair=1,&lt;br /&gt;
  * energy_booster=1,&lt;br /&gt;
  * atmo_shield=1,&lt;br /&gt;
  * cabin=50,&lt;br /&gt;
  * shield=9999,&lt;br /&gt;
  * fuel_scoop=1,&lt;br /&gt;
  * cargo_scoop=1,&lt;br /&gt;
  * laser_cooler=1,&lt;br /&gt;
  * cargo_life_support=1,&lt;br /&gt;
  * autopilot=1&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1055</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1055"/>
		<updated>2013-03-01T15:23:23Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: add a TODO item&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;br /&gt;
&lt;br /&gt;
TODO: A list of all the modifiers used in the C++ code.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1054</id>
		<title>Pioneer Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1054"/>
		<updated>2013-03-01T15:14:11Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Add a link to the lua-based equipment page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pioneer is a space adventure game set in the milkyway galaxy at the turn of the 31st century. The game is open-ended, and you are free to explore the millions of star systems in the game. You can land on planets, slingshot past gas giants, and burn yourself to a crisp flying between binary star systems.&lt;br /&gt;
----&lt;br /&gt;
If you are new to pioneer you may want to know [[How to start| how to start]].&lt;br /&gt;
&lt;br /&gt;
* [http://pioneerspacesim.net/download Download Pioneer] for Windows, Linux and Mac OSX&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/pioneerspacesim/files/nightly/ Development Builds] (warning, may be more unstable than a release) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Please make this wiki nice. Add stuff about mods, dev, whatever. Be awesome! [[Getting started|How to get started]].&lt;br /&gt;
&lt;br /&gt;
And write a nice front page and get rid of this, ok? :)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#bbffbb; border:2px solid #99ee99;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===Community===&lt;br /&gt;
* [http://pioneerspacesim.net/ Pioneer Space Sim Homepage]&lt;br /&gt;
* [http://pioneerspacesim.net/forum Forums]&lt;br /&gt;
* [http://webchat.freenode.net/?channels=#pioneer Pioneer Space Sim on IRC]&lt;br /&gt;
* [http://pioneerspacesim.net/+ Pioneer Space Sim] on Google+&lt;br /&gt;
* [http://twitter.com/pioneerspacesim @pioneerspacesim] on Twitter&lt;br /&gt;
----&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Keyboard and mouse controls]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
* [[Media Coverage]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff9b1; border:2px solid #f0fe66;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===The Pioneer universe===&lt;br /&gt;
* [[Story]]&lt;br /&gt;
* [http://pioneerwiki.com/wiki/Category:Ships Ships] (work in progress)&lt;br /&gt;
* [[Places of interest]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#f0f0ff; border:2px solid #c6c9ff; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Content Creation===&lt;br /&gt;
* [[Mods]]&lt;br /&gt;
* [[Introduction to Mission Scripting]]&lt;br /&gt;
** [[Interacting with the game: Event-based programming]]&lt;br /&gt;
** [[Interacting with the player: BBS forms]]&lt;br /&gt;
** [[Lua-based equipment]]&lt;br /&gt;
** [[Surviving a reload]]&lt;br /&gt;
* [http://eatenbyagrue.org/f/pioneer/codedoc/ Lua API Reference]&lt;br /&gt;
* Ships and stations&lt;br /&gt;
** [[Making your first ship]]&lt;br /&gt;
** [[Creating Ships and Stations]]&lt;br /&gt;
* Models&lt;br /&gt;
** [[Model system]]&lt;br /&gt;
** [[Model viewer]]&lt;br /&gt;
** [[Transitioning to the new model system]]&lt;br /&gt;
** Making models&lt;br /&gt;
*** [[Textures]]&lt;br /&gt;
*** [[Transparency]]&lt;br /&gt;
*** [[Optimising geometry]]&lt;br /&gt;
*** [[Modelling stations]]&lt;br /&gt;
** [[3DS Max]]&lt;br /&gt;
** [[:Category:Blender|Blender]]&lt;br /&gt;
*** [[Blender Tips]]&lt;br /&gt;
*** [[UV coordinates in Blender]]&lt;br /&gt;
*** [[Asteroids and rocks in Blender]]&lt;br /&gt;
*** [[Scripting Blender]]&lt;br /&gt;
** [[GIMP Tips]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[Sound Effects]]&lt;br /&gt;
* [[Translations]]&lt;br /&gt;
* [[Licensing]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff3e3; border:2px solid #ffc9c9; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Development===&lt;br /&gt;
* [[Design Scope|Game Scope]]&lt;br /&gt;
* [[Getting Started with Development]]&lt;br /&gt;
** [[How to communicate]]&lt;br /&gt;
** [[Using git and GitHub]] (work in progress)&lt;br /&gt;
** [[Core Team]]&lt;br /&gt;
* [[Development Model]]&lt;br /&gt;
* [[Design_Workflow|Design and Project Management Workflow]]&lt;br /&gt;
* [https://github.com/pioneerspacesim/pioneer/issues Issue tracker]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pioneer is brung to you by a flock of [https://github.com/pioneerspacesim/pioneer/blob/master/AUTHORS.txt opensource beardy-weirdies], and is [http://www.gnu.org/licenses/gpl.html Free Software]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1053</id>
		<title>Lua-based equipment</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Lua-based_equipment&amp;diff=1053"/>
		<updated>2013-03-01T15:13:04Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Short C++-side documentation for new-equipment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of March 2013, there's been an ongoing effort for about a year to rewrite the equipment system to be able to define and modify random pieces of equipment through Lua.&lt;br /&gt;
The resulting system is entirely Lua-based, and communicates with C++ only through string-&amp;gt;integers pairs called modifiers.&lt;br /&gt;
&lt;br /&gt;
== From the C++ side ==&lt;br /&gt;
&lt;br /&gt;
If you wish to know if there is an ECM installed on &amp;lt;code&amp;gt;ship&amp;lt;/code&amp;gt;, you would just do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int ecm_mod = ship-&amp;gt;GetModifier(&amp;quot;ecm&amp;quot;); // This gets you the actual value of the modifier, ie the strength of the ECM&lt;br /&gt;
if (ecm_mod &amp;gt; 0) {&lt;br /&gt;
    BlastAwayThisMissileWithStrength(ecm_mod);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the UI is being ported to new-ui and thus is defined in Lua, you shouldn't need to access the equipment directly. If you need more interaction with the equipment than simple modifiers, as it will probably be the case for lasers (not yet implemented at the time of writing), it might be worth it to write specific Lua interfaces that are to be called by the relevant pieces of equipment at install/uninstall time.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=User:Laarmen&amp;diff=420</id>
		<title>User:Laarmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=User:Laarmen&amp;diff=420"/>
		<updated>2012-12-15T12:07:08Z</updated>

		<summary type="html">&lt;p&gt;Laarmen: Created page with &amp;quot; == Misc infos ==  Hi,  I'm one of those beardie-weirdies working on Pioneer. My current long-running task is to export equipment handling into Lua. Other than that, I mainly wro...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Misc infos ==&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I'm one of those beardie-weirdies working on Pioneer. My current long-running task is to export equipment handling into Lua.&lt;br /&gt;
Other than that, I mainly wrote — and write — small dev tools such as console completion.&lt;br /&gt;
&lt;br /&gt;
My nicks are both laarmen on Github and IRC.&lt;/div&gt;</summary>
		<author><name>Laarmen</name></author>
		
	</entry>
</feed>