<?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>Elder Game &#187; Programming</title>
	<atom:link href="http://www.eldergame.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eldergame.com</link>
	<description>MMO game development</description>
	<lastBuildDate>Wed, 23 Jun 2010 18:12:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Scaleform: the future of MMOs?</title>
		<link>http://www.eldergame.com/2008/09/scaleform-the-future-of-mmos/</link>
		<comments>http://www.eldergame.com/2008/09/scaleform-the-future-of-mmos/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 13:00:32 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Production]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.eldergame.com/?p=122</guid>
		<description><![CDATA[As someone told me at the Austin GDC, Scaleform is a &#8220;no brainer for MMOs&#8221;, and that&#8217;s certainly a common sentiment among MMO development groups. If you&#8217;re not hip to the Future Of MMO&#8217;s, the lowdown is that Scaleform offers a product that lets you embed Flash right into your 3D game. It&#8217;s portable across [...]<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></description>
			<content:encoded><![CDATA[<p>As someone told me at the Austin GDC, <a href="http://www.scaleform.com/">Scaleform</a> is a &#8220;no brainer for MMOs&#8221;, and that&#8217;s certainly a common sentiment among MMO development groups. If you&#8217;re not hip to the Future Of MMO&#8217;s, the lowdown is that Scaleform offers a product that lets you embed Flash right into your 3D game. It&#8217;s portable across all the major consoles as well as the PC. Use it to create your GUI, and you&#8217;ve got automagical cross-platform goodness. Plus, you can use Adobe&#8217;s Flash development tools to create your GUI! That saves your team development time, too. How can you lose?</p>
<p>Well, Scaleform does deliver what it advertises. But it&#8217;s not a no-brainer decision. Here&#8217;s why.</p>
<p><strong>Do you really want to use the Flash development tools?</strong></p>
<p>Scaleform supports ActionScript 2, not the more modern ActionScript 3. This means that all of Adobe&#8217;s neat Flex development tools are completely off the table. It also means you can&#8217;t use all the nice GUI widgets made for AS3. (Scaleform told me they are developing their own custom GUI library specifically for Scaleform development, but I don&#8217;t believe it&#8217;s available yet.)</p>
<p>So this means that you will need to use the Flash 2 IDE. If you are a traditional programmer, you will find this <em>torturous</em>. The Flash IDE is not for you. It is made for 2D animation artists who might know a little programming on the side. The workflow is not like anything you are used to.</p>
<p>Engineers will inevitably want to mod the living crap out of the Flash workflow. You can create plug-ins for Flash, but you will have to do a <em>lot</em> of work to get it to the point that an engineer can use it comfortably.</p>
<p><strong>Can your artists actually use the Flash tools?</strong></p>
<p>&#8220;Silly blogger,&#8221; you say, &#8220;the Flash IDE won&#8217;t be used by our ENGINEERS&#8230; it will be used by our ARTISTS!&#8221; Well, better start training them now, because artists who have the necessary skillset are very hard to find. Oh, you can find Flash 2 developers by the yard&#8230; but you need <em>good </em>ones, don&#8217;t you? You need developers who can animate stuff well, and then wire the animations together with code, and connect it all to a custom interface your engineers make for them. This significantly raises the skill bar. Now you&#8217;re not looking for a mere animator. You&#8217;re looking for a technical artist who also happens to be good at 2D animation and coding.</p>
<p>But it gets worse! Scaleform is optimized for GPUs, not CPUs. This has numerous ramifications: bitmaps need to be certain sizes, and not too big; scripting needs to be kept to an absolute minimum in order to not bottleneck the pipeline, so you&#8217;ll need to know clever timeline tricks to get good performance; and some common Flash effects are just not available at all (because they can&#8217;t be done efficiently on consoles&#8217; GPUs).</p>
<p>So you need a really experienced 2D animator who is not afraid of code or technical details at all. The folks at Scaleform told me that the best way to look for Scaleform developers is to look for Flash Lite developers. Flash Lite is the version of Flash for cell-phones; these developers are used to working within limitations that are very similar to Scaleform&#8217;s limitations. I haven&#8217;t personally looked for Flash Lite developers, but I do know that very few Flash Lite games exist, so devs may be very hard to find.</p>
<p><strong>Can you actually use Scaleform for your GUI?</strong></p>
<p>Scaleform works best for console games. Civilization Revolutions is a great example of a Scaleform game. It doesn&#8217;t have a ton of resizable windows and it doesn&#8217;t have widgets with dozens of functions. It has a really flashy GUI but simple, clean interfaces. MMORPGs tend to have much more complex GUIs.</p>
<p>Now you can easily argue that this is a flaw in MMO design, but let&#8217;s face it: if you&#8217;re pitching an MMO today, you are probably pitching a game with resizable chat windows, dozens of floating interface panes, macro-scriptable interfaces, and elaborate drag-and-drop systems. You <em>can </em>do all this with Scaleform &#8212; but not for free. You&#8217;ll have to do some heavy lifting in the engineering department.</p>
<p><strong>Don&#8217;t count on &#8220;free&#8221; user modding</strong></p>
<p>Lots of developers see Scaleform as the secret to free user-generated content. Users can just use Flash to create new replacement SWF files for your game, and can make it do anything! Free mods! Well, yes and no.</p>
<p>You can definitely make that happen, but you will face three big problems. First, you still need a well-documented interface to the game systems proper &#8212; otherwise, their SWF files won&#8217;t be able to make the game do anything.</p>
<p>Second, you will have to relinquish a lot of control over what users can and can&#8217;t do. The modding system in World of Warcraft is carefully crafted to keep users from being able to make combat macros. You would have a very hard time pulling this off if you let users plug in their own custom SWF files.</p>
<p>Finally, you have the problem that Scaleform is not appropriate for typical Flash developers. The Scaleform guys said that they currently actively discourage companies from using Scaleform for user-modding. Suppose a user creates a popular mod with a 2000-pixel texture in it &#8212; your game&#8217;s perf goes to hell, and you turn around and say that Scaleform is crap. They don&#8217;t want that, and neither do you.</p>
<p><strong>When to use Scaleform</strong></p>
<p>Use Scaleform when:</p>
<ul>
<li>You are absolutely, definitely creating SKUs of your game on multiple platforms (preferably three or more).</li>
<li>You have procured one or more people with just the right experience and skillset to use it.</li>
<li>You have relatively simple interaction interfaces, or can live with keeping a very streamlined UI everywhere.</li>
<li>You don&#8217;t intend to let users mod your GUI.</li>
</ul>
<p><strong>The Future Probably <em>is</em> Scaleform&#8230; but&#8230;</strong></p>
<p>ActionScript is a really good choice for a multi-platform GUI development tool, but traditional MMO interfaces will be constantly straining at the limitations of AS2. When you can use AS3 instead, you&#8217;ll have more options. Scaleform is working on this, as well as a system that uses the CPU for more of the processing, which (among other things) will make it more practical to have user-created content in your game. But that&#8217;s not now: that&#8217;s in a year or two.</p>
<p>In the mean time, you need to look carefully at this choice from every angle. Don&#8217;t jump on it just because you heard some other MMO is using it. Remember, most MMOs you hear about <em>don&#8217;t actually ship,</em> so you can&#8217;t use them as a barometer.</p>
<p><strong>I like Flash, and so does my company</strong></p>
<p>I have been particularly interested in Scaleform because (along with regular contract work, which I&#8217;m still available for), I&#8217;m also the part-time CTO of an internet startup that brokers Flash games. <a href="http://www.flashgamelicense.com">FlashGameLicense.com</a> is all about pairing Flash developers with people who need games. It&#8217;s been around for about 10 months now, and we&#8217;re growing very quickly &#8212; we now have about 2000 games for sale, the majority of which have never been seen anywhere on the internet yet. Flash is definitely heating up as a gaming platform.</p>
<p>Anyway, it&#8217;s sort of tangential to this post, but I figured this was a good time to plug my company! :)  If my dire warnings about using Scaleform in your MMO haven&#8217;t scared you off, we might be able to help you find a developer that fits your needs, so feel free to contact me. Most developers on our site are only looking for work-from-home situations, so it&#8217;s hard to tell how many bites you&#8217;ll get, but it&#8217;s probably a better bet than a blind post on Gamasutra or monster.com. (And if you find yourself needing some fun Flash mini-games for a project, definitely visit!)</p>
<p>So I&#8217;m confident that Flash is the future. But Flash embedded into MMOs? That&#8217;s the bleeding edge of the future. If you&#8217;re bleeding edge, go for it. Just know what you&#8217;re getting into.</p>
<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eldergame.com/2008/09/scaleform-the-future-of-mmos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Take Baby Steps</title>
		<link>http://www.eldergame.com/2007/11/take-baby-steps/</link>
		<comments>http://www.eldergame.com/2007/11/take-baby-steps/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 15:08:20 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.eldergame.com/2007/11/02/take-baby-steps/</guid>
		<description><![CDATA[A pet peeve of mine is overblown engines created by teams who haven&#8217;t even made a single MMO engine before. The honest truth is that most MMO development teams collapse because they can&#8217;t make the technology work. (This is very rarely the reason they admit to, though.) The server is harder to make than they think. [...]<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></description>
			<content:encoded><![CDATA[<p>A pet peeve of mine is overblown engines created by teams who haven&#8217;t even made a single MMO engine before. The honest truth is that most MMO development teams collapse because they can&#8217;t make the technology work. (This is very rarely the reason they <em>admit to</em>, though.) The server is harder to make than they think. The content creation pipeline is vastly more difficult than they expect. So MMO teams fail, more often than not.</p>
<p>In this environment of rampant failure, you would expect to see pragmatic engineers and designers who have modest goals and hope to do just a few cool things with their first game. Make a game with a working engine first, then go crazy with your SECOND game, right? But no, nobody thinks that way. There are lots of reasons why not, but a HUGE part of it is that they don&#8217;t think it&#8217;s going to be that hard.</p>
<p>&#8220;Our engineers are really smart. They&#8217;ve read why everybody else failed, and they aren&#8217;t going to make those mistakes. We have a brilliant new architecture idea that solves everything.&#8221; The sad part is that I never get to say I-told-you-so, because after these guys&#8217; games collapse, the last thing they need is me kicking them when they&#8217;re down.</p>
<p>Have you ever looked into the various third-party MMO engines for sale? They are really very primitive, if they work at all. These are c<em>ompanies whose sole reason for existence is to create an MMO engine.</em> And they can&#8217;t make it happen in a timely manner. And here your team expects to do all of that, plus make the world&#8217;s craziest new features on top of that and add 5,000 hours of content too. In two years. With an estimated cost of just 15 million.</p>
<p>Same old story.</p>
<p>I made the same sort of mistake when I decided to make a casual game. &#8220;Sure, everybody says they can&#8217;t make real money with indie downloadable games, but they&#8217;re doing it wrong. I&#8217;m really, <em>really</em> smart. I&#8217;m going to knock this out of the park.&#8221; My game was basically a failure. It sure didn&#8217;t make me rich. But I learned a lot &#8212; things I hadn&#8217;t even conceived of when I started &#8211; and my second casual game could have a real chance of success.</p>
<p>MMO engineers do the same thing. They think they&#8217;re going to knock it out of the park on their very first try. But in reality, it&#8217;s their second or third try that has a real chance of being amazing. Of course, unlike casual games, an MMO game can often take three, or four, or <em>five years</em> of toiling to get that first game out the door. That&#8217;s a big chunk of your lifetime to lose if you&#8217;re going to fail in the end.</p>
<p>Engineers are inherently optimists, and the best engineers are incredibly self-confident. I don&#8217;t want to change that. Hell, if people honestly assessed the risk involved in creating an MMO, very few teams would try to make one. And that would be sad.</p>
<p>But do me a favor. Start small. Yes, sure, your team is really smart. Way smarter than the team at Perpetual who couldn&#8217;t make their server and pipeline work after 4 years of continuous development. Sure, okay. But instead of shooting for the moon right away, could you make a simple version first? Make it a zoned architecture, like an old EQ1 server. Make that work, and if you have time left over, make it zone-free.</p>
<p>Just&#8230; take it in steps, okay? Sure, maybe you&#8217;ll have time to add flying mounts and realtime terrain deformation. But first just make sure you have path planning and collision detection.</p>
<p>You say your game will be the first to support 50,000 simultaneous players in a non-instanced contiguous landscape? Nice! But before you do that part, can you make sure your server supports 3,000 simultaneous players? (And no, your prototype that can handle 200 connections is not a good enough test. A few hundred are easy. Thousands are surprisingly hard.)</p>
<p>It makes me so sad when people fail after <em>years</em> of blood and sweat. And these failures could often be salvaged into fun games if the team hadn&#8217;t shot for the moon right from the get-go. Yes, you&#8217;re smart. I sure hope you are, because otherwise you haven&#8217;t got a chance of making an MMO. But being smart is just a prerequisite. Those other people who failed&#8230; most of them were really smart too.</p>
<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eldergame.com/2007/11/take-baby-steps/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Realtime vs. Faketime</title>
		<link>http://www.eldergame.com/2007/10/realtime-vs-faketime/</link>
		<comments>http://www.eldergame.com/2007/10/realtime-vs-faketime/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 13:00:07 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.eldergame.com/2007/10/31/realtime-vs-faketime/</guid>
		<description><![CDATA[Developers love new technology. They love it more than players, honestly. This bleeds into developers&#8217; perspectives of their universe, and that&#8217;s unfortunate. Here&#8217;s an example: &#8220;Wouldn&#8217;t it be great if players could beat the ultimate bad guy boss in the story arc, and then a giant rift opens up and a castle appears? That would be [...]<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></description>
			<content:encoded><![CDATA[<p>Developers love new technology. They love it more than players, honestly. This bleeds into developers&#8217; perspectives of their universe, and that&#8217;s unfortunate.</p>
<p>Here&#8217;s an example: &#8220;Wouldn&#8217;t it be great if players could beat the ultimate bad guy boss in the story arc, and then a giant rift opens up and a castle appears? That would be so great. Wait, you say that&#8217;s been done before?&#8221; Back as far as Asheron&#8217;s Call 1, developers would pull stunts like this, to great effect. I remember an AC1 event where the ultimate boss dungeon had a big padlock on the door (so to speak) that unlocked itself at a predetermined time. About 12 hours after that, the servers came down. When they came back up, the &#8220;aftermath&#8221; version of the universe appeared. Players loved it!</p>
<p>&#8220;But that&#8217;s cheating. It&#8217;s not real time, it&#8217;s just a hack.&#8221; Let&#8217;s look at that for a minute, because it&#8217;s a pretty common complaint. Sure, it was rigged. The players couldn&#8217;t fail, right? Well, in Asheron&#8217;s Call 2 we experimented with letting players fail &#8212; if a given server hadn&#8217;t completed the quest, their world didn&#8217;t get updated until later. But it&#8217;s still cheating, right? Because it didn&#8217;t happen in <em>real time</em>!</p>
<p>Real time wouldn&#8217;t really help here, though. Let&#8217;s suppose it happened in real time. A group of max-level characters would complete the final quest at 1AM, and everybody who happened to be online at that point would be shown a dazzling real time spectacle. All 50 of &#8216;em. Everybody else who logged in the next day didn&#8217;t get anything out of the &#8220;real time&#8221; feature you worked so hard on. It&#8217;s just not a very good use of development time. And although it&#8217;s not as sexy, players enjoy the &#8220;fake&#8221; version very much. Don&#8217;t be afraid to go there just because it isn&#8217;t ridiculously over-engineered.</p>
<p>Now don&#8217;t get me wrong, some cheap and effective realtime content can go far. In AC1 and AC2, we would have magical portals that appear and disappear in real-time, gating content and quests. Worked great, very easy to implement. Still not sexy (to designers), but it worked great.</p>
<p>Keep it simple! Figure out the easiest way to get the results you want. Do that, not the really hard version. Making and running an MMO is already inconceivably difficult without piling on random features you don&#8217;t need.</p>
<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eldergame.com/2007/10/realtime-vs-faketime/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ACE Library for C++</title>
		<link>http://www.eldergame.com/2007/10/ace-library-for-c/</link>
		<comments>http://www.eldergame.com/2007/10/ace-library-for-c/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 18:25:33 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.eldergame.com/2007/10/14/ace-library-for-c/</guid>
		<description><![CDATA[I&#8217;ve been using the ACE C++ library recently and I&#8217;m very impressed. It&#8217;s an extremely fast portable networking and server-architecture library. Portable primitives for sockets, threads, synchronization, logging, and many other basic components &#8220;Plug-and-play&#8221; pattern architectures for building high-speed servers A suite of IPC tools for fast portable inter-process communication Extra portability tools such as [...]<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the ACE C++ library recently and I&#8217;m very impressed. It&#8217;s an extremely fast portable networking and server-architecture library.</p>
<ul>
<li>Portable primitives for sockets, threads, synchronization, logging, and many other basic components</li>
<li>&#8220;Plug-and-play&#8221; pattern architectures for building high-speed servers</li>
<li>A suite of IPC tools for fast portable inter-process communication</li>
<li>Extra portability tools such as replacement containers, allocators, strings, etc., in case some of your target platforms don&#8217;t have good standard libraries</li>
</ul>
<p>For me, the magical portability features are huge. I like to develop on Windows and deploy on Linux, but doing this used to be very stressful. The ACE library really takes the nightmare out of it, though. I used to grit my teeth and prepare for serious headaches whenever I copied my Windows code over to the Linux box, but now I trust that it&#8217;s going to Just Work.</p>
<p>I think there are two reasons this library hasn&#8217;t been a runaway success yet. First, the online tutorials are sub-par. The online references are fine, but for a tutorial you really need to <a href="http://www.amazon.com/ACE-Programmers-Guide-Practical-Programming/dp/0201699710/ref=sr_1_9/002-0237048-1514451?ie=UTF8&amp;s=books&amp;qid=1192383851&amp;sr=1-9" title="ACE Programmer's Guide">buy the book</a>.</p>
<p>The other problem is that it&#8217;s really two libraries in one. It&#8217;s both a low-level utility collection and a high-level pattern library in one, and this can cause a bit of a mental disconnect to people who are looking for one half or the other.</p>
<p>Even so, with the book in hand I was up and running in less than a day. I&#8217;m very comfortable with C++, so your mileage may vary, but I found it pretty painless. </p>
<p>The ACE library should be a serious consideration as part of your MMO server architecture, either as the foundation of a full server or as a plug-in replacement for underperforming components written in other languages. This library makes C++ much more appealing as a server platform.</p>
<p>Now if there was only a similar C++ library for portable SQL interfaces&#8230;</p>
<p><p><a href="http://www.eldergame.com">Elder Game</a> is sponsored by:<br />
<a href="http://www.sleepygiant.com/"><img src="http://www.eldergame.com/wp-content/themes/elder/images/SG-468x60_v3.jpg" /></a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eldergame.com/2007/10/ace-library-for-c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
