<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cameron McKay &#187; Gaming</title>
	<atom:link href="http://cdmckay.org/blog/category/gaming/feed/" rel="self" type="application/rss+xml" />
	<link>http://cdmckay.org/blog</link>
	<description>Programming and Game Development</description>
	<lastBuildDate>Tue, 11 Oct 2011 05:05:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Biomorph.js: Natural Selection in JavaScript</title>
		<link>http://cdmckay.org/blog/2010/06/06/biomorph-js-natural-selection-in-javascript/</link>
		<comments>http://cdmckay.org/blog/2010/06/06/biomorph-js-natural-selection-in-javascript/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 00:44:44 +0000</pubDate>
		<dc:creator>cdmckay</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://cdmckay.org/blog/?p=1588</guid>
		<description><![CDATA[For his 1986 book The Blind Watchmaker, Richard Dawkins developed a program that created &#8220;biomorphs&#8221;: virtual creatures created by a computer simulation. The simulation, called Biomorph, was developed in order to demonstrate the power of natural selection. Recently, in an effort to better understand how the Biomorph program worked, I decided to implement it myself [...]]]></description>
			<content:encoded><![CDATA[<p>For his 1986 book <a href="http://en.wikipedia.org/wiki/The_Blind_Watchmaker">The Blind Watchmaker</a>, <a href="http://en.wikipedia.org/wiki/Richard_Dawkins">Richard Dawkins</a> developed a program that created &#8220;biomorphs&#8221;: virtual creatures created by a computer simulation.  The simulation, called <a href="http://www.rennard.org/alife/english/biomintrgb.html">Biomorph</a>, was developed in order to demonstrate the power of natural selection.</p>
<p><a href="http://cdmckay.org/biomorph"><img class="aligncenter size-full wp-image-1606" title="Biomorph" src="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/06/biomorph-ui.png" alt="" width="350" height="190" /></a></p>
<p>Recently, in an effort to better understand how the Biomorph program worked, I decided to implement it myself in JavaScript using the HTML5 canvas element.  <a href="http://cdmckay.org/biomorph">The result of this endeavour can be found here.</a> Read more to learn how to use the Biomorph program.</p>
<p><span id="more-1588"></span></p>
<h3>How do I work it?</h3>
<p>The user interface contains 9 biomorphs arranged in a 3&#215;3 grid.  This is a biomorph generation.  The centre the grid (with the blue border) contains the parent biomorph.  The parent is the biomorph that the remaining 8 children biomorphs are based on.  The children biomorphs are created by slightly mutating each of the eight genes in a biomorph.</p>
<p>In order to evolve a biomorph towards a certain goal, look at the 8 child biomorphs and select the one that is closest to looking like the biomorph you are aiming for.  For example, if you&#8217;re trying to make a bat biomorph, pick the biomorph that looks most like a bat.  Once you have a chosen a biomorph, click it to generate a new generation of biomorphs based on it.</p>
<p>If you choose the parent biomorph, you will simple be regenerating the child generation.  However, since each gene can move in two directions, you have 16 possible children for each parent.  Thus, if you are unhappy with your choice of children, you can try clicking the parent biomorph again to get one of the 8 other child biomorphs you haven&#8217;t seen.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdmckay.org/blog/2010/06/06/biomorph-js-natural-selection-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YouTube Basic Sidescroller Tutorial in FlashDevelop</title>
		<link>http://cdmckay.org/blog/2010/04/03/youtube-basic-sidescroller-tutorial-in-flashdevelop/</link>
		<comments>http://cdmckay.org/blog/2010/04/03/youtube-basic-sidescroller-tutorial-in-flashdevelop/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 06:07:36 +0000</pubDate>
		<dc:creator>cdmckay</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[flashdevelop]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[sidescroller]]></category>

		<guid isPermaLink="false">http://cdmckay.org/blog/?p=1284</guid>
		<description><![CDATA[As I&#8217;ve made up my mind to learn Flash, and don&#8217;t want to pay a honkin&#8217; amount of cash, I decided to go with a free Flash IDE called FlashDevelop. Since I&#8217;m toying around with the idea of sidescrollers, I did a search for &#8220;Flash sidescroller tutorial&#8221; and found this excellent 3-parter by devnote.org.  Unfortunately [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve made up my mind to learn Flash, and don&#8217;t want to pay a <a href="http://www.adobe.com/products/flash/">honkin&#8217;</a> <a href="http://www.fdt.powerflasher.com/">amount</a> of cash, I decided to go with <a href="http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page">a free Flash IDE called FlashDevelop</a>.</p>
<p>Since I&#8217;m toying around with the idea of sidescrollers, I did a search for &#8220;Flash sidescroller tutorial&#8221; and <a href="http://www.youtube.com/watch?v=xQN4VyUVj3Y&amp;NR=1">found this excellent 3-parter</a> by <a href="http://devnote.org">devnote.org</a>.  Unfortunately (for me), the tutorial expects that you&#8217;re using Adobe&#8217;s Flash IDE.  Thus, as a contribution to the web (and myself&#8230; mostly myself), I translated the tutorial to work with FlashDevelop.  Read on to see how I did it, or <a href="http://cdmckay.org/files/BasicSidescrollerTutorial.zip">just grab the source here</a>.</p>
<p><span id="more-1284"></span>There are basically only 3 elements in the DevNote tutorial that require the Flash IDE.  They are the Boundaries, Player and StartMarker MovieClips.</p>
<p>As the StartMarker was just a point, I used the Point class to represent it (and called it <code>_startPos</code> instead).  Since Boundaries and Player were basically sprites, I represented them using the Sprite class.  Here is the pertinent code:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">MovieClip</span> 
<span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _startPos<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Point</span><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _player<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _boundaries<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>    
    <span style="color: #000066; font-weight: bold;">...</span>
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #009900; font-style: italic;">// Assign defaults.</span>
        _startPos = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Point</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
        _player = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _player<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0xff0000<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _player<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _player<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _player<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = _startPos<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">;</span>
        _player<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = _startPos<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>_player<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
        _boundaries = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0x0000ff<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">40</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">110</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">150</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">110</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineStyle</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span> 0x0000ff<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">600</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">800</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        _boundaries<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>_boundaries<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000066; font-weight: bold;">...</span>
    <span style="color: #000000;">&#125;</span>    
    <span style="color: #000066; font-weight: bold;">...</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>I also change the code slightly in the case of the key handlers (I used constants for the key codes isntead of magic numbers) and used a <code>do ... while</code> loop for the collision detection.</p>
]]></content:encoded>
			<wfw:commentRss>http://cdmckay.org/blog/2010/04/03/youtube-basic-sidescroller-tutorial-in-flashdevelop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wezzle price drop</title>
		<link>http://cdmckay.org/blog/2010/03/27/wezzle-price-drop/</link>
		<comments>http://cdmckay.org/blog/2010/03/27/wezzle-price-drop/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 02:49:13 +0000</pubDate>
		<dc:creator>cdmckay</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Wezzle]]></category>

		<guid isPermaLink="false">http://cdmckay.org/blog/?p=1218</guid>
		<description><![CDATA[As some of you may know, I&#8217;m a co-founder of the indie games company Couchware Inc. About a month ago, we released Wezzle, our first title. A few days ago we released a free web version of the game called Wezzle for Web (which you should try out! ). As if there wasn&#8217;t already enough [...]]]></description>
			<content:encoded><![CDATA[<p>As some of you may know, I&#8217;m a co-founder of the <a href="http://couchware.ca/www">indie games company Couchware Inc</a>.  About a month ago, we released <a href="http://couchware.ca/www/blog/2010/02/05/wezzle-now-for-sale/">Wezzle, our first title</a>.  A few days ago we released <a href="http://couchware.ca/www/wezzle/web">a free web version of the game called Wezzle for Web</a> (which you should try out! <img src='http://cdmckay.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>As if there wasn&#8217;t already enough Wezzle awesomeness going around, we just reduced the price of the game to $4.99 (from $14.99).  So, if you haven&#8217;t yet grabbed a copy of Wezzle, I highly recommend <a href="http://couchware.ca/www/wezzle/buy">you do it now</a>.</p>
<p>For those of you <a href="http://couchware.ca/www/wezzle">unfamiliar with Wezzle</a>, it&#8217;s a casual puzzler that features four unique items, 3 difficulty modes, 10 original songs and eye-poppingly colourful graphics.</p>
<p><a href="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/tutorial-800.jpg" rel="lightbox[1218]"><img src="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/tutorial-800-150x150.jpg" alt="" title="tutorial-800" width="150" height="150" class="alignleft size-thumbnail wp-image-1224" /></a> <a href="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/star-800.jpg" rel="lightbox[1218]"><img src="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/star-800-150x150.jpg" alt="" title="star-800" width="150" height="150" class="alignleft size-thumbnail wp-image-1223" /></a> <a href="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/rocket-800.jpg" rel="lightbox[1218]"><img src="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2010/03/rocket-800-150x150.jpg" alt="" title="rocket-800" width="150" height="150" class="alignleft size-thumbnail wp-image-1222" /></a> </p>
<div style="clear: both;"></div>
]]></content:encoded>
			<wfw:commentRss>http://cdmckay.org/blog/2010/03/27/wezzle-price-drop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I Liked About Final Fantasy</title>
		<link>http://cdmckay.org/blog/2009/12/22/what-i-liked-about-final-fantasy/</link>
		<comments>http://cdmckay.org/blog/2009/12/22/what-i-liked-about-final-fantasy/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 06:42:55 +0000</pubDate>
		<dc:creator>cdmckay</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[ff1]]></category>
		<category><![CDATA[final fantasy]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[square]]></category>
		<category><![CDATA[squaresoft]]></category>
		<category><![CDATA[virtual console]]></category>
		<category><![CDATA[wii]]></category>

		<guid isPermaLink="false">http://cdmckay.org/blog/?p=1099</guid>
		<description><![CDATA[Final Fantasy, a.k.a. FF1, is an NES RPG first published in Japan in 1987 and then in North America 3 years later.  I remember when I first played it as a kid at my friend Dave&#8217;s house.  It blew my mind.  I would dream about Fighters and Red Mages and making the orbs shine again. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Final_Fantasy_1">Final Fantasy</a>, a.k.a. FF1, is an NES RPG first published in Japan in 1987 and then in North America 3 years later.  I remember when I first played it as a kid at my friend Dave&#8217;s house.  It blew my mind.  I would dream about Fighters and Red Mages and making the orbs shine again.</p>
<p><a href="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2009/12/ff1_battle.jpg" rel="lightbox[1099]"><img class="alignleft size-thumbnail wp-image-1126" title="Final Fantasy 1 Battle" src="http://cdmckay.org/blog/wp-content/blogs.dir/2/files/2009/12/ff1_battle-150x150.jpg" alt="Final Fantasy 1 Battle" width="150" height="150" /></a>Recently, FF1 was released on the Wii Virtual Console and, even though I already owned it on my NES, I felt the urge to play the classic again without the fear of my NES crashing because I blinked too hard.</p>
<p>So I flipped on my Wii, downloaded the game, and played it for about 2-3 hours a night for a week (keep in mind I logged many, many hours playing this game as a child).  Here are my thoughts on the title.</p>
<p><span id="more-1099"></span></p>
<h3><span id="main" style="visibility: visible;"><span id="search" style="visibility: visible;"><em>Phil</em>, what are you doing here?<br />
</span></span><span id="main" style="visibility: visible;"><span id="search" style="visibility: visible;"><em>You</em>&#8216;<em>re partied out</em>, man.<em> Again</em>.</span></span></h3>
<p>I liked having a <strong>customizable party</strong>.  There are 6 classes to choose from: 3 melee classes and 3 caster classes.  Since your party only consists of 4 characters, this means there&#8217;s no way you can try them all out in one play through.  That increases re-playability, and it also allows you to tailor the party to your play style.  You also become more attached to your party because they&#8217;re using the same 4 guys from start to finish.  They grow on you.</p>
<p><em>(Aside: I recently played FF2: The After Years and found it very annoying how often the characters changed.  Who cares if you level a character up if they&#8217;re only there for two scenes of the game).</em></p>
<p>Unfortunately, and this may be due to size limitations of the platform, there&#8217;s not a whole lot of in-game information to help you choose your party members.  What&#8217;s the difference between a Thief and Black Belt?  Red Mage or Black Mage?  There&#8217;s really no way to tell unless you go online and read up on the differences between the classes.  Not a huge deal considering it&#8217;s an old game, but definitely something you&#8217;d have to take care of in a modern game.</p>
<h3>What do you want me to do?  Kill him again?</h3>
<p>With respect to combat, I also liked how there was <strong>no rollover attack if your target died</strong>.  Allow me to explain.  In FF1 combat, you have 4 party members, and 1 or more enemies.  Combat works in rounds, where each party member and enemy gets 1 attack in an randomly chosen order.  Now, if I get in a fight with two baddies, and make all my party members attack the first guy, and he dies on the first hit, everyone else who was supposed to attack that guy wastes their attack for that round (they just hit air).  That means that in dungeons, you really have to know how much your guys hit for on average, how often they hit, and roughly how many hit points the bad guys have.  As you get familiar with your party and the baddies, you start to get a feel of how you should distribute your attacks.  This makes the combat more interesting.</p>
<p>That being said, that particular combat feature is a little unintuitive.  I think most players would expect their attacks to rollover.  Indeed, in later FF games, this is how combat works.  However, I&#8217;m not so sure that the feature needs to be abandoned completely.  I feel that a hybrid system strike a nice balance.  Instead of making the regular attacks miss if the target is dead, I suggest having two types of attacks: regular attacks and focused attacks.  When using regular attacks, you would have a lower hit rate but your attack would rollover if the target dies before your turn comes.  When using a focused attack, you attack would be more likely to hit, but would not rollover if the target died.  The idea being that if a warrior positioned himself on the battlefield to attack multiple enemies, he would be in a suboptimal position for hitting each them individually.</p>
<h3>Ships, canoes and airships.  Oh my.</h3>
<p>I liked the pacing of FF1.  I enjoyed slowly upgrading my transport and having that dictate what I could access.  For example, you start FF1 on foot.  Then, at the second village, you kill a pirate captain and take his ship.  A little later on you get a canoe, which in turn allows you to get an airship, which in turn allows you to get a class upgrade, which in turn brings us to the next point.</p>
<h3>Rise, my champion.</h3>
<p>I liked class changes.  In FF1, once you obtain the airship and complete a particular dungeon, you get a class change.  This changes the appearance of your character and allows them access to more weapons, armour and magic.  It&#8217;s a nice thing to look forward to (akin to getting your level 40/50/60 talents in World of WarCraft) and gives you that second wind to keep playing until the end.</p>
<p>Another cool thing about class changes is that they&#8217;re optional.  If you want to be hardcore, you can skip them and still beat the game.</p>
<h3>What the hells the difference between RUB and XXXX or QAKE and ZAP!?</h3>
<p>FF1 suffers from a problem that I feel is fairly common in many Square games.  There&#8217;s just too many spells that do the same thing.  For example, RUB, XXXX, ZAP! and QAKE are all spells that will instantly kill an enemy or enemies.  Why would you have 4 spells that do that?  I feel like the game designers just gave up with the Level 7 and 8 spells.</p>
<h3>What&#8217;s better?  An Ice Sword or a Flame Sword?  Who can even use them?</h3>
<p>My biggest issue with FF1 is that total lack of  in-game information.  The vendors do not tell you what the weapons, armour and spells do, or even who can use them.  I know the game came with a fold-out page that contained it, but come on, who keeps that stuff around?</p>
<h3>Conclusion</h3>
<p>FF1 is a wonderful game that has a surprisingly amount of depth and re-playability, especially for a game made over 20 years ago.  In fact, I feel like games like FF1 are a lost art, and have been unnecessarily abandoned for <a href="http://www.youtube.com/watch?v=758PHhtqqUU&amp;feature=related">games that focus too much on CG cutscenes</a> and not enough on gameplay.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 52px; width: 1px; height: 1px;">http://en.wikipedia.org/wiki/Final_Fantasy</div>
]]></content:encoded>
			<wfw:commentRss>http://cdmckay.org/blog/2009/12/22/what-i-liked-about-final-fantasy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

