<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LegacyWorlds Beta 6</title>
	<atom:link href="http://blog.legacyworlds.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.legacyworlds.com</link>
	<description>Updates on the new version's design and progress</description>
	<lastBuildDate>Thu, 29 Jul 2010 21:22:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Milestone 2 &#8211; Battle system</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-29/milestone-2-battle-system/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-29/milestone-2-battle-system/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 21:20:11 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[battles]]></category>
		<category><![CDATA[countermeasures]]></category>
		<category><![CDATA[fleets]]></category>
		<category><![CDATA[ground armies]]></category>
		<category><![CDATA[ground combat]]></category>
		<category><![CDATA[milestone 2]]></category>
		<category><![CDATA[ships]]></category>
		<category><![CDATA[space combat]]></category>
		<category><![CDATA[strategies]]></category>
		<category><![CDATA[tactics]]></category>
		<category><![CDATA[weapons]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=191</guid>
		<description><![CDATA[While I had considered posting about fleet strategies and tactics, I thought it would be more appropriate to start from the beginning – the battle system itself. There are two major computations performed by the battle system. First, space combat is computed. Once this part is over, and provided there are still attacking ships in [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->While I had considered posting about fleet strategies and tactics, I thought it would be more appropriate to start from the beginning – the battle system itself.</p>
<p>There are two major computations performed by the battle system. First, space combat is computed. Once this part is over, and provided there are still attacking ships in orbit, computations regarding ground combat are performed. Once these two main chunks have been computed, experience points are attributed.</p>
<p>This posts attempts to explain what the various steps of each computation are and how they work, generally speaking.</p>
<p><span id="more-191"></span></p>
<div id="attachment_192" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/b6m2-battlesystem.png" rel="lightbox[191]" title="Milestone 2's battle system"><img class="size-medium wp-image-192" title="Milestone 2's battle system" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/b6m2-battlesystem-300x272.png" alt="" width="300" height="272" /></a><p class="wp-caption-text">This flowchart shows the essential steps of the battle computations. Exit conditions and various internal steps have been omitted for clarity.</p></div>
<p><strong>Space combat</strong></p>
<p>The first step of space combat is fleet updates. When attacking fleets first start a battle or when fleets join an ongoing battle, they suffer “time dilation” which causes them to be less efficient for some time. This time dilation effect must be decreased over time.</p>
<p>Once fleets&#8217; time dilation strengths have been updated, ships need to undergo various systematic updates: ships that can repair themselves will regain hit points, countermeasures will recover from previous damage absorption, and weapons will charge or cool down. If no weapons are ready to fire, then the space combat computation is over.</p>
<p>If there are weapons ready to fire, the first step is target selection. If a weapon already has a target, there&#8217;s a chance it might still select another target – this depends on a fleet&#8217;s strategy (for planet-based weapon platforms, there is a fixed, very small probability of target change). If such a change needs to occur, or if the weapon had no target for some other reason, it will seek a target based on the fleet&#8217;s (or the planet&#8217;s) tactics – basically, it can select targets by size, weaponry or defences, with different priorities. An attacking fleet&#8217;s strategy will determine whether the weapon may target the planet&#8217;s infrastructure.</p>
<p>Once weapons have selected their targets, they may fire. A computation is performed to determine whether the weapon actually hits, whether the shot may be intercepted and which amount of damage it would cause on a “naked” ship from various variables such as the ship&#8217;s experience, current hit points, manoeuvrability&#8230; When a weapon fires, there&#8217;s also a small chance of a critical hit, which cannot be intercepted and deals twice as much damage.</p>
<p>Depending on strategy settings, some ships may try to intercept shots aimed at other fleets or at the planet. Such an interception depends on how successful the aim was, and on various other factors such as how many hits the intercepting fleet might sustain. A successful intercept will cause the ship that intercepted the shot to take the damage – which is particularly useful to defend planets. No ship can intercept two shots in a single battle update, however.</p>
<p>Once the destination of all shots have been computed, the corresponding damage is inflicted to ships and buildings. Ships may have countermeasures which can sometimes absorb part or totality of the damage. Of course, should a ship or building reach 0 hit points, it is destroyed. In addition, any ships or buildings that provide ground armies will have their army strength reduced accordingly.</p>
<p><strong>Ground combat</strong></p>
<p>Once space combat has been resolved, and provided there are any attacking ships left, the computation of ground combat begins.</p>
<p>First, the ground defence advantage is computed. It is determined by the amount and type of ships supporting ground troupes, by the amount and type of military buildings, and by the population&#8217;s happiness.</p>
<p>The support that fleets provide for ground armies may vary depending on a fleet&#8217;s current strategy. Fleet strategy also determines whether ships that carry armies should drop the troupes to the planet&#8217;s surface or attempt to extract them.</p>
<p>Once the system knows which armies are on the planet, providing there are both attacking and defending armies, ground combat is computed. The damage dealt by either side is mostly determined by the advantage value, although their respective sizes has an influence. Finally, damage is applied to armies (and to the corresponding ships or buildings).</p>
<p><strong>Assigning experience points</strong></p>
<p>After all actual fighting has been computed, experience points are given to ships (buildings will have no XP in milestone 2, but that might change later). The amount of experience points granted to a ship is determined by the damage it inflicted to other ships, by the shots it intercepted, and by the damage the ground armies it carries inflicted.</p>
<p><strong>Next time&#8230;</strong></p>
<p>… I will explain the mechanics of space combat more precisely, and how it is affected by fleet tactics and strategies.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-29/milestone-2-battle-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Milestone 2 &#8211; Weapons and defences</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-27/milestone-2-weapons-and-defences/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-27/milestone-2-weapons-and-defences/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 17:21:17 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[battles]]></category>
		<category><![CDATA[countermeasures]]></category>
		<category><![CDATA[defences]]></category>
		<category><![CDATA[fleets]]></category>
		<category><![CDATA[milestone 2]]></category>
		<category><![CDATA[ships]]></category>
		<category><![CDATA[weapons]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=185</guid>
		<description><![CDATA[I am currently working on designing the M2 database. While quite a lot of the basic structure stays, there are many changes, especially as far as fleets and battles are concerned. In order to make sure that the fleet-related information is complete, the most crucial component is the battle system. It affects a few things [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently working on designing the M2 database. While quite a lot of the basic structure stays, there are many changes, especially as far as fleets and battles are concerned.</p>
<p>In order to make sure that the fleet-related information is complete, the most crucial component is the battle system. It affects a few things on planets, and has far-reaching consequences on the whole ship design and fleet management system.</p>
<p>The most basic types of information handled by the battle system are the definitions of weapons and their countermeasures. The basic principle &#8211; three types of weapons vs. three types of countermeasures &#8211; has been described many times. This time I needed to come up with the details.</p>
<p><span id="more-185"></span></p>
<p><strong>Weapons</strong></p>
<p>In addition to their types, weapons will have four characteristics.</p>
<ul>
<li><em>Base damage</em> is the &#8220;standard&#8221; amount of damage a weapon deals when it hits. Depending on circumstances, the actual damage may be different.</li>
<li><em>Accuracy</em> describes the probability that, in a perfectly neutral environment, the weapon actually hits what it is aimed at.</li>
<li><em>Charge time</em> and <em>Cool-down time</em> are delays that occur before and after the weapon is fired.</li>
</ul>
<p>It is easy to compute the average damage inflicted by a weapon at each tick. This allows weapons of the same level, but of different types, to be relatively different in behaviour without sacrificing game balancing.</p>
<p>For example, one could imagine a beam weapon that fires once every two ticks, with a base damage of 5 and an accuracy of 80%. This weapon would inflict, on average, 2 points of damage every minute. It is easy to create a mass driver with similar results; such a weapon would fire once every 4 minutes, inflicting a base damage of 20 with an accuracy of 40%.</p>
<p>In battles, each weapon fires independently. Weapons on the same ship may have different targets &#8211; while this makes no real sense for fighters, it prevents really big ships from concentrating their fire on a potentially much weaker target.</p>
<p><strong>Countermeasures</strong></p>
<p>Just like weapons, countermeasures have a few more characteristics in addition to their type.</p>
<ul>
<li><em>Maximal absorption</em><span style="text-decoration: underline;"> </span>is the maximal amount of damage that can be absorbed by a countermeasure before it becomes inefficient.</li>
<li><em>Efficiency</em> describes the probability that a countermeasure intercepts damage.</li>
<li><em>Absorption recovery</em> is the amount of absorption points recovered at each tick after damage absorption.</li>
</ul>
<p>Balancing for countermeasures is a little more tricky than it is for weapons. I chose to use a (totally artificial) value corresponding to the efficiency multiplied by the amount of minutes a countermeasure would be efficient for if it was absorbing half its maximal capacity at each minute:</p>
<p><em>Efficiency * Maximal absorption / ( Maximal absorption * 0.5 &#8211; Absorption recovery )</em></p>
<p>Obviously, this means that the recovery should always be lower than half the maximal absorption&#8230;</p>
<p>In battles, all countermeasures of the same type act as one single countermeasure on a ship, with an weighted average used as the efficiency and sums for both the maximal absorption and the recovery.</p>
<p><strong>Balancing weapons and countermeasures</strong></p>
<p>No countermeasure can prevent damage indefinitely unless its recovery rate is higher than the damage being inflicted. While this might happen when pitting e.g. a very big ship against a single fighter, it makes it relatively easy to balance weapons and countermeasures of the same level &#8211; a weapon&#8217;s average damage should be slightly higher than its respective countermeasure&#8217;s recovery rate.</p>
<p><strong>Next time&#8230;</strong></p>
<p>I am still working on the battle system at the moment. My next post will be about fleet tactics and strategies, as this has been (is?) a major headache.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-27/milestone-2-weapons-and-defences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 6 Milestone 1 &#8211; Tips</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-19/beta-6-milestone-1-tips/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-19/beta-6-milestone-1-tips/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 18:57:28 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Milestones]]></category>
		<category><![CDATA[milestone 1]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=179</guid>
		<description><![CDATA[These tips were sent through game-wise administrative messages during the first week of the M1 game. I&#8217;m reposting them here for those who missed them. Beware the build queues While the build queues have a seemingly infinite capacity that is not limited by the amount of money you have in reserve, they will grind to [...]]]></description>
			<content:encoded><![CDATA[<p>These tips were sent through game-wise administrative messages during the first week of the M1 game. I&#8217;m reposting them here for those who missed them.</p>
<p><span id="more-179"></span></p>
<p><strong>Beware the build queues</strong></p>
<p>While the build queues have a seemingly infinite capacity that is not limited by the amount of money you have in reserve, they will grind to a halt if you run out of money!<br />
In addition, civilian build queues take priority over military build queues, so if you&#8217;re down to 0 bgc, your ships will never be ready in time.</p>
<p><strong>No Hyperspace</strong></p>
<p>Because M1 is mostly a test of the new game engine, some features were removed completely. This includes Hyperspace.<br />
Don&#8217;t wait for cruisers! Your fighters will be able to get to the next system without help.</p>
<p><strong>Technologies</strong></p>
<p>Remember: technologies in B6M1 have no direct effects. Instead, they allow you to build new things.<br />
For example, do not expect a population growth increase from implementing Corpse Reanimation; you will have to build Reanimation Centres on your planets.</p>
<p><strong>Happiness</strong></p>
<p>Whenever something affects happiness, its value does not change immediately.<br />
The planet page&#8217;s General tab will indicate that the happiness is changing, and give an indication about how much it is changing:</p>
<ul>
<li> &#8220;+&#8221; and &#8220;-&#8221; after the happiness value indicate that it is increasing or decreasing by less than 10%,</li>
<li> &#8220;++&#8221; and &#8220;&#8211;&#8221; indicate that it is increasing or decreasing by more than 10%.</li>
</ul>
<p><strong>Employment</strong></p>
<p>One of the three factors which influence happiness is employment.<br />
Buildings provide jobs, which your population then man. Keep the jobs / population ratio close to 1 for higher happiness. You may go up to 2, but past that, happiness will degrade really rapidly.</p>
<p><strong>Empire size</strong></p>
<p>The size of your empire has a strong influence over your planets&#8217; happiness.<br />
Happiness will increase until your empire reaches 10 planets. Beyond that, it will start decreasing, reaching 50% at 20 planets and degrading much faster beyond that.</p>
<p><strong>Population growth</strong></p>
<p>As usual, happiness is the main factor controlling population growth. Every 24h in real life, your population increases by ( growth factor * happiness / 100 ).<br />
The growth factor is initially set to 50. However, each Reanimation Centre building constructed on a planet increases the growth factor by 10.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-19/beta-6-milestone-1-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Towards Milestones 2 and 3</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-13/towards-milestones-2-and-3/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-13/towards-milestones-2-and-3/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 12:00:58 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Milestones]]></category>
		<category><![CDATA[battles]]></category>
		<category><![CDATA[fleets]]></category>
		<category><![CDATA[milestone 2]]></category>
		<category><![CDATA[milestone 3]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[ship design]]></category>
		<category><![CDATA[technologies]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=176</guid>
		<description><![CDATA[The initial milestones post described milestone 2 as being oriented towards planet management and milestone 3 as introducing the new ships (in addition to the research system). Because the delay between milestones will be much higher than initially announced, a few changes need to be made. Milestone 1 is definitely not a good game, in [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } -->The initial <a href="../index.php/2010-02-20/milestones-to-beta-6/">milestones post</a> described milestone 2 as being oriented towards planet management and milestone 3 as introducing the new ships (in addition to the research system). Because the delay between milestones will be much higher than initially announced, a few changes need to be made.</p>
<p>Milestone 1 is definitely not a <em>good</em> game, in that there are no incentives for anyone to actually fight (which was also true of Beta 5, with the exception of corruption which never really worked as anticipated). If the next step had been planet management, as was initially announced, it would have made it even worse, as the relatively heavy Beta 6 rules on this point would have added complexity, but no incentive, and no reason to spend money on anything other than just “breeding planets”.</p>
<p><span id="more-176"></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>Milestone 2, reloaded</h2>
<p>The (new) second milestone must therefore concentrate on bringing these two elements to the game.</p>
<p>First of all, the new ship design and fleet management system will be added. Ships will be capable of carrying three different types of weaponry (beam weapons, mass drivers and missiles), as well as their countermeasures (shields, armours and point defences, respectively). But since a weapon in space isn&#8217;t really much of a viable ship, other parts will be provided – hulls of various sizes and engines. Finally, a “special module”, the drop pod, will allow ground troops to be deployed. A few default designs will be provided, but you will have the option to customise the designs or to create new ones.</p>
<p>Why is this important? Because, by changing the fleet&#8217;s configurations, you might gain an advantage on your enemy. For example, if you are at war with someone who uses mass drivers and shields, you might want to construct or refit ships to use heavy armour and missiles. This constant need to adapt will cost money, which should take care of one of the problems mentioned above.</p>
<p>The second problem remains, however. Why would you go fight your neighbour if there is no actual reason to do so? The solution is relatively easy to find. Why are there wars, in the real world? The major reason for that is resources. As a consequence, the resource system which was planned for Milestone 4 will be added in the next release. However, to keep things simple for now, resources will only be found on planets (which will remain the only available map objects for the time being), and won&#8217;t come in too many varieties. Most advanced technologies will require resources to be used.</p>
<p>While what we just discussed hopefully took care of both major problems, they introduced new ones.</p>
<p>A consequence of the new fleet system is that the hastily designed, totally unbalanced battle system from Milestone 1 <em>has</em> to go. This is not a bad thing, it&#8217;s just worth mentioning.</p>
<p>Many ship parts, many new types of turrets (as they would have to follow the same pattern as ship weapons), mining facilities to extract resources&#8230; The line-based research system of Milestone 1 will not be sufficient to handle this. A graph-based research system, similar in structure to Beta 5&#8242;s, will be implemented. It will not feature any optional technologies at this point, as this would require some form of technology exchange. In addition, the “research budget” system used in Beta 5 will be replaced with a much simpler system allowing per-technology control.</p>
<p>In addition to the above features, which should introduce major changes to the gameplay, a few minor elements might be added, depending on how much time I have: a new user interface as well as replacements for both internal messages and the “normal” messaging system. The French translation may or may not be included.</p>
<p>Because of my relatively heavy schedule, Milestone 2 will be released sometime between April and June of 2011.</p>
<h2>So, what about Milestone 3?</h2>
<p>Milestone 3 has become more distant. It will definitely feature the new planet management system (from M2 in the initial post), the new economy and in-system objects (M4). It will also include forums, although its alliance management will remain simplistic – this will allow Beta 5 to finally rest in peace. It might also include the new universe structure, but that is a big “maybe”. A few alien races might be present as well.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-13/towards-milestones-2-and-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 6 Milestone 1 – Software architecture</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-11/beta-6-milestone-1-%e2%80%93-software-architecture/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-11/beta-6-milestone-1-%e2%80%93-software-architecture/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 12:00:18 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Milestones]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[game server]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[milestone 1]]></category>
		<category><![CDATA[software architecture]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=168</guid>
		<description><![CDATA[I have stated numerous times that one of the primary goals of Milestone 1 was to have a clean basis for future development. This post – which will probably interest only a minority of people – is a brief overview of the design and technical choices that were made. Language A lot of the most [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->I have stated numerous times that one of the primary goals of Milestone 1 was to have a clean basis for future development. This post – which will probably interest only a minority of people – is a brief overview of the design and technical choices that were made.</p>
<p><span id="more-168"></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } 		A:link { so-language: zxx } --></p>
<h2>Language</h2>
<p>A lot of the most critical bugs in Beta 5 were caused by the features of PHP itself. First of all, PHP is not really meant to run something as computation-intensive as an online strategy game. Performance problems definitely ensued – even at this time, it takes at least ~40s to compute a complete hour tick. The other major problem that was encountered is that, well, I am clumsy. I make quite a lot of typos. And PHP is quite forgiving of typos in variable or property names – it will in fact completely ignore them, creating the new variable/property when writing, or returning <em>null</em> when reading&#8230; This kind of bug is hard to track down, especially because its consequences can become visible only in completely unrelated parts of the code, and because, when reading such code, your brain tends to “fix” what you&#8217;re reading for you. You won&#8217;t <em>see</em> that variable named $militart. You will in fact read the perfectly correct $military, because you know that&#8217;s what it should be.</p>
<p>Because of this (and also because <a href="http://news.php.net/php.internals/41374">some choices</a> made by the Zend team with regards to PHP 6 <a href="http://www.ebenoit.info/index.py/en/badmood">annoyed me</a>, but that is another matter entirely), Beta 6 was to be written in another language&#8230; But the question was – which one? There are dozens of candidates out there; in addition, it is often the case that language A is better at doing X than language B, but B is better at doing Y than A.</p>
<p>The criteria I used to guide this choice were performance, clarity, support for UTF-8, easy database integration. C++, C#, Java, Python, PHP 5 and 6 as well as Perl were considered.</p>
<p>Of course, in terms of performance, C++ revealed unbeatable, which is not really surprising. On Linux, the Mono implementation of C# turned out to be a little slower than Java, itself a good 10x slower than C++. Python, both PHP&#8217;s and Perl were&#8230; well, really much slower than either C# or Java (which is not really surprising either, but&#8230; I was still a little disappointed regarding Python). That pretty much sealed their fate. In terms of clarity, support for UTF-8 and database integration, C++ is terrible, which also eliminated it. C# and Java remained. In the end, despite C#&#8217;s cleaner typing, Mono&#8217;s I/O performance (and therefore database integration performance) is not that good, which led me to choose Java.</p>
<h2>General architecture</h2>
<p>Beta 5&#8242;s code has a major flaw, one that shouldn&#8217;t have happened but did anyway. I originally intended to completely separate game code – for example ticks, or the actual action that underlies sending a fleet – from display-related code. However, because Beta 5 was sort of rushed and did not undergo proper design, a lot of the game code ended up being coupled with the display code, which (in addition to the massive amount of delicious JavaScript spaghetti) made it totally unmaintainable. That mistake had to be avoided, especially if other interfaces (IRC bot, <span style="text-decoration: line-through;">smart</span>phones, dedicated client) are to be supported at some point.</p>
<p>The decision that was made for Beta 6 was to write a separate <em>game server</em>, which would run independently of any type of user interface. This server handles commands, background tasks such as game updates (“the things formerly known as ticks”) and returns raw data whenever appropriate. “Clients” which provide user interfaces then connect to the server, allowing players or administrators to interact with the game. At the moment, only two such clients exist – the main web site, and the administration site.</p>
<div id="attachment_170" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/lw-deployment.png" rel="lightbox[168]" title="Software deployment"><img class="size-medium wp-image-170" title="Software deployment" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/lw-deployment-300x88.png" alt="" width="300" height="88" /></a><p class="wp-caption-text">Legacy Worlds software deployment</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } -->As this diagram shows, it would be relatively easy to add new “clients”, connected to the game server and providing other types of interfaces.</p>
<h2>The game server</h2>
<p>Because of the “milestone” development process, the server has to follow one major constraint – it must be easy to replace parts of it. This imposes a component-based design where components are as independent as possible.</p>
<p>A client communicates with the server through a set of classes which represent commands, responses and actual data using a component called the SessionClient. This component has a server counterpart, the SessionManager, which supports different types of sessions with different authentication requirements, states and valid commands through specific components called “session definers”. At the moment (and for the foreseeable future), three such definers exist:</p>
<ul>
<li>the external session definer 	handles commands which can be executed by anyone (for example, 	requesting the list of supported languages),</li>
<li>the game session definer manages 	player sessions, their various states (disabled, banned, active, 	vacation mode&#8230;) and commands,</li>
<li>finally, the administrative 	session definer handles commands from the administration interface.</li>
</ul>
<p>While the session definers (and especially the game session definer) will definitely change in future milestones, the essential component that is the session manager itself is stable by now.</p>
<p>Session definers don&#8217;t do much by themselves. With the exception of basic constraints checking, most of the logic is actually implemented in lower layers. The validation and transformation components handle proper validation of the commands&#8217; data, forwarding all of this to the data access layer, and then transforming the results into something which can then be sent back to the session layer.</p>
<p>This lower layer (and, to some extent, the administration session definer) relies extensively on a set of system components. These components are in charge of all operations required for the good operation of the server, but which are not really related to the game logic. They include:</p>
<ul>
<li>the ConstantsManager, which caches 	game “constants” in memory for quick access and allows them to 	be updated by administrators, notifying components who use them as 	necessary,</li>
<li>the Ticker, which executes actions 	on a regular basis at various frequencies, relying on the 	ConstantsManager for its master frequency,</li>
<li>the Logging components allows 	asynchronous logging from the rest of the code, as well as log 	clean-up and querying,</li>
<li>the Internationalisation component 	caches translations from the database, and handles administrative 	commands updating these translations,</li>
<li>the Mailer which fetches 	internationalised e-mail templates, transforms them, and sends them.</li>
</ul>
<p>Both the system components and the data access layer can access the database. Access is (with one very small exception) never direct – all read-only operations read from views, while the update operations are implemented through stored procedures.</p>
<p>The diagram below shows the various components or groups of components of the server as well as an arbitrary, unnamed client.</p>
<div id="attachment_169" class="wp-caption aligncenter" style="width: 221px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/lw-components.png" rel="lightbox[168]" title="Legacy Worlds game server"><img class="size-medium wp-image-169" title="Legacy Worlds game server" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/lw-components-211x300.png" alt="" width="211" height="300" /></a><p class="wp-caption-text">The various components of the Legacy Worlds game server</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } -->The components in green are stable – they will not change, with the exception of bug fixes. Yellow components contain mostly stable code, but are still missing some parts which will be added in later milestones (for example, the UserAccount component does not support <a href="../index.php/2010-03-11/contribution-credits-in-beta-6/">using contribution credits</a>). Finally, components in red are likely to be completely replaced or heavily modified.</p>
<p>What the diagram does not show is that the database is structured using namespaces, which follow the organisation of the server components quite closely.</p>
<h2>Next time, on the B6 blog&#8230;</h2>
<p>The next (and last) post of this series will tell you all about Milestone 2.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-11/beta-6-milestone-1-%e2%80%93-software-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 6 Milestone 1 – Administration Interface</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-09/beta-6-milestone-1-%e2%80%93-administration-interface/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-09/beta-6-milestone-1-%e2%80%93-administration-interface/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:00:30 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Milestones]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[administration interface]]></category>
		<category><![CDATA[banhammer]]></category>
		<category><![CDATA[maintenance mode]]></category>
		<category><![CDATA[milestone 1]]></category>
		<category><![CDATA[name validation]]></category>
		<category><![CDATA[names]]></category>
		<category><![CDATA[server logs]]></category>
		<category><![CDATA[ticker]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=148</guid>
		<description><![CDATA[With Beta 6 being a complete rewrite of the game, it presented an opportunity to include many features that were missing in earlier versions of the game such as administration tools. Milestone 1 has an incredibly detailed administration interface with a large array of options to control almost every aspect of the game. Depending on [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->With Beta 6 being a complete rewrite of the game, it presented an opportunity to include many features that were missing in earlier versions of the game such as administration tools. Milestone 1 has an incredibly detailed administration interface with a large array of options to control almost every aspect of the game. Depending on their privilege level, administrators have many powerful tools to ensure that the game runs properly, bugs are taken care of and rule-breaking is not left unpunished.</p>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic1.jpg" rel="lightbox[148]" title="Administration overview"><img class="size-medium wp-image-149" title="Administration overview" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic1-300x176.jpg" alt="" width="300" height="176" /></a><p class="wp-caption-text">The administrative overview page for a superuser.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size: small;"><strong><span id="more-148"></span></strong></span></p>
<h2>Admin Privileges</h2>
<p>One of the most important and powerful parts of the new admin system is the privilege structure that it implements. An admin can have any combination of the privilege tags allowing for a very customisable admin team with staff only having access to tools that they require. The privileges are defined by the following tags that can be assigned to any admin account:</p>
<ul>
<li><em>SPAM</em> – The ability to send 	game-wide messages</li>
<li><em>I18N</em> – Manage in game 	languages/translations</li>
<li><em>CNST</em> – Modify game constants</li>
<li><em>USER</em> – Manage user accounts</li>
<li><em>BANH</em> – Wield the banhammer</li>
<li><em>TICK</em> – Pause/start server-side 	tasks</li>
<li><em>NAME</em> – Validation of Empire, 	Planet and Alliance names</li>
<li><em>PREF</em> – Set default account 	preferences</li>
<li><em>LOGS</em> – Browse server logs</li>
<li><em>BUGM</em> – Receive automated game 	error emails</li>
<li><em>BUGT</em> – Manage bug reports</li>
<li><em>MNTM</em> – Enable/Disable 	maintenance mode</li>
<li><em>SUPER</em> – Superuser. All 	privileges as well as admin management</li>
</ul>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Messages &amp; Spam</h2>
<p>Admins have a message system almost identical to the in-game messages that all players can use. This system is of course connected to the game allowing players and admins to correspond, with the difference being that the message will appear in red text in the player’s inbox.<br />
The ability to send &#8220;spam&#8221; (messages that reach all players) is still present, although it is now controlled by the <em>SPAM</em> privilege.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Internationalisation</h2>
<p>M1 has a very customisable internationalisation system, letting admins with sufficient privileges to tweak almost every single piece of text a player will see in their Legacy Worlds experience. From the email confirmation during password recovery to the request to join an alliance to the name of battlecruisers, all the text in M1 can be modified from the admin interface.</p>
<div id="attachment_150" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic2.jpg" rel="lightbox[148]" title="Internationalisation menu"><img class="size-medium wp-image-150" title="Internationalisation menu" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic2-300x43.jpg" alt="" width="300" height="43" /></a><p class="wp-caption-text">The administration site&#39;s internationalisation menu.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Game Constants</h2>
<p>In previous versions of Legacy Worlds, to change aspects of the game such as population growth or the delay before a planet could be renamed would require difficult and possibly dangerous changes directly in the game’s code or in the database. M1 however, introduces constants, a new feature making this job much easier and safer. Throughout the game’s internals, whether it be equations or elsewhere, there are ‘constant’ values affecting all of the game’s calculations and actions. The new admin interface has an easy control panel, with clear descriptions and constraints, where these values can be changed and the game can be significantly customised without even being reset.</p>
<div id="attachment_151" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic3.jpg" rel="lightbox[148]" title="Example constant"><img class="size-medium wp-image-151" title="Example constant" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic3-300x57.jpg" alt="" width="300" height="57" /></a><p class="wp-caption-text">An example of a &quot;constant&quot; that can be modified from the administration interface.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>User List &amp; Accounts</h2>
<p>The user list is fairly self-explanatory in that it provides admins with a list of all user accounts, displaying the email address, current empire name, status and game language. Player accounts can have one of the eight following status’s; unconfirmed, active, on vacation, entering vacation, leaving, disabled, banned and being reactivated. By selecting an individual account from this list, an admin can access more detailed information about this account including the number of official warnings the user has received, a list of all empire names the account has used, vacation and game credits and a log of all session information for that account.</p>
<h2>Banhammer</h2>
<p>The banhammer is a very important and powerful tool in the administrative arsenal, and as such has several built-in precautions. The banhammer allows an admin with appropriate privileges to request a ban on any user account. Because this is such a strong and potentially permanent action, all bans require approval of at least one other administrator, meaning that any account banned from the game has been done so with the endorsement of at least two administrators.  The banhammer keeps logs of all bans and requests (pending, expired and rejected) along with the admin who made the request, the reason(s) for the ban and the date the request was made as well as the date, reason and admin who rejected the request if applicable.</p>
<div id="attachment_152" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic4.jpg" rel="lightbox[148]" title="The Banhammer!"><img class="size-medium wp-image-152" title="The Banhammer!" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic4-300x144.jpg" alt="" width="300" height="144" /></a><p class="wp-caption-text">The Banhammer&#39;s ban request form.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>The Ticker</h2>
<p>The ticker is the server process responsible for all time-based actions and updates in the game.  Every action in the game (e.g. ships being built, research progressing, population growth, etc…) as well as some out of game activities (e.g. recap emails, ‘instant’ notifications) are controlled by the ticker. In M1 the ticker can be controlled from the admin interface; admins can start and stop any of 14 individual ticker tasks, as well as pause the main ticker thread. If any of the tasks are stopped, they can be scheduled to automatically restart at any given time.</p>
<h2>Name Validation</h2>
<p>Because Legacy Worlds is a family friendly game, there are fairly tight restrictions on the naming of empires, alliances and planets. To enforce this, every name in the game must be checked and validated by an admin. Of course, names changes are shown in the game before they are validated, but when they are checked if they aren’t acceptable the player who first used the illegal name may get a warning or more severe punishment.</p>
<div id="attachment_154" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic5.jpg" rel="lightbox[148]" title="Names validation summary"><img class="size-medium wp-image-154" title="Names validation summary" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic5-300x97.jpg" alt="" width="300" height="97" /></a><p class="wp-caption-text">The summary for the name validation interface.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->During name validation, there are three options that are available for an admin: validate, reject and send warning and reject, send warning and ban name. The meaning of these are fairly obvious, either allowing a name to be used, or disallowing it, with the last option also telling the game that this name is unacceptable thus automatically preventing it from being used in the future.<br />
When a name is rejected, depending on the type of name, certain actions may take place. If an Alliance name is rejected, the alliance is disbanded, and the player who named that alliance is sent a warning. If a planet name is rejected, the name is set to a random string of characters and the player who named the planet is sent a warning. If an empire name is rejected, the empire is renamed to “Rude Empire XXXXXX” (where XXXXXX is a random string of characters) and the player is sent a warning.</p>
<div id="attachment_156" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic6.jpg" rel="lightbox[148]" title="Map name validation"><img class="size-medium wp-image-156" title="Map name validation" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic6-300x122.jpg" alt="" width="300" height="122" /></a><p class="wp-caption-text">The planet name validation interface.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Logs</h2>
<p>M1 incorporates a very detailed set of logs that keep track of every aspect of the game. Each time the server sends a mail, a player logs in/out, you build a fighter, you view your planet list or do anything at all inside the game, it is logged. Even admins signing in and viewing the logs is logged. The logs provide a thorough history of what every player has done and how the game has reacted to that allowing for a useful resource when bug-fixing. Because of the logs&#8217; tendency to become massive, search tools are provided.</p>
<div id="attachment_157" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic7.jpg" rel="lightbox[148]" title="Server logs"><img class="size-medium wp-image-157" title="Server logs" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic7-300x73.jpg" alt="" width="300" height="73" /></a><p class="wp-caption-text">An arbitrary slice of server logs.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Bug Tracker</h2>
<p>The built-in bug tracker in M1 adds much needed functionality in allowing players to report any bugs and problems they find in the game. The admin side of the bug tracker provides a good interface to control how the bug reports are organised and seen by the public. When a bug is initially filed by a player (or an admin) it awaits admin validation and its visibility is set to private. In the bug tracker control panel, the bug’s status can be controlled and set to “being handled”, “fixed”, “won’t fix” or “not a bug” and its visibility can be either kept hidden or it can be made public, any bug can also be merged with another bug. As well as this admins can comment on the bug to provide detail although these individual comments can be set to either public or private.</p>
<div id="attachment_158" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic8.jpg" rel="lightbox[148]" title="Bug tracker administration"><img class="size-medium wp-image-158" title="Bug tracker administration" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic8-300x154.jpg" alt="" width="300" height="154" /></a><p class="wp-caption-text">The main controls of a bug report&#39;s administration form.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<h2>Maintenance Mode</h2>
<p>Maintenance mode allows administrators to shut off access to the game and pauses all ticks in the case of a server error, upgrade or particularly bad bug. It displays a splash screen informing the user why maintenance mode is active, when it began, when it should be finished and the current server time. When Milestone 1 was first launched there was an error that caused Hotmail to block all emails coming from the game, this is an example of when maintenance mode would be activated.</p>
<div id="attachment_159" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic9.jpg" rel="lightbox[148]" title="Maintenance mode"><img class="size-medium wp-image-159" title="Maintenance mode" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pic9-300x181.jpg" alt="" width="300" height="181" /></a><p class="wp-caption-text">The game&#39;s site with maintenance mode active.</p></div>
<h2>Next time, on the B6 blog&#8230;</h2>
<p>The next post will describe the game&#8217;s software architecture. It will be published on July, the 11th.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-09/beta-6-milestone-1-%e2%80%93-administration-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 6 Milestone 1 – Game and interface</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-07/beta-6-milestone-1-%e2%80%93-game-and-interface/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-07/beta-6-milestone-1-%e2%80%93-game-and-interface/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 12:00:28 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Milestones]]></category>
		<category><![CDATA[alliances]]></category>
		<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[communications]]></category>
		<category><![CDATA[empire management]]></category>
		<category><![CDATA[fleets]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[milestone 1]]></category>
		<category><![CDATA[planets]]></category>
		<category><![CDATA[rules]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=122</guid>
		<description><![CDATA[The game itself really wasn&#8217;t the point of this release; neither was the user interface. However, since they are of interest to just about everyone who wants to play it, giving a little more information about it seemed appropriate. This is especially important for Beta 5 players, as a few things might surprise them – [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The game itself really wasn&#8217;t the point of this release; neither was the user interface. However, since they are of interest to just about everyone who wants to play it, giving a little more information about it seemed appropriate. This is especially important for Beta 5 players, as a few things might surprise them – to say the least. Everything that really differs will be noted using a <em>cursive font.</em></p>
<p><em><span id="more-122"></span></em></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The most important thing to know is that <em>actions have no immediate consequences</em>. Instead, everything updates once per minute. The game time, present on all pages, corresponds to the number of updates since the game was started, one “hour” of game time being in fact one update. By default, all durations are expressed using game time, although that can be modified through the preferences.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>Empire overview and research</h2>
<p>The first page a players sees once he logs on to the game is the empire page, which is split into two pages – an overview of the empire&#8217;s current situation, and the research status and management page.</p>
<p>The overview gives, as usual, some statistics about the state of an empire – its planets and fleets as well as its economic situation. The empire&#8217;s economic situation consists in three somewhat unrelated part: the empire&#8217;s cash reserves, cash flow (income from planets, upkeep from both planets and fleets, over a 24h interval) and current investments (how much money is being poured into constructing new buildings or ships). In addition, information regarding new messages and ongoing battles is available, linking to the appropriate pages.</p>
<div id="attachment_129" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/overview.jpeg" rel="lightbox[122]" title="Overview page"><img class="size-medium wp-image-129" title="Overview page" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/overview-300x182.jpg" alt="" width="300" height="182" /></a><p class="wp-caption-text">The empire&#39;s overview page</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Research in Milestone 1 is extremely simple, re-using the same principles as Beta 4 and earlier versions. There are two “lines” of research – civilian and military. Each line contains three technologies. As time passes, the empire&#8217;s planets contribute to research depending on their population, until a technology is discovered. At this point, the technology must be implemented in order to gain access to the new ships or buildings. <em>Technologies do not provide automatic, empire-wide effects – buildings must be constructed.</em></p>
<p><em> </em></p>
<div id="attachment_135" class="wp-caption aligncenter" style="width: 310px"><em><em><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/research.jpeg" rel="lightbox[122]" title="Research page"><img class="size-medium wp-image-135" title="Research page" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/research-300x181.jpg" alt="" width="300" height="181" /></a></em></em><p class="wp-caption-text">Research view and management</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>Planet management</h2>
<p>An empire&#8217;s planets can be managed using two pages – the empire&#8217;s planet list, and the individual page for each planet.</p>
<p>The planet list displays information about all planets in an empire. Since there is a lot of information to display, and because the user interface is not really roomy, tabs allow different types of information to be displayed:</p>
<ul>
<li>the “General” tab lists 	coordinates and population information (population size, happiness 	level);</li>
<li>the “Economy” tab lists 	income, upkeep and profit (or loss);</li>
<li>the “Production” tab 	corresponds to the activity of buildings on the planet: military 	production, which allows ships to be constructed, industrial 	production, which increases income, and growth increase, which 	augments the population&#8217;s growth rate;</li>
<li>the “Construction” and 	“Shipyards” tabs indicate what is being built on the planet, in 	terms of buildings and ships, respectively;</li>
</ul>
<div id="attachment_133" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pl-shipyards.jpeg" rel="lightbox[122]" title="Planet list: shipyards"><img class="size-medium wp-image-133" title="Planet list: shipyards" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pl-shipyards-300x181.jpg" alt="" width="300" height="181" /></a><p class="wp-caption-text">Shipyards information from the planet list.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<ul>
<li>finally, the “Military” 	tab displays the military situation on all planets.</li>
</ul>
<div id="attachment_132" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pl-military.jpeg" rel="lightbox[122]" title="Planet list: military situation"><img class="size-medium wp-image-132" title="Planet list: military situation" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/pl-military-300x181.jpg" alt="" width="300" height="181" /></a><p class="wp-caption-text">The planet list&#39;s military situation view, including a planet under attack.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The various tabs in the planet list all link to the relevant part of the individual planet management page, with the exception of the military tab (which leads to the battle view if there is an ongoing battle).</p>
<p>The individual planet page consists in three tabs:</p>
<ul>
<li>the “General” tab lists 	various statistics about the planet such as happiness (<em>which 	changes over time – an indication of the current change is 	displayed if appropriate)</em>, and 	allows general commands such as renaming or abandoning the planet;</li>
</ul>
<div id="attachment_131" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-general.jpeg" rel="lightbox[122]" title="Planet: general information"><img class="size-medium wp-image-131" title="Planet: general information" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-general-300x180.jpg" alt="" width="300" height="180" /></a><p class="wp-caption-text">A planet&#39;s general information tab, showing statistics, controls, and military situation.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<ul>
<li>the “Buildings” tab 	lists the buildings present on the planet, including details such as 	the amount of jobs provided and the type of production, and allows 	the construction or destruction of buildings (<em>which takes 	time and therefore uses a queue)</em>;</li>
</ul>
<div id="attachment_130" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-buildings.jpeg" rel="lightbox[122]" title="Planet: buildings"><img class="size-medium wp-image-130" title="Planet: buildings" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-buildings-300x180.jpg" alt="" width="300" height="180" /></a><p class="wp-caption-text">A planet&#39;s buildings and construction queue.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<ul>
<li>the “Shipyards” tab 	controls the production of ships.</li>
</ul>
<div id="attachment_134" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-shipyards.jpeg" rel="lightbox[122]" title="Planet: shipyards"><img class="size-medium wp-image-134" title="Planet: shipyards" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/p-shipyards-300x181.jpg" alt="" width="300" height="181" /></a><p class="wp-caption-text">The planet page&#39;s shipyards tab controls the production of ships.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>Fleets and battles</h2>
<p>Once ships are produced by a planet, <em>they enter an initial deployment phase during which they are unavailable</em>. When this deployment finishes, the ship or ships automatically join the biggest fleet present in orbit. As usual, fleets can be moved around, set to attack other planets, merged, split or disbanded. <em>All ships are capable of interstellar travel – there is no Hyperspace in this version</em>. A fleet can be clicked to obtain more details on its current location, status and composition. In the case of moving fleets, a little more information is provided.</p>
<div id="attachment_126" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/fleets.jpeg" rel="lightbox[122]" title="Fleets page"><img class="size-medium wp-image-126" title="Fleets page" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/fleets-300x181.jpg" alt="" width="300" height="181" /></a><p class="wp-caption-text">The fleets page, showing details about a moving fleet.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->A fleet&#8217;s speed is determined by its “Orbit-to-Orbit Flight Time” (OOFT), which determines how much time it takes for the fleet to move from one planet to the next. It also determines the speed of interstellar travel.</p>
<p>When attacking fleets are present at a location, a battle begins. Because of the minute-by-minute nature of B6M1, <em>there are no actual battle reports</em>; instead, a battle viewer listing the battle&#8217;s current status and all events that affected the battle is provided. The history of past battles remains available at all time.</p>
<div id="attachment_125" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/battle.jpeg" rel="lightbox[122]" title="Battle viewer"><img class="size-medium wp-image-125" title="Battle viewer" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/battle-300x180.jpg" alt="" width="300" height="180" /></a><p class="wp-caption-text">The battle viewer includes all battle-related information: fleet powers, ships and events.</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>The rest of the universe – friends and enemies</h2>
<p>A very simple alliance system is provided. It works much like Beta 4&#8242;s alliances worked – they are basically a set of players, managed by a single leader. All members can see the list of members and planets. In addition, the leader can disband the alliance, kick members, accept or reject pending requests, and transfer leadership to another member. <em>If the current leader leaves the alliance for one reason or another, the alliance is automatically disbanded</em>.</p>
<div id="attachment_124" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/alliance.jpeg" rel="lightbox[122]" title="Alliance page"><img class="size-medium wp-image-124" title="Alliance page" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/alliance-300x182.jpg" alt="" width="300" height="182" /></a><p class="wp-caption-text">The alliance page, showing the planet list with a planet under attack</p></div>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The usual enemy list is also included, with the possibility to add either players or whole alliances.</p>
<p>The universe in B6M1 is pretty simple; the rectangular map only contains systems, which all contains 5 planets. The map is basically a grid, on which an empire&#8217;s own planets are displayed in green, allied planets in blue, planets belonging to enemy alliances in red, and planets belonging to other alliances in yellow. It can be displayed either in 3&#215;3 mode, which provides a clear view of a small chunk of the universe, or in 5&#215;5 mode, or in 7&#215;7 mode (at which point names become unreadable, but colour-coded information becomes more useful).</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<div id="attachment_127" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/map.jpeg" rel="lightbox[122]" title="The map"><img class="size-medium wp-image-127" title="The map" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/map-300x180.jpg" alt="" width="300" height="180" /></a><p class="wp-caption-text">Map in 5x5 mode, including all available colour codes.</p></div>
<p>The map viewer&#8217;s defaults may be altered from the account preferences.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } --></p>
<h2>Communications</h2>
<p>A simple messaging system has been included. Folders are gone, so are internal transmissions. There are only two lists of messages – received and sent. Messages are colour-coded: grey for messages between empires, blue for alliance messages and red for messages to or from administrators. Because there are no rankings, it is possible to list all empires, alliances and administrators when composing a message. Because it was quite easy to do, direct IRC access is provided, using PJIRC (Java is therefore required to use this page).</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<div id="attachment_128" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.legacyworlds.com/wp-content/uploads/2010/07/messages.jpeg" rel="lightbox[122]" title="Received messages"><img class="size-medium wp-image-128" title="Received messages" src="http://blog.legacyworlds.com/wp-content/uploads/2010/07/messages-300x182.jpg" alt="" width="300" height="182" /></a><p class="wp-caption-text">A list of received messages (no alliance messages there, unfortunately).</p></div>
<p>This is a new release, a completely new code base, and it will contain bugs. There is no avoiding that. Because there are no forums at this point, and because forums are not the best tool for that anyway, a bug tracker has been included into the game&#8217;s interface.</p>
<h2>Next time, on the B6 blog&#8230;</h2>
<p>A post about the administration interface will be published on July, the 9th.</p>
<p><em> </em></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-07/beta-6-milestone-1-%e2%80%93-game-and-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 6 Milestone 1 is online</title>
		<link>http://blog.legacyworlds.com/index.php/2010-07-05/beta-6-milestone-1-is-online/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-07-05/beta-6-milestone-1-is-online/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 06:31:15 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[milestone 1]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=118</guid>
		<description><![CDATA[After quite a few mishaps, and a lot of real-life related delay, I am happy to announce that the first milestone to Beta 6 is finally ready. As was said in the initial description, this release is not anything like Beta 6 should be in terms of game or interface. It is meant to be [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->After quite a few mishaps, and a lot of real-life related delay, I am happy to announce that the first <a href="http://blog.legacyworlds.com/index.php/2010-02-20/milestones-to-beta-6/">milestone</a> to Beta 6 is finally ready.</p>
<p>As was said in the initial description, this release is not anything like Beta 6 should be in terms of game or interface. It is meant to be a test of the system&#8217;s architecture. As <a href="http://www.mitheren.com/2010/06/legacy-worlds-beta-6-milestone-1/">Tim&#8217;s preview</a> pointed out, a few things have changed – some in the right direction, some … not.</p>
<p>The release can be found at <a title="Beta 6 Milestone 1" href="http://b6m.legacyworlds.com">http://b6m.legacyworlds.com</a> ; it is open for registration as of now. The game itself will start on July, the 15<sup>th</sup>.</p>
<p><span id="more-118"></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->While the most important new feature in Milestone 1 is the minute-by-minute game updates, quite a few improvements made it into the release. For example, M1 offers customisable e-mail reminders for various types of messages, a better planet overview, an integrated bug tracking system&#8230; On the other hand, a great many of Beta 5&#8242;s features have been removed (trusted allies, forums, beacons&#8230;) or simplified (research management, fleets&#8230;) The interface itself is much simpler, relying solely on good old HTML. While the new <a title="Beta 6 Milestone 1 rules" href="http://b6m.legacyworlds.com/lwmain/rules">rules</a> are listed on the game&#8217;s site, a short, general introduction will be posted on this blog on Wednesday.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The game, however, is not what Milestone 1 is about. There is absolutely no code shared between Beta 5 and this new release (with the exception of some parts of the interface, obviously). It is a complete rewrite, in a different language, using a different architecture, which will be described in a later post.</p>
<p>The new version was designed from the start with ease of administration in mind (which was <em>really</em> not the case with Beta 5): it can support administrators with various sets of privileges, and most of the system can be affected through the administration interface. Because this is an important part of the work that was done here, and because most of you are unlikely to ever see this interface, there will be a post here on the subject.</p>
<p>Last but not least, reaching Milestone 1 means that&#8230; well, work will start on Milestone 2. However, because I do not have much time for it, it will be released in quite a while – a consequence of that being that it should include more features than originally indicated. Another, more important consequence is that Milestone 2 will actually be what was announced as Milestone 3, in order to make the game a little more interesting. Of course, expect yet another post on the matter.</p>
<p>In the meantime, enjoy M1!</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-07-05/beta-6-milestone-1-is-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Milestone 1 delayed :(</title>
		<link>http://blog.legacyworlds.com/index.php/2010-05-22/milestone-1-delayed/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-05-22/milestone-1-delayed/#comments</comments>
		<pubDate>Sat, 22 May 2010 17:49:59 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Milestones]]></category>
		<category><![CDATA[delay]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[milestone 1]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=114</guid>
		<description><![CDATA[Hey guys. It would appear that the schedule I gave for milestones was a bit too enthusiastic. As you know, LWB6 is a complete rewrite of the game. In a different language. And therefore, using different libraries, some of them chosen completely at &#8220;random&#8221; (that is, based purely on API cleanliness). Two weeks ago I [...]]]></description>
			<content:encoded><![CDATA[<p>Hey guys.</p>
<p>It would appear that the schedule I gave for milestones  was a bit too enthusiastic.</p>
<p>As you know, LWB6 is a complete  rewrite of the game. In a different language. And therefore, using  different libraries, some of them chosen completely at &#8220;random&#8221; (that  is, based purely on API cleanliness).</p>
<p>Two weeks ago I noticed  that, despite the fact that everything I had actually worked, I was  having major performance problems. This prompted a rewrite of 75% of the  code I already had.</p>
<p>I have rewritten most of the code already,  but it is not really &#8220;clean&#8221; code, needs additional testing, and more  commenting. In addition, some parts which used to work no longer do.</p>
<p>In  addition to the above, I am currently (1) working on a  government-funded contract, (2) trying to turn my job experience into a  diploma and (3) buying a house. While all of these are important (to me, anyway), I&#8217;m afraid they aren&#8217;t compatible with heavy LWB6 development work.</p>
<p>Because I want to make sure that  B6 development starts on a clean basis, Milestone 1 is delayed until  July, the 15th. In addition, other milestone releases will also be  delayed &#8211; probably with a 6-month release interval, but I need to think  about it some more. I will post the new schedule when M1 is released.</p>
<p>Please  accept my most sincere apologies.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-05-22/milestone-1-delayed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Contribution credits in Beta 6</title>
		<link>http://blog.legacyworlds.com/index.php/2010-03-11/contribution-credits-in-beta-6/</link>
		<comments>http://blog.legacyworlds.com/index.php/2010-03-11/contribution-credits-in-beta-6/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 08:37:40 +0000</pubDate>
		<dc:creator>TSeeker</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[contribution credits]]></category>
		<category><![CDATA[credits]]></category>

		<guid isPermaLink="false">http://blog.legacyworlds.com/?p=110</guid>
		<description><![CDATA[I&#8217;ve been asked about contribution credits and how they are going to work in Beta 6 a few times on IRC, therefore it seems like a good idea to write a post about this. It is written in the style of a FAQ, because it&#8217;s easier. Will there be contribution credits in Beta 6? Obviously, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been asked about contribution credits and how they are going to work in Beta 6 a few times on IRC, therefore it seems like a good idea to write a post about this. It is written in the style of a FAQ, because it&#8217;s easier.</p>
<p><strong>Will there be contribution credits in Beta 6?</strong></p>
<p>Obviously, yes, or I would not be posting about them. However, they will not be used simply by viewing the pages as they were in Beta 5.</p>
<p><span id="more-110"></span></p>
<p><strong>So what are Beta 6 contribution credits used for?</strong></p>
<p>Generally speaking, there are two types of uses for contribution credits.</p>
<ul>
<li>They can be used to buy features. Once bought, such features stay linked to your account permanently.</li>
<li>They can also be used to subscribe to some features. The subscription model uses some credits every day, with features being disabled if the account runs out of credit.</li>
</ul>
<p><strong>Can you name a few of these &#8220;features&#8221; you keep yapping about?</strong></p>
<p>I can&#8217;t name all of them because, well, I don&#8217;t know them myself, <em>but</em> I can give you a few examples.</p>
<p>In the first category, you will have extra message storage or extra folders, extra slots for ship designs or build queue extensions.</p>
<p>In the second category, you&#8217;ll find stuff like disabling in-game ads, creating automatic filters on your messages, access to better planet management tools, and fleet automation (e.g. automatic retreat).</p>
<p><strong>How do people get contribution credits in the first place?</strong></p>
<p>&#8230;because obviously you won&#8217;t be rating Beta 6 planet pictures. Well, you&#8217;ll always have the option to pay for your contribution credits, through PayPal, although new options may be investigated. Bug reports will be another possible source of credits, but I will get back to these in a bit. Two new options will be added: voting on game-rating sites, and bringing new people to the game.</p>
<p><strong>What about milestone releases?</strong></p>
<p>Obviously, new features introduced by a milestone release will never be require contribution credits to be used. However, once a milestone release has been properly tested and the next one is introduced, some features may become subjected to the contribution credits system. Contribution credits will be carried over from a release to the next.</p>
<p><strong>You said something about bug reports?</strong></p>
<p>Oh, yeah, I did. Bug reports will be handled through a specific interface, allowing easy tracking and automated attribution of contribution credits, the amount of which will depend on the severity of the bugs.</p>
<p><strong>Will Beta 5 contribution credits be carried over to Beta 6?</strong></p>
<p>Not until Beta 5 is finally shut down, and they will not be transferred directly but rather after a conversion.</p>
<p><strong>Will it be possible to trade credits?</strong></p>
<p>No. The only thing this would cause is the emergence of a parallel economy.</p>
<p><strong>Will people who don&#8217;t want to or can&#8217;t pay still be able to enjoy the game?</strong></p>
<p>Voting on all rating sites as often as possible will allow non-paying players to get enough contribution credits to enable most of the game&#8217;s subscription-based features. They might have to sacrifice one such feature for a time if they want to activate one of the permanent ones, but they shouldn&#8217;t be too annoyed by the whole thing.</p>
<hr />That&#8217;s everything that comes to mind regarding contribution credits at the moment. Don&#8217;t hesitate to comment if you need more details or think I forgot something (which is quite likely).</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.legacyworlds.com/index.php/2010-03-11/contribution-credits-in-beta-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
