<?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>Programmer Joe &#187; Game Industry</title>
	<atom:link href="http://programmerjoe.com/category/game-industry/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmerjoe.com</link>
	<description>Joe Ludwig's blog</description>
	<lastBuildDate>Sat, 17 Jul 2010 22:55:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>11 days left to submit your LOGIN session proposal</title>
		<link>http://programmerjoe.com/2010/01/14/11-days-left-to-submit-your-login-session-proposal/</link>
		<comments>http://programmerjoe.com/2010/01/14/11-days-left-to-submit-your-login-session-proposal/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 05:18:51 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=200</guid>
		<description><![CDATA[The 2010 LOGIN conference is accepting session proposals for just 11 more days.  January 25 is the last day to submit something, so hurry up and get your talk proposal sent in!]]></description>
			<content:encoded><![CDATA[<p>The 2010 LOGIN conference is <a href="http://www.2010.loginconference.com/submissions.php">accepting session proposals</a> for just 11 more days.  January 25 is the last day to submit something, so hurry up and get your talk proposal sent in!</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2010/01/14/11-days-left-to-submit-your-login-session-proposal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2010</title>
		<link>http://programmerjoe.com/2009/12/31/2010/</link>
		<comments>http://programmerjoe.com/2009/12/31/2010/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:24:45 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=197</guid>
		<description><![CDATA[This rounds out my trilogy of year end posts. Here is what I think will happen in the coming year. I would love to hear your thoughts on these predictions: Star Trek Online will be the only significant MMO launch in 2010. It will do well enough to make Atari and Cryptic plenty of money, [...]]]></description>
			<content:encoded><![CDATA[<p>This rounds out my trilogy of year end posts. Here is what I think will happen in the coming year. I would love to hear your thoughts on these predictions:</p>
<ol>
<li>Star Trek Online will be the only significant MMO launch in 2010. It will do well enough to make Atari and Cryptic plenty of money, but will not do nearly as well as World of Warcraft, so many people will consider it a failure. (Those people are dumb.)</li>
<li>At least three of the major unreleased MMO projects will be cancelled. I have a guess about which two are most likely, but I&#8217;ll keep that to myself.  Qualifying projects include:
<ul>
<li>Guild Wars 2</li>
<li>Whatever Carbine is working on</li>
<li>That console MMO Turbine hasn&#8217;t said much about</li>
<li>Whatever Trion is working on</li>
<li>The Sci-Fi channel tie-in MMO that Trion has <strong>said</strong> they&#8217;re working on</li>
<li>Whatever Zenimax is working on that may or may not be Fallout</li>
<li>Whatever 38 Studios is working on</li>
<li>The Agency</li>
<li>Whatever Gazillion&#8217;s Gargantuan studio is working on</li>
<li>Star Wars: The Old Republic</li>
<li>The second MMO that CCP is working on down in Atlanta where all those White Wolf people are.  Hmm. What could it be?</li>
<li>Whatever Red 5 is working on</li>
<li>DC Online</li>
<li>That other MMO I know NCSoft is working on that is completely under the radar</li>
<li>Whatever Slipgate Ironworks is working on</li>
<li>The second MMO Blizzard has in the works</li>
<li>APB</li>
<li>Jumpgate: Evolution</li>
</ul>
</li>
<li>Project Natal and the Playstation Motion Controller will both come out.  Natal will do fairly well. Both controllers will allow some new kinds of games, but we won&#8217;t see any compelling examples of those games until 2011.</li>
<li>Unemployment will peak and then start to fall.</li>
<li>The compass+GPS augmented reality products will begin to shift to general location-awareness and away from their Augmented Reality roots. They will de-emphasize magic lens and start to emphasize aggregation of nearby content.</li>
<li>No consumer-level see-through displays will come out in 2010. Significant progress toward them will be made, but nothing will be released.</li>
<li>Neither Google nor Apple will release any kind of AR-focused hardware</li>
<li>The use of &#8220;wave it in front of your webcam&#8221; type AR in advertising will peak with an AR-enhanced ad in the Superbowl.  The backlash will begin. By the end of the year the advertising world will have moved on.</li>
<li>Apple will release its tablet and a new iPhone (faster and more storage) but won&#8217;t release anything that is specifically an AR product.</li>
<li>Apple will address the pain caused by its app-store approval process, at least in part. I have no idea what their specific solution will be, but they aren&#8217;t going to let their developer community grow to hate them.</li>
<li>Android will continue to pick up steam. By the end of the year Android will boast 50,000 applications.</li>
<li>People will spend the entire year trying to find something really useful to do with Google Wave. They won&#8217;t succeed in 2010.</li>
<li>Google will make Wave interoperate with email. This will make it useful as an email client if nothing else.</li>
</ol>
<p>Ok, that&#8217;s the last of this kind of post for at least a year.  If only I could get back to posting regular stuff again. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/12/31/2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The twenty-teens</title>
		<link>http://programmerjoe.com/2009/12/25/the-twenty-teens/</link>
		<comments>http://programmerjoe.com/2009/12/25/the-twenty-teens/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 16:28:50 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Game Industry]]></category>
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=195</guid>
		<description><![CDATA[Around this time of year for the past few years I have written a blog post listing what I expected to occur during the coming year. Since this new year marks the start of a new decade, I thought I would start a new tradition and write a post on my expectations for the coming [...]]]></description>
			<content:encoded><![CDATA[<p>Around this time of year for the past few years I have written a blog post listing what I expected to occur during the coming year. Since this new year marks the start of a new decade, I thought I would start a new tradition and write a post on my expectations for the coming decade. 2020 is a long way away, so I&#8217;m sure most of this will miss the mark. Hopefully at least 48 year old me will be amused by what 38 year old me had to say.</p>
<p>Please note that just because something is on this list does not mean that it&#8217;s something I <strong>want</strong> to happen, only that it&#8217;s something I think <strong>will</strong> happen. Anything that&#8217;s missing from this list is probably just something I didn&#8217;t think of.</p>
<p>I would love to hear your thoughts on any or all of these.  Please comment below.</p>
<p>General Technology Trends:</p>
<ol>
<li>Moore&#8217;s Law will continue to operate for the entire decade. That means a given form-factor of computing device will be approximately 100x the power of the same form-factor today.</li>
<li>Mobile computing will dominate. Everyone who owns a laptop or desktop today will have a mobile device that is about 10x the power of their current computer.  We may still call these &#8220;phones&#8221;, but placing voice calls will only be one tiny part of what they do. This device will replace most users&#8217; desktop and laptop computers.</li>
<li>Digital Distribution will be king. Only a tiny fraction of the media that&#8217;s currently consumed digitally (TV, movies, music, and software) will be purchased on a hunk of plastic. Both the subscription model (aka Rhapsody or cable television) or the purchase model (aka iTunes or DVDs) will have at least 20% market share, but one of those two models will be gradually taking over. Advertising supported media will be just as big of a deal as it now, but the user will have much more control over how they consume that media (think Hulu rather than broadcast television.) Books are on the same trajectory, but in 2020 the majority of books will still be sold on dead trees.</li>
<li>Speach recognition will gain a lot of ground as the primary way we enter text into a computer. Offices are one place where this trend won&#8217;t have advanced very far mostly because of the noise involved.</li>
</ol>
<p>Game Industry Trends:</p>
<ol>
<li>Total revenues from video games of all kinds (including mobile and social games) will exceed revenue from movies and television (independantly, not added together.) Games will finally learn to exploit merchandising and secondary markets as vigorously as movies do.</li>
<li>In 2020 no one will be selling a dedicated gaming console. All computing devices in production in ten years will be about consuming other kinds of media just as much as they are about playing games.</li>
<li>Desktop PC gaming will be all but dead, with the majority of triple-A games coming out for multi-media consoles or mobile devices.</li>
<li>Gaming that involves exercise will be the primary way that the majority of people get their exercise.</li>
<li>Location-aware games will be common.</li>
</ol>
<p>Augmented reality:</p>
<ol>
<li>A growing minority of people in the developed world will wear heads up displays almost all the time. These displays will be capable of information overlays, but will mostly be about contextual information that is not overlaid on the world. These products will be on the verge of hitting the mainstream, but won&#8217;t quite be mainstream yet.</li>
<li>Development of these displays will be by small companies (perhaps companies that are around now) but those companies will be acquired by massive consumer electronics multinationals before wearable displays hit the mainstream.</li>
<li>Recognition of people and text in images (and video) will be nearly perfect, at least in reasonable lighting conditions.</li>
<li>Gestural interfaces will be commonplace. Many hard-core computer users will be sad at how clumsy they are compared to keyboard and mouse.</li>
</ol>
<p>The fate of specific companies:</p>
<ol>
<li>Google will be huge and influential. Their influence will likely peak in the 2010s, but it will difficult to see that from the ground. Google will have had some sort of anti-monopoly action taken against them.</li>
<li>Microsoft will fail to transition to the new mobile-centric world and will be in decline. They will still be a very powerful multi-billion-dollar company, but will not own the end-user to nearly the extent they do now.</li>
<li>A company that exists today will be the dominant social network.  that could be Facebook, Twitter, or YouTube, but it probably won&#8217;t be MySpace.</li>
<li>Apple will be huge and influential. They won&#8217;t ever be as dominant as Microsoft was in the 90s, but they will be very successful. Steve Jobs will still be running the company.</li>
</ol>
<p>US Politics:</p>
<ol>
<li>Gay marriage will be legal in most states.</li>
<li>Marijuana use will be legal in California and a few other states.</li>
<li>We won&#8217;t have elected a woman president. (My wife came up with this one, but I agree with her.)</li>
<li>The problems of illegal immigration will not be solved.</li>
<li>The problems of providing health-care to everyone that needs it will not be solved.</li>
<li>Privacy in an age of always-on location-aware devices will be a huge topic of debate.</li>
<li>Silicon Valley will remain the world&#8217;s premier startup region.</li>
<li>The US will still have troops in both Iraq and Afganistan. These will be like the troops we still have in Germany and South Korea, and will not be in combat often, if ever.</li>
</ol>
<p>International Politics:</p>
<ol>
<li>Carbon emissions will be at approximately their peak in 2020.</li>
<li>Oil production will also be peaking around 2020.</li>
<li>Most other countries will be ahead of the US in terms of switching to renewable energy.</li>
<li>Most of the rest of the world will have consumer-friendly privacy regulations in place. Those countries will scratch their heads at the debate raging in the US.</li>
</ol>
<p>Things that will not happen:</p>
<ol>
<li>We will not have flying cars, jet-packs, or most of the other things promised by Sci-Fi in the 50s.</li>
<li>There will not be peace in the middle east.</li>
<li>Africa will still be the poorest continent.</li>
<li>Brain-computer interfaces will still not work very well. No one will be uploading themselves into a computer.</li>
<li>We won&#8217;t have a human equivalent AI.</li>
<li>We won&#8217;t know how to reliably unfreeze people.</li>
<li>World War Three won&#8217;t have happened.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/12/25/the-twenty-teens/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How did I do with my 2009 predictions?</title>
		<link>http://programmerjoe.com/2009/12/23/how-did-i-do-with-my-2009-predictions/</link>
		<comments>http://programmerjoe.com/2009/12/23/how-did-i-do-with-my-2009-predictions/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 17:14:27 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=193</guid>
		<description><![CDATA[Year end prediction posts are tons of fun.  Let&#8217;s see how I did with last year&#8217;s post. Correct. Champions and Free Realms both launched. Those were both smaller than the big launches of 2008 (Age of Conan and Warhammer), and I expect they will end up being smaller than next year&#8217;s Star Trek Online launch. [...]]]></description>
			<content:encoded><![CDATA[<p>Year end prediction posts are tons of fun.  Let&#8217;s see how I did with <a href="http://programmerjoe.com/2008/12/27/2009/">last year&#8217;s post</a>.</p>
<ol>
<li>Correct. Champions and Free Realms both launched. Those were both smaller than the big launches of 2008 (Age of Conan and Warhammer), and I expect they will end up being smaller than next year&#8217;s Star Trek Online launch.</li>
<li>Wrong. The console version of Champions Online <a href="http://news.softpedia.com/news/Xbox-360-Version-of-Champions-Online-Delayed-by-Microsoft-120521.shtml">never came out</a>. I hear it&#8217;s because of difficulties working out revenue sharing and certification details with Microsoft, not because of any technical challenge. We&#8217;ll see if it actually comes out in 2010.</li>
<li>Wrong. Has there been a single large MMO announced in 2009?  Carbine, Trion, Red 5, 38 Studios, and Zenimax certainly haven&#8217;t announced anything.</li>
<li>Wrong. Nope. Nobody bought Turbine. <a href="http://www.joystiq.com/2008/12/09/atari-buys-mmo-dev-cryptic-studios/">Atari did buy Cryptic</a>, which is almost the same thing.  Maybe I should be more vague in the future.</li>
<li>Correct?  <a href="http://upperdecku.com/">Upper Deck University</a> launched, but hasn&#8217;t had much traction. Are there other kid&#8217;s MMOs that launched in 2009?  Wizard 101 from King&#8217;s Isle launched at the end of 2008 and had an <a href="http://www.wizard101central.com/forums/showthread.php?s=224d8c583791a9ae3bb4de2be8ab394d&amp;t=26255">excellent year</a> in 2009. What does that mean for my prediction? No idea.</li>
<li>Correct, sort of. Both Microsoft and Sony decided to launch gestural control devices instead of whole new consoles. They are trying to get some more mileage out of their investment in the current generation. Project Natal has had a lot of <a href="http://www.hulu.com/watch/77038/late-night-with-jimmy-fallon-project-natal-demo">buzz</a>, but no dev kits have shipped as far as I know. The PS3 motion controller has been a little more under the radar.  Both of these devices are expected to ship in 2010.</li>
<li>Hard to say. Maybe we&#8217;ve hit bottom, maybe we haven&#8217;t.  Ask me in two years.</li>
<li>Wrong. Oh so astoundingly wrong.  Between Layar and Junaio&#8217;s launches, tons of marketing campaigns, and lots of concept and research videos, AR has had a year full of hype. Those see-through displays I was <a href="http://programmerjoe.com/2009/01/08/the-first-off-the-shelf-ar-headset/">so excited about in January</a> didn&#8217;t happen, but on the smartphone/magic lens front there has been quit a bit happening.</li>
<li>Hard to say. Did Microsoft start an MMO in 2009?  They didn&#8217;t announce anything.  Wonder if they&#8217;ll announce it before they cancel it.</li>
<li>Wrong. At least I haven&#8217;t heard of one.  Lots of indy games made lots of noise in 2009, but none of those were XNA games.</li>
<li>Correct?  iLike&#8217;s <a href="http://www.techcrunch.com/2009/08/17/breaking-myspace-close-to-acquiring-ilike/">firesale</a> to Myspace is one.  Metaplace.com <a href="http://www.raphkoster.com/2009/12/21/metaplace-com-closing/">going away</a> is arguably another, though Metaplace lives on as a company, at least for a while. <a href="http://www.techcrunch.com/2009/04/23/yahoo-quietly-pulls-the-plug-on-geocities/">Geocities</a> counts too, I guess.  The trouble is the &#8220;have heard of&#8221; qualifier. Most web startups are completely unknown outside of Silicon Valley</li>
<li>Wrong. There has been no SOE reorganization fallout visible from the outside. The Agency lost the <a href="http://www.gamesindustry.biz/articles/senior-staff-leave-soe-seattle">head of its studio</a>, but the game seems to live on.  DC universe is going fairly well from what I hear.</li>
<li>Correct.  Mythic <a href="http://kotaku.com/5168085/warhammer-online-massively-merges-servers">merged a bunch of servers</a>.  Then they <a href="http://www.massively.com/2009/02/04/rumors-abound-of-a-massive-layoff-at-mythic-entertainment/">laid off</a> a bunch of people. Then EA <a href="http://www.massively.com/2009/06/24/mythics-mark-jacobs-leaves-ea/">kicked out</a> Mark Jacobs. Then EA <a href="http://www.massively.com/2009/11/09/rumor-80-more-layoffs-hit-mythic/">laid off</a> more people.  It has been a tough year over there. I hope everyone lands on their feet.</li>
</ol>
<p>So for the year, that&#8217;s five correct predictions, six incorrect predictions, and two unmeasurable predictions.  Not such a good year to see the future.</p>
<p>The biggest thing I missed is the way mobile is heating up.  The App Store is a couple years old at this point, but it really exploded in 2009.</p>
<p>What about you?  Did 2009 turn out like you expected?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/12/23/how-did-i-do-with-my-2009-predictions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>50 things I never need to hear at another conference</title>
		<link>http://programmerjoe.com/2009/09/20/50things/</link>
		<comments>http://programmerjoe.com/2009/09/20/50things/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:16:05 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Game Industry]]></category>
		<category><![CDATA[Production]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=186</guid>
		<description><![CDATA[Korea is the future. They are five years ahead of us and where Korea goes, the rest of the world will follow.  (I have been hearing this for at least five years. ) Free to play with micro transactions is the one true business model. Client downloads are death. We must look beyond the core [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Korea is the future. They are five years ahead of us and where Korea goes, the rest of the world will follow.  (I have been hearing this for at least five years. )</li>
<li>Free to play with micro transactions is the one true business model.</li>
<li>Client downloads are death.</li>
<li>We must look beyond the core gamer audience and embrace more casual players.</li>
<li>Women are 50% of the audience.</li>
<li>Don&#8217;t trust the client, it is in the hands of the enemy.</li>
<li>You game is a service.</li>
<li>MMOs are hard. No, they&#8217;re really really hard. Seriously. You can&#8217;t possibly imagine how hard they are.</li>
<li>Runescape is the second biggest MMO and is the one you should really watch.</li>
<li>Club Penguin is huge and is the one you should really watch.</li>
<li>Lineage is huge in Asia and is the one you should really watch. (These days it&#8217;s actually more likely to be ZT Online or some other game in China.)</li>
<li>Flash is the best platform to build your MMO on.</li>
<li>Web games are cheesy and no core gamer will ever play them.</li>
<li>Rudy&#8217;s has the best BBQ in Austin.  No, County Line is better.  Are you kidding me?  It&#8217;s obviously The Salt Lick.</li>
<li>The game industry is bigger than Hollywood.</li>
<li>Triple-A MMOs are a dead end. WoW is impossible to compete with.</li>
<li>Game X is going to take the top spot from WoW.</li>
<li>Games cost so much to make now that the industry is about to collapse under its own weight.</li>
<li>MMOs are just like MUDs and you should all learn the lessons MUDs learned X years ago.  (To be fair, I don&#8217;t think I&#8217;ve actually heard this one in a few years.)</li>
<li>All of these things happened in UO. Why won&#8217;t you people learn from UO?</li>
<li>The community around your game is incredibly important and you should take care of them.</li>
<li>Your players have no idea what they want. Don&#8217;t believe anything they say.</li>
<li>Forums are very important.</li>
<li>Don&#8217;t believe anything you read on forums.</li>
<li>Launch is just the beginning. The real work comes after launch.</li>
<li>Metrics, metrics, metrics.  Record everything!</li>
<li>Don’t record too much with your metrics. Too much data is just as useless as too little data.</li>
<li>Some people spend CRAZY amounts of money via micro-transactions</li>
<li>MMOs on consoles are the Next Big Thing.</li>
<li>Casual games are going to save the PC market</li>
<li>MMOs are going to save the PC market</li>
<li>My background in economics tells me&#8230;</li>
<li>WoW is a wonderful thing for the industry because of the way they expanded the market.</li>
<li>WoW has set expectations so high that you can&#8217;t make an MMO for less than X million dollars. (Where X&gt;=30)</li>
<li>Person X is a jerk. Let me tell you this funny story about&#8230;</li>
<li>Company Y is so clueless that they will never put out a successful game</li>
<li>Fantasy is where it&#8217;s at! MMOs just don&#8217;t work as well in other genres.</li>
<li>Fantasy has been done. Players want us to move on to other genres.</li>
<li>There&#8217;s so much money to be made in Asia! Just make sure you internationalize your game first.</li>
<li>Gamers in Asia demand click to move so they can smoke while they play.</li>
<li>Players are going to trade stuff for real money no matter what you do. You might as well embrace it.</li>
<li>RMT causes huge amounts of fraud.</li>
<li>Gold spam is impossible to stop.</li>
<li>Our startup is the next big thing in MMOs.  Just look at this giant pile of money we raised!</li>
<li>Game development is all about iteration. Waterfall doesn&#8217;t work.</li>
<li>There&#8217;s this guy named Richard Bartle who proposed dividing players into four types&#8230;</li>
<li>You can’t use scripting languages in games. They’re way too slow.</li>
<li>Writing all your code in C++ is stupid.</li>
<li>Launch early, launch often.</li>
<li>You only get to launch once.</li>
</ol>
<div>This year it was obvious to me that I&#8217;ve hit the Austin GDC level cap. Fortunately that means I have moved on to the conference elder game and learn far more interesting things speaking and engaging in deep hallway conversations.</div>
<div>What about you?  What things are you sick of hearing in conference presentations?</div>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/09/20/50things/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>LOGIN Early Bird registration runs out tonight</title>
		<link>http://programmerjoe.com/2009/03/31/login-early-bird-registration-runs-out-tonight/</link>
		<comments>http://programmerjoe.com/2009/03/31/login-early-bird-registration-runs-out-tonight/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 20:11:59 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=155</guid>
		<description><![CDATA[Today is the last day for the cheapest registration rate for the LOGIN conference. The price goes up at midnight, so register now.]]></description>
			<content:encoded><![CDATA[<p>Today is the last day for the cheapest registration rate for the <a href="http://www.2009.loginconference.com/">LOGIN conference</a>. The price goes up at midnight, so register now.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/03/31/login-early-bird-registration-runs-out-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GameStop vs. Digital Download and The Innovator&#8217;s Dilemma</title>
		<link>http://programmerjoe.com/2009/03/19/gamestop-vs-the-innovators-dilemma/</link>
		<comments>http://programmerjoe.com/2009/03/19/gamestop-vs-the-innovators-dilemma/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 05:05:15 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=148</guid>
		<description><![CDATA[It stuck me recently that GameStop might be falling victim to The Innovator&#8217;s Dilemma. This book, published in 1997, a model of why a company that is at the top of its industry can fail to maintain their dominant position in the face of disruptive innovation. If you haven&#8217;t read the book, I highly recommend [...]]]></description>
			<content:encoded><![CDATA[<p>It stuck me recently that GameStop might be falling victim to <a href="http://www.amazon.com/Innovators-Dilemma-Revolutionary-Business-Essentials/dp/0060521996">The Innovator&#8217;s Dilemma</a>. This book, published in 1997, a model of why a company that is at the top of its industry can fail to maintain their dominant position in the face of disruptive innovation. If you haven&#8217;t read the book, I highly recommend it. <a href="http://www.squeezedbooks.com/book/show/13/the-innovators-dilemma-the-revolutionary-book-that-will-change-the-way-you-do-business-collins-business-essentials">This summary</a> does a good job of explaining the premise of the book, so if you haven&#8217;t read it, go read the summary and come back. The rest of this post attempts to apply the model outlined in the book to the situation GameStop (and other niche game retailers) face with respect to digital download.</p>
<p>The argument that digital distribution is a disruptive technology is an easy one to make. It disintermediates retailers, distributors, and manufacturers, by letting publishers and developers by through a single layer of middlemen (in the form of Steam, Impulse, or Direct2Drive) or even directly to their customers. Digital distribution also removes the sharp shelf-space restrictions that keep a game&#8217;s shelf-life artifically low and allow game sales to enjoy a long tail. Numbers are hard to find, but digital distribution has also been accelerating in the past few years. </p>
<p>Part of the Innovator&#8217;s Dilemma model predicts that established players will be able to enjoy significant revenue growth by retreating from low-margin and low-volume markets as those fall to the invading technology. GameStop&#8217;s last two quarters are the <a href="http://www.gamespot.com/ps3/action/armyoftwo/news.html?sid=6191451">best they have ever been</a>. However, one part of GameStop&#8217;s business has been in serious decline over the past several years, and that is PC games. That is partly due to an overall decline in PC games in general, but it is also to the fact that PC games can&#8217;t be repurchased and sold as used like heavily DRMed console games can. This resale of games accounted for <a href="http://g4tv.com/thefeed/blog/post/692627/GameStop-Used-Game-Revenue-To-Hit-Two-Billion-Dollars.html">23% of the company&#8217;s revenue</a> last year, and that number is increasing. According to the <a href="http://online.wsj.com/article/SB123249378212700025.html">Wall Street Journal</a>, used game sales account for 42% of GameStop&#8217;s gross profits.</p>
<p>I suspect that the other major reason for GameStop&#8217;s withdrawal from PC games is that digital downloads have made their strongest inroads on the PC. Steam is selling tons of AAA games, and casual and indie games are sold primarily online at this point. The company is not mounting much of a defense in the market where its competition is strongest. They will likely lose the console market the same way, since I would be shocked if the next generation of consoles (Xbox 720, Playstation 4, and Nintendo Puu) didn&#8217;t include large hard drives and the ability to download full sized titles as easily as on a PC.</p>
<p>GameStop is making the choices they are because that is what is demanded of them by their customers and investors.  As a multi-billion dollar public company the tiny digital sales available five years ago would have just been a distraction from meeting their growth goals. That allowed Valve and others to get experience and partnerships that give them a huge head start in the the digital distribution space. Just in the past 18 months Steam has picked up titles from <a href="http://arstechnica.com/gaming/news/2008/12/ea-games-officially-come-to-steam-sans-drm.ars">EA</a>, <a href="http://store.steampowered.com/news/1115/">THQ</a>, and <a href="http://store.steampowered.com/news/2166/">Sony Online Entertainment</a>. These major publishers join <a href="http://store.steampowered.com/news/783/">Activision</a> and <a href="http://store.steampowered.com/news/801/">Take-Two</a> that joined the service a few years ago. In fact, GameStop was reportedly so upset at how much THQ was favoring Steam that they <a href="http://www.shacknews.com/onearticle.x/57143">temporarily refused to offer pre-orders</a> of Dawn of War II. (Or at least that was the rumor.) All the while, the biggest complaint that most of GameStop&#8217;s customers have is that it doesn&#8217;t give them enough for a used game. By and large their customers are quite happy with the company.</p>
<p>Broadband penetration in the US has <a href="http://www.oecd.org/document/54/0,3343,en_2649_34225_38690102_1_1_1_1,00.html">increased from 4.4% to 50%</a> in the past 9 years. At this point the extensive selection available for download is primed to combine with the relatively new viability of large downloads and drive GameStop completely out of the PC game business. I believe the same thing is likely to happen for console games within the first two years of the next generation of consoles. Within ten years the dedicated video game store will have gone the way of the travel agent, cable driven earthmover, and walled garden internet service provider. </p>
<p>Or at least that&#8217;s now it seems to me as a retail outsider and recent convert of The Innovator&#8217;s Dilemma. What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/03/19/gamestop-vs-the-innovators-dilemma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The first &#8220;real&#8221; MMO</title>
		<link>http://programmerjoe.com/2009/03/16/the-first-real-mmo/</link>
		<comments>http://programmerjoe.com/2009/03/16/the-first-real-mmo/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 01:45:04 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=145</guid>
		<description><![CDATA[This morning I read a post by Dusty Monk where he described the forces that were working to push the Halo MMO toward &#8220;WoW in Space&#8221;: For me personally, this was probably one of the most conflicting parts of working on Titan.  Don’t get me wrong — I’d wanted to work on an MMO for [...]]]></description>
			<content:encoded><![CDATA[<p>This morning I read a <a href="http://ofcourseillplayit.com/?p=131">post by Dusty Monk</a> where he described the forces that were working to push the Halo MMO toward &#8220;WoW in Space&#8221;:</p>
<blockquote><p>For me personally, this was probably one of the most conflicting parts of working on Titan.  Don’t get me wrong — I’d wanted to work on an MMO for as long as long as I’ve been in games, and this was the dream game of a lifetime.  But while there were a few of us that had played MMO’s before WoW, by far and large, as the team grew, most of the people on the team had never played a single MMO before WoW.  This led to a dilemma that the entire team struggled with throughout the lifetime of the project.  And it’s a dilemma I think every team out there that’s designing an MMO today has to struggle with,  and the actual point of this post, which I’m only just now actually getting around to:</p>
<p> <em>How much do you copy the genre leader?</em></p></blockquote>
<p>Dusty&#8217;s actual question is a good one, but that isn&#8217;t what really caught my eye.  You see, while we were building Pirates of the Burning Sea we had a similar dynamic to our team.  World of Warcraft came out two years after we started, so nobody had played it. Instead we had one designer who figured that the MMO genre started with EverQuest where most of the rest of us pegged that event at some earlier game. This guy refused to acknowledge Ultima Online as a &#8220;real&#8221; MMO despite its hundreds of thousands of subscribers and massive success. He thought even less of the games that came before it: The Realm, Meridian 59, and the thousands of MUDs.</p>
<p>For my part, I saw Ultima Online as a logical next step from the MUDs I played in college in the early 90s. I was pretty far gone into a couple of TinyMUCKs back then.  (I just checked and I do, in fact, still have my wiz bit on <a href="http://www.evermore.com/pegasus/index.php3">PegasusMuck</a>.) When called on to date the start of the MMO I usually give two answers: UO was the first commercial success. MUDs (starting with MUD1, I guess) were the origin of the design genre. To me the distinction is important because of all the ways that MUDs break when your playerbase is counted in the tens of thousands instead of hundreds. UO was really the first game to deal with that kind of scale in the design, so it was the first &#8220;real&#8221; MMO.</p>
<p>It shouldn&#8217;t surprise me that there are people working on MMOs today that consider World of Warcraft the first real example of this kind of game.  It has thirty or fourty times the number of subscribers that EverQuest had at its peak. That increase changed the dynamics of the game just as much as the previous 30-40x jump made EverQuest and Ultima Online different from the games that preceeded them.  My only fear is that this will drive more companies into direct competition with WoW (and the $40 million plus games that are intended to compete with it) instead of toward building a nice tidy business aimed at a niche of 100,000 to 300,000 players who are craving something different.</p>
<p>What is your answer when you are trying to come up with the first real MMO?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/03/16/the-first-real-mmo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The hard part of continuous deployment</title>
		<link>http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/</link>
		<comments>http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 06:26:26 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/</guid>
		<description><![CDATA[Last week I posted what sort of changes you might need to make to your deployment process to support updates multiple times a day. I said I would follow up with a description of the technical challenges involved in making your users not hate you if you actually did deploy multiple times a day. The [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I <a href="http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/">posted</a> what sort of changes you might need to make to your deployment process to support updates multiple times a day. I said I would follow up with a description of the technical challenges involved in making your users not hate you if you actually <strong>did</strong> deploy multiple times a day.</p>
<p>The reasons your users will hate frequent deployments are:</p>
<ul>
<li>Non-zero server downtime when a new build is released</li>
<li>Being forced to log out of their existing play session for a new build</li>
<li>Waiting for patches to download for every little change</li>
</ul>
<p>I will describe solutions to each of these problems below.</p>
<p><strong>Eliminating Lengthy Server Downtime</strong></p>
<p>The database architecture in Pirates requires that every character in the database be loaded and processed whenever there is a schema change.Â  From the programmer&#8217;s point of view such changes are easy to make, so they occur frequently. Unfortunately this processing is why the Pirates servers take an hour to upgrade. I don&#8217;t know how common this kind of processing is in other games, but I know we weren&#8217;t the only ones who had to deal with it.</p>
<p>The need to process character data stems from the fact that Pirates stores persistent character data in a SQL database, but the actual data is in opaque blobs. The blobs themselves contain just the field data for each object and do not include any kind of version information. The whole system is only able to contain one version of each class at one time.</p>
<p>A better way to go would be to build your persistence layer so that it could handle any number of historical versions for player data. If you add a schema version to each blob and register each new schema as it is encountered. When a server needs to read an object it can perform the schema upgrades on the fly and avoid the long slow upgrade of each object.Â  If necessary you could even have a process that crawls the database upgrading inactive characters in the background so that they will be ready to go the next time they login.</p>
<p><strong>Supporting multiple concurrent versions</strong></p>
<p>Database updates are the longest section of server downtime at patch time, but they aren&#8217;t the only one.Â  For Pirates (and most MMOs) each world instance must be taken offline so that the new version can be installed on the server hardware and then launched. This adds some downtime for the upgrade, but most painfully, it also disconnects all active players. A better method would be to build your server clusters in such a way that they tolerate multiple simultaneous versions of the code.</p>
<p>It turns out that Guild Wars already supports this.Â  One of the <a href="http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/#comment-316278">comments</a> from the last post describes a bit about how this works:</p>
<blockquote><p>Once the new code was on all the servers in the datacenters, we flipped a switch that notified the live servers that any new â€˜instancesâ€™ should be started using the latest version of the game code. At this point, any users running older builds of the client got told that they needed to update, and attempts to load into a new instance would be rejected until they updated.<br />
To summarize how the live update worked on the server, I believe we atomically loaded the new game content onto the servers, and then loaded the newest version of the game code into the server processes alongside the older version, because each build was a single loadable DLL. That let us keep old instances alive alongside new instances on the same hardware, and isolated us from some of the hairy problems youâ€™d get from multiple client versions running in the same world.</p></blockquote>
<p>For players in the PvE parts of the game this method apparently worked quite well. However PvP players could only play with each other when everyone was running the same version of the game, so this caused problems with PvP events. It isn&#8217;t perfect, but this is a huge step in the right direction.</p>
<p>The Guild Wars approach worked for them, but would be less suitable for Pirates which has eight different types of processes making up its server clusters.Â  However with some changes to the Pirates <a href="http://programmerjoe.com/2008/09/06/serverdir-20/">Server Directory</a> multiple versions of those exes could easily co-exist on a single server machine. When a client connects to Pirates it queries the server directory process to find an IP address and port number to connect to. That query already takes the version number into account, and could be adapted to simply never return cluster servers from an older version.</p>
<p>Another approach that would eliminate the need for any client downtime for many patches is to make those systems work more like the web. The next time I architect an MMO (at Divide by Zero Games, actually) I intend to move most of what the traditional game client does outside of the typical persistent client-server connection entirely. Systems like mission interaction, guild management, in-game mail, and the like don&#8217;t require the same level of responsiveness as moving and attacking. If those systems use non-persistent HTTP connections as their transport the same protocols can be re-used to support web, mobile, or social network front endsÂ  to the same data. For chat a standarized protocol (Jabber maybe?) will let you use off the shelf servers and let chat move in and out of game easily. The more locked down these APIs are the less likely you are to affect them with your small patches.</p>
<p><strong>Eliminating patch time</strong></p>
<p>So you have eliminated all server downtime and even allowed outdated clients to stay online and play after a new version of your game is deployed. If players have to download a small patch and then spend a minute or two applying it to your giant pack files they are still going to be annoyed.Â  Well it seems that Guild Wars did a great job here too.</p>
<p>Almost all of the patching in Guild Wars is built right into the client and can be delayed until right before it is actually needed. When you download Guild Wars it is less than 1MB to start.Â  The first time you run the game it downloads everything you need to launch the game and get into character creation. After character creation it downloads enough to load the first town.Â  When you leave the first town and go out into the wilderness it loads what it needs for that zone before you leave the loading screen, and so on.Â  All of this data is stored on the user&#8217;s machine, so going back into town is fast.</p>
<p>The natural result of this is that if a user has outdated data when they reach the loading screen for a zone, tiny patches for the updated files are downloaded before they finishing zoning. The game never makes the user wait to patch data for sections of the world they aren&#8217;t anywhere near. When the client is updated an up to date list of the files in the latest version is downloaded and the client uses that to request updated data as necessary.</p>
<p>The next logical step once you have this partial patching system in place is to enable both servers and clients to load new data on the fly without shutting down. If you are doing it right, many of your new builds are going to be data-only and include no code changes. Small changes of that sort could easily be downloaded in the background and then switched on via a broadcast from the servers.</p>
<p><strong>Fixing further technical problems</strong></p>
<p>There are two remaining technical hurdles that are not directly visible to the players but still need to be solved if the latency between making a change and deploying it is to drop to under an hour. These two are strongly tied to the partial patching process described above: slow data file packing, and slow uploads to the datacenter patch servers.</p>
<p>The packed data files on Pirates are rebuilt from scratch every time a build is run. This is an artifact of my hacking in pack file support over a long weekend that could be solved with incremental pack file updates. Building them from scratch involves opening tens of thousands of files totalling 6GB in size, after compression, and compressing them out into 66 pack files and takes 80 minutes. Usually a much smaller number of files has actually changed, so an incremental build would reduce both the file opens and the data packing work itself.</p>
<p>That same incremental process could be applied to the patch deployment process itself.Â  Because of how Flying Lab&#8217;s process was arranged with SOE each packed data file had to be uploaded again in its entirity if it had any changes. That slowed the transfer to SOE considerably. I am not intimately familiar with the SOE patch servers themselves, but I suspect a similiar inefficiency existed on their end when a build was deployed.Â  This could also be eliminated with more meta-data of exactly what had changed, and you will need that information for the partial patching above to work anyway.</p>
<p><strong>So is it worth all this trouble?</strong></p>
<p>These changes represent a &#8220;never going to happen&#8221; amount of work for an existing game. While the work involved in building your game to eliminate these deployment issues is less for a game that is being build with that in mind, it still isn&#8217;t free.Â  Is it worth the expense to allow your game to deploy in an hour instead of seven and a half hours?</p>
<p>I think it is worth it from a purely operational perspective, and here&#8217;s why: One of the first few monthly builds released for Pirates included a bug that caused players to lose a ship at random whenever they scuttled a ship.Â  Their client would ask them to confirm that they wanted to scuttle whatever ship they clicked on, but when it got to the server it would instead delete the first ship in their list. Though it was only a one line code change to fix the bug it took many hours to deploy the changes. In the meantime quite a few players had deleted their favorite ships and all the cargo in them. We knew about the build in the morning of patch day, but couldn&#8217;t get a new build out for 8-10 hours, which put us into prime time. It caused a lot of bad blood that could have been avoided if we had been able to deploy the build faster. This is a particularly bad example, but this kind of thing happens all the time with live MMOs. (SWG had a bug go live where the command to launch fireworks would let players launch anything they liked into the air and then delete the object afterward.Â  That included but was not limited to fireworks, monsters, buildings, and other players.)</p>
<p>There are plenty of other reasons to be able to patch very quickly, and I may go into them in a future post. I think it&#8217;s worth ensuring you are able to push new builds within an hour simply to be able to fix your major screw-ups as quickly as possible and save your players grief.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Continuous Deployment with Thick Clients</title>
		<link>http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/</link>
		<comments>http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 06:35:44 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/</guid>
		<description><![CDATA[(Update: Part two is up now. It details the technical changes that are required to make this work.) Earlier this week Eric Ries and Timothy Fitz posted on a technique called Continuous Deployment that they use at IMVU.Â  Timothy describes it like this: The high level of our process is dead simple: Continuously integrate (commit [...]]]></description>
			<content:encoded><![CDATA[<p>(Update: <a href="http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/">Part two</a> is up now. It details the technical changes that are required to make this work.)</p>
<p>Earlier this week <a href="http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html">Eric Ries</a> and <a href="http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/">Timothy Fitz</a> posted on a technique called Continuous Deployment that they use at IMVU.Â  Timothy describes it like this:</p>
<blockquote><p>The high level of our process is dead simple: Continuously integrate (commit early and often). On commit automatically run all tests. If the tests pass deploy to the cluster. If the deploy succeeds, repeat.</p></blockquote>
<p>Those posts seem to be mostly about deploying new code to web servers. I thought it would be interesting to consider what it would take to follow a similar process for an MMO with a big installed client. I will do that in two parts with today&#8217;s part being the deployment process itself.Â  In a future post I will describe the architectural changes you would have to make to not have frequent updates annoy your players enough that they riot and burn down your datacenter (or go play someone else&#8217;s game instead.)</p>
<p>As a point of comparison, here&#8217;s how patches are typically developed and deployed for Pirates of the Burning Sea:</p>
<ol>
<li>The team makes the changes. That takes three weeks for monthly milestone builds with a lot of the integration happening in the last week. For a hotfix it usually takes a few hours to get to the root cause of the problem and then half an hour to make the change, build, and test on the developer&#8217;s machine.</li>
<li>A build is run on the affected branch. When that&#8217;s a full build it takes 1:20 hours. Incremental builds can be ten minutes if no major headers changed. The form of build that people on the dev team use is copied to a shared server at this point.</li>
<li>Â Some quick automated tests are run to fail seriously broken builds as early as possible. These take 10 minutes.</li>
<li>The build is packed up for deployment. This takes 80 minutes. The build is now ready for manual testing (since the testers use the packed retail files to be as close to a customer install as possible.)</li>
<li>Slow automated tests run. These take 30 minutes.</li>
<li>(concurrent with 5 if necessary) The testers run a suite of manual tests called BVTs. These take about half an hour. These tests run on each nightly build even if it isn&#8217;t going to be deployed to keep people from losing much time to bad builds. Most people wait for the BVTs to finish before upgrading to the previous night&#8217;s build.</li>
<li>For milestone builds the testers spend at least two weeks testing all the new stuff. Builds are sent to SOE for localization of new content at the same time.</li>
<li>A release test pass is run with a larger set of tests. These take about three hours.</li>
<li>The build is uploaded to SOE for client patching and to the datacenter for server upgrades. This takes a few minutes for a hotfix or 6-8 hours for a month&#8217;s worth of changes.</li>
<li>At this point the build is pushed to the test server. Milestone builds sit there for a couple weeks. Hot fixes might stay for a few hours or even go straight to live in an emergency.</li>
<li>SOE pushes the patch to their patch servers without activating the patch for download. That takes between one and eight hours depending on the size of the patch.</li>
<li>At the pre-determined downtime, the servers are taken offline and SOE is told to activate the patch. This usually happens at 1am PST and doesn&#8217;t take any time. Customers can begin downloading the patch at this point.</li>
<li>Flying Lab operations people upgrade all the servers in parallel. This takes up to three hours for milestone builds, but more like an hour for hotfixes. They bring the servers up locked so that they can be tested before people come in.</li>
<li>The customer service team tests each server to make sure it&#8217;s pretty much working and then operations unlocks the servers.Â  That takes about 20 minutes.</li>
<li>If the build was being deployed to the test server, after some days of testing steps 11-14 will happen again for the live servers.</li>
</ol>
<p>This may seem like a long, slow process but it actually works pretty well.Â  Pirates has had 11 &#8220;monthly&#8221; patches since it launched, and they go well.Â  Not many other MMOs are pushing content with that frequency.Â  Some of the slow bits (like the upload to SOE and their push to their patchers) are the result of organizational handoffs that would take quite a bit of work to change. Flying Lab also spends a fair amount of time testing manually over and above the automated tests. Those manual tests have kept thousands of bugs from going live and as far as I&#8217;m concerned they are an excellent use of resources. I am not trying to bash Flying Lab in any way, just provide a baseline for what an MMO deployment process looks like. I suspect many other games have a similar sequence of events going into each patch, and would love to hear confirmation or rebuttal from people who have experience on other games.</p>
<p>Assuming minimum time for a patch, these are the times we are left with (in hours and minutes):<br />
<center><strong>Pirates Deployment Time</strong></p>
<table>
<tr>
<td>0:10</td>
<td>Run incremental build</td>
</tr>
<tr>
<td>0:10</td>
<td>Run quick automated tests</td>
</tr>
<tr>
<td>1:20</td>
<td>Pack the build</td>
</tr>
<tr>
<td>0:30</td>
<td>Run quick manual tests/slow automated tests</td>
</tr>
<tr>
<td>3:00</td>
<td>Run release pass smoke tests</td>
</tr>
<tr>
<td>0:05</td>
<td>Upload build for patching</td>
</tr>
<tr>
<td>1:00</td>
<td>Build is pushed to patchers</td>
</tr>
<tr>
<td>1:00</td>
<td>Servers are upgraded</td>
</tr>
<tr>
<td>0:20</td>
<td>A final quick test is made on each server</td>
</tr>
<tr>
<td><strong>7:35</strong></td>
<td><strong>Total time to deploy</strong></td>
</tr>
</table>
<p></center><br />
If it takes seven and a half hours to deploy a new build you obviously aren&#8217;t going to get more than one of them out in an 8 hour work day. Let&#8217;s forget for a moment that IMVU is able to do this in 15 minutes and pretend that our target is an hour. For now let&#8217;s assume that we will spend 10 minutes on building, 10 minutes on automated testing, 30 minutes on manual testing, and the last 10 minute actually deploying the build. We will also assume that this is the time to deploy to the test server and that this is the slower than the actual push from test to live.</p>
<p>Without going into detail I am going to assume three architectural changes to make these targets much more likely. First, the way that the game uses packed files of assets will need to be changed to allow trivial incremental changes on every file in the game without any 80 minute pack processes. I will assume that pack time can go away and be a minor part of deployment.Â  The other assumption is that unlike Pirates, our theoretical continuously deployed MMO will not require every object in the database to be touched when a new build is deployed so the hour spent upgrading databases on the servers is reduced to about five minutes of file copying. The third architectural change I will assume involves moving almost all of the patching process into the client itself and out of the launcher. This eliminates both the transfer of bits to Southern California and the push of pre-built patches out to the patcher clusters around the world. I will go into each of these assumptions in my next post, but let&#8217;s just pretend for now that they appear magically and reduce our time accordingly.</p>
<p>The amount of time spent on automated testing in this deployment process is 40 minutes. Fortunately this work is relatively easy to spread out over multiple machines to reduce the total time involved. Assuming a test farm of at least five machines we should be able to accomplish our ten minute goal.</p>
<p>It is possible that we could have multiple testers working in parallel to perform the manual tests more quickly. There are 230 minutes spent on testing in this sequence, so if we expect to do that amount of work with 11.5 manual testers assuming perfect division of labor. There are two things wrong with that statement. The first is that perfect division of labor among 12 people is impossible so the number is probably closer to 20.Â  The second problem is that having a team of 12 on staff to do nothing but test new builds with tiny incremental changes in them is not worth nearly what it costs you in salaries. A much more likely outcome is that the amount of manually testing in the build process is drastically reduced. In addition to that we can get our playerbase involved in the deployment testing if we swap things around a bit.<br />
<center><strong>Trimmed Deployment Time</strong></p>
<table>
<tr>
<td>0:10</td>
<td>Run incremental build</td>
</tr>
<tr>
<td>0:10</td>
<td>Run automated tests on five machines</td>
</tr>
<tr>
<td>0:05</td>
<td>Upload only changed files to game servers and patch servers</td>
</tr>
<tr>
<td>0:05</td>
<td>Deploy build on test server</td>
</tr>
<tr>
<td>0:30</td>
<td>Manual smoke test on public test on public test server<br />
Players can test at the same time.</td>
</tr>
<tr>
<td><strong>1:00</strong></td>
<td><strong>Total time to deploy</strong></td>
</tr>
</table>
<p></center>In fact, if those 30 minutes of manual testing are your bottleneck and you can keep the pipeline full, you can push a fresh build every 30 minutes or 16 times a day. Forget entirely about pushing to live for a moment and consider what kind of impact that would have on your test server. Your team could focus on fixing issues that players on the test server find <strong>while those players are still online</strong>. Assuming a small change that you can make in half an hour, it would take only an hour from the start of the work on that fix to when it is visible to players. That pace is fast enough that it would be possible to run experiments with tuning values, prices of items, or even algorithms.Of course for any of this to work the entire organization needs to be arranged around responding to player feedback multiple times per day.  The real advantage of a rapid deployment system is to make your <em>change -&gt; test -&gt; respond</em> loop faster. If your plans are set a month out and your developers don&#8217;t have time to work on anything other than their assigned tasks for that entire time, there is not much point in pushing builds this quickly.What do you think?Â  Obviously actually implementing this is a more work than moving numbers around in a table. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
