<?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>Matt Tuttle &#187; Flixel</title>
	<atom:link href="http://matttuttle.com/tag/flixel/feed/" rel="self" type="application/rss+xml" />
	<link>http://matttuttle.com</link>
	<description>He writes code</description>
	<lastBuildDate>Sat, 13 Apr 2013 13:33:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Flixel vs. FlashPunk</title>
		<link>http://matttuttle.com/2011/02/flixel-vs-flashpunk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flixel-vs-flashpunk</link>
		<comments>http://matttuttle.com/2011/02/flixel-vs-flashpunk/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 02:59:08 +0000</pubDate>
		<dc:creator>Matt Tuttle</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[FlashPunk]]></category>
		<category><![CDATA[Flixel]]></category>

		<guid isPermaLink="false">http://matttuttle.com/?p=177</guid>
		<description><![CDATA[<br />
<b>Warning</b>:  call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'Array' was given in <b>/home/ccc/matt_html/wp-includes/plugin.php</b> on line <b>173</b><br />
<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/02/139247_flixel1-150x150.jpg" class="attachment-200x150 wp-post-image" alt="139247_flixel" /></p>]]></description>
				<content:encoded><![CDATA[<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/02/139247_flixel1-150x150.jpg" class="attachment-200x150 wp-post-image" alt="139247_flixel" /></p><p>The past couple of weeks I&#8217;ve been writing Flash games in Actionscript and using two different frameworks to aid my development, Flixel and FlashPunk. I started using Flixel first since several games I&#8217;ve played have used it and it looked simple to get started with. FlashPunk was something I started using the last week and a half for the Vanished game prototype I shared this week.</p>
<p><span id="more-177"></span></p>
<h2><em>Flixel</em></h2>
<p><img class="alignright size-thumbnail wp-image-201" title="Flixel" src="http://matttuttle.com/wp-content/uploads/2011/02/139247_flixel-150x150.jpg" alt="" width="150" height="150" /></p>
<p><a href="http://www.flixel.org/">Flixel</a> has been used for quite a few flash games. Adam &#8216;Atomic&#8217; Saltzman created the framework for his own games (Canabalt and Gravity Hook) and has open sourced it for anyone to use.</p>
<h3>Pros</h3>
<ul>
<li>Simple sprite loading, animations, and sound effects.</li>
<li>Basic physics built-in (velocity, acceleration, friction, etc&#8230;)</li>
<li>The library is well documented and has some excellent tutorials as well as user-created examples.</li>
</ul>
<h3>Cons</h3>
<ul>
<li>Collisions are basic hit-boxes and I found myself wanting more control for certain games.</li>
<li>No easy way to deallocate objects on the fly and everything seems to end up in the global scope.</li>
</ul>
<h2><em>FlashPunk</em></h2>
<p><img class="alignright size-thumbnail wp-image-203" title="flashpunk" src="http://matttuttle.com/wp-content/uploads/2011/02/flashpunk-150x150.gif" alt="" width="150" height="150" /></p>
<p><a href="http://flashpunk.net/">FlashPunk</a> was created by Chevy Johnston and is probably best known for the &#8220;Give Up, Robot&#8221; series. It&#8217;s a little more programmer centric but has some great features missing in Flixel.</p>
<h3>Pros</h3>
<ul>
<li>Complex collisions from hit-boxes to pixel perfect bitmap masks. Best of all you can run predictive collision tests along a moving line.</li>
<li>There is usually more than one way to accomplish a task and usually it just takes a few lines to do some amazing things.</li>
<li>The debug console shows hitboxes, a console log, frame rate, and other useful information that will save you time. Flixel has something similar but it is more limited.</li>
</ul>
<h3>Cons</h3>
<ul>
<li>Basic documentation is lacking in certain areas and the basic tutorials leave you with just enough to get started. I had to dig around to find out that the emit function for emitters had a relative position to it&#8217;s parent object.</li>
<li>Physics must either be added through Box2D or by <a title="Simple FlashPunk Physics" href="http://matttuttle.com/2011/02/simple-flashpunk-physics/">rolling your own</a>.</li>
</ul>
<h2>And the winner is&#8230;</h2>
<p>Flixel is a little to restrictive and I&#8217;m finding a lot more freedom using FlashPunk. The lack of physics was an easy thing to remedy and the pixel perfect collision made adding slopes a breeze. I haven&#8217;t even scratched the surface of FlashPunk and I already feel it outshines Flixel. The framework feels well thought out and the debug console is a huge time saver.</p>
<p>If you are an artist and not primarily a programmer then I suggest Flixel. It is super easy to get started with and has some really powerful classes. As long as you work within the boundaries of the framework you&#8217;ll find it refreshingly simple to work with.</p>
<p>Both frameworks are in active development and I&#8217;m sure that down the road each one will continue to get better. This comparison is obviously my own opinion and not meant to start a flame war between the two. Hopefully I could provide a clear summary of the two libraries.</p>
]]></content:encoded>
			<wfw:commentRss>http://matttuttle.com/2011/02/flixel-vs-flashpunk/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Game prototype: Spelunk</title>
		<link>http://matttuttle.com/2011/02/game-prototype-spelunk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=game-prototype-spelunk</link>
		<comments>http://matttuttle.com/2011/02/game-prototype-spelunk/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 22:20:18 +0000</pubDate>
		<dc:creator>Matt Tuttle</dc:creator>
				<category><![CDATA[Prototypes]]></category>
		<category><![CDATA[Cave Story]]></category>
		<category><![CDATA[Flixel]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[Metroidvania]]></category>
		<category><![CDATA[platformer]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[Spelunk]]></category>

		<guid isPermaLink="false">http://matttuttle.com/?p=68</guid>
		<description><![CDATA[<br />
<b>Warning</b>:  call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'Array' was given in <b>/home/ccc/matt_html/wp-includes/plugin.php</b> on line <b>173</b><br />
<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/02/spelunk-150x150.png" class="attachment-200x150 wp-post-image" alt="spelunk" /></p>]]></description>
				<content:encoded><![CDATA[<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/02/spelunk-150x150.png" class="attachment-200x150 wp-post-image" alt="spelunk" /></p><p>Spelunk is a prototype I started working on in December. The game is an action rpg platformer much like Cave Story, Metroid, and Castlevania (in fact the background was drawn similar to Cave Story). It&#8217;s a game style that I&#8217;ve wanted to do for quite a while and just decided to sit down and work out how to develop it.</p>
<p>It is not a finished game yet and is something I keep coming back to just to add little features here and there. Right now the main weapon of the game are knifes that you throw at your enemies. I&#8217;ve got snakes, bats, slimes, zombies, and a mini boss in the game and am looking to add more. If anyone has something they would like to see in the game, let me know.</p>
<p><span id="more-68"></span></p>
<p>I need to add a simple story and flesh out more levels so that the game takes more than 10 minutes to beat. At the moment you can just roam around an explore the cave system. I have several powerups that you need to get in order to continue through the game. In general Spelunk is not a very creative game and it&#8217;s more a project of mine to make a fun Metroidvania game.</p>
<p>The artwork I created myself and it&#8217;s meant to be super simple. Part of the fun is using your imagination to think of what the game might look like in real life. I wanted to focus more on gameplay than pretty looking graphics and I think you&#8217;ll find that Spelunk is a lot of fun. Maybe after I finish up the current game I&#8217;m working on, I&#8217;ll release this one onto a portal site.</p>
]]></content:encoded>
			<wfw:commentRss>http://matttuttle.com/2011/02/game-prototype-spelunk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jezzball’s Revenge: Post Mortem</title>
		<link>http://matttuttle.com/2011/01/jezzballs-revenge-post-mortem/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jezzballs-revenge-post-mortem</link>
		<comments>http://matttuttle.com/2011/01/jezzballs-revenge-post-mortem/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 01:19:28 +0000</pubDate>
		<dc:creator>Matt Tuttle</dc:creator>
				<category><![CDATA[Post Mortems]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flixel]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[Jezzball]]></category>

		<guid isPermaLink="false">http://matttuttle.com/?p=62</guid>
		<description><![CDATA[<br />
<b>Warning</b>:  call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'Array' was given in <b>/home/ccc/matt_html/wp-includes/plugin.php</b> on line <b>173</b><br />
<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/01/jezzball-150x150.png" class="attachment-200x150 wp-post-image" alt="Jezzball&#039;s Revenge" /></p>]]></description>
				<content:encoded><![CDATA[<p><img width="150" height="150" src="http://matttuttle.com/wp-content/uploads/2011/01/jezzball-150x150.png" class="attachment-200x150 wp-post-image" alt="Jezzball&#039;s Revenge" /></p><p>Brenton and I have been working on a flash game for about a week to improve my AI programming. It&#8217;s pretty much just a simple boss fight where you battle against the evil cursor that has imprisoned Jezzball. The original game was a favorite of ours and we wanted a game with a bit of a twist.</p>
<p>So this blog post is my reflections on how development went for the game and what we could have done to make it better. Game development is an interesting process and we&#8217;re always looking for ways to improve.</p>
<h3><span id="more-62"></span><img class="size-medium wp-image-64 alignleft" title="Jezzball's Revenge" src="http://matttuttle.com/wp-content/uploads/2011/01/jezzball-300x225.png" alt="" width="300" height="225" />Things that went right</h3>
<p>We both had goals before the game on what we wanted to improve skill wise and so we wanted something that required more animation and AI than the previous games we had developed, which were mostly puzzle games. This helped us keep the scope at a minimum and gave us a clear goal to work towards. I really feel that we accomplished what we set forth to do and that was definitely a good thing.</p>
<p>Our original concept of the game was just an object that smashed into things. By coming up with the base mechanic early on it made us focus on simple problems first. The actual art and idea of using Jezzball as a theme came after we had a working prototype. Instead of getting a ton of art done on the game and then scrapping it we just had the programming working while we tried to make it feel as fun as possible.</p>
<p>We also used the <a href="http://flixel.org/">Flixel</a> framework for flash to quickly get a game up and running. This has really useful classes that make it easy to start a new project, handle sprite loading, collision, and other nice features that sped up the prototyping process.</p>
<h3>Things we learned</h3>
<p>Adding music and sound effects to a game really help make a game fun. I used FamiTracker for the music and sfx which I had never used before but it has a pretty short learning curve (compared to other trackers) and I was able to compose some simple music. We both wanted it to be a chiptune cover and while I considered MilkyTracker I didn&#8217;t want to take the time to set up some complex samples/instruments. Even the most basic music can help make the game better.</p>
<p>Polishing even a simple game takes time. We probably spent just as much time polishing the game as we did making the original prototype. The actual gameplay was done in two nights and we spent about three more finishing up the game to make it feel right and to add elements like the gui, main menu and instructions screen.</p>
<h3>What we could have done differently</h3>
<p>I&#8217;d love to have more people testing the game before releasing it but for the most part we showed it to friend and family to gauge difficulty and see what needed to be added to the game. It was surprising to find what people had troubles with and the charge attack was not clearly understood until we added the meter.</p>
<h3>Final Thoughts</h3>
<p>The game was meant to be a learning experience but also something we could polish as much as possible. I feel it was successful for what it was and hope other people will enjoy it. Obviously knowing about the original Jezzball game will help it make sense but I feel the gameplay stands up on it&#8217;s own.</p>
]]></content:encoded>
			<wfw:commentRss>http://matttuttle.com/2011/01/jezzballs-revenge-post-mortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
