<?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>Frozax Games Dev Blog</title>
	<atom:link href="http://www.frozax.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.frozax.com/blog</link>
	<description>Game Dev, Casual Gaming, Programming and more</description>
	<lastBuildDate>Thu, 17 May 2012 07:00:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Don&#8217;t Feed the Trolls is available on iPhone / iPad / iPodTouch and Android !</title>
		<link>http://www.frozax.com/blog/2012/05/feed-trolls-iphone-ipad-ipodtouch-android/</link>
		<comments>http://www.frozax.com/blog/2012/05/feed-trolls-iphone-ipad-ipodtouch-android/#comments</comments>
		<pubDate>Thu, 17 May 2012 07:00:42 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[Screenshots / Videos]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=1168</guid>
		<description><![CDATA[Already available since May, 3rd on Android, Don&#8217;t Feed the Trolls is now also available on iOS (all devices). It&#8217;s a free download, get it now! Please, feel free to share this news to your friends!]]></description>
			<content:encoded><![CDATA[<p>Already available since May, 3rd on <a href="http://play.google.com/store/apps/details?id=com.frozax.dontfeedthetrolls">Android</a>, Don&#8217;t Feed the Trolls is now also available on <a href="http://itunes.apple.com/app/id510201848?mt=8">iOS (all devices)</a>. It&#8217;s a free download, get it now!</p>
<p><iframe frameborder="0" height="315" src="http://www.youtube.com/embed/0QWPczv9sd4?rel=0" width="560"></iframe></p>
<p>Please, feel free to share this news to your friends! <img src='http://www.frozax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/05/feed-trolls-iphone-ipad-ipodtouch-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta Testing Don&#8217;t Feed the Trolls on iOS/Android</title>
		<link>http://www.frozax.com/blog/2012/04/beta-testing-dont-feed-the-trolls/</link>
		<comments>http://www.frozax.com/blog/2012/04/beta-testing-dont-feed-the-trolls/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 20:15:35 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=1126</guid>
		<description><![CDATA[Don&#8217;t Feed the Trolls on iOS/Android is coming soon! However, before releasing it, I would like to do &#8220;live testing&#8221; with players around the world to improve the game, and especially: - Gameplay tuning and difficulty - Device compatibility - Game stability and bugs - Localization errors (English and French) - Online leaderboards testing If [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.frozax.com/blog/wp-content/uploads/2012/04/icon_100.png" alt="icon_100" title="icon_100" width="100" height="100" class="alignright size-full wp-image-1153" /><a href="http://www.frozax.com/blog/gameplay-dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a> on iOS/Android is coming soon! However, before releasing it, I would like to do &#8220;live testing&#8221; with players around the world to improve the game, and especially:<br />
- Gameplay tuning and difficulty<br />
- Device compatibility<br />
- Game stability and bugs<br />
- Localization errors (English and French)<br />
- Online leaderboards testing</p>
<p>If you are interested to test Don&#8217;t Feed the Trolls, please contact me by <a href="mailto:dfttbeta@frozax.com">mail</a> or <a href="http://twitter.com/frozax">twitter</a> with your device name. Android games will be sent as an apk (<a href="http://myhtcdesire.com/tutorials/how-to-install-apk-files-from-your-computer">How to Install an APK</a>). On iOS, I will <a href="http://www.innerfence.com/howto/find-iphone-unique-device-identifier-udid?mail_to=dfttbeta%40frozax.com">need your UDID</a> to create a specific version, that you will simply download and install with Safari.<br />
Thanks for your help, feel free to share this post!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/04/beta-testing-dont-feed-the-trolls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gameplay of Don&#8217;t Feed the Trolls</title>
		<link>http://www.frozax.com/blog/2012/04/gameplay-dont-feed-the-trolls/</link>
		<comments>http://www.frozax.com/blog/2012/04/gameplay-dont-feed-the-trolls/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 22:51:26 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=1131</guid>
		<description><![CDATA[Here is a description of the gameplay of Don&#8217;t Feed the Trolls. If you don&#8217;t know it yet, it will be available soon for iPhone/iPad/iPod and Android devices. The gameplay is simple : bears and trolls spawn on the screen, you need to feed the bears and slap the trolls with the touch screen. Ten [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a description of the gameplay of <strong>Don&#8217;t Feed the Trolls</strong>. If you don&#8217;t know it yet, it will be available soon for iPhone/iPad/iPod and Android devices.</p>
<p><img class="aligncenter size-full wp-image-1132" title="banner_small" src="http://www.frozax.com/blog/wp-content/uploads/2012/04/banner_small.png" alt="banner_small" width="600" height="120" /></p>
<p>The gameplay is simple : bears and trolls spawn on the screen, you need to feed the bears and slap the trolls with the touch screen. <strong><em>Ten crazy characters</em></strong> add variety to the gameplay. There are <strong><em>four different game modes</em></strong>:</p>
<p><img class="alignleft size-full wp-image-1134" title="gm_classic_small" src="http://www.frozax.com/blog/wp-content/uploads/2012/04/gm_classic_small.png" alt="gm_classic_small" width="100" height="100" /><strong><em>Classic mode</em></strong>:  Successive levels lasting less than a minute, where you need to make a perfect run to get the three stars. The game introduces new characters in each level. There are three unlockable difficulty levels.
<div style="clear:both;"></div>
<p><img class="alignleft size-full wp-image-1133" title="gm_100bears_small" src="http://www.frozax.com/blog/wp-content/uploads/2012/04/gm_100bears_small.png" alt="gm_100bears_small" width="100" height="100" /><strong><em>100 bears mode</em></strong>: Feed 100 bears as fast as possible. You should probably use both hands on this one to make high scores. Be careful, a single troll hides among them!
<div style="clear:both;"></div>
<p><img class="alignleft size-full wp-image-1135" title="gm_slapfest_small" src="http://www.frozax.com/blog/wp-content/uploads/2012/04/gm_slapfest_small.png" alt="gm_slapfest_small" width="100" height="100" /><strong><em>Slap Party</em></strong>: Have fun slapping dozens of trolls spawning as fast as possible!
<div style="clear:both;"></div>
<p><img class="alignleft size-full wp-image-1136" title="gm_versus_small" src="http://www.frozax.com/blog/wp-content/uploads/2012/04/gm_versus_small.png" alt="gm_versus_small" width="100" height="100" /><strong><em>Versus</em></strong>: Play with a friend on the same screen. Feed your bears before your opponent while avoiding to feed the trolls.
<div style="clear:both;"></div>
<p>Each mode has its multiplatform (iOS/Android) <strong><em>leaderboard</em></strong>. You can also unlock <em><strong>20 achievements</strong></em>. On iOS, achievements and leaderboard are available in <em><strong>Game Center</strong></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/04/gameplay-dont-feed-the-trolls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why and How I left Plimus for Esellerate</title>
		<link>http://www.frozax.com/blog/2012/03/why-how-left-plimus-for-esellerate/</link>
		<comments>http://www.frozax.com/blog/2012/03/why-how-left-plimus-for-esellerate/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 21:09:24 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[esellerate]]></category>
		<category><![CDATA[plimus]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=1082</guid>
		<description><![CDATA[To sell my PC and Mac games, I used Plimus since 2005. I made the switch to eSellerate this week. Why I left At first, I was only selling games that were sold directly from my site. I developed PC and Mac games. However, the last few years, I also developped games on Xbox360 (Indie Games) [...]]]></description>
			<content:encoded><![CDATA[<p>To sell my PC and Mac games, I used <a href="http://www.plimus.com">Plimus</a> since 2005. I made the switch to <a href="http://www.esellerate.net">eSellerate</a> this week.</p>
<h3>Why I left</h3>
<p>At first, I was only selling games that were sold directly from my site. I developed <a href="http://www.frozax.com/pc_games.php">PC</a> and <a href="http://www.frozax.com/mac_games.php">Mac</a> games. However, the last few years, I also developped games on <a href="http://www.frozax.com/x360">Xbox360</a> (Indie Games) and I am currently working on <a href="http://www.frozax.com/blog/2012/02/dont-feed-the-trolls-coming-to-ios-and-android/">mobile games</a>. All these platforms are tied with Microsoft, Apple or Google and I can&#8217;t use my own site to sell these games (that&#8217;s not totally true as I could sell Android games directly but I think you need to be on <span style="text-decoration: line-through;">Android Market</span> <a href="https://play.google.com">Google Play</a> to get some visibility).</p>
<p>I therefore have very little direct sales these days and Plimus has a big drawback in this case: <em>there is a <a href="http://home.plimus.com/ecommerce/company/legal/dormant-account-fee">dormant fee for accounts not selling for a few months</a>.</em> I find this really crazy, and thought about leaving when I first heard about that. They themselves suggest making a &#8220;self purchase&#8221; to avoid that fee. I suppose you could do yourself a 90% OFF Coupon and only pay a few cents, but that&#8217;s still a really bad way to do business in my opinion. This is the main reason I left Plimus.</p>
<p>Additionnaly, Plimus made a change in the way they deal with Paypal payments. They require the payments to be made directly to the vendor (me). You therefore need your own Premium ou Business Paypal account in order to accept Paypal payments. I preferred the old way, where everything was centralized by my ecommerce provider.</p>
<h3>Why I chose eSellerate</h3>
<p>I needed the following features:<br />
- Accept CC and Paypal payments worldwide<br />
- Can set prices in EUR and USD<br />
- Ability to create coupons<br />
- Can generate serial keys based using my own algorithm<br />
Among the most well-known solutions, there is BMTMicro, eSellerate and Share It. I checked the commission taken by the e-commerce provider (for a $4.99 game):</p>
<table style="font-size: 1.0em; border-width:1px">
<tbody>
<tr>
<td width="150px" style="border:1px solid lightgrey"><strong>Provider</strong></td>
<td style="border:1px solid lightgrey"><strong>Cost</strong></td>
</tr>
<tr>
<td style="border:1px solid lightgrey">Plimus</td>
<td style="border:1px solid lightgrey">$0.75</td>
</tr>
<tr>
<td style="border:1px solid lightgrey">BMTMicro</td>
<td style="border:1px solid lightgrey">$1 (20%)</td>
</tr>
<tr>
<td style="border:1px solid lightgrey">eSellerate</td>
<td style="border:1px solid lightgrey">$0.5</td>
</tr>
<tr>
<td style="border:1px solid lightgrey">ShareIt</td>
<td style="border:1px solid lightgrey">$1</td>
</tr>
</tbody>
</table>
<p>I logically chose the cheapest one. A few questions to their support to make sure there is no hidden fee (I got a quick and positive reply) and my account is created.<br />
It took me some time to figure out how to set everything up as the interface and wording are different from Plimus but nothing too complicated.<br />
My oldest game is sold $1.99 (<a href="http://www.frozax.com/games/shapy-deluxe">Shapy deluxe</a>, my first game). I had a problem as you can&#8217;t sell for less than $4.95. I contacted the support and they quickly allowed me to set prices as low as $1. Problem solved, great support, once again!</p>
<h3>Tips to switch without trouble</h3>
<p>The full process of changing provider was not as difficult as I thought. But there is one reason as to why it went that smooth : I did not hard-code any &#8220;buy now&#8221; links. Nowhere. All the &#8220;buy now&#8221; links I used (in-game, on the game page, sent to reviewers, sent to games sites) points to the same url on <em>my own site</em>. The destination is a simple php file where I redirect to the right eCommerce page using <a href="http://www.php.net/manual/function.header.php">header(&#8221;Location&#8221;)</a>. I just had to change the buy now links once in the php files. I&#8217;m glad I did it properly from the beginning!</p>
<h3>Conclusion</h3>
<p>Simple one: I really should have done it before! I will see how eSellerate goes in the long run but the transition was smooth.<br />
Feel free to visit my <a href="http://store.esellerate.net/s.aspx?s=STR8863434366">eSellerate store</a>! Use the coupon &#8220;BLOG&#8221; to get <em><strong>30% on any order!</strong></em>. The games on this store are from 2005, 2006, 2008 and 2011, you&#8217;ve been warned! <img src='http://www.frozax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Which provider are you using? Are you happy with it? Do you want to change? Feel free to comment here or contact me on <a href="http://twitter.com/Frozax">twitter</a> or <a href="http://www.facebook.com/frozax">facebook</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/03/why-how-left-plimus-for-esellerate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create a shake action in Cocos2d-x (with source code)</title>
		<link>http://www.frozax.com/blog/2012/02/how-to-create-shake-action-cocos2d-x-source-code/</link>
		<comments>http://www.frozax.com/blog/2012/02/how-to-create-shake-action-cocos2d-x-source-code/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 19:58:04 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cocos2dx]]></category>
		<category><![CDATA[shake]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=1006</guid>
		<description><![CDATA[While working on my next game Don&#8217;t Feed the Trolls, I was looking for a &#8220;shake effect&#8221;. When the player feeds a troll, I want the whole screen to shake to improve visual feedback. A shake effect is very easy to implement, so I quickly hacked in my code to see if it was un [...]]]></description>
			<content:encoded><![CDATA[<p>While working on my next game <a href="http://www.frozax.com/blog/2012/02/dont-feed-the-trolls-coming-to-ios-and-android/">Don&#8217;t Feed the Trolls</a>, I was looking for a &#8220;shake effect&#8221;. When the player feeds a troll, I want the whole screen to shake to improve visual feedback.<br />
A shake effect is very easy to implement, so I quickly hacked in my code to see if it was un interesting feature. After a quick test on the Android version of the game, I could see it really does improve the game. So I wrote a proper <a href="http://www.cocos2d-x.org">cocos2d-x</a> action to integrate the effect in a clean way. I&#8217;m releasing the code here hoping other developers will find it useful for their own games.</p>
<h3>The effect</h3>
<p>The shake is a small random movement. It can be applied to any cocos2d node (<a href="http://cocos2d-x.org/embedded/cocos2d-x/d0/ded/classcocos2d_1_1_c_c_node.html">CCNode</a>). In <em>Don&#8217;t Feed the Trolls</em>, I applied the effect to my top-most node, therefore the whole screen is shaking.</p>
<h3>The action</h3>
<p>I derived my <strong>CCShake</strong> class from <strong>CCActionInterval</strong>. The action is initialized with two parameters:<br />
- <strong>time</strong> : the duration of the effect.<br />
- <strong>strength</strong> : the distance of the shake movement. You can have different strengths in X and Y if you wish.<br />
You create the action with <strong>CCShake::actionWithDuration</strong> and send it as a parameter of <strong>CCNode::runAction</strong>.</p>
<pre><code class="cpp">
// Shake node_to_shake for 5 seconds.
node_to_shake->runAction( CCShake::actionWithDuration( 5.0f, 10.0f ) );
</code></pre>
<p>When the action is completed, the node is moved back to its starting position.</p>
<h3>Source code</h3>
<p>The code is <em>free for personal and commercial</em> use. If you plan to use it, feel free to <em>credit</em> me, send me an <em>email</em> and/or <em>follow</em> me on <a href="http://twitter.com/frozax">twitter</a>/<a href="http://www.facebook.com/frozax">facebook</a>. This is of course not compulsory.</p>
<h4>Header: CCShake.h</h4>
<pre><code class="cpp">
#ifndef __SHAKE_H__
#define __SHAKE_H__

#include "CCActionInterval.h"
using namespace cocos2d;

class CCShake : public CCActionInterval
{
	// Code by Francois Guibert
	// Contact: www.frozax.com - http://twitter.com/frozax - www.facebook.com/frozax
public:
	CCShake();

	// Create the action with a time and a strength (same in x and y)
	static CCShake* actionWithDuration(ccTime d, float strength );
	// Create the action with a time and strengths (different in x and y)
	static CCShake* actionWithDuration(ccTime d, float strength_x, float strength_y );
	bool initWithDuration(ccTime d, float strength_x, float strength_y );

	virtual void startWithTarget(CCNode *pTarget);
	virtual void update(ccTime time);
	virtual void stop(void);

protected:
	// Initial position of the shaked node
	float _initial_x, _initial_y;
	// Strength of the action
	float _strength_x, _strength_y;
};

#endif //__SHAKE_H__
</code></pre>
<h4>Source: CCShake.cpp</h4>
<p><code>
<pre>
// Code by Francois Guibert
// Contact: www.frozax.com - http://twitter.com/frozax - www.facebook.com/frozax
#include "cocos2d.h"
#include "CCShake.h"

// not really useful, but I like clean default constructors
CCShake::CCShake() : _strength_x(0), _strength_y(0), _initial_x(0), _initial_y(0)
{
}

CCShake* CCShake::actionWithDuration( ccTime d, float strength )
{
	// call other construction method with twice the same strength
	return actionWithDuration( d, strength, strength );
}

CCShake* CCShake::actionWithDuration(ccTime duration, float strength_x, float strength_y)
{
	CCShake *p_action = new CCShake();
	p_action->initWithDuration(duration, strength_x, strength_y);
	p_action->autorelease();

	return p_action;
}

bool CCShake::initWithDuration(ccTime duration, float strength_x, float strength_y)
{
	if (CCActionInterval::initWithDuration(duration))
	{
		_strength_x = strength_x;
		_strength_y = strength_y;
		return true;
	}

	return false;
}

// Helper function. I included it here so that you can compile the whole file
// it returns a random value between min and max included
float fgRangeRand( float min, float max )
{
	float rnd = ((float)rand()/(float)RAND_MAX);
	return rnd*(max-min)+min;
}

void CCShake::update(ccTime time)
{
	float randx = fgRangeRand( -_strength_x, _strength_x );
	float randy = fgRangeRand( -_strength_y, _strength_y );

	// move the target to a shaked position
	m_pTarget->setPosition( ccp( randx, randy) );
}

void CCShake::startWithTarget(CCNode *pTarget)
{
	CCActionInterval::startWithTarget( pTarget );

	// save the initial position
	_initial_x = pTarget->getPosition().x;
	_initial_y = pTarget->getPosition().y;
}

void CCShake::stop(void)
{
	// Action is done, reset clip position
	m_pTarget->setPosition( ccp( _initial_x, _initial_y ) );

	CCActionInterval::stop();
}
</code></pre>
<h3>Possible improvements</h3>
<p>This is really a simple class, for a simple effect. You can improve the effect in many ways. For instance, we could animate the strength of the shake over time.</p>
<h3>That's it !</h3>
<p>Have fun with it, feel free to discuss the source code in the comments, <a href="http://twitter.com/frozax">twitter</a> or <a href="http://www.facebook.com/frozax">facebook</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/02/how-to-create-shake-action-cocos2d-x-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Feed the Trolls coming to iOS and Android</title>
		<link>http://www.frozax.com/blog/2012/02/dont-feed-the-trolls-coming-to-ios-and-android/</link>
		<comments>http://www.frozax.com/blog/2012/02/dont-feed-the-trolls-coming-to-ios-and-android/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 20:40:27 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[Screenshots / Videos]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=993</guid>
		<description><![CDATA[It&#8217;s now confirmed and official. The next game released by Frozax Games will (hopefully) be a new version of Don&#8217;t Feed the Trolls, for iOS and Android. However, it will not be a simple port of the Xbox 360 version. Are are some of improvements : Improved graphics (see screenshot below) Intuitive touch gameplay (very cool [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s now confirmed and official. The next game released by Frozax Games will (hopefully) be a new version of <a href="http://www.frozax.com/games/dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a>, for <strong>iOS</strong> and <strong>Android</strong>. However, it will not be a simple port of the Xbox 360 version.</p>
<p>Are are some of improvements :</p>
<ul>
<li>Improved graphics (see screenshot below)</li>
<li>Intuitive touch gameplay (very cool to slap trolls on a touch screen!)</li>
<li>More levels</li>
<li>Many different game modes (more information coming later)</li>
<li>and other stuff that I&#8217;ll reveal periodically</li>
</ul>
<p>Here is a work-in-progress screenshot showing the new art running on the iPhone simulator (click to enlarge).</p>
<p style="text-align: center;"><a href="http://www.frozax.com/blog/wp-content/uploads/2012/02/ios-simulator-2010-02-13.png"><img class="size-medium wp-image-994 aligncenter" title="ios simulator 2010-02-13" src="http://www.frozax.com/blog/wp-content/uploads/2012/02/ios-simulator-2010-02-13-300x153.png" alt="ios simulator 2010-02-13" width="300" height="153" /></a></p>
<p>The new background is made by <a href="http://www.vincentguibert.fr">Vincent Guibert</a>.</p>
<p>There is no precise release date, the game will be out when it&#8217;s done. You can see however that it&#8217;s going pretty well. I plan to make a beta because it&#8217;s my first mobile game, and I want to test a few gameplay features.</p>
<p>Follow me on <a href="http://www.facebook.com/frozax">facebook</a> or <a href="http://twitter.com/frozax">twitter</a> to get more information about Don&#8217;t Feed the Trolls and Frozax Games.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/02/dont-feed-the-trolls-coming-to-ios-and-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Year, New Logo, New Projects</title>
		<link>http://www.frozax.com/blog/2012/01/year-logo-projects/</link>
		<comments>http://www.frozax.com/blog/2012/01/year-logo-projects/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 20:55:41 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[new year]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=973</guid>
		<description><![CDATA[Happy new year 2012! As you can this on the top left of this page, I now have a new logo. I hope you&#8217;ll like it! It was made by Amaury Bündgen. You can see his portfolio here. In 2012, I plan to release games on new targets: iOS and Android. I guess you already [...]]]></description>
			<content:encoded><![CDATA[<p>Happy new year 2012!</p>
<p>As you can this on the top left of this page, I now have a new logo. I hope you&#8217;ll like it!</p>
<p>It was made by Amaury Bündgen. You can see his portfolio <a href="http://www.planetexenoid.fr">here</a>.</p>
<p>In 2012, I plan to release games on new targets: iOS and Android. I guess you already knew that according to the recent blog posts. I would like to release at least 3 games on mobile this year. The first two games will be modified ports of <a href="http://www.frozax.com/games/spring-up-harmony">Spring Up Harmony</a> and <a href="http://www.frozax.com/games/dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a>.</p>
<p>Get the latest information about these games with <a href="http://www.facebook.com/frozax">facebook</a>, <a href="http://twitter.com/Frozax">twitter</a> or <a href="http://plus.google.com/117773429877335932919">google+</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2012/01/year-logo-projects/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why and how to pack your textures for iOS/Android</title>
		<link>http://www.frozax.com/blog/2011/12/why-how-pack-textures-ios-android/</link>
		<comments>http://www.frozax.com/blog/2011/12/why-how-pack-textures-ios-android/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 23:57:59 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[pack]]></category>
		<category><![CDATA[texturepacker]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=879</guid>
		<description><![CDATA[Introduction When I developed Don&#8217;t Feed the Trolls on X360 (using XNA), I did not optimize the textures files of the game : the game was very simple, the final hardware (X360) is very fast, so it was not necessary. I arranged the sprites so that I could get their coordinates in-game very easily. Every [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>When I developed <a href="http://www.frozax.com/games/dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a> on X360 (using XNA), I did not optimize the textures files of the game : the game was very simple, the final hardware (X360) is very fast, so it was not necessary. I arranged the sprites so that I could get their coordinates in-game very easily. Every &#8220;troll&#8221; sprite for instance is the same size, so most of them are filled with transparent pixels. A lot of space is wasted. Have a look at the sprite sheet for the characters that I use on X360.</p>
<p><img class="aligncenter size-full wp-image-954" title="X360 Don't Feed the Trolls Characters Sprite Sheet" src="http://www.frozax.com/blog/wp-content/uploads/2011/12/ss.png" alt="X360 Don't Feed the Trolls Characters Sprite Sheet" width="400" height="200" /></p>
<p>The characters texture on X360 is 2048&#215;1024. I could easily have it into a 1024&#215;1024 but it was a lot easier if I could have all the sprites of the same kind in a row (for example, all the bear heads are on the top row). I also made a few other sprites sheets for UI, birds, tutorial for instance.</p>
<p>For the first draft of my Android port, I first concentrated on the gameplay and integrate this sprite sheet as is. Of course, I quickly realized I had to spend some time to optimize as obviously, constraints on mobile and X360 are different.</p>
<h3>Why packing your textures?</h3>
<p>Why is proper texture packing important for games, especially on mobile? Packed textures use less pixels, and from this simple fact, the game is greatly improved in many ways:</p>
<h4>Memory</h4>
<p>Less pixels takes less memory. Mobile have big memory constraints and saving memory from the ressource is great. Texture ressources are often the biggest ressources.</p>
<h4>Loading</h4>
<p>There are less files to open, and less pixels to read, this will therefore be faster to load.</p>
<h4>Runtime performance</h4>
<p>When packing your textures in atlases, more sprites will share the same texture. In runtime, the GPU will then have less textures changes to make and this will therefore speed up your game. This will improve performance if you draw the sprites using the same texture in a row.</p>
<p>It will allow you to reduce your texture sizes. Some Android devices are performing very slowly with 2048 pixels-wide textures.</p>
<h4>Game size</h4>
<p>The downloadable package size will be smaller too. This is great, especially for people using 3G or with limited bandwidth that won&#8217;t download big games.</p>
<h3>How to pack?</h3>
<p>I first thought of packing my sprites manually but quickly searched for a tool to assist me in that tedious task. There are a few tools available to automatically pack your sprites, and I am currently using <a href="http://www.texturepacker.com/">TexturePacker</a>, and I&#8217;m very happy with it (<em>please note that I got a free copy of TexturePacker from the developer</em>). It&#8217;s easy to use and has a lot of functionnalities, such as:</p>
<ul>
<li>Auto-refreshes the packed texture in the tool when I add images to my folders</li>
<li>Export in one click</li>
<li>Support cocos2d and therefore cocos2d-x which I am using (and many more formats).</li>
<li>Removes useless transparent pixels around sprites</li>
<li>Efficient packing</li>
</ul>
<p>All the features are listed <a href="http://www.texturepacker.com/features/">here</a>.</p>
<p>Here is a sample of a packed sprite sheet for the Android version of Don&#8217;t Feed the Trolls made with TexturePacker:</p>
<p><img class="aligncenter size-full wp-image-955" title="Packed sprite sheet for Don't Feed the Trolls Android/iOS" src="http://www.frozax.com/blog/wp-content/uploads/2011/12/charsbgitf.png" alt="Packed sprite sheet for Don't Feed the Trolls Android/iOS" width="200" height="200" />Instead of 2048&#215;1024, this is just 1024&#215;1024, and most importantly, I have all my characters, the UI elements, and some background elements in the same, smallest texture!</p>
<h4>Generic code</h4>
<p>I did some code so that resource loading does not have to deal with packs or single sprites. That way, I can send a version without packs to the artist and he can test his ressource live. In cocos2d-x, this is very easy. You first need to load your pack(s) with <em>CCSpriteFrameCache ::addSpriteFramesWithFile( file_name )</em>. And then, read the ressource from the file if it&#8217;s not found in the packs. I did it like this:</p>
<blockquote>
<pre>CCSprite *GetSprite(const char *file_name )
{
<span style="white-space: pre;"> </span>CCSprite *psprite = new CCSprite( );
<span style="white-space: pre;"> </span>psprite-&gt;autorelease();
<span style="white-space: pre;"> </span>// Search in the cache, first
<span style="white-space: pre;"> </span>CCSpriteFrameCache *sfc = CCSpriteFrameCache::sharedSpriteFrameCache();
<span style="white-space: pre;"> </span>CCSpriteFrame *psf = sfc-&gt;spriteFrameByName( file_name );
<span style="white-space: pre;"> </span>if( psf != NULL )
<span style="white-space: pre;"> </span>{
<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>psprite-&gt;initWithSpriteFrame( psf );
<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return psprite;
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>CCLog("WARNING : %s not in a PACK!", file_name );
<span style="white-space: pre;"> </span>psprite-&gt;initWithFile( file_name );
<span style="white-space: pre;"> </span>return psprite;
<span style="white-space: pre;"> </span>}</pre>
</blockquote>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>sprite-&gt;autorelease();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>// quite ugly wait to skip dlg/img directory</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>if( file_name[3] == &#8216;/&#8217; )</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>CCSpriteFrame *psf = CCSpriteFrameCache::sharedSpriteFrameCache()-&gt;spriteFrameByName( &amp;file_name[4] );</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>if( psf != NULL )</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>psprite-&gt;initWithSpriteFrame( psf );</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>return psprite;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>fgLog(&#8221;FROZAX : %s not in a PACK&#8221;, file_name );</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>psprite-&gt;initWithFile( file_name );</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1051px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>return psprite;</div>
<h3>Conclusion</h3>
<p>Packing your textures is very important on mobile platform, but hopefully, great tools make that task very easy and straighforward.</p>
<p>Do you pack your ressources? Do you do it by hand? Which tool do you use?</p>
<p>Follow me on <a href="http://twitter.com/Frozax">twitter</a>, <a href="http://www.facebook.com/frozax">facebook</a> or <a href="https://plus.google.com/117773429877335932919">google+</a> for more game development information.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2011/12/why-how-pack-textures-ios-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Game Development : from Java to C++ (with cocos2d-x)</title>
		<link>http://www.frozax.com/blog/2011/11/android-game-development-java-c-cocos2d-x/</link>
		<comments>http://www.frozax.com/blog/2011/11/android-game-development-java-c-cocos2d-x/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 16:30:25 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Don't Feed the Trolls]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cocos2d-x]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jni]]></category>
		<category><![CDATA[libgdx]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=915</guid>
		<description><![CDATA[Introduction In a previous post (here), I was talking about my progress with libgdx, a Java library for Android (and other platforms). Shortly after writing this article, I realized that there is a big disadvantage that I forgot to talk about. It&#8217;s so big that it made me stop using libgdx : It is not [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>In a previous post (<a href="http://www.frozax.com/blog/2011/09/android-game-development-libgdx/">here</a>), I was talking about my progress with libgdx, a Java library for Android (and other platforms). Shortly after writing this article, I realized that there is a big disadvantage that I forgot to talk about. It&#8217;s so big that it made me stop using libgdx : <strong>It is not portable on iOS</strong>. I knew this from the beginning but didn&#8217;t really think about using anything else than Java. I finally realized that while porting from one language to another is easy, it can take a lot of time.</p>
<h3>Cocos2d-x</h3>
<p>I searched for multiplatform libraries (Android and iOS). As the game I&#8217;m porting (<a href="http://www.frozax.com/games/dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a>) was developed with XNA, I looked at C# solutions. There is at least <a href="http://xamarin.com/">one but it&#8217;s too expensive</a>. I&#8217;ve been doing C++ indie/casual games in the past and I develop in C++ in my day job, so this is the obvious choice. I like the efficiency of languages such as C# or Java (easy to write and debug), but if I want to avoid porting the game another time for the iPhone, I should to use C++. There are quite some libraries in C++ (such as <a href="http://www.madewithmarmalade.com/marmalade">Marmalade</a>). I finally decided to use <a href="http://www.cocos2d-x.org/">cocos2d-x</a>. This is a C++ port of the famous <a href="http://www.cocos2d-iphone.org/">cocos2d library for iPhone</a> which is in Objective C. Cocos2d-x has an active community, some multiplatform games have been released already, it&#8217;s free and open source. All good stuff!</p>
<h3>C++ on Android</h3>
<p>I am mostly working using the Windows build of the library but I also did some work on Android. Mixing C++ and Java (using <a href="http://developer.android.com/guide/practices/design/jni.html">JNI : Java Native Interface</a>) is doable, but really not user friendly. Debugging is terrible, building is slow, you have to install tools such as cygwin, use makefiles (how old school!), and so on. It really does not seem the right solution at first. However, once everything is set up correctly, it&#8217;s working fine. Cocos2d-x has good tutorials about this. I develop with Visual C++ 2010 Express on the Windows build, I have all the great tools to debug generic problems. The only real troubles are when you have android-specific bugs in the C++ code but it&#8217;s really not frequent. And there are a few ways to debug it with gdb and gdb-server (I never had to use it yet). When you have a crash, there is a very useful tool in the NDK called addr2line (<a href="http://stackoverflow.com/questions/5314036/how-to-use-addr2line-in-android">here&#8217;s how to use it</a>) that allows you to get the callstack. It&#8217;s usually enough to understand and fix the bug. You also can still use old-school debugging techniques such as logging to the output <img src='http://www.frozax.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Hopefully, most of my bugs are multiplatform, or in Java code, so I can fix them easily.</p>
<h3>Java is still needed</h3>
<p>To develop Android-specific code, you still need Java. For example, I use Java for AdMob integration, In-App Purchases or the Facebook SDK for instance. Setting up Java functions called from C++ is not very intuitive, so I opted for a very simple and centralized way: I have one Java function that can be called from C++ with two String parameters. In the Java code, I read these parameters that contains all I need to know to call the specific Java code.</p>
<h3>Conclusion</h3>
<p>Even though libgdx is really a great lib, after a few weeks working on C++, I&#8217;m confident that I made the right choice with cocos2d-x. I did not start developing on iPhone already but it should be quite fast compared to porting Java to C++ (or worse, Objective-C!). I have a working Android version of my game and the performances seems good.</p>
<p>Which language do you use to build your multiplatform mobile games? Do you know other good C++ solutions? Feel free to comment!</p>
<p>Follow me on <a href="http://twitter.com/Frozax">twitter</a>, <a href="http://www.facebook.com/frozax">facebook</a> or <a href="https://plus.google.com/117773429877335932919">google+</a> for more game development information.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2011/11/android-game-development-java-c-cocos2d-x/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Feed the Trolls Sales Stats (Xbox Live Indie Game)</title>
		<link>http://www.frozax.com/blog/2011/10/feed-trolls-sales-stats-xbox-live-indie-game/</link>
		<comments>http://www.frozax.com/blog/2011/10/feed-trolls-sales-stats-xbox-live-indie-game/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 16:10:06 +0000</pubDate>
		<dc:creator>Frozax</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.frozax.com/blog/?p=884</guid>
		<description><![CDATA[Don&#8217;t Feed the Trolls (try it!) was released on September, 23rd, it&#8217;s now time to look at the sales numbers. As of today, I sold 207 copies of the game. The sales are better than my first XBL Indie Game (Spring Up Harmony, stats here). However, Spring Up Harmony was initially sold 240 MS Points, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.frozax.com/games/dont-feed-the-trolls">Don&#8217;t Feed the Trolls</a> (<a href="http://marketplace.xbox.com/Product/Dont-Feed-the-Trolls/66acd000-77fe-1000-9115-d8025855097a">try it!</a>) was released on September, 23rd, it&#8217;s now time to look at the sales numbers. As of today, I sold <strong><em>207</em></strong> copies of the game.</p>
<p style="text-align: left;"><img class="size-full wp-image-893   aligncenter" title="don't feed the trolls sales per day" src="http://www.frozax.com/blog/wp-content/uploads/2011/10/dftt_spd.png" alt="don't feed the trolls sales per day" width="421" height="271" /></p>
<p style="text-align: left;">The sales are better than my first XBL Indie Game (<a href="http://www.frozax.com/games/spring-up-harmony">Spring Up Harmony</a>, <a href="http://www.frozax.com/blog/2010/08/spring-harmony-postmortem/">stats here</a>). However, Spring Up Harmony was initially sold 240 MS Points, and Don&#8217;t Feed the Trolls is sold 80 MS Points. Don&#8217;t Feed the Trolls was also faster to develop, but art costs were similar to Spring Up Harmony ($500). I need about 750 sales to recover all my costs. I don&#8217;t think I will reach this threshold.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-894" title="Don't feed the trolls Sales per Country" src="http://www.frozax.com/blog/wp-content/uploads/2011/10/dftt_spc.png" alt="Don't feed the trolls Sales per Country" width="422" height="269" /></p>
<p>I could recover Spring Up Harmony&#8217;s costs with the PC version of the game (especially with the <a href="http://www.frozax.com/blog/2011/07/5-5-bundle-spring-up-harmony-statistics/">5 For $5 Bundle</a>). I hope to do the same with Don&#8217;t Feed the Trolls, and I&#8217;m porting it right now on Android (and probably iPhone later). I think the game is too simple to be sold of PC, but mobile phones are great for this kind of game.</p>
<p>As commonly reported by indie developers, I also don&#8217;t find the XBLIG platform very lucrative (<a href="http://www.joystiq.com/2011/08/11/fortresscraft-makes-a-million-on-xblig/">but it can be</a>).</p>
<p>Feel free to comment about the game the sales statistics or your own experience. You can also find out more about us on <a href="http://twitter.com/frozax">twitter</a>, <a href="http://www.facebook.com/frozax">facebook</a> or <a href="http://plus.google.com/115825125240096966280">g+</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frozax.com/blog/2011/10/feed-trolls-sales-stats-xbox-live-indie-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
