<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://planeshift.top-ix.org//pswiki/index.php?action=history&amp;feed=atom&amp;title=Generic_Engine</id>
	<title>Generic Engine - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://planeshift.top-ix.org//pswiki/index.php?action=history&amp;feed=atom&amp;title=Generic_Engine"/>
	<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;action=history"/>
	<updated>2026-04-05T23:00:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=8102&amp;oldid=prev</id>
		<title>Unkermouse: wikilink</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=8102&amp;oldid=prev"/>
		<updated>2010-12-11T15:40:46Z</updated>

		<summary type="html">&lt;p&gt;wikilink&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:40, 11 December 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot;&gt;Line 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to really make a generic engine we need to use a plugin based design.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to really make a generic engine we need to use a plugin based design.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We will use the SCF system provided by CrystalSpace to obtain a plugin&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We will use the SCF system provided by &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;CrystalSpace&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;to obtain a plugin&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;system. This goes in two main point&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;system. This goes in two main point&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Try to make current code in plugin style and split them from each other&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Try to make current code in plugin style and split them from each other&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Unkermouse</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7290&amp;oldid=prev</id>
		<title>Ethryn: add to category (Engine documents), corrected some spelling (please use a spellchecker... (&#039;phyton&#039;... wtf?))</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7290&amp;oldid=prev"/>
		<updated>2010-10-23T00:03:00Z</updated>

		<summary type="html">&lt;p&gt;add to category (Engine documents), corrected some spelling (please use a spellchecker... (&amp;#039;phyton&amp;#039;... wtf?))&lt;/p&gt;
&lt;a href=&quot;https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;amp;diff=7290&amp;amp;oldid=7138&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ethryn</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7138&amp;oldid=prev</id>
		<title>Talad at 21:43, 12 October 2010</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7138&amp;oldid=prev"/>
		<updated>2010-10-12T21:43:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:43, 12 October 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l142&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;obliges each plugin to implement the api even if some functionalities&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;obliges each plugin to implement the api even if some functionalities&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;are unused.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;are unused.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;License situation&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;As it is most of the code is licensed under GPLv2 and the copyright is assigned&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to Atomic Blue, the entity rappresenting PlaneShift, and this code isn’t going&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to disappear and neither going to not be added anymore in a collaboration&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;enviroment. Plus we have to consider some sort of licensing allowing the&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code to not be pulled out of the code base (even in future versions: gpl&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;doesn’t protect aganist this) but, at the same time, we don’t want to block&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;who contribuites to this engine to license his code also to others under other&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;licenses and we need in any case also someone who could obtain the right of&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;holding the code in court in case of gpl breaches. This needs some tought as&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I’m not a lawyer.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Talad</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7137&amp;oldid=prev</id>
		<title>Talad: Created page with &#039;1 General idea  The goal of this project is starting with PlaneShift actual source code and pol- ishing it, in order to get an engine which could, not only work for PlaneShift, b…&#039;</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Generic_Engine&amp;diff=7137&amp;oldid=prev"/>
		<updated>2010-10-12T21:32:27Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;1 General idea  The goal of this project is starting with PlaneShift actual source code and pol- ishing it, in order to get an engine which could, not only work for PlaneShift, b…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;1&lt;br /&gt;
General idea&lt;br /&gt;
&lt;br /&gt;
The goal of this project is starting with PlaneShift actual source code and pol-&lt;br /&gt;
ishing it, in order to get an engine which could, not only work for PlaneShift,&lt;br /&gt;
but also with any other project who wishes to make an MMORPG(if the en-&lt;br /&gt;
gine was also able to mesh to other mmo games types it could be considered&lt;br /&gt;
a plus, could be a nice goal but not fundamental).&lt;br /&gt;
&lt;br /&gt;
1.1&lt;br /&gt;
Data mantainability&lt;br /&gt;
&lt;br /&gt;
It’s important to understand that the goal of this project isn’t to mantain&lt;br /&gt;
the data, as is, of any project which will be using the engine but mantaining&lt;br /&gt;
the possibility to obtain the same result. This means that with the&lt;br /&gt;
same code, provided the correct data is updated accordly, if old, or made,&lt;br /&gt;
if it’s a new feature, should allow various projects to obtain different games&lt;br /&gt;
from the same engine: so whathever the data is updated accordly you should&lt;br /&gt;
be able to obtain any frontend exactly as it is or even better. If anything of&lt;br /&gt;
such would be impossible to obtain due to a change, even by redoing all the&lt;br /&gt;
data (which is art, data files for the client and server database) it means the&lt;br /&gt;
code being threated has failed the generic engine goal&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
Collaboration&lt;br /&gt;
&lt;br /&gt;
We are trying to put up a collaboration enviroment with PlaneShift engine&lt;br /&gt;
team and other developers using the same engine.&lt;br /&gt;
there will be gains for both and when the generic engine will be mature&lt;br /&gt;
enough maybe the separate code base could be entirely dropped and only&lt;br /&gt;
one could be started from that point on. In the mean time the code will have&lt;br /&gt;
to be merged between the code bases.&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
Handling of new features and big changes&lt;br /&gt;
&lt;br /&gt;
Anything bigger than little changes like a rewrite of the gui or new big func-&lt;br /&gt;
tionalities. which could lead to merge issues, should be done on a separate&lt;br /&gt;
branch and kept merged with trunk. This way we will avoid long merge&lt;br /&gt;
headcaches.&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
Plugin based design&lt;br /&gt;
&lt;br /&gt;
In order to really make a generic engine we need to use a plugin based design.&lt;br /&gt;
We will use the SCF system provided by CrystalSpace to obtain a plugin&lt;br /&gt;
system. This goes in two main point&lt;br /&gt;
1. Try to make current code in plugin style and split them from each other&lt;br /&gt;
interdependancy. This is, probably, the most complex thing to obtain&lt;br /&gt;
and in some cases it could not be worth it.&lt;br /&gt;
2. If the code is not worth being converted to a plugin, due to better&lt;br /&gt;
possibilities of code available now, differently from when it was first&lt;br /&gt;
implemented, or it’s new (wasn’t in the codebase before) it should be&lt;br /&gt;
designed in order to be prepared as a plugin since the beginning&lt;br /&gt;
So at any time the goal should restructure code or structure it for the first&lt;br /&gt;
time, depending on the case, to be plugin friendly, even if you don’t have&lt;br /&gt;
enough time to actually complete the work needed to make it a plugin you&lt;br /&gt;
should always have in mind it!&lt;br /&gt;
&lt;br /&gt;
4.1&lt;br /&gt;
Benefits&lt;br /&gt;
&lt;br /&gt;
As logical with any plugin based system there are various gains from this even&lt;br /&gt;
if they come at an higher cost of time of implementation and complexity of&lt;br /&gt;
design (which is also the biggest problem of this):&lt;br /&gt;
• Allows to implement any subsystem even by breaking the point ex-&lt;br /&gt;
plained in the section Scripting (This shouldn’t be done for the main&lt;br /&gt;
plugins!). This would allow someone to make a more optimized game,&lt;br /&gt;
if they have an use of it, or implement systems which are too radical&lt;br /&gt;
to be compatible with any current code or plugin(like this would allow&lt;br /&gt;
to make a different game type by changing some plugins and writing&lt;br /&gt;
them again)&lt;br /&gt;
• Allows easier unit testing: if the various parts of code doesn’t call each&lt;br /&gt;
other but uses something else to interact this allows to test each piece&lt;br /&gt;
of the project alone and discover bugs more easily.&lt;br /&gt;
• Regardless, it forces the programmer to avoid bad programming prac-&lt;br /&gt;
tices, and it’s a really good challenge even for who starts programming&lt;br /&gt;
as it helps getting more clean code.&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
Scripting&lt;br /&gt;
&lt;br /&gt;
An important thing, which is unfortunately lacking for most of the codebase&lt;br /&gt;
we are starting from, is the scriptability of it. This is doable by splitting&lt;br /&gt;
ideas as much as possible in sub-entities/sub-methods/sub-functions and, as&lt;br /&gt;
we don’t have yet a good central scripting system, implement new things as&lt;br /&gt;
c based ”scripts” inside a function which should be perfectly replaceable by&lt;br /&gt;
an external scripting language.&lt;br /&gt;
&lt;br /&gt;
5.1&lt;br /&gt;
Implementation&lt;br /&gt;
&lt;br /&gt;
The scripting could be itself one or even two plugins with a 3 level structure.&lt;br /&gt;
Starting from the script point of view:&lt;br /&gt;
1. The Script interpreter(LUA, Phyton, progressionscript (what is cur-&lt;br /&gt;
rently implemented: an xml based custom scripting system), scheme,&lt;br /&gt;
c like) This can even be in reality actually c/c++ built and compiled&lt;br /&gt;
script which can be hooked up to the system as a plugin. This should&lt;br /&gt;
implement, obviously, all the opcode of the lower levels, but is already&lt;br /&gt;
usable with just a part of them implemented (just the plugin parsing&lt;br /&gt;
the script won’t be able to use the full power of the engine and as a&lt;br /&gt;
result also that particular scripting language won’t be able to).&lt;br /&gt;
2. A script handler which compiles the opcodes from the higher level plu-&lt;br /&gt;
gin according to his directives and stores them for example in arrays&lt;br /&gt;
rappresenting the program flow. These scripts should then be able to&lt;br /&gt;
interact with the various parts of the program, which have been up-&lt;br /&gt;
dated to be able to use it. Someone should be able to replace also&lt;br /&gt;
this with his own implementation provided he can provide the right&lt;br /&gt;
commands to the other parts of the engine.&lt;br /&gt;
3. The actual engine which uses the script in order to implement it’s&lt;br /&gt;
functionalities.&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
Hardcoding&lt;br /&gt;
&lt;br /&gt;
Just to be sure i’m adding also this: No hardcoding of any type will&lt;br /&gt;
be tollerated!&lt;br /&gt;
&lt;br /&gt;
6.1&lt;br /&gt;
Special cases&lt;br /&gt;
&lt;br /&gt;
There are situations where hardcoding is not possible to workaround: an&lt;br /&gt;
example could be an updater crisis case recovery code, where you need to&lt;br /&gt;
rely on a builtin url in order to obtain the data, because, for example, config&lt;br /&gt;
files could be not existant, or another example application names and con-&lt;br /&gt;
figuration folders. In these cases all the needed things should be put in a&lt;br /&gt;
global header which can be changed easily to build another project without&lt;br /&gt;
any other changes to the source.&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
Implementation ideas for plugins&lt;br /&gt;
&lt;br /&gt;
As cross plugin comunication in something complex as a server or game&lt;br /&gt;
client could be needed there are various ways to obtain this without creating&lt;br /&gt;
a direct cross dependancy (cross accesses). Just some examples:&lt;br /&gt;
• Messaging system: make the plugin broadcast to all messages on need&lt;br /&gt;
or requesting something and then waiting for other plugin to catch&lt;br /&gt;
the message and work on it and maybe answer back (similar to bus&lt;br /&gt;
system with memory mapped adressing). The code we have has already&lt;br /&gt;
something similar builtin and could be improved upon.&lt;br /&gt;
• Clear plugin api: Make the api standard and valid for all plugins. This&lt;br /&gt;
obliges each plugin to implement the api even if some functionalities&lt;br /&gt;
are unused.&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
License situation&lt;br /&gt;
&lt;br /&gt;
As it is most of the code is licensed under GPLv2 and the copyright is assigned&lt;br /&gt;
to Atomic Blue, the entity rappresenting PlaneShift, and this code isn’t going&lt;br /&gt;
to disappear and neither going to not be added anymore in a collaboration&lt;br /&gt;
enviroment. Plus we have to consider some sort of licensing allowing the&lt;br /&gt;
code to not be pulled out of the code base (even in future versions: gpl&lt;br /&gt;
doesn’t protect aganist this) but, at the same time, we don’t want to block&lt;br /&gt;
who contribuites to this engine to license his code also to others under other&lt;br /&gt;
licenses and we need in any case also someone who could obtain the right of&lt;br /&gt;
holding the code in court in case of gpl breaches. This needs some tought as&lt;br /&gt;
I’m not a lawyer.&lt;/div&gt;</summary>
		<author><name>Talad</name></author>
	</entry>
</feed>