<?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"
	>

<channel>
	<title>Potential Blog &#187; Potential RPG</title>
	<atom:link href="http://www.potentialgames.com/blog/category/rpg/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.potentialgames.com/blog</link>
	<description>Notes of a Potential Independent Game Developer</description>
	<pubDate>Fri, 19 Dec 2008 19:08:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Ripple Effect Subsides, Massive SLOC Drop</title>
		<link>http://www.potentialgames.com/blog/2008/12/19/ripple-effect-subsides-massive-sloc-drop/</link>
		<comments>http://www.potentialgames.com/blog/2008/12/19/ripple-effect-subsides-massive-sloc-drop/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 19:08:00 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Developer's Cave]]></category>

		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=318</guid>
		<description><![CDATA[In software development, less is more. Clean, lean code is easier to debug and maintain. Designing the simplest solution is the trick. Whenever I design a software component, I tend to over-engineer it the first time through. This produces a solid, well-designed, hand-crafted unit of code, which is usually terribly complicated for its intended purpose. [...]]]></description>
			<content:encoded><![CDATA[<p>In software development, less is more. Clean, lean code is easier to debug and maintain. Designing the simplest solution is the trick. Whenever I design a software component, I tend to over-engineer it the first time through. This produces a solid, well-designed, hand-crafted unit of code, which is usually terribly complicated for its intended purpose. It&#8217;ll work well, but trying to explain it to someone else would be difficult. Some call that <em>job security</em>, but I&#8217;d prefer to find a more elegant design.</p>
<p><span id="more-318"></span></p>
<p>From a management standpoint, a mature software development process should not allow that first design to ever be implemented. Another round of simplification should be performed before any code is written. The initial design is not wasted time, as it provides insight to future improvements based on the original designer&#8217;s concepts. I&#8217;ve found that, working on my own, there is often too little oversight in this regard.</p>
<p>So it was with the content management system for the MMORPG platform I&#8217;m developing. Since I&#8217;m on my own, I could cope with the inelegant-yet-functional initial design. It had several programming-theoretic benefits. For example, I&#8217;m a big believer in strong typing and layering, but to the extreme it adds boilerplate code at each layer of architecture. In addition, (against my own advice) much of the design was overly rigid and complicated for the sake of <em>theoretic</em> (unproven) efficiency gains.</p>
<p>The straw that broke the camel&#8217;s back was gameplay integration. Adding and changing game content was a multi-step process to integrate properly with the underlying content system. Due to the aggressive byte-packing strategy, database storage was fragile, requiring a complex process to cope with code changes. Altering the gameplay needed to be more fluid, robust, and simple.</p>
<p>The new content design is fundamentally the same as before, but with a radically simpler implementation. As evidence, I dropped over 12,000 lines of code after removing the legacy content structure from the code base. Granted, not every little thing is fully functional yet, but the client and server operate with basic functionality, at least as well as before. Every line of content integration is simpler, with cleaner behavior. Database storage and network transport are more robust.</p>
<p>As a postmortem to the legacy content system, it provided a solid testbed for developing the features needed to support an MMORPG. It served as a proof-of-concept of the fundamental design principles, which are now more elegantly realized in the new content system. Most importantly, the new system shall usher in a renaissance of gameplay integration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/12/19/ripple-effect-subsides-massive-sloc-drop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ripple Effect</title>
		<link>http://www.potentialgames.com/blog/2008/12/09/ripple-effect/</link>
		<comments>http://www.potentialgames.com/blog/2008/12/09/ripple-effect/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 03:37:24 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Developer's Cave]]></category>

		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=312</guid>
		<description><![CDATA[It has been some time since my last post, but I have been far from idle. There have been no new (Alpha) releases lately, either. Despite seasonal distractions, all of my efforts have been focused on a renovation of the core content system. The software design is significantly better; but what does that mean to [...]]]></description>
			<content:encoded><![CDATA[<p>It has been some time since my last post, but I have been far from idle. There have been no new (Alpha) releases lately, either. Despite seasonal distractions, all of my efforts have been focused on a renovation of the core content system. The software design is significantly better; but what does that mean to you, the player? Absolutely nothing! The next release should play exactly the same as the last one, albeit with a sleek new content model.</p>
<p><span id="more-312"></span></p>
<p>From a software project standpoint, I had to weigh the consequences of the new design versus maintaining the existing (mostly working) design. Anticipating major ripple effect throughout the code, I decided to take the plunge (pun intended).</p>
<p>From a software design standpoint, I planned out the enhancement to avoid breaking existing systems until the last minute, by implementing the new code separately. I moved old classes to <tt>legacy</tt> packages for easy identification, for later removal. After the new content implementation was working on its own (granted, only with minor developer testing), it was time to integrate the rest of the game systems. To my body of code, it was like breaking every one of its bones, just to reset them to heal in a better position.</p>
<p>Since dis-integrating the old system, it has taken me about five days of furious coding to re-integrate with the new classes. The code is remarkably simpler, and is even more capable than the previous model. For example, I can more easily manipulate content without fear of destroying the entire database! When the old system is expunged entirely, I expect another steep drop in lines of code.</p>
<p>From a software management standpoint, I <em>should have</em> isolated my changes in a branch, to be merged back to trunk after complete. That would have allowed me to support existing releases while the branch remained broken. Also, that would have allowed me to easily abandon my changes if this whole upgrade when terribly wrong&#8230;</p>
<p>&#8230; which it might still do. At this point, I can compile my 1659 source files, but I&#8217;ve not yet run the game with the changes. In fact, I know of several gaps that will cause the system to crash spectacularly, until corrected. Once I have a working game again, I&#8217;ll post an update for Alpha Playtesters to enjoy. With any luck, you won&#8217;t notice a single difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/12/09/ripple-effect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java Logging Abandoned</title>
		<link>http://www.potentialgames.com/blog/2008/11/06/java-logging-abandoned/</link>
		<comments>http://www.potentialgames.com/blog/2008/11/06/java-logging-abandoned/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 19:19:40 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Developer's Cave]]></category>

		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[design patterns]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=196</guid>
		<description><![CDATA[This article provides a use case that chronicles my experience with the Java Logging API, as used for my MMORPG platform. Software developers can take this article as a cautionary tale against code reuse zealotry. It is often advantageous to follow your own software design goals rather than force your design around an existing system.

As [...]]]></description>
			<content:encoded><![CDATA[<p>This article provides a use case that chronicles my experience with the Java Logging API, as used for my MMORPG platform. Software developers can take this article as a cautionary tale against code reuse zealotry. It is often advantageous to follow your own software design goals rather than force your design around an existing system.</p>
<p><span id="more-196"></span></p>
<p>As an initial disclaimer, I am <strong>not</strong> entirely discrediting the Java Logging API. From a software engineering standpoint, <code>java.util.logging</code> provides a flexible, well-designed logging system, which is fully capable of providing logging services for a variety of applications. However, I have found it to be several times too complicated in the common case, and I disagree with some of its basic principles.</p>
<p>Although <a href="http://www.potentialgames.com/blog/2008/10/03/static-the-dark-side-of-design/">I argue against static design</a> in almost all cases, logging is one situation in which you do not want to be passing an instance reference through all your methods. Languages with <em>aspects</em>, other <em>cross-cutting</em> features, or even <i>multiple inheritance</i> can allow logging to be <em>mixed</em> into classes. Since Java does not (natively) support these language features, a static logging API is the cleanest solution. </p>
<p>I do not fault the static design of the Java Logging API, but I take exception to calling <code>Logger.getLogger(this.getClass().getName())</code> just to obtain a logging instance. The first design simplification I made was to write my own static logging API to encapsulate the ugly details of obtaining the Java Logger. My logging calls look something like <code>Log.warn(this, "message")</code>, which is somewhat cleaner.</p>
<p>All logging systems I&#8217;ve ever used have been based on <em>logging levels</em>, and I&#8217;ve never agreed with this concept. Logging messages are generated for different <em>purposes</em>, not at different <em>levels</em>. Severity levels make sense for informational/warning/error messages. Other message types do not fit into this model, such as debug, audit, start, stop, and configuration logging. Furthermore, levels named <em>fine</em>, <em>finer</em>, and <em>finest</em> (all <em>lower</em> than <em>config</em> messages) force programmers to arbitrarily decide how <em>important</em> a log message should be. Java arbitrarily includes exactly seven levels, placing further restrictions on extensibility.</p>
<p>I do not blame the Java Logging engineers for following a well-established design, even though it is faulty, in my opinion. Nonetheless, the second design decision I made was to isolate Java&#8217;s logging <em>levels</em> behind my own logging <em>categories</em> (fail, warn, info, init, stop, user, debug). My <em>categories</em> are mapped to Java&#8217;s logging <em>levels</em>, which are required to call the underlying Java Logging API. Custom formatters output my category names in place of the Java logging levels.</p>
<p>Registering custom <em>formatters</em> and <em>handlers</em> is another example of good engineering becoming somewhat overbearing in the common case. Based on any criteria, Java logging messages can be reformatted and redirected to different files (e.g., summary, detail, error) and sent over the network. While this is a potentially useful feature, the configuration is more complicated than desired for common use.</p>
<p>The third design simplification I made was to limit my logging to one flat file. If category or message source filtering is needed, <tt>grep</tt> is a perfectly adequate command-line tool. It is more reliable to post-process a complete log file, rather than rely on code changes to adjust logging output. This simplification alleviated any need for complicated Java handler and filter configuration. Since remote logging is useful, I added a few lines of code to (optionally) open a socket and send log messages to a remote server.</p>
<p>At this point, my logging API provided simple static integration from anywhere in my code, featuring source-named messages with meaningful <em>categories</em>. The complexities of configuring and calling the Java Logging API were all hidden behind my static Log class.</p>
<p>With all this effort heaped upon my code just to avoid reinventing yet-another logging system, two straws finally broke the proverbial camel&#8217;s back. For one, I had exhausted the seven available Java logging <em>levels</em> and could not add any additional <em>categories</em>. Even more severe, Java tended to stop logging before the application was finished. Log files lost the last lines of logging, because the logging API stopped outputting at the first signal of application shutdown. There does not appear to be any programmatic control over Java logging shutdown timing.</p>
<p>These issues prompted me to make my fourth, and definitive, simplification to using the Java Logging API; I abandoned it entirely. Since the rest of my code was integrated with my logging <em>facade</em>, I didn&#8217;t have to touch any code outside my static Log class. My application now initializes my logging system at startup, which involves opening a file, and stops it at shutdown, which involves closing the file. To preserve the best of the Java logging design, I have a simple formatter interface, which allows custom output. To prevent file output from blocking the application, I implemented a simple thread handoff queue, so all log calls return immediately. Flushing this queue is coordinated as part of application shutdown, so no messages are lost (even in the case of unhandled application exceptions).</p>
<p>In conclusion, I agree with the sentiment of not <em>reinventing the wheel</em> by using available software libraries. However, there is little added value when more time is spent dealing with the complexities, anomalies, and inadequacies of another library. There is a tradeoff, which can be both a strength and a weakness, between learning to integrate a software library versus developing it yourself. Although the Java Logging API is entirely capable, in this case, I would have made better use of time by implementing my own, simplified, logging API in the first place.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/11/06/java-logging-abandoned/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java 6 Update 10: No Longer Just for Developers</title>
		<link>http://www.potentialgames.com/blog/2008/10/23/java-6-update-10-no-longer-just-for-developers/</link>
		<comments>http://www.potentialgames.com/blog/2008/10/23/java-6-update-10-no-longer-just-for-developers/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 18:41:28 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Developer's Cave]]></category>

		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=252</guid>
		<description><![CDATA[Sun has released Java 6 Update 10, with the primary goal of improving end-user experience. Java is a wonderful programming language and runtime platform for developing many types of applications. Unfortunately, running a Java application can be a stumbling block for end users, which, in my opinion, has been holding Java back from reaching its [...]]]></description>
			<content:encoded><![CDATA[<p>Sun has released <a href="http://java.sun.com/developer/technicalArticles/javase/java6u10/">Java 6 Update 10</a>, with the primary goal of improving end-user experience. Java is a wonderful programming language and runtime platform for developing many types of applications. Unfortunately, running a Java application can be a stumbling block for end users, which, in my opinion, has been holding Java back from reaching its full potential. This update promises many welcome improvements to the platform. </p>
<blockquote><p><strong>Attention Alpha Playtesters:</strong> I&#8217;ll be testing the new Java version soon, with the goal of officially updating the game&#8217;s base Java requirements to this version. Playtesters are encouraged to try the new update and <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=95">report any issues/improvements</a>.</p></blockquote>
<p>In the rest of this article, I give my two cents on Sun&#8217;s approach to Java thus far, and examine a couple improvements I&#8217;ve been eagerly anticipating.</p>
<p><span id="more-252"></span></p>
<p>Since the beginning (and to its credit), Java has been a language <em>by developers</em> and <em>for developers</em>. By learning the Java Programming Language, developers can leverage the platform&#8217;s capabilities for a multitude of applications, including client/GUI applications, networking, server and enterprise applications, database interaction, server-side Web processing (Servlets), and browser-based applications (Applets). Under this developer-centric approach, Sun has underestimated the frustration experienced by end users trying to install and configure the Java Runtime Environment. Although I applaud Sun for remaining true to its target audience of developers, I see its lack of user attention as the major reason Java is not as prolific as it could/should be.</p>
<p>Take, for example, Java Applets. I&#8217;m not a big fan of in-browser applications (especially when abused for purposes of eye-candy), but there are some useful features that can be offered by interactive browser-based widgets. As a Java developer, I could leverage the platform to create fully-featured browser-based applications. Sadly, I have had little confidence that a Java Applet would actually execute properly in a user&#8217;s browser. The <a href="http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#plugin"><em>Next-Generation Java Plug-In</em></a> promises to improve Applet support.</p>
<p>As a more specific case-in-point, <a href="http://java.sun.com/javase/technologies/desktop/javawebstart/">Java Web Start</a> should be the ideal approach for players to install-update-launch the <a href="http://www.potentialgames.com/rpg/">Potential Games, Java-based, in-development MMORPG</a> game client (<em>&#8220;with a single click&#8221;</em>). My experience has shown JWS to be <a href="http://www.potentialgames.com/blog/2007/11/27/java-web-start-antithesis-of-usability/"><em>problematic</em> (to put it lightly)</a> under many common conditions. Since Java includes this integrated deployment capability, I&#8217;d prefer to use JWS over a third-party deployment system. Java 6 Update 10 promises to make <a href="http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#dt">application deployment</a> more robust and transparent to the end user.</p>
<p>In summary, and in conclusion, I feel that Java has been incubating within its developer-centric shell and is only now beginning to break out into an environment of mass acceptance, where it can realize its full potential.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/10/23/java-6-update-10-no-longer-just-for-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Serialized Data Survivability</title>
		<link>http://www.potentialgames.com/blog/2008/09/26/serialized-data-survivability/</link>
		<comments>http://www.potentialgames.com/blog/2008/09/26/serialized-data-survivability/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 16:48:34 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Developer's Cave]]></category>

		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=170</guid>
		<description><![CDATA[Serialized object data is inherently fragile. A change in one class effectively renders any serialized data that includes the class (even deep within the object graph) unusable. This article describes how I have (potentially) addressed this problem in my MMORPG platform. 
First, consider the cases in which data serialization (a.k.a. marshalling and unmarshalling bytes) are [...]]]></description>
			<content:encoded><![CDATA[<p>Serialized object data is inherently fragile. A change in one class effectively renders any serialized data that includes the class (even deep within the object graph) unusable. This article describes how I have (potentially) addressed this problem in my MMORPG platform. <span id="more-170"></span></p>
<p>First, consider the cases in which data serialization (a.k.a. marshalling and unmarshalling bytes) are used on this project. I am serializing objects for client-server network transport, client data cache, and server persistent storage. Without any special care, any class changes could/would break compatibility with old versions of the data. This situation is evident to any Alpha Playtester, as I usually wipe out the database after major updates.</p>
<p>Notice that client-side cache data can be (and is) expunged if any data structure has become incompatible. Also, since I&#8217;m using Java Web Start (at least provisionally), I can assume all users are running the latest version of the client software. Therefore, transport compatibility is not a big concern. Nonetheless, other projects may support clients of varying versions. Although I&#8217;m not explicitly dealing with this scenario, the technique described below could be used to support <a href="http://en.wikipedia.org/wiki/Forward_compatibility"><em>forward compatibility</em></a>. </p>
<p>For the server, serialized data must survive code changes.</p>
<p>The standard advice is to avoid the problem; either maintain yet another external data format, or never change your objects. Since the former is undesirable, and the latter impossible, I&#8217;ve attempted to come up with a more robust approach.</p>
<p>Although Potential RPG is (so far) <em>100% Pure Java</em>, I am <strong>not</strong> using Java&#8217;s built-in Serialization mechanism. Java Serialization is designed (rather elegantly, actually) for convenience at the expense of robustness. Even for core Java classes, the documentation explicitly warns that serialized data is likely to break between Java versions. Using Java&#8217;s <code>Externalizable</code> interface is an option, but this still binds the developer to Java&#8217;s Serialization mechanics.</p>
<p>The approach I&#8217;ve developed is an object <em>packing/unpacking</em> system, in which each <em>serializable</em> class has an accompanying byte-handling <code>Packer</code> helper class. This is functionally equivalent to a class-based Externalizable system (but with a cleaner API, IMHO).</p>
<p>The problem of <em>survivability</em> remains. The <strong>one-byte solution</strong> is to insert a <em>packing schema version</em> byte before each object&#8217;s data. This version is given to the unpacking method when unmarshalling the bytes. The unpacking method can include logic to (a) skip defunct fields and/or (b) set default values for missing fields. This technique provides backward compatibility. (Adapting to future versions is more complex, so I&#8217;ll ignore that on this project&#8230;)</p>
<p>Under this design, maintaining backward data compatibility for a class is a matter of augmenting the <em>unpacking</em> routine. Notice that the <em>packing</em> routine always produces an updated serialized data structure. Therefore, it is possible to write a routine that upgrades the database in one pass; or, the server can be left to lazily update objects as it encounters them.</p>
<p>For Playtesters, the next Alpha release will impose a mandatory database reset. After that, if I am diligent in my code, the test world should survive future updates.</p>
<p>Further reading: <a href="http://www.macchiato.com/columns/Durable4.html">Durable Java: Serialization</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/09/26/serialized-data-survivability/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPG Alpha5 (and then some)</title>
		<link>http://www.potentialgames.com/blog/2008/09/16/alpha5-and-then-some/</link>
		<comments>http://www.potentialgames.com/blog/2008/09/16/alpha5-and-then-some/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 03:05:39 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[RPG Alpha]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=165</guid>
		<description><![CDATA[Alpha5 (v0.5.0) was released earlier today&#8230; and then v0.5.0.1 to fix some issues that were found almost immediately by the intrepid playtesters. Alpha playtesters should see this forum topic to learn why&#8230;
I expect everyone to be walking around at Level 16 with Double Battleaxes and Expert Regeneration skill by tomorrow.
&#8230; That gives you one hour [...]]]></description>
			<content:encoded><![CDATA[<p>Alpha5 (v0.5.0) was released earlier today&#8230; and then v0.5.0.1 to fix some issues that were found almost immediately by the intrepid playtesters. <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=94">Alpha playtesters should see this forum topic</a> to learn why&#8230;<br />
<blockquote>I expect everyone to be walking around at Level 16 with Double Battleaxes and Expert Regeneration skill by tomorrow.</p></blockquote>
<p>&#8230; That gives you one hour until tomorrow. Have at it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/09/16/alpha5-and-then-some/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPG Alpha (v0.4.2)</title>
		<link>http://www.potentialgames.com/blog/2008/09/12/rpg-alpha-v042/</link>
		<comments>http://www.potentialgames.com/blog/2008/09/12/rpg-alpha-v042/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 00:11:19 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[RPG Alpha]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=161</guid>
		<description><![CDATA[I haven&#8217;t stopped typing since last Friday&#8217;s incremental release, so here&#8217;s another for-the-sake-of-Friday update, which includes two dozen fixes and enhancements. Alpha playtesters can read this forum entry for the details.
]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t stopped typing since last Friday&#8217;s incremental release, so here&#8217;s another for-the-sake-of-Friday update, which includes two dozen fixes and enhancements. <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=93">Alpha playtesters can read this forum entry for the details.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/09/12/rpg-alpha-v042/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPG Alpha Update (v0.4.1)</title>
		<link>http://www.potentialgames.com/blog/2008/09/05/rpg-alpha-update-v041/</link>
		<comments>http://www.potentialgames.com/blog/2008/09/05/rpg-alpha-update-v041/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 18:28:47 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[RPG Alpha]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=158</guid>
		<description><![CDATA[For RPG Alpha Playtesters, I&#8217;ve released an incremental update (v0.4.1). Why? Mostly because it&#8217;s Friday. Also, I&#8217;ve tampered with (er, improved) a lot of code since the last release. See this forum topic for details (and comments on future releases).
]]></description>
			<content:encoded><![CDATA[<p>For RPG Alpha Playtesters, I&#8217;ve released an incremental update (v0.4.1). Why? Mostly because it&#8217;s Friday. Also, I&#8217;ve tampered with (er, <em>improved</em>) a lot of code since the last release. <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=92">See this forum topic for details (and comments on future releases).</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/09/05/rpg-alpha-update-v041/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Potential RPG Alpha4 (v0.4)</title>
		<link>http://www.potentialgames.com/blog/2008/08/25/potential-rpg-alpha4-v04/</link>
		<comments>http://www.potentialgames.com/blog/2008/08/25/potential-rpg-alpha4-v04/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 00:38:56 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[RPG Alpha]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=128</guid>
		<description><![CDATA[All the tasking for Alpha4 is complete (&#8230; or brushed under the rug of a later release). Alpha Playtesters are invited to read the details, then try it out.
]]></description>
			<content:encoded><![CDATA[<p>All the tasking for Alpha4 is complete (&#8230; or brushed under the rug of a later release). Alpha Playtesters are invited to <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=90&#038;p=376#p376">read the details</a>, then try it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/08/25/potential-rpg-alpha4-v04/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Incremental Alpha Update (v0.3.2)</title>
		<link>http://www.potentialgames.com/blog/2008/08/22/incremental-alpha-update-v032/</link>
		<comments>http://www.potentialgames.com/blog/2008/08/22/incremental-alpha-update-v032/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 16:40:53 +0000</pubDate>
		<dc:creator>neb</dc:creator>
		
		<category><![CDATA[Potential RPG]]></category>

		<category><![CDATA[RPG Alpha]]></category>

		<guid isPermaLink="false">http://www.potentialgames.com/blog/?p=124</guid>
		<description><![CDATA[For Alpha playtesters, I&#8217;ve posted an incremental release (on the roadmap to Alpha4) with some important enhancements to island building. See this playtesting forum topic for details.
]]></description>
			<content:encoded><![CDATA[<p>For Alpha playtesters, I&#8217;ve posted an incremental release (on the <a href="http://www.potentialgames.com/tasks/index.php?do=roadmap&#038;project=2">roadmap</a> to Alpha4) with some important enhancements to island building. <a href="http://www.potentialgames.com/forums/viewtopic.php?f=5&#038;t=90&#038;p=375#p375">See this playtesting forum topic for details.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.potentialgames.com/blog/2008/08/22/incremental-alpha-update-v032/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
