<?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>Building Browsergames &#187; post-mortem</title>
	<atom:link href="http://buildingbrowsergames.com/tag/post-mortem/feed/" rel="self" type="application/rss+xml" />
	<link>http://buildingbrowsergames.com</link>
	<description>Ever wanted to build a browsergame?</description>
	<lastBuildDate>Mon, 29 Mar 2010 14:00:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Post-Mortem: Robot Warz</title>
		<link>http://buildingbrowsergames.com/2009/01/27/postmortem-robot-warz/</link>
		<comments>http://buildingbrowsergames.com/2009/01/27/postmortem-robot-warz/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 14:00:04 +0000</pubDate>
		<dc:creator>Jacob Santos</dc:creator>
				<category><![CDATA[postmortem]]></category>
		<category><![CDATA[post-mortem]]></category>

		<guid isPermaLink="false">http://buildingbrowsergames.com/?p=625</guid>
		<description><![CDATA[Well, technically, the name was changed to Mecha Warz, but to prevent confusion with Mecha Asylum, I&#8217;m going to use the original name. There is a bit of history with this game, so I&#8217;ll start with how I came to work on this project and then go on to the postmortem.
When I joined the project, [...]]]></description>
			<content:encoded><![CDATA[<p>Well, technically, the name was changed to Mecha Warz, but to prevent confusion with Mecha Asylum, I&#8217;m going to use the original name. There is a bit of history with this game, so I&#8217;ll start with how I came to work on this project and then go on to the postmortem.</p>
<p>When I joined the project, it was already in development with three to four developers. I recovered from a period of depression and wanted to start development on a PBBG. I contacted the person I worked with 6 months prior after the second iteration of Mecha Asylum was a failed attempt. I wanted to get to work on a project that was <em>complete</em> and had active players.</p>
<h3>What Went Right</h3>
<ol>
<li><strong>Group project.</strong>Well, there were multiple developers working on the project, but that was a WTF? in and of itself. There wasn&#8217;t any version control, so there were some interesting instances of overwriting another&#8217;s work.
<p>It <strong>was</strong> an accomplishment to go from one developer working on a project to four and I still do think that is what I liked most about the project. It would have been better if all of us were intermediate to advanced level developers and used version control. I&#8217;ve rectified the situation in the present to prevent the failures from occurring again.</li>
<li><strong>Active player base.</strong>I enjoyed entering the development with an active player base. It helped with the motivation to add and fix features for them to play. I think it speaks a lot that people will play any game or give any game a try, just to waste a little time. It gives me hope that at least someone will play my game, if it at least functions.</li>
</ol>
<h3>What Went Wrong</h3>
<p>In the case of Robot Warz, we were developing portions of the game live, so a player could, if they knew where to look play the parts that were being worked on. It also meant that some portions of the game could suddenly stop working, when a missing semi-colon or another bug was inevitability was introduced.</p>
<ol>
<li><strong>Administrators and developers played the game also.</strong>The game playability must protect the boundary of fairness, whether real or perceived. In the case of this instance, it is a gray area, because the administrators didn&#8217;t cheat. However, they could have and to the player it means nothing if the administrator could easily with a click of the button give themselves more money than any player in the game.
<p>After thinking about it a great deal, if you are going to develop the game, then the other players shouldn&#8217;t know that you are an administrator and if you are, then you shouldn&#8217;t have access to play the game. Administrators, if they want to play the game, should have another account to do so with the same access as the rest of the players.</p>
<p>Ethically, an administrator probably shouldn&#8217;t play the game at all and should be completely separated from the playability to be as neutral as possible. If an administrator crosses that line, then feelings might be hurt when a decision was made against another player, because of an in-game alliance. Whether or not the administrator made the decision based on that is irrelevant to the player and would cause to destroy the fun factor of the game.</li>
<li><strong>There wasn&#8217;t any version control.</strong>I remember implementing a feature and bug fix four times, because every time the file was overwritten by another developer who didn&#8217;t download the file from the server. It was only resolved, because I contacted the developer who was doing it and told him the situation. If version control was used, it wouldn&#8217;t have mattered, because his changes would have been merged with mine and resolved.</li>
<li><strong>Security, what security?</strong>When I joined the project, register globals was used throughout the code base. I had to inform the other developers about super globals. I also spent a great deal of time going through code and updating the code to use the correct super global. I should also mention that in all fairness, the project was based off an open source browser based game engine that had these flaws inherent in the code. It might not have been the complete fault of the developers on the project.
<p>Validation and sanitization was only added when an security hole was already being exploited. Therefore, it was more of a cat and mouse game of patching holes after the hacker exploited it. There were also too many areas in the code that had to be patched to prevent future attacks. I wasn&#8217;t much of an security expert, but you don&#8217;t really need to be when all validation and sanitization is programming common sense.</p>
<p>It is difficult to take much from the project, but when you have your name associated with a project that has a magnitude of attack vectors, then you pretty much have to take it personally.</li>
<li><strong>Disjointed game features.</strong>The game features were developed separately from other developers and also separately from the original game purpose. I think I added a farming feature, because it &#8220;would be cool&#8221;, as opposed to matching the rest of the game playability. Yeah, I didn&#8217;t really get the whole game design concept and planning games at that time.</li>
</ol>
<h3>What I Learned</h3>
<p>I learned the importance of version control and I&#8217;ve used it every since, even when I&#8217;m working by myself. It was the first time, I really seen an importance for it. Actually, I didn&#8217;t know about version control at that time, but I thought there had to better way to prevent events like when my file was replaced from happening without having to create a copy to ensure a backup was saved. I&#8217;ll learn the name <em>Version Control</em> and <a href="http://subversion.tigris.org">Subversion</a>, 8 months later while working on Astrum Futura.</p>
<p><strong>Security is important!</strong> The crackers that attacked the site, really expressed the importance of sanitization and validation. I&#8217;ve since practiced a great deal with making sure that I always code projects around a paradigm that includes those two. It is easier to sanitize and validate when first coding the project, then it is to react to attacks and fix security holes retroactively.</p>
<p>I&#8217;ve also learned that games tend to play better, when they&#8217;ve been planned and the game features flow together. When you add features, because they are cool and not to complement or extend the current game base, then you create a patchwork game that ends up confusing the player. For example, if you are going to add a pet, then make sure it isn&#8217;t for a robot game.</p>
]]></content:encoded>
			<wfw:commentRss>http://buildingbrowsergames.com/2009/01/27/postmortem-robot-warz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postmortem: Mecha Asylum</title>
		<link>http://buildingbrowsergames.com/2008/12/30/postmortem-mecha-asylum/</link>
		<comments>http://buildingbrowsergames.com/2008/12/30/postmortem-mecha-asylum/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:00:27 +0000</pubDate>
		<dc:creator>Jacob Santos</dc:creator>
				<category><![CDATA[postmortem]]></category>
		<category><![CDATA[post-mortem]]></category>

		<guid isPermaLink="false">http://buildingbrowsergames.com/?p=623</guid>
		<description><![CDATA[The time span of Mecha Asylum was three months, from development to completion, and not including planning. The planning stage consisted of several posts hashing out the ideas that would be implemented in the game. There wasn&#8217;t much of a debug stage, I lumped that in with the development.
The cycle was prototype-develop-test, which allowed for [...]]]></description>
			<content:encoded><![CDATA[<p>The time span of Mecha Asylum was three months, from development to completion, and not including planning. The planning stage consisted of several posts hashing out the ideas that would be implemented in the game. There wasn&#8217;t much of a debug stage, I lumped that in with the development.</p>
<p>The cycle was prototype-develop-test, which allowed for a somewhat rapid prototype to finished product. The issues with this style will be addressed later. When you are one person, developing a complex game, any sort of direction helps.</p>
<p>This iteration was the third of the Mecha Asylum rewrites. Well, that isn&#8217;t completely accurate, the first two iterations were unusable and early PBBG research projects. The first two working and completed iterations of Mecha Asylum did allow for specifying the direction of the current one.</p>
<h3>What Went Right</h3>
<ol>
<li><strong>Separation of presentation from business logic.</strong>
<p>Well, the earlier incarnations also separated the presentation from the business logic, but this was the first time I used an actual template technique. While it worked, it allowed for better focus on the view, and followed more of the MVC pattern. Not strictly, but MVC tends to be cleaner, because the majority of the logic is outside of the template.</p>
<p>It allowed for focusing on the code, where it should be and added needed organization for easier debugging later.
</li>
<li><strong>Game was completed on time and well was actually completed.</strong>
<p>The other versions weren&#8217;t so lucky. With the other permutations, it felt as if the flow of the game was disjointed midway through development. Even though the final product in this iteration ended with the same result, it wasn&#8217;t apparent until development was over.
</li>
<li><strong>Basic attempt at achieving <em>intelligent</em> money</strong>
<p>The concept, I believe, was noble in that the player would be based on a more random calculation. So instead of being able to easily predict what they had to do to quickly advance in the game, it would require more time and effort.</p>
<p>Well, in theory, and if it had worked. Players like a bit of unpredictability, but it is hard to say whether players would have enjoyed this feature. When it comes to cash pay out, unpredictability makes sense in the case of a stock market like feature, but it might have been very annoying in retrospect.</p>
<p>It is easy to take the theory of <strong>unpredictability = fun</strong> to the extremes, but players know what is fun and what isn&#8217;t, so it is better to let them decide. It is also better to also remember that while new ways of doing old tasks can be better, it isn&#8217;t always the case.</p>
<p>I thought the concept was a success and the game never had any active players to find out if it actually was a success or failure.
</li>
<li><strong>Left out the kitchen sink.</strong>
<p>The very early iterations tried to include the kitchen sink and shifted the direction of the game to where none of the features were completed. I tried to focus on the features that were planned and left out the features that would be nice for future versions.</p>
<p>It is too easy to put down this feature or that feature and when you try to include team features, it can become time consuming. Although, in all of the iterations I&#8217;ve never reached the stage when team features could even be considered.
</li>
</ol>
<h3>What Went Wrong</h3>
<ol>
<li><strong>Template technique failed to work on later versions of PHP.</strong>
<p>The template system worked well with version of PHP that I tested the site at the time. When I visited the site 6 months after development was completed, I found the site no longer was functioning. It appears that either a bug was introduced to break the site or a bug was fixed that the template system was dependent on and I didn&#8217;t notice it.
</li>
<li><strong>Early attempt at primitive artificial intelligence for calculating money was flawed.</strong>
<p>I thought it was call that the system in place for calculating how much money the player made was based off of a generic sequence. If it had worked, it would of made the game somewhat more unpredictable and I would have hoped more fun because of it. In which case, the only reason the player still had anything was, because there were checks to ensure that the player never passed the minimum threshold.</p>
<p>In hindsight, it probably would have been easier and better to just not rely on such a complex system for calculating something as important as the payouts for players. At least, not with an incomplete AI system.
</li>
<li><strong>Game was far too complex.</strong>
<p>The game was so complex, that playing the game after it was completed left even me confused on what to do. The game lacked focus, and that is partially what makes a game fun. It lacked the fun factor, because it made the player think and do too much.</p>
<p>Some people like complexity, but to better define it, it would be to say, they like to micro-manage their game details. There wasn&#8217;t any micro-managing, there was barely anything except forms for doing things without any apparent purpose.
</li>
<li><strong>The game lacked a seamless flow.</strong>
<p>Along with #3, the game lacked an inherent seamless flow from task A to task B. In games that I&#8217;ve enjoyed, you knew or didn&#8217;t have to go far to figure out how to perform the needed tasks to advance in the game. That is difficult to achieve in game design and development, but it would have been worth investing another month or two of polish to pound it into the game.
</li>
</ol>
<h3>What I Learned</h3>
<p>I learned that playability and fun factors aren&#8217;t decided by me. When you develop a game for yourself, then only you are going to be playing it. A game must combine elements that will be fun for other people. In that you must design and develop for the entertainment of others.</p>
<p>Whether a player will find the game entertaining or a flop is ultimately to be decided, but thinking about them is the first step. The next step, would be to allow a select group of players to test the game and give feedback on what they honestly think of the game. If you have your friends do it, then they might tell you what you want to hear, instead of what you need to hear.</p>
<p>It is important to have a group test the site for playability as well as beta test the site. When you beta test, your concern is whether or not the site functions as you intended. When you test for playability, you are testing whether or not the game is fun. If those playing the game don&#8217;t think so, then it is not.</p>
<p>Simple is better, in the early stages of the game and early versions. When the game advances and players start demanding certain features, then go in that direction. Too much time was spent on features that I liked, but not necessarily what the players would like. When I do it over, I&#8217;m going to develop a subset, do those features very well and then go where the players take me.</p>
<p>While this iteration of the game worked out better than all of the previous permutations before, it was still a failure. The next iteration will build off the failures and successes of this one. If all goes well, I&#8217;ll have another postmortem before the end of 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://buildingbrowsergames.com/2008/12/30/postmortem-mecha-asylum/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Post-Mortem: Rawrmy</title>
		<link>http://buildingbrowsergames.com/2008/12/11/post-mortem-rawrmy/</link>
		<comments>http://buildingbrowsergames.com/2008/12/11/post-mortem-rawrmy/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 14:00:38 +0000</pubDate>
		<dc:creator>Luke</dc:creator>
				<category><![CDATA[diaryofabrowsergame]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[doab]]></category>
		<category><![CDATA[post-mortem]]></category>
		<category><![CDATA[rawrmy]]></category>

		<guid isPermaLink="false">http://buildingbrowsergames.com/?p=610</guid>
		<description><![CDATA[Browser-Based Game Zone&#8217;s PBBG Contest comes to a close today, and the month of judging will begin &#8211; unfortunately, without Rawrmy. Due to unforeseen circumstances, I was unable to complete Rawrmy in the time allotted &#8211; but that doesn&#8217;t mean that I didn&#8217;t give it a fair shot.
What Went Right
A few decisions that I made [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bbgamezone.com/contest.php'>Browser-Based Game Zone&#8217;s PBBG Contest</a> comes to a close today, and the month of judging will begin &#8211; unfortunately, without Rawrmy. Due to unforeseen circumstances, I was unable to complete Rawrmy in the time allotted &#8211; but that doesn&#8217;t mean that I didn&#8217;t give it a fair shot.</p>
<h2>What Went Right</h2>
<p>A few decisions that I made early on helped to get Rawrmy &#8220;on it&#8217;s feet&#8221;, for all that there were some setbacks during development. One of those decisions was to use <a href='http://djangoproject.com'>Django</a>, a popular Python web framework, to develop all of Rawrmy&#8217;s functionality. Django is geared towards rapid development in the same way that Rails is; both frameworks lend themselves very well to getting something out the door as quickly as possible &#8211; which was one of the goals for this contest due to the compressed time frame. Straight out of the box, Django gives you a pre-wired authentication system and admin backend &#8211; both of which were immensely valuable during initial development.</p>
<p>Another decision that helped ease the development process was a bit of a harder one to enforce: <strong>every feature implemented was droppable</strong>. What that means is, for any feature I was developing, I&#8217;d set a timer. If it took me longer than an hour or two, the feature got dropped &#8211; although I marked it as &#8220;come back to later&#8221;. Doing this allowed me to trim the fat out of Rawrmy, and focus only on the pieces that would get it to being a finished game the fastest.</p>
<h2>What Went Wrong</h2>
<p>Time was a massive factor that prevented me from completing Rawrmy. In hindsight, I probably should have taken some time off from my day job, or diverted time from some of my other projects &#8211; Rawrmy is unfinished because I was unable to devote as much time as I would have liked to to developing it.</p>
<p>Some things took too long. While I mentioned earlier that every feature was droppable, it was only <strong>after</strong> I had sunk a few precious hours into a specific(and still broken) feature that I realized I would need to enact this rule. If I had realized how much time I was sinking into non-valuable features at the time as opposed to afterwards, I probably would have had a lot more time to spend on getting the game working(and less time spent chasing down random bugs).</p>
<p>Lack of direction was a problem with Rawrmy. I have to admit that when I first decided I should enter the contest, I didn&#8217;t have any idea what I would build a game based on &#8211; and I believe this was one of my biggest problems. <a href='http://www.johnmunsch.com'>John Munsch</a> had clearly been planning out his idea for &#8216;Big Villain&#8217; for quite some time, and was therefore only waiting to do the development on his game. Multiple other entrants were also in the same position; the fact that they had already planned out most of their game gave them a massive advantage, because they could get started developing while I was still attempting to come up with a concept for Rawrmy.</p>
<p>When I initially entered the contest, I also had a team member who would be creating all of the written content for the game. However, after a week or so, my partner disappeared &#8211; and I still have yet to hear from him. This was another setback; the initial idea for Rawrmy was heavily text-based, and while I&#8217;m sure that I could have written the content myself, it would have distracted me from getting the game running and polished.</p>
<h2>What I Learned</h2>
<p>When you&#8217;re entering a contest with a short timeframe, you need to have a firm idea of what you&#8217;re going to build &#8211; it doesn&#8217;t neccessarily have to be large, but you need to have that idea and stick to it. Changing gears in the middle of a project will kill it &#8211; Rawrmy lost a good week or so&#8217;s worth of development time when my partner disappeared.</p>
<p>When you enter a contest like this, you need to be prepared to make the commitment. You need to be willing to commit development, monetary, and any other resources neccessary to get your game done &#8211; and while I was able to half-commit on most of those things, it&#8217;s not enough. The next time I enter a browsergame contest, I&#8217;ll make sure that I&#8217;ve got my other projects cleared out of the way for the duration, and can therefore focus <strong>only</strong> on the contest &#8211; instead of getting distracted by other things.</p>
<p>All told, I had a positive experience entering the contest &#8211; even if I had to drop out at the end. I learned a lot about my own development practices, and what I can do to improve in the future &#8211; which is enough of a win for me.</p>
<p>If you&#8217;re interested in seeing what Rawrmy was like, you can check it out at <a href='http://rawrmy.com'>rawrmy.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://buildingbrowsergames.com/2008/12/11/post-mortem-rawrmy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

