<?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>Emanuele Feronato</title>
	<atom:link href="http://www.emanueleferonato.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emanueleferonato.com</link>
	<description>italian geek and PROgrammer</description>
	<lastBuildDate>Wed, 22 May 2013 10:22:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Unity makes mobile deployment free</title>
		<link>http://www.emanueleferonato.com/2013/05/22/unity-makes-mobile-deployment-free/</link>
		<comments>http://www.emanueleferonato.com/2013/05/22/unity-makes-mobile-deployment-free/#comments</comments>
		<pubDate>Wed, 22 May 2013 10:22:54 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6639</guid>
		<description><![CDATA[Freebie of the year: Unity mobile development license drops from $800 to FREE]]></description>
			<content:encoded><![CDATA[<p>If you like mobile games, I guess you have at least one game in your mobile device powered by <strong><a href="http://unity3d.com/" target="_blank">Unity</a></strong>.</p>
<p><a href="http://unity3d.com/" target="_blank"><img src="/wp-content/uploads/2013/05/unity.jpg" alt="" title="unity" /></a></p>
<p>Previously, you had to pay a $800 license to let you build iOS and Android games. It&#8217;s not that much compared to the amount of money you can make out of a mobile game, but it could bee too much for some developers making games in their spare time.</p>
<p>Don&#8217;t worry, because now it&#8217;s free. Let&#8217;s see the <a href="http://blogs.unity3d.com/2013/05/21/putting-the-power-of-unity-in-the-hands-of-every-mobile-developer/" target="_blank">official blog post</a>:</p>
<p>&laquo;Our simply big idea has always been to make game development accessible to more people with better tools. To help developers fulfil their creative vision and build their businesses.</p>
<p>Simple to say, hard to do!</p>
<p>Unity’s a restless company, and we’re continuously challenging ourselves to make the many complex decisions that it takes to push Unity forwards. We’re lucky to have assembled the most incredible bunch of people I know to do this work together, night and day (almost), and across geographies and time zones.</p>
<p>Today, we’re taking another step on this long road: as of right now, independent Unity developers will be able to deploy their games to Android and iOS platforms completely free of charge. Update Unity and you will find Android and iOS build options (previously basic add-ons) ready and waiting for you to use.</p>
<p>There are no strings attached, no royalties and no license fees. This is just an extension of Unity Free which we launched in 2009. Individual developers and startup studios can simply download Unity and get going on mobile game development. As before, companies and other “incorporated entities” (you know who you are) with a turnover in excess of $100,000 in their previous fiscal year are required to use our paid version. That way, we can keep the lights on and continue to make Unity better for everyone.</p>
<p>(You can make as much money from your games as you like – this limitation is about large companies not using our free products, not about sharing your future revenues.)</p>
<p>And we’re not stopping there. In the coming months, we will make Blackberry 10 and Windows Phone 8 deployment available to everyone all over the planet on those exact same terms. Completely free of charge.</p>
<p>I can’t wait to see what you make.</p>
<p>David Helgason</p>
<p>P.S. Within the next two weeks, we’ll be reaching out to those of you who purchased basic add-ons in the 30 days before they went free to offer you discounts on future purchases. Remember that purchasers of basic add-ons qualify for rebates should they choose to buy Unity Pro Android / iOS licenses.</p>
<p>P.P.S. Windows users can update Unity by opening the editor and selecting Manage License / Check for Updates from the Help menu. Mac users can update Unity by opening the editor and selecting Manage License / Check for Updates from the Unity menu.&raquo;</p>
<p>Expect a lot of Unity tutorials from now on!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/22/unity-makes-mobile-deployment-free/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>From zero to a complete game with Cocos2d HTML5 &#8211; Step 2: mouse interaction</title>
		<link>http://www.emanueleferonato.com/2013/05/21/from-zero-to-a-complete-game-with-cocos2d-html5-step-2-mouse-interaction/</link>
		<comments>http://www.emanueleferonato.com/2013/05/21/from-zero-to-a-complete-game-with-cocos2d-html5-step-2-mouse-interaction/#comments</comments>
		<pubDate>Tue, 21 May 2013 16:14:25 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6632</guid>
		<description><![CDATA[Second step of the creation of a Cocos2D HTML5 game: adding mouse interaction - onMouseMoved and onMouseDown]]></description>
			<content:encoded><![CDATA[<p>Welcome to the second step of the <a href="http://www.emanueleferonato.com/2013/05/16/from-zero-to-a-complete-game-with-cocos2d-html5-step-1/">complete game creation with Cocos2D HTML5</a>. This time we are going to add mouse interaction.</p>
<p>In the <a href="http://www.emanueleferonato.com/2007/10/28/experiment-monetizing-a-flash-game/">original Circle Chain game</a> you move a red circle with the mouse. With a mouse click you will destroy the circle which will split into four bullets flying up, down, left and right.</p>
<p>This is what we are going to do with today&#8217;s step. Starting from <a href="http://www.emanueleferonato.com/2013/05/16/from-zero-to-a-complete-game-with-cocos2d-html5-step-1/">step 1</a>, you only have to make some changes to <code>circlechain.js</code> file:</p>
<p></p><pre class="crayon-plain-tag">var circlechain = cc.Scene.extend({
	onEnter:function(){
		this._super();
		var layer = new circleChainGame();
		layer.init();
		this.addChild(layer);
	}
})

var redCircle;
var gameLayer;
var bulletSpeed=5;

var circleChainGame = cc.Layer.extend({
	init:function(){
		this._super();
		this.setMouseEnabled(true);
		var circleSpeed = 2;
		var s = cc.Director.getInstance().getWinSize();
		gameLayer = cc.LayerColor.create(new cc.Color4B(0, 0, 0, 255), 500, 500)
		for(i=0;i&lt;10;i++){
			var greenCircle = cc.Sprite.create("greencircle.png");
			var randomDir = Math.random()*2*Math.PI;
			greenCircle.xSpeed=circleSpeed*Math.cos(randomDir);
			greenCircle.ySpeed=circleSpeed*Math.sin(randomDir);
			gameLayer.addChild(greenCircle);
			greenCircle.setPosition(new cc.Point(Math.random()*500,Math.random()*500));
			greenCircle.schedule(function(){
     			this.setPosition(new cc.Point(this.getPosition().x+this.xSpeed,this.getPosition().y+this.ySpeed));
     			if(this.getPosition().x&gt;500){
					this.setPosition(new cc.Point(this.getPosition().x-500,this.getPosition().y));
				}
				if(this.getPosition().x&lt;0){
					this.setPosition(new cc.Point(this.getPosition().x+500,this.getPosition().y));
				}
				if(this.getPosition().y&gt;500){
					this.setPosition(new cc.Point(this.getPosition().x ,this.getPosition().y-500));
				}
				if(this.getPosition().y&lt;0){
					this.setPosition(new cc.Point(this.getPosition().x ,this.getPosition().y+500));
				}
			})
		}
		redCircle=cc.Sprite.create("redcircle.png");		
		gameLayer.addChild(redCircle);
     	this.addChild(gameLayer);
		return true;
	},
	onMouseDown:function (event) {
		var location = event.getLocation();
		gameLayer.removeChild(redCircle);
		for(i=0;i&lt;4;i++){
			var redBullet = cc.Sprite.create("redbullet.png");
			redBullet.xSpeed=bulletSpeed*Math.cos(i*Math.PI/2);
			redBullet.ySpeed=bulletSpeed*Math.sin(i*Math.PI/2);
			gameLayer.addChild(redBullet);	
			redBullet.setPosition(location);
			redBullet.schedule(function(){
     			this.setPosition(new cc.Point(this.getPosition().x+this.xSpeed,this.getPosition().y+this.ySpeed));
				if(this.getPosition().x&gt;500 || this.getPosition().y&gt;500 || this.getPosition().x&lt;0 || this.getPosition().y&lt;0){
					gameLayer.removeChild(this);
				}
			})
		}
	},
	onMouseMoved:function(event){
		var location = event.getLocation();
		redCircle.setPosition(location);
	}
})</pre><p> </p>
<p>And this is what you&#8217;ll get:</p>
<p><iframe src = "http://www.emanueleferonato.com/stuff/cc_cocos2d/circlechain2/" width="500" height="500" frameborder="0" scrolling="no"></iframe></p>
<p>Move the red circle with the mouse and click on the stage to make it explode.</p>
<p>Next time, I&#8217;ll show you the complete level with the chain reaction and I&#8217;ll fully comment the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/21/from-zero-to-a-complete-game-with-cocos2d-html5-step-2-mouse-interaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From zero to a complete game with Cocos2d HTML5 &#8211; Step 1</title>
		<link>http://www.emanueleferonato.com/2013/05/16/from-zero-to-a-complete-game-with-cocos2d-html5-step-1/</link>
		<comments>http://www.emanueleferonato.com/2013/05/16/from-zero-to-a-complete-game-with-cocos2d-html5-step-1/#comments</comments>
		<pubDate>Thu, 16 May 2013 15:57:19 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6621</guid>
		<description><![CDATA[First step of a tutorial which will guide you to the creation of a complete game with Cocos2d HTML5]]></description>
			<content:encoded><![CDATA[<p>Time to learn something about <a href="http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Cocos2d-html5" target="_blank">Cocos2d HTML5</a>, the HTML5 version of the famous Cocos2d-x project.</p>
<p>In this tutorial series I am going to cover the creation of <strong><a href="http://www.emanueleferonato.com/2007/10/28/experiment-monetizing-a-flash-game/">Circle Chain</a></strong> game, which I already developed in AS2, <a href="http://www.emanueleferonato.com/2012/02/20/circle-chain-ported-to-as3-with-commented-source-code-available-ready-to-jump-to-the-iphone/">AS3</a> and <a href="http://www.emanueleferonato.com/2012/03/29/circle-chain-available-for-free-on-itunes-app-store/">Stencyl for iOS</a>.</p>
<p>I assume you have no idea even how to install Cocos2D HTML5 so I am starting from scratch. Before we even start installing Cocos2D HTML5, if you want to test your work offline you need to turn your computer into a webserver because most browsers deny access to certain functions such as XMLHttpRequest that fails for &#8220;file:// &#8221; protocol, while Cocos2d HTML5 engine depends on this to read many files.</p>
<p>I found <a href="http://www.wampserver.com/en/" target="_blank">WampServer</a> for Windows the best solution for my needs, if you have a Mac you can try <a href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a>. Follow instructions in the sites about installing the webserver and where to deploy folders which need to be reached through localhost.</p>
<p>If you don&#8217;t want to install such softwares on your computer, you can test your work uploading it to a web space you own.</p>
<p>Then <a href="https://github.com/cocos2d/cocos2d-html5/" target="_blank">download Cocos2d-HTML5</a> and place the content of the archive into the folder your webserver will reach as localhost.</p>
<p>Now it&#8217;s time to write our first snippet of code. Create another folder into the localhost directory (C:/wamp/www if you are using WampServer), and inside such folder create a file called <code>index.html</code>, with this content:</p>
<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE HTML&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Circle Chain Cocos2d HTML5 version&lt;/title&gt;
		&lt;script src="cocos2d.js"&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body style="padding:0px;margin:0px;background-color:white"&gt;
		&lt;canvas id="gameCanvas" width="500" height="500"&gt;&lt;/canvas&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre><p></p>
<p>It&#8217;s just the basic page including a canvas element in it. Just have a look at <strong>line 5</strong> where I load <code>cocos2d.js</code> and <strong>line 8</strong> where I assign <code>gameCanvas</code> id to the canvas. </p>
<p>cocos2d.js file will contain a template file about the configuration of the project:</p>
<p></p><pre class="crayon-plain-tag">(function () {
	var d = document;
	var c = {
		menuType:"canvas",
        	COCOS2D_DEBUG:2, // full debug mode
		box2d:false, // no physics in this game
		chipmunk: false, // no chipmunk engine
		showFPS:true, // let's show the FPS meter
		frameRate:60, // 60 frames per second
		tag:"gameCanvas", // id of the canvas element
		engineDir:"../cocos2d/", // path to your cocos2d installation
		appFiles:["circlechain.js"] // path to the main game file
	};
	window.addEventListener('DOMContentLoaded', function () {
		var s = d.createElement("script");
		s.src = c.engineDir + "platform/jsloader.js";
		d.body.appendChild(s);
		s.c = c;
		s.id = "cocos2d-html5";
		document.ccConfig = c;
	});
})();</pre><p> </p>
<p>In most cases you will be able to use this same file just changing <strong>line 12</strong>, where you specify the path to the main game file and maybe <strong>line 9</strong> if you called the canvas id with a different name.</p>
<p>Another file you will need in the same path is <code>main.js</code>:</p>
<p></p><pre class="crayon-plain-tag">var cocos2dApp = cc.Application.extend({
	config:document.ccConfig,
	ctor:function (scene) {
		this._super();
		this.startScene = scene;
		cc.COCOS2D_DEBUG = this.config["COCOS2D_DEBUG"];
        	cc.initDebugSetting();
		cc.setup(this.config["tag"]);
		cc.Loader.getInstance().onloading = function () {
			cc.LoaderScene.shareLoaderScene().draw();
		};
		cc.Loader.getInstance().onload = function () {
			cc.AppController.shareAppController().didFinishLaunchingWithOptions();
		};
		cc.Loader.getInstance().preload([
		]);
	},
	applicationDidFinishLaunching:function () {
		var director = cc.Director.getInstance();
		director.setDisplayStats(this.config["showFPS"]);
		director.setAnimationInterval(1.0 / this.config["frameRate"]);
		director.runWithScene(new this.startScene());
		return true;
	}
});     
var myApp = new cocos2dApp(circlechain);</pre><p> </p>
<p>Just like before, in most cases you will be able to completely reuse it, with the exception of the last line where you&#8217;ll want to change the argument of <code>cocos2dApp</code> function.</p>
<p>Finally circlechain.js is simpler than you can imagine if you come from Actionscript, there are sprites and events and layers, have a look:</p>
<p></p><pre class="crayon-plain-tag">var circlechain = cc.Scene.extend({
	onEnter:function(){
		this._super();
		var layer = new circleChainGame();
		layer.init();
		this.addChild(layer);
	}
})

var circleChainGame = cc.Layer.extend({
	init:function(){
		this._super();
		var circleSpeed = 2;
		var s = cc.Director.getInstance().getWinSize();
		var gameLayer = cc.LayerColor.create(new cc.Color4B(0, 0, 0, 255), 500, 500)
		for(i=0;i&lt;10;i++){
			var greenCircle = cc.Sprite.create("greencircle.png");
			var randomDir = Math.random()*2*Math.PI;
			greenCircle.xSpeed=circleSpeed*Math.cos(randomDir);
			greenCircle.ySpeed=circleSpeed*Math.sin(randomDir);
			gameLayer.addChild(greenCircle);
			greenCircle.setPosition(new cc.Point(Math.random()*500,Math.random()*500));
			greenCircle.schedule(function(){
     			this.setPosition(new cc.Point(this.getPosition().x+this.xSpeed,this.getPosition().y+this.ySpeed));
     			if(this.getPosition().x&gt;500){
					this.setPosition(new cc.Point(this.getPosition().x-500,this.getPosition().y));
				}
				if(this.getPosition().x&lt;0){
					this.setPosition(new cc.Point(this.getPosition().x+500,this.getPosition().y));
				}
				if(this.getPosition().y&gt;500){
					this.setPosition(new cc.Point(this.getPosition().x ,this.getPosition().y-500));
				}
				if(this.getPosition().y&lt;0){
					this.setPosition(new cc.Point(this.getPosition().x ,this.getPosition().y+500));
				}
			})
		}
     	this.addChild(gameLayer);
		return true;
	}
});</pre><p> </p>
<p>You can think about <code>schedule</code> method as an enter frame listener, and a layer as a display object container.</p>
<p>And here is the result of the first step, with our ten green circles moving around the screen:</p>
<p><iframe src = "http://www.emanueleferonato.com/stuff/cc_cocos2d/circlechain/" width="500" height="500" frameborder="0" scrolling="no"></iframe></p>
<p>You can also <a href="/wp-content/uploads/2013/05/circlechain.zip">download the source code</a>. Next time, I&#8217;ll show you how to add interactivity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/16/from-zero-to-a-complete-game-with-cocos2d-html5-step-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flash-like image manipulation with CreateJS</title>
		<link>http://www.emanueleferonato.com/2013/05/13/flash-like-image-manipulation-with-createjs/</link>
		<comments>http://www.emanueleferonato.com/2013/05/13/flash-like-image-manipulation-with-createjs/#comments</comments>
		<pubDate>Mon, 13 May 2013 17:03:58 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Users contributions]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6608</guid>
		<description><![CDATA[Roger Engelbert explain us how to create Flash-like image effects using canvas and CreateJS]]></description>
			<content:encoded><![CDATA[<p>This is an iteresting post made by <strong><a href="http://rengelbert.com/" target="_blank">Roger Engelbert</a></strong>, the author of <a href="http://www.emanueleferonato.com/2012/09/05/step-by-step-creation-of-a-3d-helicopter-game-using-away3d/">step by step creation of a 3D helicopter game using Away3D</a> and <a href="http://www.emanueleferonato.com/2012/01/03/one-game-many-frameworks/">one game, many frameworks</a>.</p>
<p>Today he&#8217;s going to show you how to achieve Flash-like image manipulations with <a href="http://www.createjs.com/#!/EaselJS" target="_blank">EaselJS</a>, the same framework I used to make a <a href="http://www.emanueleferonato.com/2012/10/31/circe-chain-engine-made-with-createjs-step-2/">javascript port of Circle Chain game</a>.</p>
<p>&laquo; I‘ve decided to take a very simple application done in Flash and transform it in JavaScript for Canvas, using an open source framework, trying to use as many features typically associated with Flash as I could cram in a tiny bit of code, and see how the framework handled them (mainly: events, bitmap data manipulation, the display list and masks).</p>
<p>The application is the core logic inside an old project, FlashNose3D, which I used years ago to talk about PureMVC. Only here, I’m just using the animation bit.</p>
<p>The framework I picked was EaselJS, which is based on ActionScript.</p>
<p>Here is the test application in Flash, using circles:</p>
<p><embed src="/wp-content/uploads/2013/05/effectAS3.swf" allowscriptaccess="always" menu="false" quality="high" width="600" height="450" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>And here are the classes:</p>
<p><code>Main.as</code></p>
<p></p><pre class="crayon-plain-tag">package  {
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
 
	public class Main extends Sprite {
 
		private var _slices:Array;
 
		function Main () {
			_slices = [];
 
			var startWidth:int = 400;
			var numSlices:int = 40;
			var fraction:int = startWidth/(numSlices - 1);
			var s:Slice;
			for (var i:int = 0; i &lt; numSlices; i++) {
				s = new Slice ((startWidth - i * fraction) * 0.5, i);
				s.x = stage.stageWidth &gt;&gt; 1;
				s.y = stage.stageHeight &gt;&gt; 1;
				this.addChild(s);
				_slices.push(s);
			}
			addEventListener(Event.ENTER_FRAME, on_Loop);
		}
 
 
		private function on_Loop (event:Event):void {
			var len:int = _slices.length;
			var s:Slice;
			var previous:Slice;
			for (var i:int = len-1; i &gt;= 0; i--) {
				s = _slices[i];
				if (i == len-1) {
					s.update(new Point(mouseX, mouseY));
				} else {
					previous = _slices[i + 1];
					s.update(new Point(previous.x, previous.y));
				}
			}		
		}
	}
}</pre><p> </p>
<p><code>Slice.as</code></p>
<p></p><pre class="crayon-plain-tag">package  {
 
	import flash.display.Sprite;
	import flash.geom.Point;
 
	public class Slice extends Sprite {
 
 
		private var _vx:Number = 0;
		private var _vy:Number = 0;
		private var _friction:Number = 0.2;
		private var _spring:Number = 2;
 
		function Slice (radius:int, index:int) {
 
			this.graphics.beginFill(index * 50);
			this.graphics.drawCircle(0, 0, radius);
			this.graphics.endFill();
		}
 
 
		public function update (target:Point) {
 
			var diffx:Number;
			var diffy:Number;
			var ax:Number;
			var ay:Number;
 
			diffx = target.x - x;
			diffy = target.y - y;
 
			ax = diffx * _spring;
			ay = diffy * _spring;
 
			_vx += ax;
			_vy += ay
 
			_vx *= _friction;
			_vy *= _friction;
 
			this.x += _vx;
			this.y += _vy;
 
		}
 
	}
 
}</pre><p></p>
<p>Then the EaselJS version. Click anywhere on the image to start the animation (although the effect looks better if you click on: nose, or mouth, or eyes).</p>
<p><iframe width="600" height="400" src = "http://www.emanueleferonato.com/stuff/nose3d/" frameborder = "0" scrolling="no"></iframe></p>
<p>And the code:</p>
<p><code>Main.js</code></p>
<p></p><pre class="crayon-plain-tag">//declare our globals
var NUM_SLICES = 50;
var FRICTION = 0.2;
var SPRING = 2;
 
(function(){
 
	this.animate;
	this.slices;
	this.stage;
	this.image;
 
 
 	this.init = function() {
 
		this.animate = false;
		this.slices = [];
 
		this.image = new Image();
		//handler to preload our image
		this.image.onload = handleImageLoad;
		this.image.src = "doctor3.jpg";
	}
 
	this.handleImageLoad = function () {
 
		var canvas = document.getElementById("testCanvas");
		stage = new createjs.Stage(canvas);
 
 
		var ratio = image.width/(NUM_SLICES + 1);
		var s;
		for (var i = 0; i &lt; NUM_SLICES; i++) {
 
			if (i == 0) {
				s = new Slice ( image, -1 );
			} else {
				s = new Slice ( image, (image.width - i * ratio) * 0.5 );				
 
			}
			s.x = canvas.width * 0.5;
			s.y = canvas.height * 0.5;
 
			stage.addChild(s);
 
 
			slices.push(s);
		}
 
 
		//add stage event: Mouse Click
		stage.onClick = function (event) {
 
			if (animate) return;
 
			var p = slices[0].globalToLocal(event.stageX, event.stageY);
			var len = slices.length;
 
			for (var i = 0; i &lt; len; i++) {
				slices[i].setNose(p.x, p.y);			
			}
 
			animate = true;
		}
		//render stage
		stage.update();
 
		//register main loop event
		createjs.Ticker.setFPS(30);
		createjs.Ticker.addListener(window);
	}
 
 
	//the main loop
	this.tick = function () {
 
		if (animate) {
 
			var len = slices.length;
			var s;
			var previous;
 
			for (var i = len-1; i &gt;= 0; i--) {
				s = slices[i];
				if (i == len-1) {
					s.update(stage.mouseX, stage.mouseY);
				} else {
					previous = slices[i + 1];
					s.update(previous.x, previous.y);
				}
			}
 
		}
		//render stage
		stage.update();
	}
 
 
})();
 
window.onload = init;</pre><p> </p>
<p><code>Slice.js</code></p>
<p></p><pre class="crayon-plain-tag">(function(window) {
 
 
	this.circleMask;
    this.vx;
    this.vy;
 
    function Slice(image, radius) {
 
        this.initialize();
 
        var canvas = document.getElementById("testCanvas");
        this.image = image;
 
        this.regX = image.width * 0.5;
        this.regY = image.height * 0.5;
 
        vx = 0;
        vy = 0;
 
        if (radius &gt; 0) {
 
        	this.circleMask = new createjs.Shape();
	        this.circleMask.graphics.beginFill("0xFFF");
			this.circleMask.graphics.drawCircle(0,0,radius);
			this.circleMask.graphics.endFill(); 	
        }    
    }
 
    Slice.prototype = new createjs.Bitmap();
 
    Slice.prototype.circleMask;
    Slice.prototype.vx;
    Slice.prototype.vy;
 
    Slice.prototype.Bitmap_initialize = Slice.prototype.initialize;
 
    Slice.prototype.initialize = function() {
        this.Bitmap_initialize();
    }
 
 
    Slice.prototype.setNose = function (noseX, noseY) {
 
        this.regX = noseX;
        this.regY = noseY;
 
        if (this.circleMask) {
            this.mask = this.circleMask;
        }
    }
 
    Slice.prototype.update = function (targetX, targetY) {
 
        var diffx, diffy, ax, ay;
 
        diffx = targetX - this.x;
        diffy = targetY - this.y;
 
        ax = diffx * SPRING;
        ay = diffy * SPRING;
 
        vx += ax;
        vy += ay
 
        vx *= FRICTION;
        vy *= FRICTION;
 
        this.x += vx;
        this.y += vy;
 
        if (this.circleMask) {
            this.circleMask.x = this.x;
            this.circleMask.y = this.y;
        }
 
    }
 
    Slice.prototype.normalize = function (p) {
    	var length = Math.sqrt(p.x*p.x+p.y*p.y);
    	return 	new createjs.Point((p.x/length), (p.y/length));
	}
 
    window.Slice = Slice;
}(window));</pre><p> </p>
<p>Of course, the JS version uses an actual image, so the classes are a bit more extensive.</p>
<p>But you can see, among other things:</p>
<p>- how to write classes with EaselJS<br />
- how you can extend a display object in EaselJS. In the code I extended the Bitmap class.<br />
- how to draw vector shapes. I used a circle for the mask.<br />
- how to mask a bitmap with a vector shape.<br />
- how to add the main loop<br />
- how to add mouse events on stage. The same logic would work for any display object.<br />
- how to change the registration point of a display object with its properties regX and regY.</p>
<p>&raquo;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/13/flash-like-image-manipulation-with-createjs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Easily make level design of physics games with Bisonkick</title>
		<link>http://www.emanueleferonato.com/2013/05/10/easily-make-level-design-of-physics-games-with-bisonkick/</link>
		<comments>http://www.emanueleferonato.com/2013/05/10/easily-make-level-design-of-physics-games-with-bisonkick/#comments</comments>
		<pubDate>Fri, 10 May 2013 10:24:12 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6599</guid>
		<description><![CDATA[Bisonkick tool grows with more and more ways to improve your physics games level design. Have a look!]]></description>
			<content:encoded><![CDATA[<p>Do you remember <strong><a href="https://bisonkick.com/" target="_blank">Bisonkick</a></strong>? I already blogged about it <a href="http://www.emanueleferonato.com/2010/08/16/create-box2d-levels-in-a-quick-with-bison-kick/">almost three years ago</a>, it was an easy way to design levels for physics games, and during this time the project evolved a lot, including a bunch of new features such as:</p>
<p><strong>Cloud space</strong>: your designs can be saved in the cloud service provided by Bisonkick and played by other users, or kept private for your eyes only.</p>
<p><strong>Joints, events, and more</strong>: you can add squares, circles, and polygons. Connect them with all different joints. Use collision, keyboard, mouse or other events to make your game instantly playable by others. Add goals and redirects for when a user hits that goal.</p>
<p><strong>Code generator</strong>: according to the format you decide to export your designs, Bisonkick will generate code for you.</p>
<p>This is the most interesting feature: look at what I did in about a minute:</p>
<p><img src="/wp-content/uploads/2013/05/bison.jpg" /></p>
<p>Once I exported the design for AS3, I got an entire class:</p>
<p></p><pre class="crayon-plain-tag">package {
	public class Levels {
		public static const LEVEL_1:Object = {shapes:[{
		  bodytype : "static",
		  h : "20.0000",
		  nameid : "Bez6B-27",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "Uv15Nza",
		  w : "640.0000",
		  x : "0.0000",
		  y : "460.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "40.0000",
		  nameid : "base_brick_left",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "mpMrgkK",
		  w : "40.0000",
		  x : "194.0000",
		  y : "421.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "40.0000",
		  nameid : "base_brick_right",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "mkOLWBP",
		  w : "40.0000",
		  x : "394.0000",
		  y : "420.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "50.0000",
		  nameid : "mid_brick_left",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "JcbRAdE",
		  w : "50.0000",
		  x : "189.0000",
		  y : "370.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "50.0000",
		  nameid : "mid_brick_right",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "6SbMopz",
		  w : "50.0000",
		  x : "389.0000",
		  y : "370.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "80.0000",
		  nameid : "top_brick_left",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "czJfWTK",
		  w : "80.0000",
		  x : "174.0000",
		  y : "291.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "80.0000",
		  nameid : "top_brick_right",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "5FY4zCq",
		  w : "80.0000",
		  x : "374.0000",
		  y : "290.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "50.0000",
		  nameid : "large_brick",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "TVpE0mS",
		  w : "400.0000",
		  x : "114.0000",
		  y : "241.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "50.0000",
		  nameid : "border_brick_left",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "lFy2dsM",
		  w : "50.0000",
		  x : "114.0000",
		  y : "191.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "50.0000",
		  nameid : "dCqsy-37",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "square",
		  uid : "SEi6WM4",
		  w : "50.0000",
		  x : "464.0000",
		  y : "191.0000"}
		,
		{
		  bodytype : "dynamic",
		  h : "60.0000",
		  nameid : "ball",
		  pinned : false,
		  props : {
		    id : "properties"}
		,
		  rotation : "0.0000",
		  type : "circle",
		  uid : "iUTtZCh",
		  w : "60.0000",
		  x : "294.0000",
		  y : "180.0000"}
		],
		joints: [],
		events:[]
		};
	}
}</pre><p> </p>
<p>At this time I was able to use the class with the BisonkickSample class provided in the resources you can access when you register, and without writing any line of code I just had the NAPE simulation of my project running like a charm:</p>
<p><embed src="/wp-content/uploads/2013/05/bison.swf" allowscriptaccess="always" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>You can also drag and drop bodies with the mouse.</p>
<p>And if you want to see a fully featured project, go to <a href="https://bisonkick.com/app/518195d06927101d38a83b66/" target="_blank">this link</a> and see what this library is capable of.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/10/easily-make-level-design-of-physics-games-with-bisonkick/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Learn to build cross platform games with Cocos2d-X by Example Beginner&#8217;s Guide</title>
		<link>http://www.emanueleferonato.com/2013/05/06/learn-to-build-cross-platform-games-with-cocos2d-x-by-example-beginners-guide/</link>
		<comments>http://www.emanueleferonato.com/2013/05/06/learn-to-build-cross-platform-games-with-cocos2d-x-by-example-beginners-guide/#comments</comments>
		<pubDate>Mon, 06 May 2013 15:54:01 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6595</guid>
		<description><![CDATA[Learn the basics of building cross platform games with Cocos2d-X by Example Beginner's Guide and make six games along the way]]></description>
			<content:encoded><![CDATA[<p>While we are only one day away from the results of the <a href="http://www.emanueleferonato.com/2013/05/01/instant-kineticjs-starter-e-book-giveaway-win-your-copy/">Instant KineticJS Starter e-book giveaway</a>, let me show you another great book if you are into cross-platform game design: <strong><a href="http://www.packtpub.com/cocos2d-x-by-example/book" target="_blank">Cocos2d-X by Example Beginner&#8217;s Guide</a></strong>, which will guide you to the creation of six games such as an air hockey simulation, Sky Defense: some kind of Missile Command clone, Rocket Through: a snake game with a twist, Victorian Rush Hour: an endless runner, a Box2D powered pool game, and Eskimo: a mix between a platform and an avoider game.</p>
<p><a href="http://www.packtpub.com/cocos2d-x-by-example/book" target="_blank"><img src="/wp-content/uploads/2013/05/cocos2d.jpg" /></a></p>
<p>Cocos2d-x is the C++ port of arguably the most popular open source 2D framework in the world. Its predecessor was limited to the Apple family but with Cocos2d-x you can take your applications to all major app stores, with minimum extra work. Give your games a larger target audience with almost no extra hassle.</p>
<p><a href="http://www.packtpub.com/cocos2d-x-by-example/book" target="_blank">Cocos2d-X by Example Beginner&#8217;s Guide</a> allows you to build your own cross platform games using all the benefits of a time tested framework, plus the elegance and simplicity of C++.</p>
<p>Each of the six games developed in this book will take you further on the road to becoming an expert game developer with no fuss and plenty of fun.</p>
<p>Follow six tutorials for six very different games that leverage the ease of Cocos2D-X and its quick implementation, moving from simple ideas to more advanced topics in game development.</p>
<p>In easy-to-follow steps, the book teaches you how to take full advantage of the framework by adding animations and special effects, implementing a physics engine, and optimizing your games.</p>
<p>Prepare your project for multiple platforms and learn how to take your game concepts to completion.</p>
<p><a href="http://www.packtpub.com/cocos2d-x-by-example/book" target="_blank">Cocos2d-X by Example Beginner&#8217;s Guide</a> will present to you, in six different games, the topics necessary to build some of the most popular and fun types of games today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/06/learn-to-build-cross-platform-games-with-cocos2d-x-by-example-beginners-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New experiment: monetization of an HTML5 game</title>
		<link>http://www.emanueleferonato.com/2013/05/03/new-experiment-monetization-of-an-html5-game/</link>
		<comments>http://www.emanueleferonato.com/2013/05/03/new-experiment-monetization-of-an-html5-game/#comments</comments>
		<pubDate>Fri, 03 May 2013 15:22:43 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Monetize]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6586</guid>
		<description><![CDATA[Time to produce an HTML5 game and try to monetize it. Follow me in this experiment.]]></description>
			<content:encoded><![CDATA[<p>If you are an old reader of the blog, you should remember when I blogged about the <a href="http://www.emanueleferonato.com/2007/10/28/experiment-monetizing-a-flash-game/">experiment to monetize a Flash game</a>.</p>
<p>Almost 6 year passed since then,and although I am still making Flash games, it&#8217;s time to begin another experiment to see if I manage to monetize an HTML5 game.</p>
<p>While monetizing a Flash game is quite easy thans to services like <a href="https://www.fgl.com/" target="_blank">FGL</a> and <a href="https://www.mochimedia.com/r/972ae333a3c92a2a" target="_blank">MochiMedia</a>, things get more complicated with HTML5 since it&#8217;s quite a new way to distribute games.</p>
<p>During the weekend I will work and complete this game:</p>
<p><img src="/wp-content/uploads/2013/05/wordrop.jpg" /></p>
<p>Which is basically a remake of my old <a href="http://www.emanueleferonato.com/2009/10/17/wordrop/">WorDrop Flash game</a>.</p>
<p>The point is&#8230; how will I try to get the best out of this game? At the moment, I will focus on these steps:</p>
<p>1) Make it playable from its own site, running my ads</p>
<p>2) Make it playable on Facebook, running my ads</p>
<p>3) Try to market it on <a href="http://www.marketjs.com/" target="_blank">marketJS</a></p>
<p>4) Try to market in on <a href="http://softgames.de/" target="_blank">Softgames</a></p>
<p>5) Try to market it on <a href="http://www.boostermedia.com/developers/for-game-developers" target="_blank">BoosterMedia</a></p>
<p>6) Any other way which will come into my mind (all in all, it&#8217;s an experiment)</p>
<p>See you next week with the game running.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/03/new-experiment-monetization-of-an-html5-game/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Instant KineticJS Starter e-book giveaway. Win your copy!</title>
		<link>http://www.emanueleferonato.com/2013/05/01/instant-kineticjs-starter-e-book-giveaway-win-your-copy/</link>
		<comments>http://www.emanueleferonato.com/2013/05/01/instant-kineticjs-starter-e-book-giveaway-win-your-copy/#comments</comments>
		<pubDate>Wed, 01 May 2013 20:39:56 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Contests]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6575</guid>
		<description><![CDATA[If you want to get you free e-copy of <a href="http://www.packtpub.com/kineticjs-for-flash-mobile-application/book" target="_blank">Instant KineticJS Starter</a> book and create awesome web applications, here is the right giveaway.]]></description>
			<content:encoded><![CDATA[<p>Readers would be pleased to know that I have teamed up with <a href="http://www.packtpub.com/" target="_blank">Packt Publishing</a>  to organize a giveaway of the <a href="http://www.packtpub.com/kineticjs-for-flash-mobile-application/book" target="_blank">Instant KineticJS Starter</a> book, and 3 lucky winners will get their book for free!</p>
<p>I blogged about the book in <a href="http://www.emanueleferonato.com/2013/04/10/get-into-kineticjs-development-with-instant-kineticjs-starter-book/">this post</a>, so I am going straight to the point of this giveaway.</p>
<p>Three lucky readers will win a PDF copy of the book.</p>
<p><a href="http://www.packtpub.com/kineticjs-for-flash-mobile-application/book" target="_blank"><img src="/wp-content/uploads/2013/05/3copies.png" /></a></p>
<p>Let me explain the rules of this giveaway:</p>
<p>1) Be a fan of my <a href="https://www.facebook.com/emanueleferonato" target="_blank">Facebook page</a>.</p>
<p>2) On my Facebook page you will find a post about the giveaway. Leave a comment, such as “I want one” or something similar.</p>
<p>3) The first reader which will comment will be marked as “one”, the second as “two” and so on.</p>
<p>4) You are allowed to leave only one comment. If you leave more comments, only the first comment will count, so if reader A leaves the first and the second comment, and reader B leaves the 3rd comment, reader A will be marked as “one” and reader B as “two”.</p>
<p>5) On <a href="http://www.sisal.it/online/SuperEnalotto/Ultima-estrazione" target="_blank">this site</a>, the official site of an Italian lottery, next Tuesday (May 7) six numbers will be published. You will see the numbers below “Combinazione Vincente” title. Also, you’ll also see &#8220;CONCORSO N. 55&#8243; above such title to make sure you’re watching the right numbers.</p>
<p>6) The first three numbers in the page represent the readers which will win the book. If a number is higher than the amount of entries, it will be subtracted by the number of entries until it’s lower or equal to the number of entries, then the corresponding reader will win the book.</p>
<p>Let me show you an example. Let’s say this is the list of winning numbers:</p>
<p><img src="/wp-content/uploads/2013/05/win.jpg" /></p>
<p>The winning readers are the ones marked with 5, 35 and 38. And let’s say there are only 29 entries, the winning readers are the ones marked with 5, 6 (35-29) and 9 (38-29). Remember you will have to see &#8220;CONCORSO N. 55&#8243; to be sure they are Tuesday May 7 numbers.</p>
<p><a href="https://www.facebook.com/emanueleferonato" target="_blank">Be my fan and win!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/05/01/instant-kineticjs-starter-e-book-giveaway-win-your-copy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The basics of an HTML5 word game</title>
		<link>http://www.emanueleferonato.com/2013/04/29/the-basics-of-an-html5-word-game/</link>
		<comments>http://www.emanueleferonato.com/2013/04/29/the-basics-of-an-html5-word-game/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 09:29:36 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6567</guid>
		<description><![CDATA[Learn the logic behind an HTML5 word game, and you will be able to make next Ruzzle phenomenon!]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not a secret word games are having an huge success lately, thanks to <a href="http://www.ruzzle-game.com/" target="_blank">Ruzzle</a> which brought them to a new life. I also made a word game some years ago, it&#8217; called <a href="http://www.emanueleferonato.com/2009/10/17/wordrop/">WorDrop</a> and got almost 4 million plays, so I am showing you the basics for the creation of a word game. In this example I am using <a href="https://www.scirra.com/" target="_blank">Scirra&#8217;s Construct2</a> but the main concept can be easily ported in any HTML5 environment.</p>
<p><strong>Getting the words list</strong></p>
<p>You can still follow some of the links I posted four years ago in the post <a href="http://www.emanueleferonato.com/2009/06/17/eight-word-lists-to-help-you-creating-the-perfect-word-game/">eight word lists to help you creating the perfect word game</a>, but recentyl I found the <a href="http://dreamsteep.com/projects/the-english-open-word-list.html" target="_blank">English Open Word List (EOWL)</a> way better. It starts from the <a href="http://www.crosswordman.com/wordlist.html" target="_blank">UK Advanced Cryptics Dictionary (UKACD)</a>. To make EOWL more usable for computer word games all words longer than 10 letters were removed from the UKACD source list, and all proper nouns and words requiring diacritical symbols, hyphens, and apostrophes were removed.</p>
<p>This makes it much like the standard <a href="https://code.google.com/p/dotnetperls-controls/downloads/detail?name=enable1.txt" target="_blank">ENABLE</a> word list, but EOWL is somewhat smaller (by 44,000 words or so) since it contains no words longer than 10 characters.</p>
<p>So I downloaded the EOWL and initially merged all files (it comes in 26 files, one for each initial letter) into a single file you can see <a href="/stuff/wordrop/words.txt" target="_blank">here</a>.</p>
<p><strong>Converting the words list </strong></p>
<p>Since a simple word list isn&#8217;t of any use in a game, I had to find a way to import it into a format Construct2 would be able to recognize. Ont the official docs I found I can <a href="https://www.scirra.com/manual/108/array" target="_blank">setup an array starting from a JSON file</a> and this is the way I wanted to proceed.</p>
<p>I made this script:</p>
<p></p><pre class="crayon-plain-tag">&lt;?php

$file=file_get_contents("words.txt");
$words = explode("\n",$file);
$words_amount = count($words);

for($i=0;$i&lt;$words_amount;$i++){
	$content .= ",[[\"".trim($words[$i])."\"]]";
}

$content=substr($content,1);

echo "{\"c2array\":true,\"size\":[$words_amount,1,1],\"data\":[$content]}";

?&gt;</pre><p></p>
<p>Which loads the words list and outputs a Construct2 array in JSON format. You can see the output <a href="http://www.emanueleferonato.com/stuff/wordrop/wordlist.txt" target="_blank">here</a>.</p>
<p><strong>Importing the words list</strong></p>
<p>At this time, we just need to load the JSON with an Ajax request and we&#8217;ll finally populate the array:</p>
<p><img src="/wp-content/uploads/2013/04/words.png" /></p>
<p>Then I am just invite the player to type a word, and check for it to exist.</p>
<p>See the result at <a href="/stuff/wordrop/index.html" target="_blank">this link</a>, try to write a word: it will turn green if included in the EOWL list, or red if not included.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/04/29/the-basics-of-an-html5-word-game/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Get Construct2 with a 40% OFF, only this week</title>
		<link>http://www.emanueleferonato.com/2013/04/23/get-construct2-with-a-40-off-only-this-week/</link>
		<comments>http://www.emanueleferonato.com/2013/04/23/get-construct2-with-a-40-off-only-this-week/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 16:13:49 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Game design]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=6564</guid>
		<description><![CDATA[If you want to purchase Construct2, there's a 40% OFF special offer during this week. Get your license!!]]></description>
			<content:encoded><![CDATA[<p>Are you in love with <a href="https://www.scirra.com/" target="_blank">Construct2</a>, you want to upgrade your free edition but you can&#8217;t afford it? This is your week!</p>
<p>This week there&#8217;s a special offer on Construct 2! You can purchase Construct 2 Personal and Business Edition licenses with a <strong>40% discount</strong>.</p>
<p>This sale is also running on Steam if you have been looking to get Construct 2 on Steam.</p>
<p><strong>Upgrades from Personal to Business</strong></p>
<p>If you&#8217;re looking to upgrade your Personal license to a Business license, there has never been a better time! The normal cost of upgrade is $280/€229/£180, with a 40% sale discount the new cost is $168/€137.40/£108.</p>
<p>If you would like to upgrade your Personal license to a Business license:</p>
<p>* Send $168 USD/€137.40 EUR/£108 GBP to payments@scirra.com on Paypal<br />
* Email <a href="mailto:support@scirra.com">support@scirra.com</a> with your transaction ID and a copy of your current Personal license<br />
* You&#8217;ll get an email with your Business license as soon as possible!</p>
<p><strong>Sale End</strong></p>
<p>This sale will run until 6pm BST on Monday the 29th April. If you want to take advantage of this sale, make sure you arrange purchase of a license before this date.</p>
<p>Go buy <a href="https://www.scirra.com/" target="_blank">Construct2</a> and start making next HTML5 big game!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2013/04/23/get-construct2-with-a-40-off-only-this-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.522 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-24 20:47:56 -->

<!-- Compression = gzip -->