<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ben Garney</title>
	<atom:link href="http://blog.bengarney.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bengarney.com</link>
	<description>Flash &#38; Game Technology</description>
	<lastBuildDate>Mon, 02 Jan 2012 05:16:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.bengarney.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ben Garney</title>
		<link>http://blog.bengarney.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.bengarney.com/osd.xml" title="Ben Garney" />
	<atom:link rel='hub' href='http://blog.bengarney.com/?pushpress=hub'/>
		<item>
		<title>Fast Bitmap Fonts in Flash</title>
		<link>http://blog.bengarney.com/2011/12/07/fast-bitmap-fonts-in-flash/</link>
		<comments>http://blog.bengarney.com/2011/12/07/fast-bitmap-fonts-in-flash/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 04:43:04 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=981</guid>
		<description><![CDATA[I got fed up one day, and wrote a simple bitmap font renderer, BMFontRenderer. It parses bitmap font data from a generator like BMFont or Hiero (link on middle right of sidebar) and renders text of your choosing to a BitmapData. BMFontRenderer is under the MIT license, so you can use it as you like. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=981&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://bengarney.files.wordpress.com/2011/12/metrics2.png?w=660" alt="FreeType Font Metrics Chart" title="metrics2"   class="alignright size-full wp-image-983" /><br />
I got fed up one day, and wrote <b>a simple bitmap font renderer, <a href="https://github.com/bengarney/BMFontRenderer">BMFontRenderer</a></b>. It parses bitmap font data from a generator like <a href="http://www.angelcode.com/products/bmfont/">BMFont</a> or <a href="http://slick.cokeandcode.com/">Hiero (link on middle right of sidebar)</a> and renders text of your choosing to a BitmapData. </p>
<p><a href="https://github.com/bengarney/BMFontRenderer">BMFontRenderer</a> is under the <b>MIT license</b>, so you can use it as you like.</p>
<p>Here&#8217;s an example:</p>
<p><pre class="brush: as3;">
// Load the font.
var bmfont:BMFont = new BMFont();
bmfont.parseFont(font);
bmfont.addSheet(0, (new fontSheet()).bitmapData);
            
// OK, draw some text!
var out:BitmapData = new BitmapData(200, 100, true, 0x0);
bmfont.drawString(out, 0, 0, &quot;Hello, world!&quot;);
</pre></p>
<p>(You can see <a href="https://github.com/bengarney/BMFontRenderer/blob/master/src/BMFontRenderer.as">the complete example in BMFontRenderer&#8217;s GitHub page</a>.)</p>
<p>Great. So &#8211; <b>why would you want to use this, given TextField is right there, waiting for you?</b> (Translation: why did you get fed up, Ben?)</p>
<p>It comes down to <b>control</b>. TextField has a TON of knobs and buttons you can set. They all do semi-obscure things which are, in and of themselves, very exciting, but confusing to work with if you aren&#8217;t a font expert. Worst of all, it pulls font data from hard-to-inspect places that are populated by mxmlc at compile time or located on the user&#8217;s system, so you get different visual results depending on who is running your app, where and when you compiled it, and maybe even what browser it&#8217;s in.</p>
<p>The Flash IDE does a good job of hiding all this, and for beautiful animated vector text created by an expert in the tool, there is a great workflow. But when I need to show a high score at an artist-selected size in an artist-selected-and-provided font that has artist-approved antialiasing so it looks good on top of the artist-created background, it can be a lot easier to <b>let the artist export the exact characters they want, how they want them to look,</b> to a PNG. Then all I have to do is copy pixels around.</p>
<p>Fonts are less restrictive about <b>licensing</b> if you ship pixels instead of TrueType/vector data. Shipping raster data can save you a couple grand in license fees, nevermind cut down on your download quite nicely.</p>
<p>Doing it this way also puts <b>100% of the font handling code under your control</b>. There are no parts you can&#8217;t debug, analyze, optimize, timeslice, or otherwise fiddle with. Never underestimate the value of this when you have a deadline. This is why I love libraries like <a href="nothings.org/stb/stb_truetype.h">Sean Barrett&#8217;s stb_truetype.h</a>, which is a self-contained TrueType font renderer in a single C file.</a></p>
<p>There&#8217;s another fantastic bonus. Once an artist has characters in a PNG, <b>they can open them up and tweak them</b> &#8211; distress them, add glows or cutouts, or anything else that Photoshop can do. That&#8217;s a big realm of possibilities, and a lot easier than learning a font authoring tool.</p>
<p>To be sure, <b>Flash&#8217;s built in font rendering has solid uses.</b> If you need to dynamically animate, scale, or rotate text, you need vectors, and Flash has got you covered. If you want to display fully arbitrary unicode text, you may need to fall back on system fonts to fit in your download budget (<a href="https://github.com/PushButtonLabs/PushButtonEngine/blob/master/src/com/pblabs/engine/debug/GlyphCache.as">PushButton Engine has a nice glyph cache for speeding up rendering, though</a>). Or if you are working with people who are very comfortable in the Flash IDE, why not use a system they are familiar with?</p>
<p>For everything else, there&#8217;s <a href="https://github.com/bengarney/BMFontRenderer">BMFontRenderer</a>. <b>Enjoy!</b></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/981/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=981&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/12/07/fast-bitmap-fonts-in-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/12/metrics2.png" medium="image">
			<media:title type="html">metrics2</media:title>
		</media:content>
	</item>
		<item>
		<title>Flash Player: A Declining Asset?</title>
		<link>http://blog.bengarney.com/2011/11/21/flash-player-a-declining-asset/</link>
		<comments>http://blog.bengarney.com/2011/11/21/flash-player-a-declining-asset/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 02:40:23 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=926</guid>
		<description><![CDATA[4 YEARS AGO &#8211; &#8220;A DECLINING ASSET&#8221; I&#8217;m working at a technology startup and today I am talking to one of the founders. He looks at me and says, &#8220;Our main product is a declining asset.&#8220; This is the product that generates 90% of our revenue and pays both of our paychecks. It&#8217;s the one [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=926&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://bengarney.files.wordpress.com/2011/11/up-1decline.jpg?w=300&#038;h=207" alt="" title="up-1decline" width="300" height="207" class="alignright size-medium wp-image-971" /><b>4 YEARS AGO &#8211; &#8220;A DECLINING ASSET&#8221;</b></p>
<p>I&#8217;m working at a technology startup and today I am talking to one of the founders. He looks at me and says, &#8220;<b>Our main product is a declining asset.</b>&#8220;</p>
<p>This is the product that generates 90% of our revenue and pays both of our paychecks. It&#8217;s the one that made our company a success, put us on the map.</p>
<p>Uh oh.</p>
<p><b>NOVEMBER 12, 2011 &#8211; ADOBE&#8217;S BIG IDEA</b></p>
<p>If you watched the <a href="https://asib2.adobeconnect.com/_a1108722463/p90do62vlj2/?launcher=false&amp;fcsContent=true&amp;pbMode=normal">Digital Media section of Adobe&#8217;s recent analyst meeting</a>, you know that <b>Adobe is putting a lot of focus on HTML5</b>. Their recent announcement regarding <a href="http://blogs.adobe.com/conversations/2011/11/flash-focus.html">dropping mobile web browser support for Flash Player</a> caused a lot of turmoil, too, along with a <a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html">shift in direction for the Flex SDK</a>, their enterprise app framework.</p>
<p>If you look at the marketplace and the technologies at play, it seems that Adobe has realized that <b>Flash&#8217;s position in the marketplace is eroding</b>, that the erosion probably can&#8217;t be stopped, and they need to  treat Flash as a declining asset. Just to review, here are some reasons that Flash&#8217;s position is eroding:</p>
<ul>
<li>The many <b>3rd party mobile, native, and web-targeted development tools</b> like <a href="http://www.anscamobile.com/corona/">Corona</a>, <a href="http://getmoai.com/">Moai</a>, <a href="http://unity3d.com/">Unity</a> and others.
<li>Non-Adobe Flash <b>runtimes</b> like <a href="http://gameware.autodesk.com/scaleform">Scaleform</a>, <a href="http://www.radgametools.com/iggy.htm">Iggy</a>. Companies like <a href="http://www.thebehemoth.com/">The Behemoth</a> have their own Flash-compatible runtimes, too.
<li>And of course the big one &#8211; <b>HTML5</b>. It can handle more and more enterprise apps, animation/multimedia content, and 3D. Browser vendors are in competition but increasingly targeting Flash-like capabilities.
</ul>
<p>Long term, <b>HTML5 and other non-Flash technologies are unlikely to go away</b>. Adobe may as well be proactive about owning the space rather than fight an unwinnable battle to keep everyone on Flash.</p>
<p>One more point to consider: Flash is made up of three big pieces. You have the <b>tools</b>, like Flash Builder and Flash Pro. You have the <b>runtime</b>, like the web plugin, the standalone player binaries, and AIR for desktop and mobile. And finally, you have the <b>platform</b> itself &#8211; the file formats, AVM specification, compilers, and APIs that define the behavior of Flash content. </p>
<p>They are all <b>independent</b> to a greater or lesser degree. The only part that probably wouldn&#8217;t migrate to HTML5 is the actual runtime (but see <a href="https://github.com/tobeytailor/gordon/wiki">Gordon</a>). And Adobe has been rumbling about compiling AS3 to JS/HTML5 and supporting C via Alchemy 2.</p>
<p><b>LABELS AND COMMUNITIES</b></p>
<p>Now, the funny thing about that conversation from four years ago is that, because of the mental label of &#8220;declining asset&#8221; we assigned, (at least) <b>two interesting things happened</b>. First, the company got acquired and tried to diversify into a couple of new markets. Second, I along with a few other guys left the company and went on to start a new one.</p>
<p><b>But the &#8220;declining&#8221; product continued to make more money than ever before.</b> And in fact, it lives on today, despite the original company getting liquidated by its owner when the diversification strategy didn&#8217;t work out. So what does it mean, exactly, to be a declining asset?</p>
<p>I think &#8220;declining asset&#8221; is a label you put on something to help you make decisions. In Adobe&#8217;s case, the decision they made was <b>to move their long term focus toward HTML5 and away from Flash Player</b>.</p>
<p>There are some important things to keep in mind with the communities that develop around technologies and products. First, realize that <b>the conversation is often dominated by the vocal minority</b> &#8211; so what is said most often and loudest often doesn&#8217;t reflect on the actual needs of your user base. Second, realize that <b>the people who post on your forums are emotionally invested</b> in the product, have it as part of their identity, and they will be deeply unsettled by any signs that support is fading. Finally, realize that <b>users often have a limited perspective</b>. Community members are not tracking major market trends, they are looking at how they can meet their immediate needs (like getting contract work or finishing a specific project).</p>
<p>In other words, the community tends to act like a <b>mob</b>.</p>
<p>And I saw no better example of this than when I was on a group video chat last week and saw Flash professionals practically weeping, calling out Adobe representatives, demanding, threatening to break up, over these announcements. <b>It was more like seeing your drunk friend vent over his ex-girlfriend than it was watching a group of well-respected developers discuss their future.</b> Everything is in a turmoil, it&#8217;s the end of the world, everyone is screwed, etc.</p>
<p><b>REPORTS OF FLASH&#8217;S DEATH</b></p>
<p>Ok, but that <b>isn&#8217;t actually the end of &#8220;Flash&#8221; as a whole</b>. Probably. Even though it really sounds like it. Let me explain.</p>
<p>Adobe has a <b>ton of outs</b> from this situation that let them preserve their and your investments. The most obvious out is replacing Flash Player with HTML5. You export from Flash Pro or Flash Builder and it runs directly on HTML5. In fact, they have been inching towards this in different forms for a while now (the conversion tool on Labs, Edge, Muse, etc.).</p>
<p>Even if they drop AS3 and go with JS, <b>their tools can still be useful</b>. If Flash Pro can still create banner ads and interactive experiences for a large audience, who cares what the output runs on? Life will continue relatively unchanged for a lot of Adobe customers.</p>
<p>There&#8217;s also a more subtle out:</p>
<p><b>HTML5 has its weaknesses.</b> Lots of them. But public opinion supports it. Maybe it&#8217;s just a Betamax vs. VHS difference. Or maybe HTML5 is doomed due to the conflicting goals of vendors and the difficulty of the implementation task.</p>
<p>Maybe HTML5 ends up being great for less demanding uses &#8211; like basic enterprise apps, ads, motion graphics, etc. &#8211; but can&#8217;t get it together for highly demanding and integrated stuff like games. <b>Adobe can keep Flash around and focus specifically on the game use case</b> &#8211; which, by the way, is also highly beneficial for non-game apps, since they tend to use subsets of game functionality &#8211; and get as much value from it as possible for as long as possible.</p>
<p>Between the games angle and inertia, <b>Flash could remain relevant for years</b>. It could even end up totally dominating that space for a long time to come, even as HTML5 takes over the bottom of the market, due to being able to be more focused and agile.</p>
<p><b>CONCLUSIONS</b></p>
<p>Let me add two caveats. First caveat: At some point you can only expect so much out of a platform &#8211; you can&#8217;t get a guarantee that it will remain relevant for ten years. Even proven, still-relevant technologies like C have had their death announced many times. At some point you just have to say, &#8220;<b>well, N years more relevance is good enough and I&#8217;ll re-evaluate in a year</b>.&#8221;</p>
<p>Second caveat: Maybe Adobe screws the pooch and that&#8217;s that. Maybe they cut too many resources from Flash. Maybe they don&#8217;t build good stuff on HTML5. Maybe they ruin everything. So don&#8217;t bet the farm. <b>Make sure you learn a few different technologies well.</b> It will make you a better developer, even if you still just do Flash work day to day. And you&#8217;ll sleep easier knowing that if worst comes to worst you have an out. I&#8217;ve never seen a successful programmer regret having learned a new language or paradigm.</p>
<p><b>I don&#8217;t think Adobe is making bad decisions, just difficult ones</b>. </p>
<p><b>Bottom line:</b> Flash is a declining asset, but declining assets aren&#8217;t dead or even out of the fight. Everyone needs to look at technologies on their merits and see if it&#8217;s a good fit for your needs. There are a lot of places where Flash will continue to be a good fit for a while to come &#8211; and the places where it is ambiguous deserve careful consideration regardless of Adobe&#8217;s stated plans.</p>
<p><i>(Thanks for reading! If you liked this article, please consider voting it up on <a href="http://news.ycombinator.com/item?id=3264061">HackerNews</a> or <a href="http://www.reddit.com/r/web_design/comments/ml7zy/flash_player_a_declining_asset/">Reddit</a>)</i></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/926/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/926/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/926/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=926&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/11/21/flash-player-a-declining-asset/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/11/up-1decline.jpg?w=300" medium="image">
			<media:title type="html">up-1decline</media:title>
		</media:content>
	</item>
		<item>
		<title>Game Articles Online</title>
		<link>http://blog.bengarney.com/2011/11/04/game-articles-online/</link>
		<comments>http://blog.bengarney.com/2011/11/04/game-articles-online/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 23:44:10 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Publication]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=911</guid>
		<description><![CDATA[I wrote some game reviews/articles a while ago in collaboration with Blockland creator Eric Hartman. All 12 are now online again, thanks to Eric. I&#8217;m especially proud of the history of every MAME-supported baseball game from 1976-1985, the article we did for GameDev.net titled Learning from the 3000 Classics, and our review of the 90s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=911&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://badspot.us/Articles.html"><img src="http://bengarney.files.wordpress.com/2011/11/gamedev-article-1.png?w=660" alt="" title="Gamedev-Article-1"   class="alignleft size-full wp-image-913" /></a> I wrote some game reviews/articles a while ago in collaboration with <a href="http://blockland.us/">Blockland</a> creator <a href="http://badspot.us/">Eric Hartman</a>.</p>
<p><b><a href="http://badspot.us/Articles.html">All 12 are now online again, thanks to Eric.</a></b> I&#8217;m especially proud of the <a href="http://badspot.us/img/MAME-Baseball-History.html">history of every MAME-supported baseball game from 1976-1985</a>, the article we did for GameDev.net titled <a href="http://badspot.us/img/Learning-From-The-3000-Classics.html">Learning from the 3000 Classics</a>, and our review of the 90s arcade version of <a href="http://badspot.us/img/Aliens-Arcade-Review.html">Aliens</a>.</p>
<p>Check &#8216;em out!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/911/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=911&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/11/04/game-articles-online/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/11/gamedev-article-1.png" medium="image">
			<media:title type="html">Gamedev-Article-1</media:title>
		</media:content>
	</item>
		<item>
		<title>Building the Best Gameplay @ Adobe MAX 2011</title>
		<link>http://blog.bengarney.com/2011/09/13/building-the-best-gameplay-adobe-max-2011/</link>
		<comments>http://blog.bengarney.com/2011/09/13/building-the-best-gameplay-adobe-max-2011/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 22:41:25 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=893</guid>
		<description><![CDATA[UPDATE: The talk is now available on Adobe TV! The slides are available, too. You can find the code for the talk at https://github.com/PushButtonLabs/PushButtonEngine/tree/PBE2. They are fully explained via dokko, a literate code documentation tool. You can read the docs online at http://pushbuttonlabs.github.com/PushButtonEngine/v2/docs/PBEDemos.html. A big thank you to everyone who came, and to Adobe for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=893&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><b>UPDATE:</b> <a href="http://tv.adobe.com/watch/max-2011-develop/building-the-best-gameplay/"><b>The talk is now available on Adobe TV!</b></a> <a href="http://www.adobe-max.com/published/adobemax2011/sessions/S1340/S1340_Garney_Building%20Gameplay%20-%20MAX%20r2.pdf">The slides are available, too.</a></p>
<p>You can find the code for the talk at <a href="https://github.com/PushButtonLabs/PushButtonEngine/tree/PBE2">https://github.com/PushButtonLabs/PushButtonEngine/tree/PBE2</a>. They are fully explained via dokko, a literate code documentation tool. You can read the docs online at <a href="http://pushbuttonlabs.github.com/PushButtonEngine/v2/docs/PBEDemos.html">http://pushbuttonlabs.github.com/PushButtonEngine/v2/docs/PBEDemos.html</a>.</p>
<p>A big thank you to everyone who came, and to Adobe for inviting me to speak!  It was a real pleasure. MAX was great, and I&#8217;m already excited about attending next year.</p>
<hr />
<p>I&#8217;m doing a session, <a href="https://max.adobe.com/schedule/by-session/building-the-best-gameplay/S1340"><b>Building the Best Gameplay</b></a>, on Tuesday, October 4, 1-2pm at <a href="http://http://max.adobe.com/">Adobe MAX</a> in Los Angeles:</p>
<blockquote><p>Take a dive deep into the techniques required to build the best games. Building games is fun, but building them well takes skill and experience. Ben Garney, core Flash architect at Push Button Engine and one of the most well-known names in the Adobe Flash gaming industry, will put some powerful tools into your game development toolkit: finite state machines, numerical simulation, components, data-driven definitions, and more. Build better, more interesting games faster and with less risk.</p></blockquote>
<p>If you&#8217;re a Flash game developer and/or <a href="http://www.pushbuttonengine.com/">PushButton Engine</a> user and you&#8217;ll be in the LA area around that time, I&#8217;d love to meet you. Tweet me at <a href="http://twitter.com/bengarney">@bengarney</a> or drop me a line via other means.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/893/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=893&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/09/13/building-the-best-gameplay-adobe-max-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>
	</item>
		<item>
		<title>Molehill and the Display List</title>
		<link>http://blog.bengarney.com/2011/09/02/molehill-and-the-display-list/</link>
		<comments>http://blog.bengarney.com/2011/09/02/molehill-and-the-display-list/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 21:21:18 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=872</guid>
		<description><![CDATA[One of my posts on the Flash display list was quoted recently in a post by Amos Laber on his excellent blog. He said: So developers like Ben Garney are opting to write their own renderers in order to gain better performance, but that is not an ideal long term solution. A much better one [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=872&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of my <a href="http://blog.bengarney.com/2010/10/18/the-flash-display-list-and-games/">posts on the Flash display list</a> was quoted recently in a <a href="http://blog.flexwiz.net/molehill-and-the-displaylist-a-step-back/">post by Amos Laber on his excellent blog</a>. He said:</p>
<blockquote><p>So developers like Ben Garney are opting to write their own renderers in order to gain better performance, but that is not an ideal long term solution. A much better one would be to utilize both multi-threading and GPU hardware acceleration for the standard flash Display List.</p></blockquote>
<p><a href="http://bengarney.files.wordpress.com/2011/09/quake-pc-320-001.png"><img src="http://bengarney.files.wordpress.com/2011/09/quake-pc-320-001.png?w=660" alt="An example of a very basic game UI." title="Quake 1 Main Menu"   class="alignright size-full wp-image-875" /></a> We are seeing an <b>uneasy alliance</b> between Stage3D and DisplayObject. They work together but not fantastically. How can Adobe reconcile these two different worlds? As Amos points out, it&#8217;s a lot like the bad old days in the early 90s when UI libraries were non-existant for OGL/DX and games got by with the bare minimum in terms of UI.</p>
<p>Flash is pivoting from a rich content web runtime to a <b>platform</b>. Things that were previously built into the player need, in my opinion, to become a minimal native API that is enriched by powerful libraries. The display list is a great example of this. 90% of what the display list does can be done as well or better by pure AS3 (in fact, if you look carefully, many of the native DisplayObject methods are actually implemented in AS3). So why not move all that functionality into an AS3 library that comes with the platform, and focus on making the remaining 10% as good and generally useful as possible?</p>
<p>It&#8217;s like how an operating system has just a few basic routines for working with the file system, on top of which people build a wide variety of powerful tools like Finder, Explorer, Google Desktop, Alfred, bash, and so on.</p>
<p><a href="http://bengarney.files.wordpress.com/2011/09/icon2x.png"><img src="http://bengarney.files.wordpress.com/2011/09/icon2x.png?w=660" alt="" title="Sparrow Framework Icon"   class="alignleft size-full wp-image-878" /></a> The Flash team and the surrounding community has done the software world a <b> tremendous service</b> by developing great ways to build rich interactive experiences. Tweening and the display list are key foundations to those techniques. But they can work anywhere, and in almost any language &#8211; take a look at <a href="http://www.sparrow-framework.org/">Sparrow</a>, for instance, which provides a lot of the Flash API on iOS.</p>
<p>If I was going to make a prediction for Flash&#8217;s future, it would be that long term the display list will take a step back in favor of core APIs like Molehill. Of course, there will still be a display list or display list like APIs, but they will be conveniences on top of fundamental capabilities. This not only follows the trends seen in OS X, Windows, Java, and other platforms, but also enables <b>more innovation and choice on the part of developers</b>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/872/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/872/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/872/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=872&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/09/02/molehill-and-the-display-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/09/quake-pc-320-001.png" medium="image">
			<media:title type="html">Quake 1 Main Menu</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/09/icon2x.png" medium="image">
			<media:title type="html">Sparrow Framework Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Japan Vacation 2011</title>
		<link>http://blog.bengarney.com/2011/08/03/japan-vacation-2011/</link>
		<comments>http://blog.bengarney.com/2011/08/03/japan-vacation-2011/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 02:58:04 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Cool Stuff]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=862</guid>
		<description><![CDATA[During my recent vacation in Japan, I kept a photoblog. It&#8217;s at http://bengarney.tumblr.com/. You can also browse a full photo set on the photo set on Flickr.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=862&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During my recent vacation in Japan, I kept a photoblog. It&#8217;s at <b><a href="http://bengarney.tumblr.com/">http://bengarney.tumblr.com/</a></b>. You can also browse a full photo set on <a href="http://www.flickr.com/photos/bengarney/sets/72157627515281423/">the photo set on Flickr</a>.</p>
<p><a href="http://bengarney.tumblr.com/"><img src="http://www.tumblr.com/photo/1280/8213430058/4/tumblr_lp3j48j9201qz9f3y" width="500" height="375" alt="Japan Photo" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/862/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/862/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=862&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/08/03/japan-vacation-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://www.tumblr.com/photo/1280/8213430058/4/tumblr_lp3j48j9201qz9f3y" medium="image">
			<media:title type="html">Japan Photo</media:title>
		</media:content>
	</item>
		<item>
		<title>Twitter Poll: Best way to learn/tech game programming?</title>
		<link>http://blog.bengarney.com/2011/06/21/twitter-poll-best-way-to-learntech-game-programming/</link>
		<comments>http://blog.bengarney.com/2011/06/21/twitter-poll-best-way-to-learntech-game-programming/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 19:57:04 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=848</guid>
		<description><![CDATA[I asked&#8230; I got some good answers back and wanted to save them: On my todo list: Try processing!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=848&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I asked&#8230;</p>
<p><img src="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-47-20-pm.png?w=660" alt="" title="Lazy saturday open question: What is the best way to teach or learn game programming?"   class="aligncenter size-full wp-image-853" /></p>
<p>I got some good answers back and wanted to save them:</p>
<p><img src="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-45-47-pm.png?w=660" alt="" title="in flash, no frame-work, one-to-one tuition with an expert."   class="aligncenter size-full wp-image-851" /><br />
<img src="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-48-06-pm.png?w=660" alt="" title="I think learning processing would be the best way to start these days"   class="aligncenter size-full wp-image-854" /><br />
<img src="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-48-57-pm.png?w=660" alt="" title="A tweet is too short but make them make games. Start small like pong, then ramp up slowly to mario clone. Add one new feature too"   class="aligncenter size-full wp-image-856" /><br />
<img src="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-49-43-pm.png?w=660" alt="" title="writing games. Starting with simple (guess the number, tic tac toe) and working towards the complex."   class="aligncenter size-full wp-image-857" /></p>
<p>On my todo list: Try <a href="http://processing.org/">processing</a>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/848/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/848/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=848&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/06/21/twitter-poll-best-way-to-learntech-game-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-47-20-pm.png" medium="image">
			<media:title type="html">Lazy saturday open question: What is the best way to teach or learn game programming?</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-45-47-pm.png" medium="image">
			<media:title type="html">in flash, no frame-work, one-to-one tuition with an expert.</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-48-06-pm.png" medium="image">
			<media:title type="html">I think learning processing would be the best way to start these days</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-48-57-pm.png" medium="image">
			<media:title type="html">A tweet is too short but make them make games. Start small like pong, then ramp up slowly to mario clone. Add one new feature too</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2011/06/screen-shot-2011-06-21-at-12-49-43-pm.png" medium="image">
			<media:title type="html">writing games. Starting with simple (guess the number, tic tac toe) and working towards the complex.</media:title>
		</media:content>
	</item>
		<item>
		<title>Flash Gaming Summit &amp; Game Developers Conference 2011</title>
		<link>http://blog.bengarney.com/2011/02/25/flash-gaming-summit-game-developers-conference-2011/</link>
		<comments>http://blog.bengarney.com/2011/02/25/flash-gaming-summit-game-developers-conference-2011/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 23:34:31 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=841</guid>
		<description><![CDATA[What are you doing next week? Here is what is on my agenda: On Sunday, I will be at the Flash Gaming Summit. This year is not to be missed; Adobe is going to be announcing some great news, adding a whole new dimension to the capabilities of the Flash Player. As an advisor to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=841&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What are you doing next week?</p>
<p><img class="alignright" src="http://www.gamasutra.com/db_area/images/news2001/30044/gdc11.jpg" alt="" width="200" height="200" /></p>
<p>Here is what is on my agenda:</p>
<ul>
<li>On <strong>Sunday</strong>, I will be at the <a href="http://www.flashgamingsummit.com/">Flash Gaming Summit</a>. This year is not to be missed; Adobe is going to be announcing some great news, adding a whole new dimension to the capabilities of the Flash Player. As an advisor to the conference, I&#8217;m excited to see how it turns out this year!</li>
<li>On <strong>Monday evening</strong>, I am speaking about &#8220;Building Gameplay with the PushButton Engine&#8221; at a <a href="http://flashongames.com/post/2984167918/next-meeting-28th-february-2011">FlashONGames event at 6pm on Feb 28</a> at Adobe&#8217;s SF offices. Some of my friends at <a href="http://www.frimastudio.com/">Frima</a> will also be there, showing off their awesome 3D Zombie game built on Flash.</li>
<li><strong>Monday and Tuesday</strong> I will be at the <a href="http://gdconf.com/conference/sogs.html">Social &amp; Online Gaming Summit</a>. It&#8217;s a natural point of interest, given that&#8217;s my career focus. And a bunch of cool people from Playdom (with whom we partnered to build our last game, Social City) will be presenting!</li>
<li><strong>Wednesday evening</strong>, I am presenting again: <a href="http://www.meetup.com/pnpmobile/events/15949444/">Building Gameplay with PushButton Engine at the Plug &amp; Play Tech Center</a>. The event starts at 5:30pm. (It&#8217;ll be similar to my talk Monday night but a bit longer. So if you miss one, come to the other! Or come to both, I guess. <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</li>
<li>For <strong>the rest of the week</strong> (thru Thursday), I&#8217;m at <a href="http://gdconf.com/">Game Developers Conference 2011</a>, of course.</li>
</ul>
<p>My schedule is busy but not crammed. If you are interested in meeting up, just shoot me an e-mail at ben dot garney at gmail dot com. I&#8217;m also on Twitter as <a href="http://www.twitter.com/bengarney">@bengarney</a>.</p>
<p>See you at the show!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/841/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/841/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/841/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=841&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2011/02/25/flash-gaming-summit-game-developers-conference-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://www.gamasutra.com/db_area/images/news2001/30044/gdc11.jpg" medium="image" />
	</item>
		<item>
		<title>Justifying Social Games</title>
		<link>http://blog.bengarney.com/2010/11/30/justifying-social-games/</link>
		<comments>http://blog.bengarney.com/2010/11/30/justifying-social-games/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 06:35:42 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bengarney.com/?p=771</guid>
		<description><![CDATA[I ran across this quote recently, which reflects an opinion I&#8217;ve seen frequently online from people in the AAA game space: Now, for the social game developers out there &#8211; let me help. You know that bad feeling you have in your stomach? That&#8217;s not embarrassment. That&#8217;s not inadequacy. That&#8217;s guilt &#8211; it&#8217;s what other [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=771&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I ran across this quote recently, which reflects an opinion I&#8217;ve seen frequently online from people in the AAA game space:</p>
<blockquote><p>Now, for the social game developers out there &#8211; let me help. You know that bad feeling you have in your stomach? That&#8217;s not embarrassment. That&#8217;s not inadequacy.</p>
<p>That&#8217;s guilt &#8211; it&#8217;s what other people feel when they are doing something shitty.</p>
<p>So, if you want to roll that way, fine. Just don&#8217;t waste your time justifying it to the rest of us. </p></blockquote>
<p align="right">&#8211; <a href="http://robertoconcerto.blogspot.com/2010/11/social-game-developers-trying-convince.html">Jeff Roberts</a></p>
<p>Ouch. Before I respond, though, let me tell you about a recent trip I took to PAX in Seattle. It was a lot of fun; I got to hang out with a bunch of friends, play a great game of D&amp;D and go to some awesome panels! However&#8230;</p>
<p><img src="http://bengarney.files.wordpress.com/2010/11/spector.jpg?w=660" alt="" title="Warren Spector at PAX 2010"   class="aligncenter size-full wp-image-774" /></p>
<p><b>The most important thing I saw at PAX was <a href="http://www.gamespot.com/atari2600/sim/starraiders/video/6275271">Warren Spector&#8217;s keynote.</a></b> The point that stuck with me comes about 32 minutes in, where Warren says:</p>
<blockquote><p>When we go outside this room, when we go out the real world, I see people get sort of insecure. It&#8217;s almost like we yearn to get accepted by mainstream media and by normal people, you know? And yet, once they start paying attention to us, when casual gamers start flocking into our world, we start complaining about it. They&#8217;re diluting the experience. <b>We get upset when developers try to reach a broader audience.</b> Casual is perceived as the opposite, even the enemy, of what we do.</p></blockquote>
<p>Social games are <a href="http://venturebeat.com/2010/01/26/as-farmville-players-buy-little-pink-tractors-u-s-virtual-goods-revenue-is-expected-to-hit-1-6b/">a billion dollar industry</a>, maybe <a href="http://satellite.tmcnet.com/news/2010/11/16/5139910.htm">more</a>. Farmville is played by approximately <a href="http://www.infoq.com/news/2010/03/FarmVille">1% of the earth&#8217;s population</a> and it&#8217;s <i>just one game</i>. Farmville is free to play, yet Zynga is doing very well off of it.</p>
<p>Is this due to slimy business practices? Are companies like Zynga using viral marketing to get millions of people interested in a boring, brain-dead experience so they can drain their wallets one micro-transaction at a time? Are their games just vehicles for numbers driven, A/B tuned Skinner box tricks?</p>
<p>In a word: <b>NO!</b> </p>
<p>(At least, no more so than any other genre of game.)</p>
<p><b>Zynga&#8217;s designers have gone on record as saying that <a href="http://vator.tv/news/2010-10-18-zynga-fun-and-monetization-are-synonymous">&#8220;Fun and monetization are synonymous.&#8221;</a></b> Is that self-serving PR bullshit designed to reassure us? I don&#8217;t think it is. I worked on <a href="http://facebook.com/socialcity/">Social City</a>, which won the <a href="http://blog.games.com/2010/10/07/playdoms-social-city-named-best-social-network-game/">Best Social Network Game</a> at GDC Online. And we had the same experience. We focused on building a fun game, and it did better in the market than other games developed in the same timeframe by talented teams that focused on A/B testing, monetization strategies, or demographics.</p>
<p>Remember where I said that Farmville has been played by 1% of the earth&#8217;s population? <b>Most of those people have never played games before.</b> It doesn&#8217;t bother them, yet, that these games aren&#8217;t very sophisticated. That will come (this is where social devs are saying that &#8220;quality will increase&#8221;) as they become more educated. The audience will be more discriminating. Some will go on to play hardcore games, and that is cool.</p>
<p>Many will not. But that&#8217;s OK. Because the part of working on social games I like best is this: Social City is the only game I&#8217;ve worked on that my parents played and liked. I had a thirty minute phone conversation with my mom where she suggested new features! That didn&#8217;t happen with the twitch console game I worked on&#8230; or the networked PC space shooter I helped build&#8230; or even any of the hundreds of titles built on Torque (which I helped maintain). <b>But a simple, engaging, accessible social game hooked her.</b></p>
<p>On Social City, when we had crunch time, the wives of the team didn&#8217;t mind (much). <b>The wives wanted us to get bugs fixed and the new features pushed out so they could enjoy them!</b> Some of the guys on the team had been doing games for twenty years, and this was the first time their wives really cared about the game they were working on.</p>
<p><img src="http://bengarney.files.wordpress.com/2010/10/social_city_wallpaper-500x312.jpg?w=660" alt="" title="Social City"   class="aligncenter size-full wp-image-744" /></p>
<p>A brief aside. <b>What do I mean when I call something a game?</b> Most people think of an interactive activity with a clearly defined goal and rules. If you fail the goal, you lose. Often, you accomplish (or fail to accomplish) the goal in one sitting. So, for instance, chess is a game, but painting is not. I think a lot of traditional game people come to the social space and look at the products with this definition in mind. Farmville isn&#8217;t a game, because you can never truly lose. Restaurant City doesn&#8217;t have a victory condition, so it&#8217;s not a game. Sometimes the term &#8220;activity&#8221; is used. Some people even use it as justification to reject social &#8220;games&#8221; as entertainment entirely!</p>
<p>But this is bullshit! <b>There are very successful traditional game titles that don&#8217;t fit the win-lose model.</b> Will Wright has done a lot of them. SimCity, for instance, only has &#8220;goals&#8221; if you choose to play a scenario (I never did&#8230; did you?). Nintendogs features dogs that will never die or run away. Microsoft Flight Simulator has done pretty well over the years, too. Most games, of course, do have win-lose conditions. But it is silly to view social &#8220;games&#8221; as an aberration because they often do not allow you to lose. Sometimes I feel like this lack of victory conditions throws people for a loop, though.</p>
<p>OK, enough with definitions. Let&#8217;s go back to Warren for a second:</p>
<blockquote><p>And, you know, I don&#8217;t really understand it. As if non-gamers enjoying the things we have all grown up with, and we have all loved for years&#8230; As if non-gamers discovering that diminishes us somehow. &#8230; We have to get past this not wanting let more people into the club. &#8220;We don&#8217;t want girls and grandmothers.&#8221; &#8220;We don&#8217;t want normal people hanging with us.&#8221; &#8230; Basically, it&#8217;s as if we don&#8217;t know whether to fear or embrace the mainstreaming of gaming. <b>And to my mind we have no choice. We have to embrace the fact that the world is catching up to us. Catching on to us. And starting to love the things that we&#8217;ve always loved.</b></p></blockquote>
<p>I love working on social games because I am directly helping to bring millions of people into gaming, into experiencing the joy that games have brought me and that inspired me to get into the game industry in the first place. And I am doing it in a social space, where friends and families can play together. <b>My favorite game experiences have always been social</b> &#8211; playing Mario Kart, Quake, Tribes, D&amp;D, or StarCraft with friends have always been joys, not because of the games but because of the way they bring us together. When my mom sends me a gift, or I get to see the cool farm, city, or restaurant my brother built, it is an opportunity for us to connect in a small way, and I value that.</p>
<p><b>Are social games a fad?</b> I&#8217;m not sure. Maybe in five years &#8220;social games&#8221; won&#8217;t exist anymore. People might get bored or companies might get greedy or stupid. But I think that there is a legitimate place for games that are connected and browser based. Maybe it isn&#8217;t a $2B/yr space, but I think it is a viable market for at least a few companies to live off of.</p>
<p>Coming back to Jeff&#8217;s point: I don&#8217;t feel guilty about how social games monetize. <b>Social games are free to play.</b> No one is forcing you to pay. Facebook is very strict about how games can post to your wall or access your friend information. It might not be obvious but companies like Playdom and Zynga have teams of people whose job is to make sure that they conform to Facebook&#8217;s terms of service, because if they don&#8217;t, they are financially sunk.</p>
<p>Social games do want to spam through you, but at least on Facebook <b>they must have your approval at every step &#8211; and they can&#8217;t gate the game on whether you allow spam or not.</b> If you are concerned about it, don&#8217;t click yes. And if you aren&#8217;t having fun, you can disable the app. But millions of people do play, and continue to play, and some even spend modest amounts of money to add to their experience. </p>
<p><img src="http://bengarney.files.wordpress.com/2010/11/m11_booster_pack_5_of_5.jpg?w=162&#038;h=300" alt="" title="Magic Booster Pack" width="162" height="300" class="aligncenter size-medium wp-image-828" /></p>
<p>Should I feel any more guilt about making money than the guy at the gaming shop selling tabletop miniatures and Magic or Pokemon booster packs? Or the marketing guy at EA who sends ads to all the poor schmucks who filled out the registration form in their copy of The Sims? <b>At least anyone who spends money on a social game has played it first, maybe for months, without paying.</b>Doesn&#8217;t that put me in a better position, ethically, than the guys pushing box titles where you pay $60 up front to play what might be a crappy game?</p>
<p>Personally, <b>I am grateful to work on products where I can build smaller scale, fun experiences and push them out to a huge audience</b>. I am glad that it is a financially viable market where I can make a comfortable living. I love that I can be at a party and say I work on Facebook games and people have a clue what I&#8217;m talking about. I love that I don&#8217;t have to worry about licensing character animation, sound, or video libraries (although I have always been a huge fan of RAD&#8217;s products and highly recommend <a href="http://www.radgametools.com/telemetry.htm">Telemetry</a> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). And it&#8217;s fantastic that I can get realtime feedback on how people like new game features, pricing changes, and added content.</p>
<p>Are social games designed to keep you playing? Certainly. Do we tune them to try to make you want to spend money? Of course. Do we want to use your social graph to grow our market? Definitely. But the fact of the matter is that people are smart enough to identify and dislike games that take advantage of them. You have to give people experiences that make them want to come back, not ticking timers. You can&#8217;t force people to spend money right away and not lose your audience. And <b>the thing that will make your game spread fastest is making a remarkable experience that people want to share with their friends</b>.</p>
<p>Social games are taking their place along side many other successful kinds of games. <b>Not every gaming experience needs to be a high-end single-player console experience or a twitch multiplayer FPS.</b> Not every game player wants that. There is a place for accessible, people-oriented games in the world, too. No matter what type of game you are building, it&#8217;s a good thing for more people to be introduced to computer games. I&#8217;m pretty sure that people aren&#8217;t going to ditch God of War or Mass Effect in favor of Farmville or Social City &#8211; if anything, they&#8217;ll probably play both!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/771/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=771&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2010/11/30/justifying-social-games/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/11/spector.jpg" medium="image">
			<media:title type="html">Warren Spector at PAX 2010</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/10/social_city_wallpaper-500x312.jpg" medium="image">
			<media:title type="html">Social City</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/11/m11_booster_pack_5_of_5.jpg?w=162" medium="image">
			<media:title type="html">Magic Booster Pack</media:title>
		</media:content>
	</item>
		<item>
		<title>Tips for Flash Developers Looking at Hardware 3D</title>
		<link>http://blog.bengarney.com/2010/11/01/tips-for-flash-developers-looking-at-hardware-3d/</link>
		<comments>http://blog.bengarney.com/2010/11/01/tips-for-flash-developers-looking-at-hardware-3d/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 21:56:53 +0000</pubDate>
		<dc:creator>Ben Garney</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://coderhump.com/?p=655</guid>
		<description><![CDATA[Adobe has announced 3D support in Flash. A huge step forward for the Flash development community! Tremendous things will be possible. If you haven&#8217;t seen it already, here&#8217;s a great video of what&#8217;s possible: The demo at Adobe MAX 2010 was impressive, and it was a huge treat to see my friends at Mythos Lab [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=655&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://labs.adobe.com/technologies/flash/molehill/">Adobe has announced 3D support in Flash.</a></strong> A huge step forward for the Flash development community! Tremendous things will be possible. If you haven&#8217;t seen it already, here&#8217;s a great video of what&#8217;s possible:</p>
<span style="text-align:center; display: block;"><a href="http://blog.bengarney.com/2010/11/01/tips-for-flash-developers-looking-at-hardware-3d/"><img src="http://img.youtube.com/vi/tgwi0lWgX8w/2.jpg" alt="" /></a></span>
<p>The demo at Adobe MAX 2010 was impressive, and it was a huge treat to see my friends at <a href="http://mythoslabs.com/">Mythos Lab</a> and <a href="http://alternativaplatform.com/">Alternativa</a> get featured on the big screen during the keynote. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>But let&#8217;s get back to reality.</strong> This is nothing that hasn&#8217;t been out on other platforms for years. Why is it worth talking about? Why does it matter when your PC can do way more?</p>
<p>It&#8217;s the audience. When Flash 3D drops, you will be able to create 3d content and bring it to all those billion people who have Flash Player installed. And I am sure that with Adobe&#8217;s focus on mobile, they will look towards mobile support, too.</p>
<p>If the model for AAA games like God Of War and Mass Effect is big budget Hollywood movies, then <strong>the Flash space is television</strong>. There are lots of short-form products (5-10 minutes avg playtime) produced by tiny and often independent teams (like much of what&#8217;s on <a href="http://kongregate.com/">Kongregate</a> or <a href="http://newgrounds.com/">Newgrounds</a>). But there are also longer form products, updated weekly, that have huge distribution. In the TV space they call them series; online they&#8217;re called social games. The numbers are similar, too. Farmville gets 56M monthly players currently. How many people watch NCIS or another hit TV show in a month?</p>
<p>TV is probably still bigger for now, but social games monetize better per user. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So &#8211; 3d in Flash will have a big impact. And a lot of developers will be dragged kicking and screaming into the brave new world. I wanted to share a few lessons that I learned in my previous life as a 3d middleware developer at <a href="http://www.garagegames.com/">GarageGames</a>. Some are big, some are small, but hopefully all are things that will save you, a Flash developer looking at this new hardware 3D, time and pain. They took me a while to learn.</p>
<p><strong>Framerate and Performance</strong></p>
<p>Don&#8217;t use frame rate as a measure of performance. It&#8217;s useless. All you really want is to target a fixed framerate of 30Hz, 60Hz, or 120Hz. Here&#8217;s how that goes down, by the way: your project will run at 120Hz until the artists get their hands on it. Then you will decide that 60Hz is a great target &#8211; looks good, feels good. But when it comes down to the deadline, you&#8217;ll hit some bumps and settle for 30Hz. Lucky is the project that can ship with 60Hz, and the only guys I&#8217;ve ever seen go out with 120Hz are doing VR, where you have to have it to avoid nausea.</p>
<p>What about variable framerate? It&#8217;s bad. Don&#8217;t go there. Humans are very good at compensating for fixed delays, and very good at detecting variable delays. It&#8217;s much better to cap to a fixed low framerate, because users will automatically compensate and cease to notice it. (This is how our nervous system works; your arms have a fixed delay for nerve signals to propagate, muscles to react, etc. So the capability is built into the brain at a very low level.) However, if it varies, the user will notice every little change in performance and be frustrated.</p>
<p>Back to the performance measurement issue, frame rates are not linearly comparable. What you want is milliseconds per frame (mspf). How come? Because Hz is not linear. It is harder to get from 90Hz from 60Hz than it is to get from 30Hz to 60Hz. How come? Looks like the same diff, right? Let&#8217;s put the same problem in mspf. Going from 30Hz to 60Hz means going from 32mspf to 16mspf. But going from 60Hz to 90Hz means going from 16mspf to 11mspf. In the first case I am cutting 16ms off my frame time, which is a big chunk, but I still end up with a relatively generous 16mspf. In the second case, I have to squeeze 5 mspf from an already meager frame budget.</p>
<p>Using mspf also makes it easy to discuss performance gains. If I have a task that takes 4mspf (say applying a full screen blur), and I can optimize it down to 3mspf, I know exactly how much of a win I&#8217;ll get no matter how the rest of the application is performing. Compare that to saying that the blur runs at 250Hz then I have optimized it to 333Hz. And when I am budgeting performance I can easily divvy up my available frametime to specific tasks. We might have 8mspf for physics, 4mspf for render calls, and 4mspf for the GPU to finish.</p>
<p>Bottom line: use milliseconds per frame not hertz for performance measurement and budgeting.</p>
<p><strong>GPU Readbacks</strong></p>
<p><em>(This advice and the advice in the following sections is general; it applies to OGL/D3D and console HW APIs, and I doubt Molehill can deviate from the fundamental hardware reality. Of course, Molehill&#8217;s software renderer probably has different performance characteristics &#8211; slower, but more permissive.)</em></p>
<p>Never ever read back from a GPU resource. Ever. Don&#8217;t. Stop it. Ok &#8211; you can maybe do this ONCE per frame, if you are careful and build your renderer around it.</p>
<p>Why is readback so incredibly bad? Because it forces synchronization (as do a few other things in the graphics API). Then, while the GPU is stopped, you do a slow memory read back to the CPU, which is also stopped and waiting for the data.</p>
<p>Normally, the GPU will run ahead of the CPU &#8211; you fire off some draw commands and it goes and does its magic. But imagine you issue these commands:</p>
<ol>
<li>Clear framebuffer.</li>
<li>Draw triangles.</li>
<li>Read back from framebuffer.</li>
</ol>
<p>Normally, you&#8217;d never see the cost of #2 on the CPU &#8211; it would immediately return and you&#8217;d go on your way. Say it takes 1ms to do that draw. The call returns in a few microseconds and you keep doing. But when you issue command 3, the CPU has to wait for the GPU to finish command 2. Then, because framebuffers are often stored in proprietary formats either for performance or quality reasons, the GPU has to prepare it for readback. Then it can finally stream the requested data back to the CPU, and subsequently continue on with its rendering. All this cost shows up as you waiting a long time on #3.</p>
<p>Readbacks are tempting to the Flash developer because copying stuff out of the Flash vector renderer is basically free. But on hardware, it gets you a triple whammy &#8211; you stop the world, you make the GPU do a bunch of extra work to prepare data for readback, and you have a data copy operation. Don&#8217;t do it.</p>
<p><strong>Let the GPU Run Free</strong></p>
<p><a href="http://bengarney.files.wordpress.com/2010/11/train.jpeg"><img src="http://bengarney.files.wordpress.com/2010/11/train.jpeg?w=300&#038;h=198" alt="" title="GPUs are Like Trains" width="300" height="198" class="aligncenter size-medium wp-image-762" /></a></p>
<p>Ideally, you want to issue the minimum number of calls to the 3d API that will let the GPU do maximum useful work without interruption. GPUs are like bullet trains. They go really, really fast as long as they don&#8217;t have to stop or make right turns. Sometimes it is even better to do somewhat wasteful things because the gain from continuous operation is so big. GPUs are on track to have thousands of parallel processing cores. Just let &#8216;em run and you&#8217;ll be amazed at what they can do!</p>
<p>Compare this to the Flash vector renderer which is best when it is given minimal work to do. It&#8217;s a great renderer but it doesn&#8217;t have the benefit of powerful dedicated hardware that has been tuned for decades to run it fast.</p>
<p>If you have a big batch of geometry, it&#8217;s often best to simply draw it. You will want to figure out what the threshold is at which culling is beneficial, but it can often be on the order of tens of thousands of triangles.</p>
<p>Vertex shading is practically free when you&#8217;re looking at rendering 1080p at 60Hz. You&#8217;re going to be hitting 124M pixels every frame at MINIMUM &#8211; if you have any overdraw it can easily hit 300M or higher. If you have a million triangles in your scene, you&#8217;re only going to be doing 60M triangles in that same time frame. So take advantage of it when you can.</p>
<p>Don&#8217;t let the GPU run too far ahead, though &#8211; it introduces control latency. GPU drivers can often buffer several frames ahead, and if you aren&#8217;t careful you can add 50-100ms of latency between a user hitting a button and something happening. Introducing a small readback at end of frame can help force synchronization. (Molehill might deal with this for you, too.)</p>
<p><strong>Performance Trade-offs &amp; Maintaining Your Image</strong></p>
<p>On the GPU, you have huge opportunities to trade space for time for quality. Lookup textures can replace costly math functions (or make them tweakable by artists). You can sacrifice precision (either using half precision or just being a little bit wrong) for performance, too, to get big wins. The great thing about graphics programming is that it only needs to LOOK right, not BE right. So pile on the hacks &#8211; if it fits your game&#8217;s look, it&#8217;s a good solution.</p>
<p>That&#8217;s enough on performance. I could write a whole book on optimizing 3d game performance. In fact, I have; it&#8217;s called <strong><a href="http://www.amazon.com/Video-Game-Optimization-Eric-Preisz/dp/1598634356">Video Game Optimization</a>.</strong> It covers the whole problem from scheduling for performance to measuring to identifying bottlenecks to fixing them. It even has a chapter on Flash optimization!</p>
<p><strong>Stand on the Shoulders of Giants</strong></p>
<p>Graphics are sexy and well studied. The fount of graphics research is <a href="http://www.siggraph.org/">SIGGRAPH</a> (any further back than that and you&#8217;re tracking individual researchers). Literally every rendering problem you will encounter when working with Molehill has a solution that was published at Siggraph thirty years ago, played with at SGI twenty years ago, considered at 3DFX 15 years ago, and brought into the mainstream and shipped on a console or PC game 5-10 years ago. Around then it was also republished as a practical implementation in a Gems book, and also shipped as a card demo by ATI, nVidia, or Intel. If it&#8217;s really good, Carmack or Abrash prototyped it when they were working on Quake 1, Epic has it in Unreal, Crytek has some great demo videos of it, or Valve has published slides on it.</p>
<p>Am I claiming that there&#8217;s no fundamental research left in 3d graphics, or no expressivity? Of course not. But you owe it to yourself to be familiar with existing work in the field before you go reinventing the wheel, and the field is aggressively researched. So I would not expect to stumble on any huge break through right away, just like if you pick up oil painting you&#8217;re probably not going to reinvent the field&#8230;</p>
<p><a href="http://bengarney.files.wordpress.com/2010/10/26_pixar_lg1.jpg"><img class="aligncenter size-medium wp-image-675" title="Pixar Projects" src="http://bengarney.files.wordpress.com/2010/10/26_pixar_lg1.jpg?w=300&#038;h=200" alt="" width="300" height="200" /></a></p>
<p>I think the interesting part of graphics is finding the best fit for your specific problem and enabling artists. It&#8217;s a craft. Look at what Pixar does. Their research has always been in support of their story and their specific technology needs. Out of that they have ended up contributing a lot of great stuff, and innovating in a lot of ways, but they did it with a strong understanding of existing technology.</p>
<p>I encourage you to do the same. It is what I have done in my own projects and it has worked out well. When I have pursued tech for tech&#8217;s sake the results have always been less effective &#8211; good for a demo but ultimately ineffective in enabling my team to succeed.</p>
<p><strong>It&#8217;s the Assets, Dummy</strong></p>
<p>How do you make a good-looking game? Really, it&#8217;s not the technology. Shaders, complex rendering techniques, and so forth are all fine and they can enable good results. But great art is what carries a project.</p>
<p>Look at that video at the top of the article (it&#8217;s OK; I&#8217;ll wait). There are very few complex rendering techniques at work. Mostly, it is great art (and a great lightmapper) with just a few simple shaders and effects.</p>
<p>Look at Mass Effect. They use shaders, sure, but the real source of the game&#8217;s look is the tireless work of many talented artists.</p>
<p>Or look at one of our older projects, Grunts: Skirmish:</p>
<p><a href="http://bengarney.files.wordpress.com/2010/11/grunts4.png"><img src="http://bengarney.files.wordpress.com/2010/11/grunts4.png?w=300&#038;h=228" alt="" title="Shot of Grunts: Skirmish" width="300" height="228" class="aligncenter size-medium wp-image-765" /></a></p>
<p>All the runtime is doing is compositing unrotated, unscaled bitmaps. But the great work of our artist, <a href="http://subreal.net/">Tim Aste</a>, makes it a memorable and interesting visual.</p>
<p>To that end it&#8217;s vital that you make it easy for artists to work with your technology. There are two lessons I have learned in this are:</p>
<ol>
<li><strong>Make it easy to see.</strong> Have an automatically updated live build somewhere and let the artists have the URL. That way they can check art in and see how it looks in the game, or tweak things as needed, without involving a programmer.</li>
<li><strong>Make it easy to process art.</strong> Make sure that the inputs to your art pipeline are high-quality uncompressed files. Then process them into whatever format and quality level you require. Optimize the final format for very fast download and unpacking.</li>
<li><strong>Your art needs and formats will change. </strong> Be able, at any time, to reprocess all of your source assets into their final form. Get everyone used to the system early on and you will have the agility you need late in the project to succeed. There&#8217;s nothing worse than asking your artists to hand-process dozens or hundreds of assets due to some technical change! (It&#8217;s not just unpleasant, it also introduces mistakes, since they are people, not machines.)</li>
</ol>
<p>Art pipelines and processing is a subject worth of a whole bookshelf. Go out and learn as you need it. Not every project needs an all-encompassing solution, but&#8230; well, read the next section. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Trends &amp; Closing Thoughts</strong></p>
<p>3D changes the landscape of application development. Flash has tracked the console space&#8217;s evolution, on a much shorter timeframe. Looking at how consoles were affected by the introduction of 3D is very instructive:</p>
<ul>
<li><strong>Art becomes more complex.</strong> Creating an animated character in the SNES days was the work of a single person for a few days. Creating a character for Mass Effect is months of work for a team.</li>
<li><strong>Asset size increases.</strong> A full SNES game is 16MB or so. 40 hours of gameplay, tons of content, music, visuals, cutscenes, etc. A typical XBox 360 title is 6gb, often compressed, and now 2 disc games are coming out. An asset footprint of 15gb is not unrealistic. It will be interesting to see how this plays out in the online space.</li>
<li><strong>Budgets and complexity swell.</strong> I bet you could make a complete, high quality clone of <a href="http://en.wikipedia.org/wiki/The_Legend_of_Zelda:_A_Link_to_the_Past">A Link to the Past</a> for two month&#8217;s operating budget of Mass Effect or Halo. Teams will get bigger, projects will become more complex, and technical requirements will increase.</li>
<li><strong>Gameplay remains relevant.</strong> The hit titles in the console space are those with high technical quality &#8211; but they are also fun. Mass Effect is highly immersive. Halo has highly polished gameplay. God of War is a remarkable experience in an industry full of remarkable experiences. And indie titles that are genuinely fun and engaging &#8211; like <a href="http://www.minecraft.net/">Minecraft</a> &#8211; are able to succeed without large marketing or art budgets.</li>
</ul>
<p>Right now, Flash is at the same place the PC space was in 1998-1999. We can do compelling 2D or limited 3D content and teams are getting larger but not yet huge. Molehill will bump us forward to around 2001-2002, perhaps a bit further. It&#8217;s an exciting time to be a Flash developer.</p>
<p>The kinds of experiences we will be able to build are going to undergo a quantum leap, as will the demands on us as developers. We are in a unique position to leverage the lessons of the past to build the games of the future. What do you think the major issues will be? How can we build great content on this new feature set?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bengarney.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bengarney.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bengarney.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bengarney.com&amp;blog=106034&amp;post=655&amp;subd=bengarney&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.bengarney.com/2010/11/01/tips-for-flash-developers-looking-at-hardware-3d/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/08cfb70f32d12a81926575e0a3fc2d4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bengarney</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/11/train.jpeg?w=300" medium="image">
			<media:title type="html">GPUs are Like Trains</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/10/26_pixar_lg1.jpg?w=300" medium="image">
			<media:title type="html">Pixar Projects</media:title>
		</media:content>

		<media:content url="http://bengarney.files.wordpress.com/2010/11/grunts4.png?w=300" medium="image">
			<media:title type="html">Shot of Grunts: Skirmish</media:title>
		</media:content>
	</item>
	</channel>
</rss>
