<?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>Push cx</title>
	<atom:link href="http://push.cx/feed" rel="self" type="application/rss+xml" />
	<link>http://push.cx</link>
	<description>A tea-drinking web geek's coffee-flavored blog</description>
	<lastBuildDate>Tue, 12 Jan 2010 01:59:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Game Influences (7/6): Warstorm</title>
		<link>http://push.cx/2010/game-influences-76-warstorm</link>
		<comments>http://push.cx/2010/game-influences-76-warstorm#comments</comments>
		<pubDate>Tue, 12 Jan 2010 01:58:52 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[business models]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game influences]]></category>
		<category><![CDATA[verbs]]></category>
		<category><![CDATA[Warstorm]]></category>
		<category><![CDATA[web games]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1249</guid>
		<description><![CDATA[
I thought I&#8217;d finished the six post series on games that influenced Athenge, but I soon saw a game that changed my plans. This post is about how I analyze games by verbs, decision timing, and business concerns.


  1. Ikariam
  2. WeeWar
  Tangent: The Farming Genre
  3. Tactics Ogre
  4. [...]]]></description>
			<content:encoded><![CDATA[<p>
I thought I&#8217;d finished the six post series on games that influenced Athenge, but I soon saw a game that changed my plans. This post is about how I analyze games by verbs, decision timing, and business concerns.
</p>
<ul>
  <li>1. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a></li>
  <li>2. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">The Farming Genre</a></li>
  <li>3. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a></li>
  <li>4. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a></li>
  <li>5. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a></li>
  <li>6. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">Kongai</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGVjaG5vbG9neS10cmVlcw==">Technology Trees</a></li>
  <li>7. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMTAvZ2FtZS1pbmZsdWVuY2VzLXdhcnN0b3Jt">Warstorm</a></li>
</ul>

<h2>Verbs</h2>

<p>
The fundamental difference between games and most other media is interactivity. When I want to understand a game, one step is to list all of the verbs available to the players. For example, the verbs in Super Mario Brothers are:
</p>

<ul>
  <li>Start 1/2 player game</li>
  <li>Walk left/right</li>
  <li>Run left/right</li>
  <li>Duck (when big)</li>
  <li>Jump</li>
  <li>Stomp enemy</li>
  <li>Kick shell</li>
  <li>Break brick</li>
  <li>Open question block</li>
  <li>Go down pipe</li>
  <li>Throw fireball</li>
  <li>Touch Axe</li>
</ul>

<p>
I was thinking of this because I played the browser-based trading card game <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy53YXJzdG9ybS5jb20=">Warstorm</a> and I was astounded when I realized what the available verbs are on the site (ignoring the account management common to any site with user accounts):
</p>

<ul>
  <li>Edit a deck (&#8220;squad&#8221;)</li>
  <li>Auction a card</li>
  <li>Trade cards with a player</li>
  <li>Chat</li>
  <li>Challenge an individual player to a duel</li>
  <li>Enter tournament or league (tourney with restricted rule)</li>
  <li>Redeem loyalty points (given for interaction/marketing) for cards</li>
  <li>Buy Challenge Coins (premium currency)</li>
  <li>Play a duel</li>
</ul>

<p>
The first six verbs are common to any trading card game. The last item is the interesting one: <em>play</em>. It looks like I didn&#8217;t descend into the same level of detail I did for Mario, but I did.
</p>

<p>
The player selects which of their decks they&#8217;d like to use and the duel proceeds like <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXJfKGNhcmRfZ2FtZSk=">War</a>. The computer turns up the top card of each deck, applies their effects, and repeats. The only thing the player can do is fast-forward to the end to find out if they won or lost.
</p>

<p>
I was floored when I realized this, I thought the site was hollow. It&#8217;s all about a card game but there&#8217;s no game at its heart. It reminded me of gambling in that nearly every verb you invoke involves paying, but unlike gambling there&#8217;s no chance you&#8217;ll ever get any money back.
</p>

<p>
I babbled about this to my friends for a few days, trying to make sense of it. Eventually I realized I hadn&#8217;t seen where the game was hiding.
</p>

<h2>Decision Timing</h2>

<p>
In real-time games (rugby, StarCraft) players are constantly able to take action (maybe with asymmetrical actions, like the separate roles of offense and defense in American football). In turn-based games (Chess, Scrabble, Civilization) players alternate who is allowed to act.
</p>

<p>
Magic: The Gathering had clever game mechanics that gave players new actions in a preparatory phase called &#8220;deckbuilding&#8221; prior to playing cards (incidentally inventing a business model). The players make decisions about what actions they want available to them in the matchups.
</p>

<p>
Warstorm is designed so that <em>all</em> of the actions are up-front, there is no phase of the game besides deckbuilding. It didn&#8217;t feel to me like a game because no game mechanic involves direct interaction with the opponent, I didn&#8217;t see that I could ever make and change a decision in response to my opponent&#8217;s actions (unless we played multiple duels, I suppose). I didn&#8217;t even see the game because it was too different from what I was expecting.
</p>

<p>
But it made me wonder how business concerns drove the game design of Warstorm, a game where there&#8217;s little to do besides pay more money. 
</p>

<h2>Business Concerns</h2>

<p>
When I turned my attention back to Athenge, I saw that my game design implied a lot of business decisions. I like games that require a lot of thought and analysis. I look at the most popular Facebook games and only see pastimes, idle toys requiring action with little thought, minimal direct competition, and even rarer losses. Oh, and tens of millions of players.
</p>

<p>
Warstorm reminded me that my taste in games is not common. Athenge will be a complex game, lots of instructions and options. It&#8217;ll take a lot of time for me, a lone developer, to build. Plus money to buy art, and more resources in marketing to find its non-mainstream audience. There&#8217;s risk to anything I choose to build, but Athenge looks to be more risk than it&#8217;s worth when I look at the current crop of simple, successful games. I could cut it down more and more, let these business concerns change my game&#8217;s design, but I&#8217;d rather let them replace my game&#8217;s design.
</p>

<p>
Instead of starting the programming of Athenge now, I&#8217;m continuing to improve the successful <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamers</a> and starting on a simpler, much more accessible game I&#8217;ve been tinkering with the design of for eighteen months. (Though it&#8217;s simple enough that&#8217;ll sound ridiculous when you see it, that&#8217;s fodder for another blog post). I still plan to build Athenge, but I think it must wait until I&#8217;m solidly in the black, until I&#8217;m not risking quite so much.
</p>
 <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1249" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2010/game-influences-76-warstorm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML is Your Markup Language Anyways</title>
		<link>http://push.cx/2009/html-is-your-markup-language-anyways</link>
		<comments>http://push.cx/2009/html-is-your-markup-language-anyways#comments</comments>
		<pubDate>Tue, 10 Nov 2009 21:53:24 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[bbcode]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[markup languages]]></category>

		<guid isPermaLink="false">http://push.cx/?p=297</guid>
		<description><![CDATA[
I hate Wiki markup. I hate BBCode. I hate markdown. I hate the million other custom markup languages that have infested the web.



When you&#8217;re using one of these markup languages, you&#8217;re using HTML anyways. Because they must be translated to HTML to serve as web pages, at best they&#8217;re poor translations of HTML. A lot [...]]]></description>
			<content:encoded><![CDATA[<p>
I hate Wiki markup. I hate BBCode. I hate markdown. I hate the million other custom markup languages that have infested the web.
</p>

<p>
When you&#8217;re using one of these markup languages, you&#8217;re using HTML anyways. Because they must be translated to HTML to serve as web pages, at best they&#8217;re poor translations of HTML. A lot of them are &#8220;parsed&#8221; with regular expressions, leading to all kinds of interesting bugs with nested tags. MediaWiki (the engine behind Wikipedia) uses two apostrophes for &#8221;<b>bold</b>&#8221; and three for &#8221;&#8217;<i>italic</i>&#8221;&#8217;, and then just lets you use HTML for all the cases where these things break. Most markup languages have some passthrough like this to deal with ambiguity or complexity &#8212; so while some markups (not BBCode, which is like HTML in brackets) can claim to be easier to start using, users always end up learning HTML in the end.
</p>

<p>
MediaWiki actually has a decent argument for custom markup in its ability to build <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5tZWRpYXdpa2kub3JnL3dpa2kvSGVscDpUZW1wbGF0ZQ==">templates</a> and fill in particular fields with data. These custom tags aren&#8217;t available in HTML, but there&#8217;s nothing stopping a site from adding its own tags (which may or may not look much like HTML) that are compiled down to HTML in the exact same fashion.
</p>

<p>
Some will argue security, that allowing raw HTML would allow people to perform cross-site scripting and other attacks, or include obscene images, or break the page layout, etc. I&#8217;m not arguing for letting users use HTML without filtering, it&#8217;s absolutely necessary. It&#8217;s difficult to protect against the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2hhLmNrZXJzLm9yZy94c3MuaHRtbA==">wide variety</a> of attacks, but being difficult doesn&#8217;t mean it shouldn&#8217;t be done. There are excellent whitelisting libraries available that remove any excuse about rolling one&#8217;s own, like Ruby&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20vcmdyb3ZlL3Nhbml0aXplLw==">Sanitize</a> and PHP&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2h0bWxwdXJpZmllci5vcmcv">HTML Purifier</a>.
</p>

<p>
If you&#8217;re building a site, let your users use HTML. A lot will already know it, there are a million free tutorials out there for them to learn it, and after using your site they&#8217;ll have a useful skill.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=297" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/html-is-your-markup-language-anyways/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Inbox Zero</title>
		<link>http://push.cx/2009/inbox-zero</link>
		<comments>http://push.cx/2009/inbox-zero#comments</comments>
		<pubDate>Tue, 10 Nov 2009 02:16:57 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[inbox zero]]></category>
		<category><![CDATA[mutt]]></category>
		<category><![CDATA[sup]]></category>
		<category><![CDATA[to-do]]></category>

		<guid isPermaLink="false">http://push.cx/?p=669</guid>
		<description><![CDATA[
A few minutes ago, for the first time in around a decade, I emptied my email inbox. I&#8217;ve been steadily whittling it down (or at least holding the line) for the last few months: catching up on mailing lists, responding to outstanding emails, admitting there&#8217;s some things that are so old I&#8217;m not going to [...]]]></description>
			<content:encoded><![CDATA[<p>
A few minutes ago, for the first time in around a decade, I emptied my email inbox. I&#8217;ve been steadily whittling it down (or at least holding the line) for the last few months: catching up on mailing lists, responding to outstanding emails, admitting there&#8217;s some things that are so old I&#8217;m not going to respond to them, and moving work items onto a proper to-do list. So I have an impressively boring screenshot:
</p>

<img src="http://push.cx/wp-content/uploads/2009/11/sup.png" alt="sup" title="sup" width="490" height="352" class="alignnone size-full wp-image-1229" />

<p>
Watching Merlin Mann&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2luYm94emVyby5jb20vaW5ib3h6ZXJvL3ZpZGVv">Inbox Zero</a> video and reading the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2luYm94emVyby5jb20vYXJ0aWNsZXMv">preceeding articles</a> was the impetus for the final push to zero. It&#8217;s not that there&#8217;s anything I didn&#8217;t know in there. But there was the sense that it was not only possible but achievable.
</p>

<p>
So I immediately did what Mann suggested not to do and spent, oh, a full day changing email clients from <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL211dHQub3Jn">mutt</a> to <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3N1cC5ydWJ5Zm9yZ2Uub3Jn">sup</a>. It sounds like an awesome amount of time-wasting, but I read the sup <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3N1cC5ydWJ5Zm9yZ2Uub3JnL1BoaWxvc29waHkudHh0">philosophical statement</a> a while ago and it resonated:
</p>

<blockquote>
The problem with traditional clients like Mutt is that they deal with individual pieces of email. This places a high mental cost on the user for each incoming email, by forcing them to ask: Should I keep this email, or delete it? If I keep it, where should I file it? I&#8217;ve spent the last 10 years of my life laboriously hand-filing every email message I received and feeling a mild sense of panic every time an email was both &#8220;from Mom&#8221; and &#8220;about school&#8221;.
</blockquote>

<p>
The flip side of this is that once if you&#8217;ve set up automatic filters you have to remember to go check those folders, which is a habit I&#8217;ve never been able to form. And once I&#8217;ve ignored a folder for two weeks, hell, I&#8217;ll leave it another day or two, why hurry to find out if I missed out on something interesting or if I let someone down? Or three days. Or&#8230;
</p>

<p>
And so I&#8217;ve poured all of my email into sup&#8217;s index and started mercilessly hacking away at that last couple hundred messages I hadn&#8217;t yet dealt with. Read and delete, or archive, or note on my to-do list, or suck it up and start another email with &#8220;I&#8217;m sorry it took so long to get back to you&#8230;&#8221; And now it&#8217;s cleaned out, to my pleasant amazement.
</p>

<p>
There is, of course, the terrible chance I&#8217;ve missed something important, but I couldn&#8217;t let that risk of something getting lost in the upheavel continue to paralyze me. Perfect is the enemy of good. If you&#8217;ve been waiting on a reply from me about anything and didn&#8217;t get it in the last few minutes, I&#8217;m sorry, please let me know. And if you&#8217;ve thought about contacting me but haven&#8217;t because I did so poorly with the last few emails, I&#8217;m sorry, I&#8217;m going to keep trying to do better.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=669" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/inbox-zero/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Survey of Conference Attendees</title>
		<link>http://push.cx/2009/backchannel-survey</link>
		<comments>http://push.cx/2009/backchannel-survey#comments</comments>
		<pubDate>Fri, 02 Oct 2009 19:31:07 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Biz]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1219</guid>
		<description><![CDATA[
If you have attended a conference this year where people have used Twitter, IRC, or similar tools to carry on conversations during the live event (a &#8220;backchannel&#8221;), I&#8217;d appreciate it if you would take this brief (5-15 minute) survey:





As thanks, I&#8217;m giving away a $40 Amazon Gift Card to one randomly-selected participant. The drawing is [...]]]></description>
			<content:encoded><![CDATA[<p>
If you have attended a conference this year where people have used Twitter, IRC, or similar tools to carry on conversations during the live event (a &#8220;backchannel&#8221;), I&#8217;d appreciate it if you would take this brief (5-15 minute) survey:
</p>

<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3NwcmVhZHNoZWV0cy5nb29nbGUuY29tL3ZpZXdmb3JtP2Zvcm1rZXk9ZEZBMFZqSlBhazlaUVdremNua3djR04xZGxOTFNsRTZNQQ=="><img src="http://push.cx/wp-content/uploads/2009/10/surveybutton.png" alt="Take the Survey" title="Take the Survey" width="200" height="24" class="content size-full wp-image-1220" /></a>

<p>
As thanks, I&#8217;m giving away a <strong>$40 Amazon Gift Card</strong> to one randomly-selected participant. The drawing is open until October 16, 2009 or until 500 responses have been collected.
</p>

<p>
I&#8217;m exploring the design of a potential related product and trying to learn more about people&#8217;s experiences with backchannels. I&#8217;ll write a follow-up blog post when I have some results to share and determine whether or not I&#8217;ll be building a product.
</p>

<p>
And please, please: if you have a moment, share the link to this blog post with anyone you know who might be interested in taking the survey. I would really appreciate help in getting a lot of responses.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1219" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/backchannel-survey/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back in Chicago</title>
		<link>http://push.cx/2009/back-in-chicago</link>
		<comments>http://push.cx/2009/back-in-chicago#comments</comments>
		<pubDate>Wed, 23 Sep 2009 18:20:48 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Chicago]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1216</guid>
		<description><![CDATA[
A quick, belated post to note that I&#8217;m back in Chicago permanently and continuing to work on my projects. I have a few posts lined up to hopefully resume a regular posting schedule, so let&#8217;s see how it goes.
 ]]></description>
			<content:encoded><![CDATA[<p>
A quick, belated post to note that I&#8217;m back in Chicago permanently and continuing to work on my projects. I have a few posts lined up to hopefully resume a regular posting schedule, so let&#8217;s see how it goes.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1216" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/back-in-chicago/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Serenity Green</title>
		<link>http://push.cx/2009/serenity-green</link>
		<comments>http://push.cx/2009/serenity-green#comments</comments>
		<pubDate>Mon, 22 Jun 2009 12:41:27 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Firefly]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://push.cx/?p=815</guid>
		<description><![CDATA[
Here&#8217;s a common question: Why doesn&#8217;t Joss Whedon&#8217;s Firefly have any Chinese people?



The backstory for Firefly is pretty simple, China and America expanded into space and were the dominant cultures as the resources of Earth were exhausted. Humanity left for a new solar system to make its home and along the way the two cultures [...]]]></description>
			<content:encoded><![CDATA[<p>
Here&#8217;s a common question: Why doesn&#8217;t Joss Whedon&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXJlZmx5XyhUVl9zZXJpZXMp">Firefly</a> have any Chinese people?
</p>

<p>
The backstory for Firefly is pretty simple, China and America expanded into space and were the dominant cultures as the resources of Earth were exhausted. Humanity left for a new solar system to make its home and along the way the two cultures fused into the amalgam depicted in the show.
</p>

<img src="http://push.cx/wp-content/uploads/2009/06/exodus.jpg" alt="Leaving &quot;Earth that Was&quot;" title="Leaving &quot;Earth that Was&quot;" width="720" height="352" class="alignnone size-full wp-image-1200" />

<p>
Why, though, does it depict a culture with Chinese style, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZpcmVmbHljaGluZXNlLmtldmluc3VsbGl2YW5zaXRlLm5ldC9pbmRleC5odG1s">language</a>, and art without any Chinese people? Is it <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yYWNpYWxpY2lvdXMuY29tLzIwMDkvMDIvMTYvam9zcy13aGVkb24tYW5kLXRoZS1ibHVycnktbGluZS1iZXR3ZWVuLWhvbWFnZS1hbmQtYXBwcm9wcmlhdGlvbi8=">cultural appropriation</a>? Outright <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2xpZXJkdW1vYS5saXZlam91cm5hbC5jb20vMzEwMDg2Lmh0bWw=">racism</a>? The vagaries of casting?
</p>

<p>
No, no, of course not. In the proudest tradition of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLmJhdHRsZXN0YXJ3aWtpLm9yZy93aWtpL0JhdHRsZXN0YXJfV2lraTpGYW53YW5raW5n">fanwanking</a>, I&#8217;ve discovered an entirely in-universe explanation. There are dark hints of the answer to this question.
</p>

<p>
In the episode Shindig, River (who knows government secrets she&#8217;s not supposed to) has a minor freakout and tears the labels off some cans of food. Book helps settle things down, saying &#8220;She didn&#8217;t harm much. We&#8217;ll have a few mystery meals.&#8221;
</p>

<div class="left"><nobr><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDYvY2Fucy5qcGc="><img src="http://push.cx/wp-content/uploads/2009/06/cans-300x163.jpg" alt="Tearing the labels off cans" title="Tearing the labels off cans" width="300" height="163" class="size-medium wp-image-1202" /></a>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDYvbXlzdGVyeV9tZWFscy5qcGc="><img src="http://push.cx/wp-content/uploads/2009/06/mystery_meals-300x163.jpg" alt="Mystery meals" title="Mystery meals" width="300" height="163" class="size-medium wp-image-1203" /></a></nobr></div>

<p>
But what a dark expression for such an innocuous comment.
</p>

<p>
In the pilot, May lays out the ship&#8217;s amenities and says they offer &#8220;protein in all the colors of the rainbow&#8221;. So the fare must be pretty bland, Book soon says &#8220;The important thing is the spices. A man can live on packaged food from here &#8217;til Judgment Day if he&#8217;s got enough Rosemary.&#8221;
</p>

<img src="http://push.cx/wp-content/uploads/2009/06/spices.jpg" alt="Talking about spices" title="Talking about spices" width="704" height="384" class="alignnone size-full wp-image-1208" />

<p>
Later in the show it becomes clear that Book isn&#8217;t all he seems to be &mdash; he has a government ID card that gets him prompt service from otherwise hostile bureaucrats and a bounty hunter claims he&#8217;s not really a priest.
</p>

<img src="http://push.cx/wp-content/uploads/2009/06/jayne.jpg" alt="Jayne, armed as usual" title="Jayne, armed as usual" width="280" height="284" class="alignright size-full wp-image-1209" />

<p>
The character Jayne, though, is exactly what he seems. Big, dumb, strong, tough, and heavily armed. Mostly dumb. He has a hard time keeping up in conversations.
</p>

<p>
And yet Jayne speaks and understands Chinese fluently, never even a pause when he or another character switch languages. Does this guy look like he spends his evenings curled up with a language workbook?
</p>

<p>
No, clearly he&#8217;s learned by osmosis, and it&#8217;s not cultural osmosis. Let&#8217;s put the pieces together.
</p>

<p>
Government secrets, dark mutterings from someone who&#8217;s not who he claims to be, multilingual morons. And endless cans of protein.
</p>

<p>
Yes, it&#8217;s what you&#8217;re thinking. The Americans and Chinese may have left Earth together, but the Chinese never arrived. The Americans turned on them and, using the technology behind Spam and other abominations, manufactured canned protein from their companions.
</p>

<p>
This cannibalism is the darkest government secret, the reason River lost her mind and tries futilely to destroy food while a hidden government agent downplays the outburst.
</p>

<p>
The Firefly movie, Serenity, revolves around River&#8217;s knowledge of an atrocity the government has kept secret for years or decades. Maybe River uncovering shocking secrets was going to be a recurring element of the series. With the show canceled, we&#8217;ll never know. But at least now we know why there are no Chinese people on the show.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=815" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/serenity-green/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Redirecting Users&#8217; URLs</title>
		<link>http://push.cx/2009/redirecting-users-urls</link>
		<comments>http://push.cx/2009/redirecting-users-urls#comments</comments>
		<pubDate>Tue, 16 Jun 2009 18:46:38 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[human-readable]]></category>
		<category><![CDATA[URLs]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1196</guid>
		<description><![CDATA[
I got an email in response to an old post on how I designed NearbyGamer&#8217;s discussion URLs. It asked how to create readable URLs for a community site where users might edit those URLs. What happens after users have made lots and lots of edits?



There are two basic strategies for keeping a changing URL pointing [...]]]></description>
			<content:encoded><![CDATA[<p>
I got an email in response to an old post on how I designed <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamer</a>&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvMjAwNy9kaXNjdXNzaW9uLXVybHMtb3BhcXVlLXVzYWJsZS1hbmQtcmVhZGFibGU=">discussion URLs</a>. It asked how to create readable URLs for a community site where users might edit those URLs. What happens after users have made lots and lots of edits?
</p>

<p>
There are two basic strategies for keeping a changing URL pointing to the same content. Either only part of the URL changes and you look things up by the stable piece (as with the slugs in my previous blog post) or you keep track of old identifiers with pointers to their current identifiers.
</p>

<p>
On NearbyGamers, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20vdGFncw==">tags</a> are used to identify what games players are open to playing. But there are a huge number of variations: the game Dungeons and Dragons might be listed as D&#038;D, DND, D&#038;D 4, D&#038;D 4th ed., or many more (and that&#8217;s before spelling errors).
</p>

<p>
To deal with this, I borrowed a mechanism from Wikipedia. Users can edit a tag to redirect it to another (which may not have a redirect set to a third, to prevent all sorts of annoying problems). In short, the Tag object might just be used for its column pointing to another Tag.
</p>

<p>
This is functionally equivalent to having a table of redirects. When a request comes in for a particular Tag, I could check a TagRedirect table to see if that tag appears in the <kbd>from</kbd> column and redirect the visitor to the Tag named by the <kbd>to</kbd> column.
</p>

<p>
Redirects are one of the ways your app will have to scale to meet users&#8217; activity. Thinking about redirects as an explicit table makes it clear you have options for how to deal with it: you could add a date column and expire old entries, or limit the number of redirects one user is allowed to make (perhaps over time), or limit the number of redirects one entity allows. You could even replace this database table with a distributed key/value store like memcached (or preferably something more permanent).
</p>

<p>
So allowing users to edit URLs leads to one of three things: either you don&#8217;t allow them to edit the real identifier, you maintain a table of redirects, or you accept broken links.
</p>

<p>
NearbyGamers also uses the third strategy: if a gamer changes their handle, the URL is updated without any kind of redirecting. I considered redirects, but then no one could ever relinquish a handle.
</p>

<p>
URL design is not easy. Allowing users to influence what a URL will be is often really valuable but adds to the difficulty of designing your URLs. This is one of the interesting bits of computer programming where there isn&#8217;t a single answer, you have to pick your tradeoffs to match your needs.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1196" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/redirecting-users-urls/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Straight-Up Thug Town</title>
		<link>http://push.cx/2009/a-straight-up-thug-town</link>
		<comments>http://push.cx/2009/a-straight-up-thug-town#comments</comments>
		<pubDate>Sat, 13 Jun 2009 23:52:05 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Arlington]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[IL]]></category>
		<category><![CDATA[moving]]></category>
		<category><![CDATA[VA]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1192</guid>
		<description><![CDATA[
This is where I live:





Except for the few shots on the Metro, I recognize pretty much every single shot as within walking distance of my home&#8230; though he left out the Starbucks across the street from me.



In related news, I&#8217;ll be moving back to Chicago on August 1st.
 ]]></description>
			<content:encoded><![CDATA[<p>
This is where I live:
</p>

<object width="560" height="340"><param name="movie" value="http://www.youtube-nocookie.com/v/4T1RMuoQnKo&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/4T1RMuoQnKo&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>

<p>
Except for the few shots on the Metro, I recognize pretty much every single shot as within walking distance of my home&#8230; though he left out the Starbucks across the street from me.
</p>

<p>
In related news, I&#8217;ll be moving back to Chicago on August 1st.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1192" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/a-straight-up-thug-town/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript: The Good Parts</title>
		<link>http://push.cx/2009/javascript-the-good-parts</link>
		<comments>http://push.cx/2009/javascript-the-good-parts#comments</comments>
		<pubDate>Tue, 09 Jun 2009 12:07:33 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[Douglas Crockford]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1112</guid>
		<description><![CDATA[
In JavaScript, there is a beautiful, elegant, highly expressive language that is buried under a steaming pile of good intentions and blunders. The best nature of JavaScript is so effectively hidden that for many years the prevailing opinion of JS was that it was an unsightly, incompetent toy.
p2



I disliked JavaScript until I read some of [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
In JavaScript, there is a beautiful, elegant, highly expressive language that is buried under a steaming pile of good intentions and blunders. The best nature of JavaScript is so effectively hidden that for many years the prevailing opinion of JS was that it was an unsightly, incompetent toy.
<cite>p2</cite>
</blockquote>

<p>
I disliked JavaScript until I read some of Douglas Crockford&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2phdmFzY3JpcHQuY3JvY2tmb3JkLmNvbS8=">articles</a> arguing that it is the world&#8217;s most misunderstood programming language. I pieced together a vision of a nice language burdened by misfeatures and poor implementations. In JavaScript: The Good Parts, Crockford fully realizes that vision in a dense, enjoyable book.
</p>

<p>
If you find yourself writing in JavaScript and not enjoying it, you need to stop and read this book. (Or even if you&#8217;ve just wondered why Steve Yegge <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3N0ZXZlLXllZ2dlLmJsb2dzcG90LmNvbS8yMDA3LzAyL25leHQtYmlnLWxhbmd1YWdlLmh0bWw=">obliquely goes on about it</a>.) The book feels a bit like <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzAxMzExMDM2MjgvP3RhZz1wdXNoY3gtMjA=">Kernighan and Ritchie</a> in that it tersely defines the language and lets the reader work through the implications. I especially appreciate that Crockford assumes a competent reader and rewards patient and thoughtful reading rather than bulking up on exposition and screenshots. It&#8217;s very uncommon in modern writing.
</p>

<p>
The book opens by defining the syntax of JavaScript with a series of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW50YXhfZGlhZ3JhbQ==">railroad diagrams</a> that are far more enjoyable and readable than BNF:
</p>

<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDYvd2hpdGVzcGFjZS5wbmc="><img src="http://push.cx/wp-content/uploads/2009/06/whitespace.png" alt="JavaScript whitespace" title="JavaScript whitespace" width="380" height="260" class="alignnone size-full wp-image-1177" /></a>

<p>
Next it defines objects and functions and derives useful patterns for working in JavaScript. The Module pattern he gives on p41 &#8220;&#8230;can eliminate the use of global variables. It promotes information hiding and other good design practices.&#8221; It&#8217;s a nice piece of code to deal with a personal pet peeve.
</p>

<p>
After the sections on recursion, scope, closures, currying, and memoization I was surprised not to see a section on the Y combinator, which allows creating recursive anonymous functions. There&#8217;s a blog post with a <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Jsb2cuamNvZ2xhbi5jb20vMjAwOC8wMS8xMC9kZXJpdmluZy10aGUteS1jb21iaW5hdG9yLw==">nice derivation</a>, but it seems oddly absent from the book.
</p>

<p>
More glaringly missing, though, is code to copy JavaScript objects and arrays. On p22 he writes &#8220;Objects are passed around by reference. They are never copied.&#8221; and a code comment on p64 explains how some code avoids a related bug, but Crockford never talks about how to create shallow or deep copies of objects and arrays. It is flatly bizarre to see the topic raised and warned about without any giving a solution to an interesting and common JavaScript problem. (I personally use <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VdGlsaXRpZXMvalF1ZXJ5LmV4dGVuZA==">jQuery.extend</a>.)
</p>

<p>
After dealing with objects and functions, Crockford combines them to talk about JavaScript&#8217;s unusual prototypical inheritance, then moves on to a nice explanation of working with arrays and regexps. After talking about the standard library and giving style notes, there are a couple nice appendicies explaining what he left out and why and presenting <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2pzbGludC5jb20=">JSLint</a> for automated detection of common pitfalls.
</p>

<p>
There are a few odd notes like an imprecation against <kbd>continue</kbd> (indeed, none of his code tries to &#8220;fail fast&#8221;) that feels like it must be based on old scars inflicted by manual memory management in C/C++. The only really puzzling oddity was in the chapter surveying the standard types. He gives JavaScript reimplementations of Array&#8217;s pop, push, shift, splice, and unshift methods (but not concat, join, reverse, slice, or sort) for no discernable reason other than a mention on p98 that he&#8217;d wanted to write a self-parser in JavaScript for a chapter he contributed to <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzA1OTY1MTAwNDcvP3RhZz1wdXNoY3gtMjA=">another book</a>.
</p>

<p>
I don&#8217;t think too much about these few oddities, though, it takes a certain amount of chutzpah to distill a beautiful language from a clunky, heavily-abused language and it&#8217;s harmless to see that manifest a bit of quirky style. Mostly I spent my time reading, pondering, and tinkering with the example code. There are some great examples for creating objects and working with the prototypical inheritance, and the array sorting code (p80) is an especially inspiring bit of useful code.
</p>

<p>
The only serious negative of the book is the incessant and distracting typos. There are countless small code layout issues, bad line breaks in comments (p39), weird indentation (p40), added line breaks in code (p41), occasional camelCase. There are also a few typos in the code segments that will cause weird exceptions or, worse, silent failures. If the book didn&#8217;t have so damn much useful content I&#8217;d suggest waiting for a third printing to correct these errors (I read the Sept 2008 printing, look for a [9/08] or later in the lower-right corner of the copyright page). The poor copyediting is compounded by O&#8217;Reilly&#8217;s awful <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL29yZWlsbHkuY29tL2NhdGFsb2cvOTc4MDU5NjUxNzc0OC9lcnJhdGEv">errata page</a>; you can&#8217;t filter by printing and it includes many duplicates, making for a frustrating slog through clutter to track down why a particular sample doesn&#8217;t run.
</p>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzA1OTY1MTc3NDIvP3RhZz1wdXNoY3gtMjA="><img src="http://push.cx/wp-content/uploads/2009/06/javascript.gif" alt="Front cover of JavaScript: The Good Parts" title="Front cover of JavaScript: The Good Parts" width="182" height="240" class="alignright size-full wp-image-1180" /></a>
In spite of the flaws, I strongly recommend JavaScript: The Good Parts to anyone who regularly works with JavaScript. If it seems that I&#8217;m not making a good case for it, it&#8217;s because the power of the book is the enrichment gained from working through its examples and the negatives are easy to diagnose and explain. Read it. You&#8217;ll gain a new perspective of the language and refresh your toolbox with new techniques. Most importantly, you&#8217;ll stop being annoyed at writing JavaScript.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1112" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/javascript-the-good-parts/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Investigating Theme Spam</title>
		<link>http://push.cx/2009/investigating-theme-spam</link>
		<comments>http://push.cx/2009/investigating-theme-spam#comments</comments>
		<pubDate>Fri, 05 Jun 2009 12:45:23 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[decoding]]></category>
		<category><![CDATA[obfuscation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[reverse engineering]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1115</guid>
		<description><![CDATA[
If you&#8217;re interested in what spammers are up to these days, check out Snarky&#8217;s blog post Evil Eval() investigating the obfuscated spam code hidden in the new WordPress theme he downloaded.



I&#8217;d be really interested to see how many of the themes on various WordPress sites include function calls like eval, call_user_func, base64_decode, unpack, ord, chr, [...]]]></description>
			<content:encoded><![CDATA[<p>
If you&#8217;re interested in what spammers are up to these days, check out Snarky&#8217;s blog post <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3RoZXNuYXJreS5jb20vMjAwOS8wNi8wNC9ldmlsLWV2YWwv">Evil Eval()</a> investigating the obfuscated spam code hidden in the new WordPress theme he downloaded.
</p>

<p>
I&#8217;d be really interested to see how many of the themes on various WordPress sites include function calls like eval, call_user_func, base64_decode, unpack, ord, chr, etc. as an indicator of hidden spam.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1115" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/investigating-theme-spam/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Athenge Ops Playtested</title>
		<link>http://push.cx/2009/athenge-ops-playtested</link>
		<comments>http://push.cx/2009/athenge-ops-playtested#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:55:05 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[playtesting]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1084</guid>
		<description><![CDATA[
Over the weekend Snarky dropped by for some ribs and playtesting. I think of early playtesting as scientific experimentation and had a specific question I wanted the session to answer: is the design of the core gameplay, op combat, any fun?



It&#8217;s pretty easy to design a game looks fun on paper but doesn&#8217;t actually work [...]]]></description>
			<content:encoded><![CDATA[<p>
Over the weekend <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3RoZXNuYXJreS5jb20=">Snarky</a> dropped by for some ribs and playtesting. I think of early playtesting as scientific experimentation and had a specific question I wanted the session to answer: is the design of the core gameplay, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">op</a> combat, any fun?
</p>

<p>
It&#8217;s pretty easy to design a game looks fun on paper but doesn&#8217;t actually work in practice. Maybe you have too many or too few rules, maybe players never have to make a serious decision, maybe it just feels&#8230; off, which means your playtesters are too polite to tell you it&#8217;s not fun.
</p>

<p>
So, we played. And quickly discovered poorly-defined terms, gaps in the rules, bad instructions (up there with <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL29yYWNsZS53aXphcmRzLmNvbS9zY3JpcHRzL3dhLmV4ZT9BMj1pbmQwMjA3YiYjMDM4O0w9bXRnLWwmIzAzODtEPTEmIzAzODtQPTQ0Mw==">Time Walk</a>), worthless options, and gigantic imbalances.
</p>

<p>
But it was fun.
</p>

<p>
We spent as much time talking and tinkering with the design as we did playing, but the fundamental gameplay mechanic was, thankfully, fun. So I know it&#8217;s worthwhile to spend the time developing that for the web so it can get lots of playtesting and improvement and balancing.
</p>

<p>
This is a nice milestone, so I&#8217;m going to mention that I&#8217;ve picked a name for the game: Athenge.
</p>

<p>
It doesn&#8217;t really mean anything, I was playing around with words and my brain connected the high-tech @ sign in email addresses to prehistoric <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZW5nZQ==">henges</a>. It&#8217;s short, spellable, pronounceable, doesn&#8217;t sound like any offensive words, and, most importantly, the domain name was available. I&#8217;ve tagged my earlier posts on the web game, so they&#8217;re collected on the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=L3RhZy9hdGhlbmdl">tag page</a> if you&#8217;re curious.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1084" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/athenge-ops-playtested/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Developer Day Notes</title>
		<link>http://push.cx/2009/developer-day-notes</link>
		<comments>http://push.cx/2009/developer-day-notes#comments</comments>
		<pubDate>Sat, 30 May 2009 16:26:18 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Developer Day]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1039</guid>
		<description><![CDATA[
I&#8217;m attending Developer Day DC and taking notes. They&#8217;re fairly rough and sort of only cover the things that catch my attention, but here they are in the hopes that other people find them useful:



  Developer Day Notes 1: Opening Keynote
  Developer Day Notes 2: Give Your Sites a Push with Comet
  [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;m attending <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RldmVsb3Blci1kYXkuY29t">Developer Day DC</a> and taking notes. They&#8217;re fairly rough and sort of only cover the things that catch my attention, but here they are in the hopes that other people find them useful:
</p>

<ul>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy0xLW9wZW5pbmcta2V5bm90ZQ==">Developer Day Notes 1: Opening Keynote</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy0yLWdpdmUteW91ci1zaXRlcy1hLXB1c2gtd2l0aC1jb21ldA==">Developer Day Notes 2: Give Your Sites a Push with Comet</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy0zLW5hdHVyYWwtbGFuZ3VhZ2UtYWNjZXB0YW5jZS10ZXN0aW5n">Developer Day Notes 3: Natural Language Acceptance Testing</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy00LWEtcnVieS0xOS1jYXNlLXN0dWR5LW9uLXVwZ3JhZGluZy1yY292">Developer Day Notes 4: A Ruby 1.9 Case Study on Upgrading RCov</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy01LWxpZ2h0bmluZy10YWxrcw==">Developer Day Notes 5: Lightning Talks</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy02LWJyb3dzZXItYmFzZWQtdmlzdWFsLXByb2dyYW1taW5nLXdpdGgtbGlseS1hbmQtdGhlLW1vbm9tZQ==">Developer Day Notes 6: Browser-Based Visual Programming with Lily and the Monome</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy1qYXZhc2NyaXB0LXRlc3RpbmctaW4tcmFpbHM=">Developer Day Notes 7: JavaScript Testing in Rails</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy04LW1ha2luZy1saWZlLW1vcmUtZW5qb3lhYmxlLXdpdGgtcHl0aG9u">Developer Day Notes 8: Making Life More Enjoyable With Python</a></li>
  <li><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvZGV2ZWxvcGVyLWRheS1ub3Rlcy05LXByb2dyYW1taW5nLWluLWludGVyZXN0aW5nLXRpbWVz">Developer Day Notes 9: Programming In Interesting Times</a></li>
</ul>

<s>more TK as the day progresses</s>

<p>
I&#8217;m not taking notes at Happy Hour, so that&#8217;s all. A very friendly little one-day conference, lots of fun. Thanks to <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZ2V0LmNvbQ==">Viget</a> for planning and hosting!
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1039" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/developer-day-notes/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Client Logging to AWS</title>
		<link>http://push.cx/2009/client-logging-to-aws</link>
		<comments>http://push.cx/2009/client-logging-to-aws#comments</comments>
		<pubDate>Fri, 29 May 2009 12:34:33 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Elastic MapReduce]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[S3]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1011</guid>
		<description><![CDATA[
Over on the BBGameZone forums helderic asked how to deal with exploits:



Lets say player A finds a exploit to duplicate a item and decides to exploit it. He continues to exploit it for a few weeks then player B finds the bug and reports it.How would you catch player A? And what are some systems [...]]]></description>
			<content:encoded><![CDATA[<p>
Over on the BBGameZone forums helderic <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2NvbW11bml0eS5iYmdhbWV6b25lLm5ldC9pbmRleC5waHAvdG9waWMsMjE0Ny5tc2cxMzY5OS5odG1s">asked</a> how to deal with exploits:
</p>

<blockquote>
Lets say player A finds a exploit to duplicate a item and decides to exploit it. He continues to exploit it for a few weeks then player B finds the bug and reports it.<br />How would you catch player A? And what are some systems to watch/catch exploits/bugs/cheaters.
</blockquote>

I replied:

<blockquote>
<p>
Logging, logging, logging.
</p>

When a player advances a level, log it. When a player buys something substantial, log it. When a player transfers items or money to another player, log it. When a player makes any significant achievement, log it. Then do things like count how many items the average player gets in a day or the average time it takes to go from level 9 to 10. Look at whoever&#8217;s doing things way faster or stronger.
</p>

<p>
On top of that, do a daily snapshot of a player&#8217;s stats (money, level, items, etc.) in case your other logs fail to notice where the resources are coming from. Then you do the same sort of analysis.
</p>

<p>
If you don&#8217;t have any logs and you want to find who abused an exploit you&#8217;ve only just realized, you&#8217;re going to have a hard time. If duping an item requires visiting a particular page, or visiting two pages in quick succession, your web server logs will have *something* you can look at, you can compare player IP to any suspicious entries in your access.log. If only a particular item can be duped, look in the db for who has lots of them &#8212; actually, you can do this for *any* item.
</p>

<p>
What you always have in your favor is that cheaters quickly get greedy when they realize what they&#8217;ve got and think they&#8217;re getting away with it. They won&#8217;t just go up a level now and then, they&#8217;ll go up ten today. They won&#8217;t produce a handful of extra gold for the occasional purchase, they&#8217;ll produce a million. Look for the outliers.
</p>
</blockquote>

<p>
Logging isn&#8217;t just useful for catching cheaters, it tells you a lot of important things about your game. Are players doing well? Do players use the newly-deployed feature? What signs are there before someone abandons their account?
</p>

<p>
There are a lot of great things you can learn from logging and analytics and I plan to get into them in the coming weeks. This post is about a smaller topic, though:
</p>

<p>
<em>How do you deal with all those logs?</em> Aside from storing them all, processing them could be a lot of work.
</p>

<p>
One common answer is <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL3MzLw==">Amazon S3</a> (with <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL2VjMi8=">EC2</a> for processing) which stores ridiculous amounts of data if you don&#8217;t mind some network latency. That&#8217;s nicely suited for logs where you rarely actually want to see the damn things, you just want to see reports and compilations and other whatnot.
</p>

<p>
This is such a nice obvious idea that Amazon has fairly recently created <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL2VsYXN0aWNtYXByZWR1Y2Uv">Elastic MapReduce</a>, which makes it fall-down easy to run <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2hhZG9vcC5hcGFjaGUub3JnL2NvcmUv">Hadoop</a> on your data in S3. Hadoop is, outside of the Google <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvMjAwNy9nb29nbGUtem9tYmllcw==">Mothership</a>, quickly becoming the standard way to sift through terabytes of data for the useful bits. Elastic MapReduce looks like such a win that I&#8217;m not really looking hard at other options for my game anymore. (After looking at all the sysadmin work Amazon Elastic MapReduce saves my only surprise is that they charge 15% more for it than the regular EC2. Now that they&#8217;ve built EMR the cost is down to ongoing maintenance for a strong driver of S3/EC2 use, why give the big customers any more incentive to decide they&#8217;d save money moving it in-house?)
</p>

<p>
So I was kicking around the question of how you get this data up to S3 with <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2lkZW1wb3QubmV0L2Jsb2cv">another developer</a> and it seems like after you <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL2ltcG9ydGV4cG9ydC8=">import any existing data</a> you&#8217;d probably want to minimize the precious outgoing bandwidth of your phenomenally successful game&#8217;s data center. It occurred to me that you could parallelize much of the logging of user actions.
</p>

<p>
The basic idea is to create logs on both the server and client, have the client use their bandwidth sending logs to S3, use checksums from the server to make sure clients aren&#8217;t doing anything funny, and fall back to uploading the server&#8217;s authoritative log if so. There are two basic strategies:
</p>

<p>
First, clients could log directly to S3 using <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RvY3MuYW1hem9ud2Vic2VydmljZXMuY29tL0FtYXpvblMzLzIwMDYtMDMtMDEvVXNpbmdIVFRQUE9TVC5odG1s">Browser-Based POST</a>. Your app gives the client a token that allows them to upload a specific amount of data to a specific place in S3 and the app does an HTTP POST of data. You&#8217;d probably want to do this on a regular basis (in case the client suddenly drops offline) and have a process compile them into larger logs.
</p>

<p>
Alternately, you host a web server or other daemon on EC2 (probably using a <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL2VjMi9mYXFzLyNXaGF0X2lzX2FfUmVzZXJ2ZWRfSW5zdGFuY2U=">reserved instance</a> to <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F3cy5hbWF6b24uY29tL2VjMi8jcHJpY2luZw==">lower the cost</a>) to process and store the logs as they&#8217;re delivered. I like this slightly less than the previous store-and-process model that deals with failure and fits Hadoop&#8217;s model a little better.
</p>

<p>
This seems like a handy way to cut down on one expense, though overly-complex for my initial needs. I&#8217;m nearly certain I&#8217;ll use Elastic MapReduce for log processing, though.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1011" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/client-logging-to-aws/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>City of Heroes as a Pastime</title>
		<link>http://push.cx/2009/city-of-heroes-as-a-pastime</link>
		<comments>http://push.cx/2009/city-of-heroes-as-a-pastime#comments</comments>
		<pubDate>Wed, 27 May 2009 18:09:31 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[City of Heroes]]></category>
		<category><![CDATA[David Sirlin]]></category>
		<category><![CDATA[elder game]]></category>
		<category><![CDATA[min-maxing]]></category>
		<category><![CDATA[Mission Architect]]></category>
		<category><![CDATA[muds]]></category>
		<category><![CDATA[NCSoft]]></category>
		<category><![CDATA[player-generated content]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1014</guid>
		<description><![CDATA[
Last month NCSoft added Mission Architect to City of Heroes, a tool for players to build and share missions that become part of the game. Opening the doors to player-created content &#8212; especially that gives an in-game benefit &#8212; is a huge risk that I think the world of them for taking. Muds have struggled [...]]]></description>
			<content:encoded><![CDATA[<p>
Last month NCSoft added Mission Architect to City of Heroes, a tool for players to build and share missions that become part of the game. Opening the doors to player-created content &mdash; especially that gives an in-game benefit &mdash; is a huge risk that I think the world of them for taking. Muds have struggled with this for years and I&#8217;ve only seen the muds without strong advancement and power mechanics (usually none at all) allowing players to build areas.
</p>

<p>
A <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy53aXJlZC5jb20vZ2FtZWxpZmUvMjAwOS8wNS9taXNzb25fYXJjaGl0ZWN0X2FidXNl">Wired article</a> provides some evidence that Mission Architect has been, in the opinion of the game&#8217;s lead designer Matt Miller, abused to create unfairly rewarding missions for powerlevelers. He said:
</p>

<blockquote>
Some of you have taken the stance of “how does powerlevelling hurt the game?” and “shouldn’t I be able to play the game the way that I want?” What we want to make clear is in order to keep the game fair, balanced, and challenging, we have to maintain a risk:reward ratio. This is a ratio we’ve spent years attempting to achieve. Mission Architect is not immune to this, and we are taking swift action to see that the problems players are seeing and are being exposed to are remedied.

<cite><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2JvYXJkcy5jaXR5b2ZoZXJvZXMuY29tL3ByaW50dGhyZWFkLnBocD9Cb2FyZD1EZXYmIzAzODttYWluPTEzNDI3MzAwJiMwMzg7dHlwZT1wb3N0">board post</a></cite>
</blockquote>

<p>
This is an odd statement. I understand the &#8220;fair&#8221; comment, it sounds like a lot of the pushback is coming from players who are outraged that other players are able to reach the endgame content with a significantly reduced time investment. But &#8220;balanced&#8221; and &#8220;challenging&#8221; shouldn&#8217;t be affected by powerleveling, it should only mean that players arrive at the balanced and challenging endgame content faster.
</p>

<p>
Another MMORPG creator, Eric Heimburg, put it differently:
</p>

<blockquote>
Once you reached that top of the hill, if there’s nothing left to do or see, players are likely to move on. Length of enjoyment (equals) amount of money earned, so developers have a strong incentive to keep players from gaining power and levels too quickly.
</blockquote>

<p>
The very first thing that popped into my head after I read these two quotes was:
</p>

<blockquote>
A multiplayer game is deep if it is still strategically interesting to play after expert players have studied and practiced it for years, decades, or centuries.
<cite><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L2FydGljbGVzL2JhbGFuY2luZy1tdWx0aXBsYXllci1nYW1lcy1wYXJ0LTEtZGVmaW5pdGlvbnMuaHRtbA==">Balancing Multiplayer Games</a></cite>
</blockquote>

<p>
If the City of Heroes endgame is so shallow that it isn&#8217;t balanced or challenging or enjoyable, the solution is not to stop people from getting to it so quickly. Miller said:
</p>

<blockquote>
If we say that the definition (of abuse) is ‘you gained 4 levels in under 30 minutes’, then someone will make sure that they gain 4 levels in 31 minutes, so they can claim they were within the allowed limits and not abusing.
</blockquote>

<p>
Sirlin nailed that one, too, in startlingly similar terms (highlighted):
</p>

<blockquote>
<p>
The thing to be banned must be able to be “completely defined.” Imagine that in a fighting game, repeating a certain sequence of five moves over and over is the best tactic in the game. Further suppose that doing so is “taboo” and that players want to ban it. There is no concrete definition of exactly what must be banned. Can players do three repetitions of the five moves? What about two reps? What about one? What about repeating the first four moves and omitting the fifth? Is that okay? <em>The game becomes a test of who is willing to play as closely as possible to the “taboo tactic” without breaking the (arbitrary) letter of the law defining the tactic.</em>
</p>

<p>
Or in a first-person shooter game, consider the notion of banning “camping” (sitting in one place for too long). No friendly agreement between the players is necessary for the ban, which at least means it’s enforceable. The server can monitor the positions of players, and it knows exactly who breaks the rule and can hand out penalties accordingly. The ban is enforceable, but the problem is being able to completely define camping. <em>If camping is defined as staying within one zone for 3 minutes, and if it really is the best tactic, then sitting in that zone for 2 minutes 59 seconds becomes the best tactic. It’s a slippery slope because there will always exist camping tactics arbitrarily close to the specific kind of camping that is banned.</em>
</p>
<cite><a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L3B0dy1ib29rL3doYXQtc2hvdWxkLWJlLWJhbm5lZC5odG1s">What Should Be Banned</a></cite>
</blockquote>

<p>
A rule is not only arbitrary but secret and may cause players to be permanently banned from using the Mission Architect or playing the game at all is a really bad sign. It implies that the gameplay in City of Heroes is so broken that the game&#8217;s developers don&#8217;t know what&#8217;s wrong and can&#8217;t make a game that supports long-term, high-level play (that is, the most profitable play). Miller&#8217;s refusal to release a risk:reward ratio sounds more like City of Heroes hasn&#8217;t internally defined one and is only trying to staunch the increased exhaustion of players.
</p>

<p>
I don&#8217;t know City of Heroes, and I don&#8217;t know its creators, so I&#8217;m not going to say that this is certainly the case or that they fail at game design. That&#8217;d be obviously false, CoH has a large and probably generally quite satisfied userbase. Why are so many people playing so happily if the gameplay is broken?
</p>

<p>
The answer I can see is that Sirlin&#8217;s experience and topic choice is games that support high-level tournament play and City of Heroes isn&#8217;t trying to be that. It&#8217;s happy to be more of an unserious entertainment, a pastime, than a proving ground for people to challenge and rank their skills. Tournament games can be pastimes, but the reverse is almost never true.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=1014" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/city-of-heroes-as-a-pastime/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Karma, Farming and Play Styles</title>
		<link>http://push.cx/2009/karma-farming-play-styles</link>
		<comments>http://push.cx/2009/karma-farming-play-styles#comments</comments>
		<pubDate>Tue, 26 May 2009 12:43:31 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[farming]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[karma]]></category>
		<category><![CDATA[spreadsheet games]]></category>

		<guid isPermaLink="false">http://push.cx/?p=978</guid>
		<description><![CDATA[
The Karma effect and self-scaling universes applies the old management saying (and game design maxim) &#8220;You get what you measure&#8221; to MMORPG leaderboards:



Each of the massively multiplayer browser games I mentioned earlier capitalizes extensively on this Karma effect, to the point where some of them don’t even bother to have a graphical side anymore: all [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RpY2VhdHRhY2sud29yZHByZXNzLmNvbS8yMDA5LzA1LzI0L3RoZS1rYXJtYS1lZmZlY3QtYW5kLXNlbGYtc2NhbGluZ3VuaXZlcnNlcy8=">The Karma effect and self-scaling universes</a> applies the old management saying (and game design maxim) &#8220;You get what you measure&#8221; to MMORPG leaderboards:
</p>

<blockquote>
Each of the massively multiplayer browser games I mentioned earlier capitalizes extensively on this Karma effect, to the point where some of them don’t even bother to have a graphical side anymore: all you have and play with, is tables with different rankings and statistics that define how well you do: amount of resources, number of bases, successful attacks executed… and that’s it. Playing the game merely means issuing commands with a button, and if your command worked those numbers get higher. And, boy, do you happily obsess over getting them up over time. Indeed one could say that games like these use only the Karma effect, throw a big fat SQL table and a user profile at it, sit back and watch user loyalty go through the roof.
</blockquote>

<p>
It would be funny if it weren&#8217;t dead true. Most of these games feel like you&#8217;re using Excel to solve linear programming problems with starships as your desktop background while teenage psychopaths misspell obscenities at you.
</p>

<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDUvc3ByZWFkc2hlZXRfZ2FtZXMucG5n"><img src="http://push.cx/wp-content/uploads/2009/05/spreadsheet_games-600x375.png" alt="Spreadsheet Games" title="Spreadsheet Games" width="600" height="375" class="aligncenter size-medium content wp-image-993" /></a>

<p>
Yeah, it&#8217;s that much fun. Now imagine it goes on for <em>weeks</em>. I used to call these &#8220;spreadsheet games&#8221; and only settled on <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">farming games</a> because at least it&#8217;s a verb that describes what happens to you.
</p>

<p>
I think the only think worse than how awful some of these games are is the fact they have tens of thousands of signups.
</p>

<p>
No shit, quite often tens to hundreds of thousands of signups. Not active players, of course, sane people give up pretty quickly on these games. But the games are successes in that they find an audience that can support their expenses.
</p>

<p>
I disagree, though, with the idea that scores and rankings work anywhere:
</p>

<blockquote>
In society this number is often our salary, but for example in Reddit this is called ‘Karma’ and the founders are so aware of the psychological effect they don’t even bother to give an actual meaning to it! And they don’t need to: people will do what it takes to boost their Karma. So let’s dub this – extremely strong – effect the Karma Effect[...]
</blockquote>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzE1ODQ1MDQyOTMvP3RhZz1wdXNoY3gtMjA="><img border="0" src="http://push.cx/wp-content/uploads/2009/05/51amqpmqeyl_sl160_.jpg" alt="21st Century Game Design" title="21st Century Game Design" width="127" height="160" class="alignright size-full wp-image-997" /></a><img src="http://www.assoc-amazon.com/e/ir?t=puscx-20&#038;l=as2&#038;o=1&#038;a=1584504293" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

There&#8217;s an awesome book titled <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzE1ODQ1MDQyOTMvP3RhZz1wdXNoY3gtMjA=">21st Century Game Design</a> that did &#8212; no kidding here &#8212; actual research into gamers and did a <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbHVzdGVyX2FuYWx5c2lz">cluster analysis</a> to break down gamers into four groups (eat your heart out, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5tdWQuY28udWsvcmljaGFyZC9oY2RzLmh0bQ==">Richard Bartle</a>).
</p>

<p>
Their four clusters are Conquerors, Managers, Wanderers, and Participants. Conquerors want to dominate the game or other players and are motivated by (and even take pleasure in) anger, frustration, and boredom. Managers want to master gameplay more than win, and they enjoy plot and politics. Wanderers want experiential games that can explore, tinker with, and perhaps display finesse. Participants are not frequently gamers at all but are heavy socializers when they do, enjoying collaboration and shared emotion. (And grab the book, this is a small piece of the good content in this book; I took 5 pages of notes from it.)
</p>

<p>
Conquerors are the sterotypical &#8220;hardcore gamers&#8221; that comprise the bulk of gaming culture both by weight and volume (and that&#8217;s volume as in taking up lots of space and volume as in loud as hell). These karma, spreadsheet, farming games appeal squarely to the conqueror demographic with confrontation, violence, stark functionality, numeric goals, and explicit ranking.
</p>

<p>
Nobody&#8217;s exclusively in one of these clusters so high scores can pull at a lot of people, but they&#8217;re not nearly as universal a motivator as hearing the words &#8220;Hey, that was a nice move&#8221; from someone you respect. It&#8217;s harder to build a game that drives that kind of social interaction, but I think it&#8217;s more rewarding.
</p>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlL2VudHJ5LnBocD9pZD01OQ=="><img src="http://push.cx/wp-content/uploads/2009/05/entry059-pool.png" alt="Mechanic 59: Pools and Controls" title="Mechanic 59: Pools and Controls" width="277" height="183" class="alignright size-full wp-image-1000" /></a>
The blog post also shares some ideas about nesting the game within itself. When working on my game design I worked out how a single turn is nested into a match, which is nested into the base-building game, which is nested into the overall game community. It was a nice exercise in thinking of the entire system as a game to ensure it&#8217;s fun at multiple levels of abstraction from the core second-to-second mechanics. The ideas he comes up with remind me a lot of some of the ideas in Sean Howard&#8217;s <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlLw==">300 Hundred Mechanics</a> project, especially the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlL2VudHJ5LnBocD9pZD0xNw==">Composition Army</a> and Procedurally-Generated Content Cards <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlL2VudHJ5LnBocD9pZD01Nw==">1</a>, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlL2VudHJ5LnBocD9pZD01OA==">2</a>, and <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zcXVpZGkubmV0L3RocmVlL2VudHJ5LnBocD9pZD01OQ==">3</a>.
</p>

<p class="aside">
(My thanks to David Bremner for his help in supplying the Windows desktop for the screenshot.)
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=978" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/karma-farming-play-styles/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Feedback and WeeWar&#8217;s Game Design</title>
		<link>http://push.cx/2009/feedback-in-weewar-game-design</link>
		<comments>http://push.cx/2009/feedback-in-weewar-game-design#comments</comments>
		<pubDate>Mon, 25 May 2009 12:35:45 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[DiceAttack]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[WeeWar]]></category>

		<guid isPermaLink="false">http://push.cx/?p=951</guid>
		<description><![CDATA[
I talked about positive feedback loops in the farming genre post but I was in rant mode and sort of glossed over the definition: 



When you’re collecting resources and upgrading your cities there’s a positive feedback loop at work: you can build a bigger sawmill, hire more children to mine, reach a faster warp factor [...]]]></description>
			<content:encoded><![CDATA[<p>
I talked about positive feedback loops in the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">farming genre</a> post but I was in rant mode and sort of glossed over the definition: 
</p>

<blockquote>
When you’re collecting resources and upgrading your cities there’s a positive feedback loop at work: you can build a bigger sawmill, hire more children to mine, reach a faster warp factor on your starships, all so you can bring in more resources. Games often address this by making upgrade costs grow multiplicatively or exponentially while the returns increase linearly, but usually the rate of return grows faster than the rate costs increase. If that last sentence made your eyes glaze over, think of compound interest: the more you have, the faster you earn more. The rich get richer. 
</blockquote>

<p>
I traded email with Wouter Smet, creator of the web game <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RpY2VhdHRhY2suY29t">DiceAttack</a>. We talked a little about WeeWar and that got me thinking about positive feedback loops because it has one of the <em>worst</em> positive feedback loops I&#8217;ve seen. I&#8217;d like to give a proper definition and use WeeWar as an exercise in game design.
</p>

<p>
Here&#8217;s the start of a game of WeeWar. I&#8217;m going to use screenshots to explain some concepts, but you should sign up (it&#8217;s free) and play a game or few against the AI to get a feel for it. To save the pluralization hassles and parenthetical caveats, I&#8217;m going to write about WeeWar as if it were only two-player (as it&#8217;s most commonly played) rather than multiplayer free-for-all. Everything works the same except that it&#8217;s easier to explain myself and give examples. Remember, you win by defeating all of your opponent&#8217;s units and capturing all the bases.
</p>

<img src="http://push.cx/wp-content/uploads/2009/05/start.png" alt="Game start" title="Game start" width="304" height="242" class="size-full important wp-image-955" />

<p>
<i>Feedback</i> is the game&#8217;s response to player actions. There&#8217;s UI feedback, where clicking a unit highlights the places I can move it to:
</p>

<img src="http://push.cx/wp-content/uploads/2009/05/selection.png" alt="Selection of a unit" title="Selection of a unit" width="190" height="171" class="size-full important wp-image-954" />

<p>
<img src="http://push.cx/wp-content/uploads/2009/05/building_tank.png" alt="Building a tank" title="Building a tank" width="112" height="86" class="alignright size-full wp-image-952" />
<img src="http://push.cx/wp-content/uploads/2009/05/capturing.png" alt="Capturing a base" title="Capturing a base" width="115" height="87" class="alignright size-full wp-image-953" />
But in this post I&#8217;m only talking about game feedback, the in-game response to player actions, like how moving my trooper onto the neutral base starts the capturing process or I spend credits to build a tank.
</p>

<p>
A feedback <i>loop</i> is when the feedback affects itself. Each base I capture earns the income and provides the staging area to produce more troopers to capture bases. You can really see this in effect if you play the <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3dlZXdhci5jb20vbWFwLzc=">City Sprawl</a> map, every game opens with a flurry of capturing bases and producing more troopers as quickly as possible.
</p>

<img src="http://push.cx/wp-content/uploads/2009/05/city_sprawl.png" alt="City Sprawl" title="City Sprawl" width="496" height="398" class="important size-full wp-image-963" />

<p>
<img src="http://push.cx/wp-content/uploads/2009/05/troopers_on_bases.png" alt="Troopers on bases" title="Troopers on bases" width="112" height="86" class="alignright size-full wp-image-964" />
Feedback is <i>positive</i> or <i>negative</i>. The base/trooper example is a positive feedback loop, each time it happens it makes it more likely it will happen again. Negative feedback isn&#8217;t something bad happening to a player, it&#8217;s a change that makes it less likely for other changes to occur. Let me make the distinction clear:
</p>

<p>
Losing a unit is negative in the sense that it&#8217;s bad, but it&#8217;s not negative feedback. Losing a unit is a positive feedback loop, each loss makes future losses more likely because you have reduced attack power and you lose opportunities to use the bonus of attacking an enemy unit with several units in one turn. Losing a unit would be negative feedback if each loss made future loss less likely, perhaps by increasing the health of all your remaining units or teleporting the attacker backwards.
</p>

<p>
As far as I can see WeeWar doesn&#8217;t have negative feedback, let alone negative feedback loops, and I&#8217;ll talk about why this is bad in a bit. 
</p>

<p>
<img src="http://push.cx/wp-content/uploads/2009/05/cheesy_explosion.png" alt="Explosion mocukup" title="Explosion mocukup" width="119" height="99" class="alignright size-full wp-image-973" />
Feedback can be weak, strong, or anywhere in-between. To make the unit loss loop weaker the lost unit could be rebuildable by a special repair unit or available at reduced price back at the base, or heal the unit and send it back to a staging area behind the base that constructed it. To make it stronger, we could add an explosion so that destroying a tank damages the allied units touching it, or make a unit&#8217;s defense depend on how many allied units they&#8217;re within a hex or two of.
</p>

<p>
<img src="http://push.cx/wp-content/uploads/2009/05/chess.jpg" alt="Thinking about chess" title="Thinking about chess" width="240" height="240" class="alignright size-full wp-image-971" />
Most multiplayers games have feedback. Some racing games and party games don&#8217;t; nothing you do will affect how quickly your opponent runs a mile. Chess is interesting in that losing pieces is such weak feedback loop; the ease of taking pieces and importance of position and arragement mean that an individual piece doesn&#8217;t count for as much.
</p>

<p>
Back to WeeWar. Bases are a <i>zero-sum resource</i>, each base you capture is a base I lose. (This is true despite the initial expansion into &#8220;neutral&#8221; bases, each is a potential resource that players are directly competing for.) Zero-sum resources tend to come with strong positive feedback loops, and WeeWar is a perfect example of this.
</p>

<p>
Every base on a map is worth the same amount of income. That amount differs between maps but usually ranges between more than enough to produce the smallest unit and enough to buy a mid-sized unit. Most battles involve four or five units on a side, so the ability for each base to produce an entire unit means that bases are quite valuable.
</p>

<p>
In fact, they&#8217;re generally so valuable that capturing one single base from your opponent ensures victory. The battle may rage on for many turns after but the capturing player will almost never lose the lead. The positive feedback loop is too strong for anything else to matter.
</p>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy82OTc2ODg2M0BOMDAvMzU0MTkzOTgxNi8="><img src="http://push.cx/wp-content/uploads/2009/05/trench_warfare.jpg" alt="Trench Warfare" title="Trench Warfare" width="200" height="253" class="alignright size-full wp-image-975" /></a>
So in WeeWar you don&#8217;t win by capturing bases, you win by capturing a single base. The gameplay is all about the push back and forth between units, which has been very finely tuned because it&#8217;s gotten so much attention. I don&#8217;t find WeeWar fun because I expect to be pushing the other player back and forth, maneuvering to flank or retreat. Instead it feels more like the meat grinder of trench warfare, trying to stay one step ahead of the rock-paper-scissors unit balance while rotating injured units out and producing fresh ones. I never feel like I have significant choices, just a formula to follow.
</p>

<p>
Since the game isn&#8217;t really about capturing bases, I&#8217;d expect the most successful maps to provide each player with a cluster of bases to defend with significant terrain between them to engage in battle in. This <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3dlZXdhci5jb20vbWFwcy9wb3B1bGFy">isn&#8217;t currently the case</a>, the list is dominated by novelty maps and the maps the game included before the map editor was public. I think is a function of the newness of the map editor and the fact that I can&#8217;t restrict the view to see only what maps are most popular among elite players (who want to play on the best-balanced maps).
</p>

<p>
So, can I imagine how to remake WeeWar more to my liking?
</p>

<p>
With the game so <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3dlZXdhci5jb20vc3BlY2lmaWNhdGlvbnMjVW5pdHM=">finely balanced</a>, I&#8217;d probably want to introduce more randomness. Let battles be less predictable. Then remove many of the units that are just upgraded versions of each other, like the set of Tank, Heavy Tank, Berserker. Maybe salt in some special abilities to units, like being able to freeze an enemy unit in place for a turn, stop them from attacking, add to the defense of neighboring units, etc. The abilities would make units more interdependent so that you build battle groups instead of send out single units so often, and you&#8217;d have to re-balance and change your groups as units are lost. The goal here is to make play more varied, with more strategies and options than just hitting your opponent. 
</p>

<p>
Next, I&#8217;d reduce the importance of bases by making the win condition about capturing and controlling otherwise useless immobile flags on the map. Then it&#8217;s nice to capture and hold bases, but not overwhelmingly important. The player has to decide between taking flags or taking bases the opponent to slow them down from taking flags. Another approach would be to make it possible for the player to construct their own bases, making the game a balance between economic and military expansion (worked pretty well for StarCraft).
</p>

<p>
Or maybe change nothing except replace alternating turns with simultaneous turns (my <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">current favorite</a> cure-all).
</p>

<p>
I&#8217;m not going to claim that these ideas are The Perfect Solution, just that I think they&#8217;re decent options for improving the gameplay. This calls for lots of experimentation and playtesting. My real goal with throwing these ideas out is to keep exercising my analytical and creative game design skills as I work on my game design.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=951" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/feedback-in-weewar-game-design/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Technology Trees</title>
		<link>http://push.cx/2009/technology-trees</link>
		<comments>http://push.cx/2009/technology-trees#comments</comments>
		<pubDate>Tue, 19 May 2009 12:09:30 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[directed acyclic graph]]></category>
		<category><![CDATA[dot]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game influences]]></category>
		<category><![CDATA[gating]]></category>
		<category><![CDATA[graphviz]]></category>
		<category><![CDATA[Ikariam]]></category>
		<category><![CDATA[PBBGs]]></category>
		<category><![CDATA[power scale]]></category>
		<category><![CDATA[technology tree]]></category>
		<category><![CDATA[web games]]></category>

		<guid isPermaLink="false">http://push.cx/?p=718</guid>
		<description><![CDATA[
This is part of a series of blog posts on the design process of my web game:



  1. Ikariam
  2. WeeWar
  Tangent: The Farming Genre
  3. Tactics Ogre
  4. Counter-Strike
  5. X-Com
  6. Kongai
  Tangent: Technology Trees



Talking about Ikariam reminded me about technology trees because it has [...]]]></description>
			<content:encoded><![CDATA[<p>
This is part of a series of blog posts on the design process of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">my web game</a>:
</p>

<ul>
  <li>1. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a></li>
  <li>2. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">The Farming Genre</a></li>
  <li>3. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a></li>
  <li>4. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a></li>
  <li>5. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a></li>
  <li>6. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">Kongai</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGVjaG5vbG9neS10cmVlcw==">Technology Trees</a></li>
</ul>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Talking about Ikariam</a> reminded me about technology trees because it has a particularly big and complex one. When I was playing I created a graph showing how to unlock everything so that everyone in my guild could quickly develop as we needed.
</p>

<p>
In the diagram below, pink rectangles are buildings, green parallelograms are actions, solid blue circles are ships, red hexagons are military units (with their costs), and the empty circles are technology achievements (color indicating which of four tracks). It sounds really <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3JvZ3VlbGlrZWRldmVsb3Blci5ibG9nc3BvdC5jb20vMjAwOC8wOC90ZWNobm9sb2d5LWJpcmRzLW5lc3QuaHRtbA==">complicated</a> and is overwhelming at first look, but it serves as reference for any player with a little experience.
</p>

<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDUvaWthcmlhbV92My5wbmc="><img src="http://push.cx/wp-content/uploads/2009/05/ikariam_tech_tree_cutout.png" alt="Ikariam Tech Tree (cropped)" title="Ikariam Tech Tree (cropped)" width="579" height="592" class="alignnone size-full wp-image-895" /></a>

<p>
It&#8217;s worth noting that this is long out-of-date; updates to the game have extensively added, rearranged, and repriced things. I created it with <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ncmFwaHZpei5vcmcv">graphviz</a>&#8217;s dot utility. It&#8217;s a great tool for easily making the directed graphs that show up over and over in computer science. (And read <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzAwNjE0NzQwOTYvP3RhZz1wdXNoY3gtMjA=">Anathem</a>, it&#8217;s a captivating novel that, yes, prominently features directed acyclic graphs.)
</p>

<p>
OK, that&#8217;s all the &#8220;Yay, technology trees are keen!&#8221; that I can manage.
</p>

<h2>The Purpose of Technology Trees</h2>

<p>
They do have some uses. The first three are heavily intertwined:
</p>

<p>
First, tech trees linearly organize options over time. If a new player could choose from the start whether they wanted to produce smooth-bore or rifled barrels for their soldiers, they&#8217;d have to be a suicidal masochist to choose the former. Usually the later technology uses different, a higher quantity of, or more precious resources (like going from bronze swords to steel swords), but often the improved option is such an large improvement that it&#8217;s not a real choice which to use. A tech tree makes it possible to present these things in a linear fashion to players to make the game more rational and learnable.
</p>

<p>
Tech trees also act as gates on content consumption. Until you&#8217;ve reached a particular level of development, you can&#8217;t use the warp drive and are confined to exploring your solar system. This makes sure that players don&#8217;t skim over expensively hand-scripted characters and hand-designed locations (though most PBBGs procedurally generate content). Gating also ensures that players will have opportunities to recognize all the options presented by content &mdash; to continue the example, it&#8217;d be easy to overlook your mineral-rich asteroid belt if you could immediately cruise off to the stars, and you might end up hamstrung by lack of iron or the knowledge of where to find it and how to mine it. Gating keeps players from being overwhelmed by options and content until they&#8217;ve had some time to read help files and make some new friends they can ask questions of.
</p>

<p>
The third function of a technology tree is to greatly increase the power scale of players. MMORPGs have infamously large power scales: you go from barely triumphing over garden slugs to slaying gods in a casual manner befitting Richard Dawkins. The game <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdGFnL3NldHRsZXJzLW9mLWNhdGFu">Settlers of Catan</a> has a smaller power scale: you start collecting resources from two towns and could grow to five towns and four cities. Chess has a flat or declining power scale.
</p>

<p>
The final use I&#8217;ve seen is as a sink. High-level players often have more resources than they know what to do with, so they lose the fun of hard choices (like <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">equipment in Tactics Ogre</a>). Technological advancements that provide quantitative improvements (that is, shave some percent off of sailing time as opposed to unlock the ability to build steamboats) act as sinks that excess resources can be poured down. This works especially well when the advancements are expensive, ineffective, and public so that players get bragging rights rather than becoming invincible powerhouses.
</p>

<h2>Technology Trees Usually Suck</h2>

<p>
Most <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=L3RhZy9QQkJHcw==">persistent browser-based games</a> take those first three purposes and crank the dials all the way up. Players use technology trees to go from pointed sticks to nova bombs, from a small space to the most fertile or productive places possible.
</p>

<p>
The biggest problem with trees is that they act as ratchets. Once you&#8217;ve learned The Pulley you always know it and can&#8217;t lose it. That&#8217;s fine in a game of bounded duration like Civilization or StarCraft, after an hour or few the game is over your research disappears. You don&#8217;t start your second game of Civilization back in the stone age knowing how to produce nuclear weapons. But PBBGs are open-ended, a player has a technology until they quit playing entirely (probably being <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">driven to it</a> by someone farther along).
</p>

<p>
So players get the height of an even bigger power scale to drop rocks on each other from, and if they don&#8217;t have a sink for their extra resources they&#8217;ll probably shower them onto a guildmate to ratchet themselves up with.
</p>

<p>
One StarCraft mechanic often shows up with horrible consequences. In StarCraft, there are a number of enhancements that give special powers to units (such as the ability to burrow into the ground or turn invisible) that mean a defender who hasn&#8217;t researched the countermeasure cannot attack those units at all. This works in a 40-minute game where the defender gains access to the countermeasure around the same time the attacker gains the power, but in a PBBG new players may be dropped in next door to someone who has played for months and the countermeasure may be weeks away. Awful!
</p>

<p>
Designers often don&#8217;t recognize how special technology is. A player might gift their resources, raze their buildings, move their cities, fire their workers, discharge their soldiers, quit their guild&#8230; but they&#8217;ll still have their technology. The advancements available rarely reflect that permanence.
</p>

<h2>Redesigning Technology</h2>

<p>
One of the joys of long games like MMORPGs and PBBGs is that they give players the opportunity to eventually try everything the game has to offer. Well, unless the player has to make an irreversible decision like character class, then they create alternate characters or logins and decry the grind back up through the tree.
</p>

<p>
Looking at StarCraft again, I&#8217;ve combined two mechanics to design an improved technology mechanic for my game. First, limit permanent technological advancements to the expensive but low-productivity sinks mentioned above. In StarCraft you produce advancements by constructing certain buildings or spending resources at them, like a Spire to be able to build flying units. If you lose the building, you lose the advancement and can&#8217;t build more flyers. The other mechanic is &#8220;supply points&#8221;, a cap on the number of units you can control at once. Certain buildings and units raise the point cap, and most units count for 1-2 points toward the cap. It&#8217;s not a resource you can bank, spend, or trade, it&#8217;s solely a limit to the number of units you can recruit. It prevents armies from growing too quickly in the beginning of the game and growing too large in the end of the game.
</p>

<p>
Combining these two ideas, players could build research buildings to unlock different abilities and advancements. They can&#8217;t unlock everything because the cap on research buildings is lower than the number of abilities. Abilities stop being an oddity and are better integrated into the rest of the game mechanics &#8212; do you spend your money setting up a gasoline engine plant or buy more horses? Players choose where to specialize based on their opportunities and personalities and can raze and rebuild buildings to change their selection. 
</p>

<p>
This is the eighth and final of a six post series on game design, weighing in at a surprising 6,200 words (I didn&#8217;t originally plan on these two tangents, but let&#8217;s all toast Douglas Adams while I&#8217;m about it). I&#8217;ve noticed I&#8217;ve picked up some new readers, so let me again let me say I really appreciate feedback. I&#8217;m going to return to my regular babbling about whatever shiny thing captures my attention &#8212; which is to reiterate that you should feel free to comment, email, or IM because that&#8217;s where I tend to pick up topics from.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=718" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/technology-trees/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Game Influences (6/6): Kongai</title>
		<link>http://push.cx/2009/game-influences-kongai</link>
		<comments>http://push.cx/2009/game-influences-kongai#comments</comments>
		<pubDate>Mon, 18 May 2009 12:37:15 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[Civilization]]></category>
		<category><![CDATA[David Sirlin]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game influences]]></category>
		<category><![CDATA[Kongai]]></category>
		<category><![CDATA[StarCraft]]></category>
		<category><![CDATA[turn-based strategy]]></category>
		<category><![CDATA[web games]]></category>
		<category><![CDATA[yomi]]></category>

		<guid isPermaLink="false">http://push.cx/?p=921</guid>
		<description><![CDATA[
This is part of a series of blog posts on the design process of my web game:


  1. Ikariam
  2. WeeWar
  Tangent: The Farming Genre
  3. Tactics Ogre
  4. Counter-Strike
  5. X-Com
  6. Kongai
  Tangent: Technology Trees
  7. Warstorm



Kongai is a very different from all the [...]]]></description>
			<content:encoded><![CDATA[<p>
This is part of a series of blog posts on the design process of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">my web game</a>:
</p>
<ul>
  <li>1. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a></li>
  <li>2. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">The Farming Genre</a></li>
  <li>3. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a></li>
  <li>4. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a></li>
  <li>5. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a></li>
  <li>6. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">Kongai</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGVjaG5vbG9neS10cmVlcw==">Technology Trees</a></li>
  <li>7. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMTAvZ2FtZS1pbmZsdWVuY2VzLXdhcnN0b3Jt">Warstorm</a></li>
</ul>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5rb25ncmVnYXRlLmNvbS9nYW1lcy9Lb25ncmVnYXRlL2tvbmdhaQ==">Kongai</a> is a very different from all the previous games. It&#8217;s an online two-player collectible card game. You build a deck of three to five characters (with, optionally, one item each) and defeat your opponents&#8217; characters.
</p>

<p>
Each turn you have two choices to make and the results are resolved simultaneously rather than in the more common &#8220;I go, then you go&#8221; fashion. Range is first: you can leave your character where they are or spend energy trying to get to the near or far range. If you leave your character, the range is whatever your opponent sets. If you both try to set it to something different it doesn&#8217;t change. Some abilities work only at near or far, some both. The energy you spend to change range is the same energy used to activate abilities, so there are immediately some tough decisions to make about where and whether to spend your resources and guessing what your opponent will choose.
</p>

<p>
Second, you each choose an action. You can use one of your characters&#8217; four abilities (mostly attacks, though a quarter or so heal or give status ailments), switch your character out for another (dodging any attack), intercept your opponents&#8217; switch (preventing it and dealing significant damage), or rest your character to recover extra energy for the next turn.
</p>

<img src="http://push.cx/wp-content/uploads/2009/02/kongai.jpg" alt="Kongai" title="Kongai" width="700" height="383" class="alignnone size-full wp-image-685" />

<p>
It&#8217;s one of those simple-but-deep games because of the simultaneous turns. You don&#8217;t flail away at your opponent, you have to outthink them. Kongai&#8217;s designer, David Sirlin, has written a bit about <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L2FydGljbGVzL2Rlc2lnbmluZy1rb25nYWkuaHRtbA==">the process of designing Kongai</a> and how it&#8217;s all about the skill he calls <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L2FydGljbGVzL3lvbWktbGF5ZXItMy1rbm93aW5nLXRoZS1taW5kLW9mLXRoZS1vcHBvbmVudC5odG1s">yomi</a>, the ability to predict your opponent&#8217;s moves and keep yours unpredictable.
</p>

<p>
This, in a nutshell, is why I gripe about multiplayer games being primarily about deckbuilding <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">like Tactics Ogre</a>. You only get one try to guess your opponent&#8217;s plan. If you guessed wrong, you play a (possibly quite long) battle that you can probably only lose. Only then do you get a chance to change your build to have new tactics to try again. Tactics Ogre isn&#8217;t much fun because there&#8217;s little back-and-forth between the players, battles are just about lining up and smashing as hard as you can (or, worse, about &#8220;leveling up&#8221; the power of your characters).
</p>

<p>
Deckbuilding isn&#8217;t intrinsically wrong, it&#8217;s fun in Kongai and in Magic: The Gathering even more of the game is deckbuilding and it still works well. Many strategy games like Civilization and StarCraft intertwine the building and using phases. You <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L2Jsb2cvMjAwOS8zLzIyL3VjLWJlcmtlbGV5LXN0YXJjcmFmdC1jbGFzcy13ZWVrLTguaHRtbA==">scout your opponent</a> and <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L2Jsb2cvMjAwOS80LzE5L3VjLWJlcmtlbGV5LXN0YXJjcmFmdC1jbGFzcy13ZWVrLTExLmh0bWw=">deceive their scouts</a> to decide your build and sabotage theirs.
</p>

<p>
Sirlin&#8217;s written an awesome book called <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2RwLzE0MTE2NjY3OTgvP3RhZz1wdXNoY3gtMjA=">Playing to Win: Becoming the Champion</a> about how players should approach competitive games to succeed at tournament-level play (it&#8217;s also <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zaXJsaW4ubmV0L3B0dw==">available free online</a>). His pushes players to understand games as they are designed rather than as they may stylistically appear to play. Basketball can be won by playing the court and constantly harassing other players, <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5uZXd5b3JrZXIuY29tL3JlcG9ydGluZy8yMDA5LzA1LzExLzA5MDUxMWZhX2ZhY3RfZ2xhZHdlbGw/cHJpbnRhYmxlPXRydWU=">not by executing a practiced attack or defending the zone</a> (the Traveller example is even more powerful). I also recommend reading Sirlin&#8217;s entire blog, it&#8217;s similar in content to his book but from the perspective of the game designer trying to plan and balance a complex game that elite players will do their best to break over thousands of hours of dedicated play.
</p>

<p>
I was thinking about my game&#8217;s design and how to prevent it from becoming a slugfest when I thought of Kongai and read Sirlin. The best strategy in any <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">farming game</a> like <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a> is to find the weakest player and raid them repeatedly. The best strategy in <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a> is to steal an opponents&#8217; nearest base and the positive feedback loop generated by bases being a zero-sum resource means you&#8217;re almost guaranteed a win. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a> is a slugfest because there are no meaningful options, the best move on any turn is to move to the weakest opponent and hit them as hard as possible. The constant refrain here is that you never care what your opponent is doing; nothing they do actually influences your moves because you don&#8217;t have significant decisions to make.
</p>

<p>
<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a> is a highly successful tournament game because players are constantly shifting tactics in the real-time battle. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a> is the only single-player game on this list, but it would have a good shot at translating to multiplayer because it deals with managing limited resources and knowledge in response to your opponents&#8217; actions.
</p>

<p>
These are the games that had the biggest influence on <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">my design</a>, though there are certainly others like Syndicate, Eve Online, and muds that have had an effect. I seem to have a habit of working on my design, seeing flaws, adopting from other games to refactor my design, and repeating. I&#8217;ve been really happy with my current plans for an unprecedented several months, so I&#8217;m moving into playtesting to start getting real-world feedback on how well gameplay works. I&#8217;ve got one more game design blog post scheduled on technology trees and otherwise will be returning to my regular babbling about whatever shiny thing captures my attention &#8212; which is to reiterate that you should feel free to comment, email, or IM because that&#8217;s where I tend to pick up topics from.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=921" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/game-influences-kongai/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Game Influences (5/6): X-Com</title>
		<link>http://push.cx/2009/game-influences-x-com</link>
		<comments>http://push.cx/2009/game-influences-x-com#comments</comments>
		<pubDate>Fri, 15 May 2009 12:17:17 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[abandonware]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game influences]]></category>
		<category><![CDATA[turn-based strategy]]></category>
		<category><![CDATA[web games]]></category>
		<category><![CDATA[X-Com]]></category>

		<guid isPermaLink="false">http://push.cx/?p=914</guid>
		<description><![CDATA[
This is part of a series of blog posts on the design process of my web game:


  1. Ikariam
  2. WeeWar
  Tangent: The Farming Genre
  3. Tactics Ogre
  4. Counter-Strike
  5. X-Com
  6. Kongai
  Tangent: Technology Trees
  7. Warstorm



So I thought I&#8217;d solved everything and was [...]]]></description>
			<content:encoded><![CDATA[<p>
This is part of a series of blog posts on the design process of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">my web game</a>:
</p>
<ul>
  <li>1. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a></li>
  <li>2. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">The Farming Genre</a></li>
  <li>3. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a></li>
  <li>4. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a></li>
  <li>5. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a></li>
  <li>6. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">Kongai</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGVjaG5vbG9neS10cmVlcw==">Technology Trees</a></li>
  <li>7. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMTAvZ2FtZS1pbmZsdWVuY2VzLXdhcnN0b3Jt">Warstorm</a></li>
</ul>

<p>
So I <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">thought I&#8217;d solved everything</a> and was moving along on my design. Players control 1 or 2 secret agents on an isometric map. Turns simply alternate rather than being based on how much you did last turn. Almost all weapons are ranged and powerful enough to kill in one or two shots. Hm. So why would you ever risk getting into someone&#8217;s line of fire, should I add fog of war so the player only knows what their agents can see? I guess I could add stances so characters could hide behind terrain, and maybe 3D to make positioning important&#8230;
</p>

<p>
Doubts crept in. Could a game this complex be playable? Wouldn&#8217;t the user interface be overwhelming? I took my notes and went to chat with a <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FtbW9ubGF1cml0emVuLmNvbS9ibG9nLw==">game designer</a>.
</p>

<dl class="dialogue">
<dt>Me:</dt> <dd>So, I&#8217;m making an isometric turn-based tactical combat game. And I&#8217;m not sure it&#8217;ll work because most characters in most turn-based strategy games can take many hits but that doesn&#8217;t match my urban combat setting.</dd>
<dt>Ammon:</dt> <dd>That sounds a little familiar.</dd>
<dt>Me:</dt> <dd>I don&#8217;t know any games like it. So I&#8217;m thinking I should really reduce the distance characters can move and do these other things so they don&#8217;t just run straight at each other, but that&#8217;s getting complex.</dd>
<dt>Ammon:</dt> <dd>This sounds like X-Com.</dd>
<dt>Me:</dt> <dd>Never heard of it</dd>
<dt>Ammon:</dt> <dd>X-Com is single-player, you have a squad of 8-14 units. Units gain XP but 1-2 shots kill so any unit that survives a few missions is awesome.</dd>
<dt>Me:</dt> <dd>Any enemies were the same size and shape as your units? Did they outnumber you?</dd>
<dt>Ammon:</dt> <dd>Yep.</dd>
<dt>Me:</dt> <dd>And most weapons are ranged? That works?</dd>
<dt>Ammon:</dt> <dd>Yep.</dd>
<dt>Me:</dt> <dd>Huh. I guess I&#8217;ll check it out sometime. So I&#8217;m trying to decide what a turn looks like. Move and attack vs. move or attack, mostly.</dd>
<dt>Ammon:</dt> <dd>X-Com has action points you spend for moving, turning, changing stance. Different fire modes (snapshot, aimed shot, burst fire) take different amounts.</dd>
<dt>Me:</dt> <dd>What&#8217;s the gameplay effect of turning? Are attacks against side/rear better? Is there fog of war?</dd>
<dt>Ammon:</dt> <dd>Yep, fog of war is the primary effect. A shot from behind could be a kill and you&#8217;d never even know where it came from.</dd>
<dt>Me:</dt> <dd>Hm. One thing I&#8217;m pondering is a &#8216;guard&#8217; action. So an agent could do nothing on their turn but look out a door and nail someone who crosses by the doorway in one turn.</dd>
<dt>Ammon:</dt> <dd>Yeah, X-Com has that.</dd>
<dt>Me:</dt> <dd>Oh. Do any of these model audio? Like you could hear someone sneaking up on you? [Which means some kind of replay of enemy turns before you take yours.]</dd>
<dt>Ammon:</dt> <dd>Yep, you can hear running footsteps, gunfire. Rockets are effective but attract a lot of attention.</dd>
<dt>Me:</dt> <dd>And all that works? It&#8217;s not overwhelming?</dd>
<dt>Ammon:</dt> <dd>The only problem was scaling the power curve. A major element was new technologies, which meant building a base, capturing alien equipment during battle, and spending money to research it. Which would attract the aliens&#8217; attention, they&#8217;d come attack your base.</dd>
<dt>Me:</dt> <dd>Huh. That was a big part of my game, building bunks to be able to have more characters but also making yourself a more tempting target for other players.</dd>
<dt>Ammon:</dt> <dd>Yeah, base layout mattered a lot. When you defend against attacks, it&#8217;s on whatever floorplan you created. So if your barracks are too far from the entrance, aliens could trash your equipment and kill your scientists before you got there.</dd>
<dt>Me:</dt> <dd>OK, stop talking about X-Com. I can already tell I need to play it because it includes every element I thought was original and spiffy and maybe even too complex.</dd>
</dl>

<img src="http://push.cx/wp-content/uploads/2009/02/xcom.png" alt="X-Com" title="X-Com" width="640" height="400" class="alignnone size-full wp-image-680" />

<p>
The <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YY29t">X-Com series</a> of games was released in the 1990s. You can find the first couple games (#2, Terror From The Deep, is probably the overall best) on abandonware sites and run them under <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5kb3Nib3guY29tLw==">dosbox</a> or easily pick up the port to modern PCs on <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVhbV8oY29udGVudF9kZWxpdmVyeSk=">Steam</a>.
</p>

<p>
There&#8217;s not a lot of description that early conversation left out. When I played X-Com a few days later, I was awed that someone 15 years ago had created almost exactly the game I was inventing.
</p>

<p>
I pondered where to go from here. I had the confirmation that I could make as complex a game as I&#8217;d considered. But if the game has Been Done, can I learn from it instead of (inadvertently) cloning it?
</p>

<p>
I&#8217;ve always liked game designs with simple mechanics and few numbers. I don&#8217;t really like to count into double digits, let alone have 382 hitpoints and decide whether to buy an item that gives me a 6% boost. X-Com requires that players be meticulous about equipping units, sending enough ammo that they won&#8217;t run out but won&#8217;t overburden and slow them down. It seemed like too much deckbuilding, moving the interesting decisions out of the main gameplay and into the preparation. Battles were fairly repetitive once you learned the basic strategy of how to move under cover, search buildings, provide support fire, and balance your team.
</p>

<p>
I was still working on my design but wasn&#8217;t very sure of it until I thought about another game named Kongai.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=914" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/game-influences-x-com/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Game Influences (4/6): Counter-Strike</title>
		<link>http://push.cx/2009/game-influences-counter-strike</link>
		<comments>http://push.cx/2009/game-influences-counter-strike#comments</comments>
		<pubDate>Thu, 14 May 2009 12:09:53 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Athenge]]></category>
		<category><![CDATA[Counter-Strike]]></category>
		<category><![CDATA[FPS]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game influences]]></category>
		<category><![CDATA[web games]]></category>

		<guid isPermaLink="false">http://push.cx/?p=885</guid>
		<description><![CDATA[
This is part of a series of blog posts on the design process of my web game:


  1. Ikariam
  2. WeeWar
  Tangent: The Farming Genre
  3. Tactics Ogre
  4. Counter-Strike
  5. X-Com
  6. Kongai
  Tangent: Technology Trees
  7. Warstorm



As I left off, I wanted to create [...]]]></description>
			<content:encoded><![CDATA[<p>
This is part of a series of blog posts on the design process of <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">my web game</a>:
</p>
<ul>
  <li>1. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2UtaWthcmlhbQ==">Ikariam</a></li>
  <li>2. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXdlZXdhcg==">WeeWar</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGhlLWZhcm1pbmctZ2VucmU=">The Farming Genre</a></li>
  <li>3. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">Tactics Ogre</a></li>
  <li>4. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWNvdW50ZXItc3RyaWtl">Counter-Strike</a></li>
  <li>5. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a></li>
  <li>6. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLWtvbmdhaQ==">Kongai</a></li>
  <li>Tangent: <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvdGVjaG5vbG9neS10cmVlcw==">Technology Trees</a></li>
  <li>7. <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMTAvZ2FtZS1pbmZsdWVuY2VzLXdhcnN0b3Jt">Warstorm</a></li>
</ul>

<p>
As I <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXRhY3RpY3Mtb2dyZQ==">left off</a>, I wanted to create a turn-based strategy game on the web with an interesting setting. I was pondering what sort of setting hadn&#8217;t been mined out and thought of Counter-Strike, by many measures the most popular online multiplayer game.
</p>

<p>
In Counter-Strike you are on a small squad (3-8 players, tournament size is 5) against another squad of players, one team terrorists and one team counter-terrorists. It&#8217;s a fast-paced first-person shooter (FPS) with deep tactical play as teams attempt to complete or prevent objectives like planting a bomb in a particular place on the map or escorting hostages to an exit point.
</p>

<a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMDkvMDIvY291bnRlci1zdHJpa2UuanBn"><img src="http://push.cx/wp-content/uploads/2009/02/counter-strike.jpg" alt="Counter-Strike" title="Counter-Strike" width="500" height="313" class="alignnone size-full wp-image-678" /></a>

<p>
In most FPS games your character is heavily armored and can survive lots of punishment before dying. Counter-Strike defined itself by using real weapons that kill in a few or often one shot, so players have to have fast reflexes to succeed in a firefight and execute tactics well to ensure they&#8217;re in a firefight they can win. Or, better, aren&#8217;t in a firefight at all and have snuck up behind an oblivious enemy. I enjoy the way game calls upon a wide range of skills, but I don&#8217;t play it much myself because I&#8217;m not fast enough for the combat. 
</p>

<p>
Setting is a funny thing: a person might have loved the Matrix but broadly assert &#8220;Oh, I don&#8217;t like sci-fi&#8221; and leave a game&#8217;s website at the first sight of a spaceship. Fantasy games are an overwhelming part of the market because potential players reliably don&#8217;t automatically disregard them and they open up a lot of design possibilities that a modern setting wouldn&#8217;t (eg. modern settings don&#8217;t have teleportation or healing spells, which are really handy for getting characters together and prepared to play).
</p>

<p>
Counter-Strike chose its setting and extracted mechanics from it to create an enduring game. When I considered the idea of a turn-based tactical game with counter-terrorists &mdash; no, better: secret agents &mdash; I realized it could solve a lot of my design problems as well.
</p>

<p>
Instead of slugest combat, most characters would use ranged weapons that could incapacitate or kill in a shot or two. The map isn&#8217;t just a pretty backdrop, picking lines of sight and areas of engagement is essential. Players can compete in deliberate missions instead of preying on each other. By maintaining a base of operations, players can have the long continuity that draws them back to the site with short gameplay sessions whenever they&#8217;d like to do more than wait a few hours for a trade boat to arrive.
</p>

<p>
I started designing in earnest. Next: the classic game <a href="http://push.cx/wp-content/plugins/feed-statistics.php?url=LzIwMDkvZ2FtZS1pbmZsdWVuY2VzLXgtY29t">X-Com</a> surprises me from 15 years in the past.
</p> <img src="http://push.cx/wp-content/plugins/feed-statistics.php?view=1&post_id=885" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/game-influences-counter-strike/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 2.795 seconds -->
<!-- Cached page served by WP-Cache -->
