<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>{ P I X E L W E L D E R S } &#187; Game Design</title>
	<link>http://pixelwelders.com/blog</link>
	<description>Flash + Flex + Game Dev + Grammar?</description>
	<pubDate>Mon, 16 Nov 2009 14:28:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>AS3 RPG-Style Stats System</title>
		<link>http://pixelwelders.com/blog/game-design/2009/as3-rpg-style-stats-system/</link>
		<comments>http://pixelwelders.com/blog/game-design/2009/as3-rpg-style-stats-system/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 14:27:18 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[ActionScript 3.0]]></category>

		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/game-design/2009/as3-rpg-style-stats-system/</guid>
		<description><![CDATA[For the past two months or so, I've been hard at work on a game that I hope to unleash upon the world next month. Truth be told, I'm a bit nervous since I've been getting more and more ambitious as I develop. That's something they tell you never to do. Choose a scope and stick with it, they say. It's great advice, but I have so far failed to follow it.]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>
<p><img style="margin-left:10px; float:right;" src='http://pixelwelders.com/blog/wp-content/uploads/2009/11/babystats_full.jpg' alt='Baby Stats' /><br />
For the past two months or so, I&#8217;ve been hard at work on a game that I hope to unleash upon the world next month. Truth be told, I&#8217;m a bit nervous since I&#8217;ve been getting more and more ambitious as I develop. That&#8217;s something they tell you never to do. Choose a scope and stick with it, they say. It&#8217;s great advice, but I have so far failed to follow it.</p>
<p>	I&#8217;ve also recently become involved with <a href="http://gademo.wordpress.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://gademo.wordpress.com');">GaDeMo</a>, which is kinda like <a href="http://nanowrimo.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://nanowrimo.com');">NaNoWriMo</a> for games. Right now it&#8217;s just a few of us from the <a href="http://gamedev.meetup.com/174" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://gamedev.meetup.com/174');">Chicago Experimental Game Meetup</a>, but I&#8217;m guessing it&#8217;ll grow. Anyway, working on two games at once naturally makes you think a bit differently. You build things a bit more generically because you want to cram it into two different projects simultaneously. At least I do.</p>
<p>	All the GaDeMo stuff will eventually be open-sourced, but I figured I&#8217;d get a head start on it here and on the GaDeMo blog. I&#8217;ve published this over there already, but why not put it here too? Surely someone here will find this useful as well.</p>
<h3>The System</h3>
<p>	This is a stats system for RPG-like tracking of character or item characteristics. It&#8217;s half a dozen simple classes, but it&#8217;s built to be expanded in the future. Here&#8217;s an example use. Say I&#8217;ve got a party of characters. Programmatically speaking, each one is probably an instance of some kind of Character class, and each one will have a variety of stats. One solution would be to extend the Character class in various directions and just add your stats as properties of those descendant classes. Of course, then you have a lot of classes that do nearly the same thing, and you have nothing reusable for future games.</p>
<p>	A better solution would be to have some sort of object that each Character could instantiate, which would then hold all that Character&#8217;s stats. You could do this with a generic Object if you wanted; however, then all manipulation of stats would have to be done either in the Character or in some external class that has access to the Character&#8217;s stats. Then you&#8217;ve got logic spread all over the place, which is again not a good solution.</p>
<h3>Implementation</h3>
<p>	But what if this stats object could take care of stat management too? For example:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript">	<span style="color: #000000; font-weight: bold;">var</span> stats:Stats = <span style="color: #000000; font-weight: bold;">new</span> Stats<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	stats.<span style="color: #006600;">addStat</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> Stat<span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">100</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>	This creates a stats object, and then adds a stat called HP with a lower limit of 0 and an upper limit of 100. Now, anytime you want to see how many hit points this character has, you can call:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript">	stats.<span style="color: #006600;">getStat</span><span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>	Okay, that&#8217;s pretty simple stuff. It&#8217;s one step up from a generic object. But in your typical RPG, you&#8217;ll notice that pretty much everything affects your stats. Most of the items in your inventory probably affect them one way or another, battle affects them, spells affect them, the list goes on. Say, for example, our Character has armor that adds 10% to his HP, and a sword that adds +2 HP.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript">	stats.<span style="color: #006600;">getStat</span><span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addAffector</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> AdditionAffector<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;Sword of Justice +2 HP&quot;</span>, <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
	stats.<span style="color: #006600;">getStat</span><span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addAffector</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> MultiplierAffector<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;Armor of Punctuality +10%&quot;</span>, <span style="color: #cc66cc;">0.1</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>	Now there are two ways to check your stat.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript">	stats.<span style="color: #006600;">getStat</span><span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">baseValue</span> 	<span style="color: #808080; font-style: italic;">// before Affectors</span>
	stats.<span style="color: #006600;">getStat</span><span style="color: #66cc66;">&#40;</span> StandardStats.<span style="color: #006600;">HP</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">totalValue</span>		<span style="color: #808080; font-style: italic;">// after Affectors</span></pre></div></div>

<p>	This gives you the freedom to specify how items affect stats. Perhaps a certain curse ignores all Affectors. Maybe an item does something randomly using a base stat instead of a total stat. Whatever. It&#8217;s up to the the developer.</p>
<h3>Future Plans</h3>
<p>	Now obviously this is a ridiculously simple implementation. I imagine it will grow quite a bit as I develop these two games, and probably future games as well. The next steps, I think, would involve integrating an Inventory system and maybe a Skills system of some sort. The end dream would be to just add an item or skill or whatever you want and the stats just kinda take care of themselves. A system like this, really fleshed out, could save a game developer a lot of time.</p>
<h3>Download</h3>
<p><a href="http://pixelwelders.com/downloads/StatsSystem/PXW_StatsSystem.zip" onclick="javascript:pageTracker._trackPageview('/downloads/downloads/StatsSystem/PXW_StatsSystem.zip');">PXW Stats System v0.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2009/as3-rpg-style-stats-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Barebones! - AS3 Skeletal Animation System</title>
		<link>http://pixelwelders.com/blog/game-design/2008/barebones-as3-skeletal-animation-system/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/barebones-as3-skeletal-animation-system/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 14:18:04 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[ActionScript 3.0]]></category>

		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/game-design/2008/barebones-as3-skeletal-animation-system/</guid>
		<description><![CDATA[I&#8217;ve been spending a lot of time lately working on a fighting game for a client.  It&#8217;s pretty standard Street Fighter fare, only much simplified due to time and budget restrictions.  However, it made me start thinking about the limitations of the old 2D fighters and what a more powerful processor, faster graphics, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been spending a lot of time lately working on a fighting game for a client.  It&#8217;s pretty standard Street Fighter fare, only much simplified due to time and budget restrictions.  However, it made me start thinking about the limitations of the old 2D fighters and what a more powerful processor, faster graphics, and a WYSIWYG animation editor could do for them.  I went to my lab immediately.</p>
<p>The first thing I wanted to know was, is there a way to make an animation that can be shared among characters in a game?  And could characters be &#8220;skinned,&#8221; so the same character could change appearances, add/remove body parts or attachments, etc. and retain the same animations?  I see it all the time in big-budget 3D games; each character has a skeleton, to which animations may be applied.  Each animation can be applied to any character, and each character can use any 3D character model (each of which can of course be &#8220;skinned&#8221;).  So you have three components in the system:</p>
<ul>
<li>Skeleton</li>
<li>Animation</li>
<li>Skin</li>
</ul>
<p>Never having been involved with a big-budget game, I can&#8217;t tell you the best way to design a system like that.  However, as a Flash developer, I <em>can</em> find a good way to do it in 2D, in your browser.</p>

<object	type="application/x-shockwave-flash"
			data="http://pixelwelders.com/experiments/barebones/v3/barebones.swf"
			width="750"
			height="300">
	<param name="movie" value="http://pixelwelders.com/experiments/barebones/v3/barebones.swf" />
</object>
<p>This is a quick example of the system (v0.1) in action.  This looks like a timeline animation, but it&#8217;s actually done with code.  To prove it, click the stage to toggle the animation speed.  Notice that it slows down to &#8220;bullet time,&#8221; but totally smoothly, without the jerkiness of a frame-based animation going down to 3 fps.  Also, because of how the system is designed, it can be combined with a physics engine (Box2D, for example) for ragdoll falls from any point in the animation.  Think of the possibilities!</p>
<p>Anyway, just wanted to put that out there.  I&#8217;ve got a couple projects in line first, but I&#8217;d like to explore this further to see what kind of gameplay could come of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/barebones-as3-skeletal-animation-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pokervision3D</title>
		<link>http://pixelwelders.com/blog/game-design/2008/pokervision3d/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/pokervision3d/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 13:34:51 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/game-design/2008/pokervision3d/</guid>
		<description><![CDATA[I just spent the last three weeks a little bit out of the action, wandering Europe in a motorcoach.  On said motorcoach, there were only two things to do: play with my laptop, and play poker with the other passengers.  By the end of the trip, I ended up winning about thirty Euros [...]]]></description>
			<content:encoded><![CDATA[<p>I just spent the last three weeks a little bit out of the action, wandering Europe in a motorcoach.  On said motorcoach, there were only two things to do: play with my laptop, and play poker with the other passengers.  By the end of the trip, I ended up winning about thirty Euros from my playing partners (most of which were 17 and younger).  Obviously, I have no ethical qualms about gambling with minors.  The only thing that disturbed me about this scenario was the fact that 30 Euros is pocket money in France and practically a mortgage payment in the US.  Stupid dollar.</p>
<p>So between games, I started this little project in Papervision.  I&#8217;m not sure how far I&#8217;ll take it, but it might end up being my entry into the <a href="http://blog.papervision3d.org/2008/07/02/paperking3d-the-papervision3d-contest/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://blog.papervision3d.org/2008/07/02/paperking3d-the-papervision3d-contest/');">PaperKing3D</a> contest.  I found some great images of a Victorian-style deck of cards, and painstakingly clone-brushed a full deck out of the few cards I could find.  I then put together the actual game&#8211; which is obviously not finished.  However, it does actually deal out the cards and keep track of players- the next step is to actually make it judge hands (flush vs. full house, etc.).</p>
<p>The best part of this little demo is what happens when you mouse over your cards (the closest hand).  That is Bartek Drozdz&#8217;s <a href="http://www.everydayflash.com/blog/index.php/2008/06/16/bend-modifier-papervision3d-2/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.everydayflash.com/blog/index.php/2008/06/16/bend-modifier-papervision3d-2/');">bend modifier</a> in action.  I think it&#8217;s pretty eye-catching.</p>

<object	type="application/x-shockwave-flash"
			data="http://pixelwelders.com/games/Pokervision3D/Flex/Pokervision_UI.swf"
			width="700"
			height="550">
	<param name="movie" value="http://pixelwelders.com/games/Pokervision3D/Flex/Pokervision_UI.swf" />
</object>
<p><br/><br />
Anyway, that&#8217;s it on Pokervision for today; hopefully I&#8217;ll have the time to finish this (multiplayer 3D poker, anyone?).  In the meantime, I&#8217;ll be working on another, possibly more awesome project that I&#8217;ll be presenting at tomorrow&#8217;s <a href="http://flash.meetup.com/11/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://flash.meetup.com/11/');">Chicago Flash Meetup</a>.  I&#8217;ll post more details here later this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/pokervision3d/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Forward Kinematics in AS3</title>
		<link>http://pixelwelders.com/blog/game-design/2008/forward-kinematics-as3/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/forward-kinematics-as3/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 09:05:09 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[ActionScript 3.0]]></category>

		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[Physics]]></category>

		<category><![CDATA[kinematics]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/actionscript-30/2008/forward-kinematics/</guid>
		<description><![CDATA[I must confess, firstly, that a week ago I didn't know what forward kinematics were.  Everyone seems to be talking about <em>inverse</em> kinematics lately (e.g. "ragdoll" physics), with no love at all for her sister, <em>forward</em> kinematics.  And really, if such a thing may be said, forward kinematics is the hot sister- I'd take her over inverse anyday.]]></description>
			<content:encoded><![CDATA[<h3>A Confession</h3>
<p><a href='http://pixelwelders.com/blog/wp-content/uploads/2008/04/skeleton.jpg' title='Kinematics in action'><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/04/skeleton.jpg' alt='Kinematics in action' style='float:right;margin:.5em 0em 1.5em 1.5em;padding:0;'/></a><br />
I must confess, firstly, that a week ago I didn&#8217;t know what forward kinematics were.  Everyone seems to be talking about <em>inverse</em> kinematics lately (&#8221;ragdoll&#8221; physics), with no love at all for her sister <em>forward</em> kinematics.  And really, if such a thing may be said, forward kinematics is the hot sister- I&#8217;d take her over inverse anyday.</p>
<p>Here&#8217;s the difference:  Sometimes its desirable to model movement based on a system of interconnected objects.  Your body would be such a system (your hip bone&#8217;s connected to your thigh bone, your leg bone&#8217;s connected to your calf bone, your calf bone&#8217;s connected to your foot bone, etcetera).  Inverse kinematics deals with all of this starting from your foot and working inward.  This would be ideal for, say, modeling you falling down the stairs or off a building- provided that you were unconscious.  The motion that your foot produces during the fall is determines the angle and position of your calf, which then determines those things for your thigh.</p>
<p>Now forward kinematics, on the other hand, goes the other way.  The reason you were unconscious in the above example is because any movement started from your body (i.e. flailing in panic as you fell off the building) would be <em>forward</em> kinematics- it starts from your body and moves to the end of the system.  Forward kinematics is used to model more mundane things like walking.  The thigh is rotated, which determines the position of the calf.  The calf is rotated, which in turn determines the position of the foot.  Thus, the position of the foot is determined by motion originating at the body, not the reverse.</p>
<h3>An Example of Forward Kinematics</h3>
<p>Okay, so that&#8217;s what forward kinematics is.  And here is what it looks like (click the image to see).</p>
<p><a href='http://pixelwelders.com/experiments/forward_kinematics' target='_blank'><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/04/walker.jpg' alt='AS3 Forward Kinematics' /></a></p>
<p>See?  He really walks!</p>
<h3>A Sponsored Link</h3>
<p>(can&#8217;t say I wasn&#8217;t honest&#8230;)</p>
<p>I feel that I should also confess that I got the germ of this little engine from this book: </p>
<p><a href="http://www.amazon.com/gp/product/1590597915?ie=UTF8&#038;tag=pixelwelders-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1590597915" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/1590597915?ie=UTF8&#038;tag=pixelwelders-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1590597915');">Foundation Actionscript 3.0 Animation: Making Things Move!</a><img src="http://www.assoc-amazon.com/e/ir?t=pixelwelders-20&#038;l=as2&#038;o=1&#038;a=1590597915" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </p>
<p>It&#8217;s by some guy named Keith Peters who apparently knows his way around the VM2.  It&#8217;s not a ton of classes- two in his version, three in mine.  So if you&#8217;ve got $25 and about an hour, give it a shot.  And if you buy it from the link above, I get two dollars or something.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/forward-kinematics-as3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flex 3 + Game Dev = Awesome</title>
		<link>http://pixelwelders.com/blog/game-design/2008/flex-3-game-dev-is-awesome/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/flex-3-game-dev-is-awesome/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 16:45:52 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[IDE]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/?p=31</guid>
		<description><![CDATA[First of all, a synopsis of this entry so you don't have to read the whole thing. First, I'm going to reminisce in a slightly condescending tone.  Then, I'm going to suddenly switch tacks and turn my reminiscence into a rather awkward metaphor about how Flex rocks.  Then I'll say something like "download Adobe Flex 3 <a href="http://www.adobe.com/products/flex/">here</a> and try it for game development."  So if that's enough to convince you, you can stop reading here.  If not, read on!  There's another link to download the Flex trial at the bottom of this post.]]></description>
			<content:encoded><![CDATA[<p>	<strong>&#60;Synopsis!&#62;</strong><br />
	First of all, a synopsis of this entry so you don&#8217;t have to read the whole thing. First, I&#8217;m going to reminisce in a slightly condescending tone.  Then, I&#8217;m going to suddenly switch tacks and turn my reminiscence into a rather awkward metaphor about how Flex rocks.  Then I&#8217;ll say something like &#8220;download Adobe Flex 3 <a href="http://www.adobe.com/products/flex/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.adobe.com/products/flex/');">here</a> and try it for game development.&#8221;  So if that&#8217;s enough to convince you, you can stop reading here.  If not, read on!  There&#8217;s another link to download the Flex trial at the bottom of this post.<br />
<strong>&#60;/Synopsis!&#62;</strong></p>
<p>	A few years ago, before my brilliant web career, I lived a very different life.  I worked in a small studio in downstate Illinois as a songwriter and producer.  This was not quite as awesome as it sounds.  Usually it meant dealing with clients who were pretty convinced of their own brilliance, who brought me lyrics scratched on stained and wrinkled napkins.  “It goes like this,” they would say, and hum me a series of unrelated notes.</p>
<p><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/03/emo-kid_350.jpg' alt='Emo kid' style="margin-right:10px;" /></p>
<p>	My job was to take this stained napkin and these notes and, through a sort of studio alchemy, synthesize an actual song.  I acted as an amplifier for the natural talent of the client.  If she thought she might want some drums, I was the drummer.  If this called for some keyboard or guitar, then that was my job too.  If there was a note a client didn’t like or a harmony that didn’t seem to work, it was my job to suggest a better one.  I became an extension of the client- the whole point of my employment being to make each artist sound <em>better than they actually were.</em></p>
<p>	Okay, now let’s make the awkward jump to the other side of this too-obvious metaphor.  The hapless client is now the Flash developer.  The studio is now the Flash player and development environment.  And the producer, the guy who amplifies your strengths and fills in for your weaknesses&#8230; that producer is Flex 3.</p>
<p>	Yes, it’s an awkward metaphor.  I realize this.  But it’s very important to me that I evangelize Flex as much as possible, and this particular comparison makes a lot of sense in my head.  Actionscript 3 dropped a ton of new functionality in our laps- the Flash Player 9 API is like five times the size of Flash Player 8’s.  In many ways, the AS2 expert, the Java developer, and the AS newbie are all in the same boat (to mix metaphors) when it comes to starting AS3.  It’s a room full of powerful equipment and there’s no one to ask for help.</p>
<p><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/03/flex1.jpg' alt='Flex Assistance' style="float:none"/></p>
<p>	So that’s why I am evangelizing Flex 3.  If you’ve been using the Flash CS3 compiler, you’re going to freak when you start using the Flex 3 compiler.  Seriously, it’s that awesome.  And Flex itself provides a ridiculous amount of help in the form of auto-completion and code hints.  It’s like that producer.  You say “I’d like to make a call to that BadGuy class I made three weeks ago.”  Flex 3 says, “Awesome!  You’ll need to send it the following five parameters, of these five types, in this order.”  As soon as you mistype a variable name Flex is there with a friendly reminder: “Ahem.  The ScoreKeeper class only accepts Numbers.  I suggest you change your approach.”  No more thirty-second compiles in Flash only to find that you have errors in your code.  It’s instant- Flex checks your syntax <em>and</em> compiles every time you save.</p>
<p><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/03/flex2.jpg' alt='Flex Errors' style='float:none;'/></p>
<p>	Okay, I’m getting carried away here.  I can’t help it- I’ve only recently started using Flex for game development, and it’s changed the way I code.  I know you FlashDevelop and Eclipse folks have had these functions forever, but it&#8217;s new to me.  I can get twice as much done in half the time, with a third of the frustration.  Or something.  So if you haven’t tried Flex for your game development, I suggest you give it a whirl.  Adobe even gives you a 60-day trial <a href="http://www.adobe.com/products/flex/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.adobe.com/products/flex/');">here</a>.  Seriously, how can you lose?</p>
<p><strong>Credits</strong><br />
The studio above is <a href="http://profile.myspace.com/noisegaterecording" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://profile.myspace.com/noisegaterecording');">The Noisegate</a>, in Pekin IL.  It&#8217;s a beautiful studio, and Mike Layne (lead engineer) is a great guy.  Tell &#8216;em I sent you.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/flex-3-game-dev-is-awesome/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AS3 A* Pathfinding Engine (v1.0)</title>
		<link>http://pixelwelders.com/blog/game-design/2008/a-pathfinding-engine-for-as3-v10/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/a-pathfinding-engine-for-as3-v10/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 04:48:35 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[]]></category>

		<category><![CDATA[A*]]></category>

		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Pathfinding]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/?p=26</guid>
		<description><![CDATA[She ain't much to look at, but she sure do work.  Honestly, I'm not exactly sure <em>how</em> she works.  A recursive function, as they say, is a fierce and fickle mistress.]]></description>
			<content:encoded><![CDATA[<p>She ain&#8217;t much to look at, but she sure do work.  Honestly, I&#8217;m not exactly sure <em>how</em> it works.  A recursive function is a fierce and fickle mistress.</p>
<p><a href="http://pixelwelders.com/experiments/pathfinding" ><img src='http://pixelwelders.com/blog/wp-content/uploads/2008/03/pathfinding.jpg' alt='Pathfinding engine v1.0' /></a></p>
<p>Actually, I do know how it works; I was just startled at how fast it came together.  There are a lot of great resources on the subject, as well.  Here&#8217;s the one I used:</p>
<p><a href="http://www.policyalmanac.org/games/aStarTutorial.htm" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.policyalmanac.org/games/aStarTutorial.htm');">A* Tutorial for Beginners</a></p>
<p>And if you&#8217;d like to play around with it, just click the image.</p>
<p>The real problem I have with it is that it&#8217;s pretty short-sighted.  Units don&#8217;t see a wall until they&#8217;re right on top of it.  Obviously this makes sense for a lot of units- sometimes you don&#8217;t know where you&#8217;re going until you get there.  But I think I&#8217;m going to try some smoothing algorithms to remove some waypoints and get those paths a little more natural-looking.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/a-pathfinding-engine-for-as3-v10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Two Reasons to Love Physics</title>
		<link>http://pixelwelders.com/blog/game-design/2008/two-reasons-to-love-physics/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/two-reasons-to-love-physics/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 06:58:26 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[Physics]]></category>

		<category><![CDATA[APE]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/?p=7</guid>
		<description><![CDATA[I actually never even took a physics class in high school, but that's probably because I didn't associate it with explosions. It's also because my schedule was already taken up with classes like Intro to Small Arms and Street Slang 101- both of which have served me admirably in my current career.  However, now I'm beginning to regret the physics-less education of my youth.]]></description>
			<content:encoded><![CDATA[<p>He&#8217;s 71, teaches at MIT, and he does multiple full dress rehearsals of his lectures before he unleashes them on his unsuspecting pupils. His class costs the school three hundred grand per semester. And he&#8217;s definitely the guy that you wished was <em>your</em> physics teacher. But he wasn&#8217;t- because if you&#8217;re reading my blog, you don&#8217;t go to MIT.  Ladies and gents, Walter Lewin.</p>
<p><object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/7Zc9Nuoe2Ow&#038;rel=0&#038;color1=0x234900&#038;color2=0x4e9e00&#038;hl=en"></param>
<param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/7Zc9Nuoe2Ow&#038;rel=0&#038;color1=0x234900&#038;color2=0x4e9e00&#038;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<p>I actually never even took a physics class in high school, but that&#8217;s probably because I didn&#8217;t associate it with explosions. It&#8217;s also because my schedule was already taken up with classes like Intro to Small Arms and Street Slang 101- both of which have served me admirably in my current career.  However, now I&#8217;m beginning to regret the physics-less education of my youth.</p>
<p>Or rather, I <em>would</em> be regretting my ignorance if not for <a href="http://cove.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://cove.org');">Alec Cove</a>, who has given the world the gift of the <a href="http://www.cove.org/ape/index.htm" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.cove.org/ape/index.htm');">Actionscript Physics Engine</a> (APE).  It&#8217;s not the only AS3 physics library out there, but in my opinion it&#8217;s certainly the simplest to use.  It doesn&#8217;t seem to have the support of <a href="http://fisix.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://fisix.com');">Fisix</a> or the features of <a href="http://box2dflash.sourceforge.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://box2dflash.sourceforge.net/');">Box2D</a>, but if you just want to pick up a physics engine and run with it, I suggest you give APE a try.</p>
<p>Also, if you&#8217;re interested, you can download 35 hours of video lectures by this Walter Lewin guy at MIT&#8217;s <a href="http://ocw.mit.edu/OcwWeb/Physics/8-01Physics-IFall1999/VideoLectures/index.htm" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://ocw.mit.edu/OcwWeb/Physics/8-01Physics-IFall1999/VideoLectures/index.htm');">OpenCourseWare</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/two-reasons-to-love-physics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Let&#8217;s Try Something, Shall We?</title>
		<link>http://pixelwelders.com/blog/game-design/2008/lets-try-something-shall-we/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/lets-try-something-shall-we/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 16:08:18 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[Game Design]]></category>

		<category><![CDATA[OS Wars]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/?p=8</guid>
		<description><![CDATA[There was an age, long ago, when things were different.  People were simpler and less selfish, taking only what they needed from the land and giving back what they could.  The air was cleaner, the rivers were clearer, and small furry things cavorted with other small furry things.

However, all things must come to an end.  [...]]]></description>
			<content:encoded><![CDATA[<p>There was an age, long ago, when things were different.  People were simpler and less selfish, taking only what they needed from the land and giving back what they could.  The air was cleaner, the rivers were clearer, and small furry things cavorted with other small furry things.</p>
<p><img src="http://pixelwelders.com/blog/wp-content/uploads/2008/03/elysium_400.jpg" alt="Fields of Elysium" /></p>
<p>However, all things must come to an end.  Today we look back upon this golden age, this Elysium, and we weep for what might have been.  We now live in a world filled with tiny transistors, a silicon hell.  Contrast our world with the one I speak of, a paradise filled with larger, hotter, and less efficient transistors, and also the Pentium.  I refer, of course, to the 1990s.</p>
<p>As much as things have changed from this fabled yesteryear, there are still some similarities.  For a short time in these &#8220;nineties,&#8221; there were two categories of games: games that were Real-Time Strategy, and games that were not Real-Time Strategy.  We have Dune II and Command &amp; Conquer to thank for that short age of complete and ridiculous obsession on one genre.  Thankfully we&#8217;re beyond such <a href="http://en.wikipedia.org/wiki/List_of_MMORPGs" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://en.wikipedia.org/wiki/List_of_MMORPGs');">tendencies</a> today.</p>
<p><img src="http://pixelwelders.com/blog/wp-content/uploads/2008/03/command_and_conquer.jpg" alt="Command &amp; Conquer" /></p>
<p>Which means, of course, that it&#8217;s time to revisit them!  I think it&#8217;s about time a decent web-based RTS was released.   I&#8217;ve seen some attempts, but none of them has really taken advantage of what Flash is capable of these days.  We have so many tools now: physics engines, 3D engines, particle engines, real-time communication between clients, &amp;c.  So here is where the experiment begins- a Flash RTS.  Flash on a Core 2 should be able to handle anything that a 386 running Dune II could- and more.  Why not take advantage of it?</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/lets-try-something-shall-we/feed/</wfw:commentRss>
		</item>
		<item>
		<title>8 Steps to a Perfect Webgame</title>
		<link>http://pixelwelders.com/blog/game-design/2008/8-steps-to-a-perfect-webgame/</link>
		<comments>http://pixelwelders.com/blog/game-design/2008/8-steps-to-a-perfect-webgame/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 04:59:58 +0000</pubDate>
		<dc:creator>Zack Jordan</dc:creator>
		
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://pixelwelders.com/blog/?p=3</guid>
		<description><![CDATA[

Man second from left is sure he&#8217;s heard of this &#8220;game&#8221; thing before.

After having worked on a few web games for some major corporations, I believe I have enough experience with the process to open its inner workings to those who might want to make their own.  This is from a corporate point of [...]]]></description>
			<content:encoded><![CDATA[<div class="captioned_image" style="float:none">
<img src='http://pixelwelders.com/blog/wp-content/uploads/2008/03/meeting.jpg' alt='Birth of a game' /></p>
<p>Man second from left is sure he&#8217;s heard of this &#8220;game&#8221; thing before.</p>
</div>
<p>After having worked on a few web games for some major corporations, I believe I have enough experience with the process to open its inner workings to those who might want to make their own.  This is from a corporate point of view, but if a corporation can do it, anyone can.</p>
<h3>The Process</h3>
<p>1- Corporation notices that this “web game” thing is starting to catch on with “the target demographic.”</p>
<p>2- Corporation hires a design company- not necessarily a <em>game</em> design company- to build said game.</p>
<p>3- Design company assigns a “team” who then begins a series of “brainstorming sessions.”</p>
<p>4- Design company submits the fruit of these brainstorming sessions- a full storyboard- to corporation.</p>
<p>5- Corporation sits on said storyboards for two weeks, then reports back that minor changes have been requested, including but not limited to changing the entire basis of the game.  The design company will never know this, but the majority of the changes were suggested by Bill in Accounting, a project manager named Cindy, and the husband of someone in marketing.  None of them, it is important to note, have ever played a game in his or her life.</p>
<p>6- Steps 3 through 5 are repeated until the original idea has been transformed into a fine grey mush.</p>
<p>7- Game is released.</p>
<p>8- Game flops.  Executives at corporation think &#8220;well, games aren&#8217;t as popular as we thought.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://pixelwelders.com/blog/game-design/2008/8-steps-to-a-perfect-webgame/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
