<?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>Cynical Stuff - Casual games development and cynical observations &#187; programming</title>
	<atom:link href="http://www.cynicalstuff.com/tag/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cynicalstuff.com</link>
	<description>A blog about casual games development, science, culture and cynical observations</description>
	<lastBuildDate>Thu, 20 May 2010 15:39:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Web and Downloadable Game Engine Choices 2009</title>
		<link>http://www.cynicalstuff.com/web-and-downloadable-game-engine-choices-2009</link>
		<comments>http://www.cynicalstuff.com/web-and-downloadable-game-engine-choices-2009#comments</comments>
		<pubDate>Sun, 20 Dec 2009 11:44:07 +0000</pubDate>
		<dc:creator>Karja</dc:creator>
				<category><![CDATA[Indie Games]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[casual games]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[game engines]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.cynicalstuff.com/?p=369</guid>
		<description><![CDATA[In my last post I complained about the lack of a perfect silver bullet game engine that would fit my needs as a small indie developer starting up a new game project. My three primary target platforms are Windows, Mac and the web, in roughly that order. &#8220;But Karja, haven&#8217;t you heard? iPhone/XBox Live 360/Android/etc [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cynicalstuff.com/game-engine-choices-for-indie-developers-2009">In my last post</a> I complained about the lack of a perfect silver bullet game engine that would fit my needs as a small indie developer starting up a new game project. My three primary target platforms are Windows, Mac and the web, in roughly that order.</p>
<p>&#8220;But Karja, haven&#8217;t you heard? iPhone/XBox Live 360/Android/etc etc is the new indie platform of choice! This guy I read about made six billion dollars on his game there!&#8221;</p>
<p>I have a number of reasons why that is utter bull excrement:</p>
<ul>
<li>iPhone is flooded with games. Literally flooded, with thousands and thousands of games that make it hard to gain visibility. Also, iPhone relies on Apple&#8217;s SDK, objective-C (to some extent at the very least), touch screen, low-end hardware, etc etc &#8211; and all of these aspects have to be hand-crafted for the iPhone release without being reusable on other platforms.</li>
<li>XBox 360 is good if you only intend to target Windows and XB360. But that would be incredibly stupid for me, since my target audience isn&#8217;t the XBox lads.</li>
<li>Android is interesting. It would be neat to get in quickly just in case the market suddenly explodes á la iPhone. But, and this is a big but, Android requires Java which is utterly incompatible with web deployment (Flash is the only viable option there).</li>
</ul>
<p>After some consideration, I found that my options are as follows:</p>
<ul>
<li><strong>Java</strong> &#8211; Windows and Mac deployment is possible, and I can deploy on Android as well, eventually. I also looked at Java-to-Actionscript converters, but&#8230;that feels desperate and unreliable. So, web deployment is a no-go for this one.</li>
<li><strong>BlitzMax</strong> &#8211; What, BlitzMax? That only supports Win/Mac! Yes, but I seriously considered trying to write a BMax->Actionscript converter since I already have a lot of BMax code and an abstraction layer API in place. (This means that I would have to write the APIs for drawing/sound in Actionscript from scratch, but convert the game logic at least.)</li>
<li><strong>C++</strong> &#8211; Screw web deployment, and go for a full-fledged C++ engine! That would be the most fun to code in. But&#8230; No. 2010 is coming up and the web is the new black.</li>
<li><strong>HaXe</strong> &#8211; This would allow web deployment, and there&#8217;s a neat HaXe->C++ converter that can be used along with NME/NEASH, an SDL version of the flash API. Essentially, what this promises is that the same code could be used to make a Flash version <em>and</em> a compiled standalone downloadable (&#8230;as well as an iPhone version!). Alas, things aren&#8217;t as good as they sound. I did some quick tests and NME/NEASH lacks a lot of bitmap manipulation support. For example, BitmapData.colorTransform() support is missing &#8211; and this means that the alpha channel of bitmaps cannot be modified in the downloadable version. Things like this make HaXe seem way too shaky at the moment.</li>
<li><strong>PushButton Engine</strong> &#8211; If I&#8217;m considering pure Flash (well, Actionscript) engines, this is a strong candidate. It&#8217;s a well-designed library intended to be used for larger game projects. However&#8230;. After looking at the code a bit, I fail to see exactly what it will bring. The rendering, file-loading and game state management seems to be the biggest things that it provides but to be honest those aren&#8217;t all that tricky to write by yourself.</li>
<li><strong>flixel</strong> &#8211; Another Actionscript/Flash engine. This one seems very attractive at first, but the main problem with flixel is that it makes assumptions. &#8220;You only want to make a platformer style game, right? You&#8217;ll want to use pixelated effects, right? You want to embed all files since you&#8217;re deploy for the web only, right?&#8221; And so on.</li>
<li><strong>Actionscript/Flex</strong> &#8211; Finally, the last option is to go for pure Actionscript with Flex. No no no, I&#8217;m not trying to reinvent the wheel and have a NIH (Not Invented Here) mentality. But to be frank, writing the main framework that flixel or PBE would provide is&#8230;not that much work. Also, I have specific needs: for example, I need to target different platforms and handle files differently on the different platforms (embedded/external).</li>
</ul>
<p>Nothing is decided at all, but I&#8217;m currently leaning towards using PBE, flixel or pure AS/Flex. My main beef with that is whether or not it&#8217;s fast enough to look good on the downloadable versions. HaXe seemed like an interesting choice for a long while, and I&#8217;m sure that it will be in the future, but I simply found too many flaws in it to provide any actual benefit at the moment. I&#8217;m (probably) going for a double-buffer approach with quite a few alpha effects on bitmaps (not in the least for the particles), so the current unstable alpha support in the SDL parts makes HaXe&#8217;s NME/NEASH solution for downloadables and iPhone pretty dubious.</p>
<p>In the end maybe I oughtn&#8217;t spend so much time investigating this, and just choose something and start developing instead. I guess all engines and choices have their flaws, so nothing&#8217;s going to be perfect.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cynicalstuff.com/web-and-downloadable-game-engine-choices-2009/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Game Engine Choices for Indie Developers 2009</title>
		<link>http://www.cynicalstuff.com/game-engine-choices-for-indie-developers-2009</link>
		<comments>http://www.cynicalstuff.com/game-engine-choices-for-indie-developers-2009#comments</comments>
		<pubDate>Thu, 10 Dec 2009 10:15:40 +0000</pubDate>
		<dc:creator>Karja</dc:creator>
				<category><![CDATA[Indie Games]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[casual games]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[game engines]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.cynicalstuff.com/?p=348</guid>
		<description><![CDATA[This post is going to get a bit technical, so if you&#8217;re easily bored by the gritty details of game development you might want to go somewhere else right now. Maybe to Cute Overload or something. My latest game, Wildhollow, is released and I have some great ideas for my next game. Let&#8217;s just say [...]]]></description>
			<content:encoded><![CDATA[<p>This post is going to get a bit technical, so if you&#8217;re easily bored by the gritty details of game development you might want to go somewhere else right now. Maybe to <a href="http://cuteoverload.com/">Cute Overload</a> or something.</p>
<p>My latest game, <a href="http://www.wildhollow.com">Wildhollow</a>, is released and I have some great ideas for my next game. Let&#8217;s just say that it might include puzzles, RPG elements and some online functionality. Oh, and superheroes or monsters too. Not really sure which yet. Either way, in order to get the game done I need to decide what to implement it in. <a href="http://www.sheeplings.com">Sheeplings</a>, <a href="http://www.spandexforce.com">Spandex Force</a> and <a href="http://www.wildhollow.com">Wildhollow</a> were all developed in BlitzMax, an object oriented BASIC language that&#8217;s extremely easy to develop cross-platform games in.</p>
<p>As long as your cross-platform needs are Windows, Mac or Linux, that is.</p>
<p>As an indie casual games developer I find myself wanting to maximize my potential market (of course), and that means maximizing the number of platforms I can distribute games too. To make things easier for me I&#8217;ve constructed this table of feasible game engines/libraries as things are now in 2009:</p>
<table border="1">
<tr>
<th>Engine Name</th>
<th>Language</th>
<th>Windows</th>
<th>Mac</th>
<th>Web</th>
<th>iPhone</th>
<th>Android</th>
<th>Xbox 360</th>
<th>Linux</th>
</tr>
<tr>
<td>Android SDK</td>
<td>Java</td>
<td>(X)</td>
<td>(X)</td>
<td>(X)</td>
<td></td>
<td>X</td>
<td></td>
<td>(X)</td>
</tr>
<tr>
<td>BlitzMax</td>
<td>Misc</td>
<td>X</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>ClanLib</td>
<td>C++</td>
<td>X</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>Cocos 2D</td>
<td>Obj-C</td>
<td></td>
<td></td>
<td></td>
<td>X</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Flixel</td>
<td>Flash</td>
<td>(X)</td>
<td>(X)</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Game Maker</td>
<td>Misc</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>HaXe</td>
<td>Misc</td>
<td>(X)</td>
<td>(X)</td>
<td>X</td>
<td>(X)</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Haaf&#8217;s Game Engine</td>
<td>C++</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>LWJGL</td>
<td>Java</td>
<td>X</td>
<td>X</td>
<td>(X)</td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>PopCap Framework</td>
<td>C++</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>PTK Engine</td>
<td>C++</td>
<td>X</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>PushButton Engine</td>
<td>Flash</td>
<td>(X)</td>
<td>(X)</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Pygame</td>
<td>Python</td>
<td>X</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>Simple DirectMedia Layer</td>
<td>C++</td>
<td>X</td>
<td>X</td>
<td></td>
<td>X</td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>Silverlight</td>
<td>Misc</td>
<td>X</td>
<td>(X)</td>
<td>(X)</td>
<td></td>
<td></td>
<td></td>
<td>(X)</td>
</tr>
<tr>
<td>Slick</td>
<td>Java</td>
<td>X</td>
<td>X</td>
<td>(X)</td>
<td></td>
<td>(X)</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>Torque 2D</td>
<td>C++</td>
<td>X</td>
<td>X</td>
<td></td>
<td>(X)</td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr>
<td>Unity</td>
<td>C#/JS</td>
<td>X</td>
<td>X</td>
<td>(X)</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>XNA Game Studio</td>
<td>C#</td>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>X</td>
<td></td>
</tr>
</table>
<p></p>
<p>Note that I said feasible engines and libraries. This is not close to a complete list, but they are the ones I&#8217;m considering. I can list some criteria:</p>
<ul>
<li>There must be decent performance, which means preferably no software rendering</li>
<li>All Windows only, Xbox only, etc libraries are of no use to me. I&#8217;ve listed a few anyway just for consideration</li>
<li>I want to be able to create mostly 2D games in an efficient manner. 3D engines are often bloated and unusable. Unity may be free but it&#8217;s of no use to me, for example</li>
<li>Finally, I have a prioritized order of platform preference. You may note that the columns in the table are ordered rather strangely. That&#8217;s because I&#8217;m going from most important to least important platform</li>
</ul>
<p>A quick glance at the table shows that there&#8217;s no single engine or library that fulfills all my needs. An X demarks that the platform is supported, and an (X) means that limited support is possible. That could mean that it&#8217;s possible but requires a lot of messing around (e.g. HaXe for iPhone), or that the solution isn&#8217;t practical (e.g. Java web applets aren&#8217;t very useful), or that it requires unreasonable things (e.g. Unity on the web requires a specific plugin).</p>
<p>Most engines and libraries support Windows and Mac, so that&#8217;s not really a problem. The real problem comes with my third platform of choice: the web. And by the web I mean that it should run seamlessly for most users. Which means that Java is doubtful (too&#8230;clunky, and portals won&#8217;t accept it), and that leaves only Flash. Which, of course, is mostly incompatible with &#8220;normal&#8221; programming languages and engines.</p>
<p>This is not an easy decision&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cynicalstuff.com/game-engine-choices-for-indie-developers-2009/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
