<?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>Citrus</title>
	<atom:link href="http://citrusengine.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://citrusengine.com</link>
	<description>Game Engine for iOS, Android, BlackBerry, Windows, Mac and Linux</description>
	<lastBuildDate>Thu, 18 Apr 2013 07:14:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>V3.1.6 performances, performances</title>
		<link>http://citrusengine.com/v3-1-6-performances-performances/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-6-performances-performances</link>
		<comments>http://citrusengine.com/v3-1-6-performances-performances/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 07:13:12 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=569</guid>
		<description><![CDATA[Hey, it&#8217;s time for a new update including Nape and Dragon Bones update, and added one variable which will greatly improve performances on mobile! Changelog Updated on Nape 2.0.8 Updated on DragonBones 2.1.1 Mouse/Touch are disable on objects to save &#8230; <a href="http://citrusengine.com/v3-1-6-performances-performances/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hey, it&#8217;s time for a new update including Nape and Dragon Bones update, and added one variable which will greatly improve performances on mobile!<span id="more-569"></span></p>
<ul>Changelog</p>
<li>Updated on Nape 2.0.8</li>
<li>Updated on DragonBones 2.1.1</li>
<li><span style="color: #ff0000;">Mouse/Touch are disable on objects to save performances, use touchable new property to be able to interact with touch/mouse on the object.</span></li>
<li><span style="color: #ff0000;">Box2D contact provided by handleBeginContact, handleEndContact&#8230; uses the worldManifold instead of the local (made collision management easier, like it was with Box2D Alchemy).</span></li>
<li>An entity uses a Vector to store components instead of a Dictionary.</li>
<li>ObjectMakerStarling FromMovieClip&#8217;s function allow to use an AssetManager object!</li>
</ul>
<p>On each object that you want to be able to interact using mouse/touch event, you will have to turn its touch property to true: <em>var box:Crate = new Crate(&#8220;box&#8221;, {touchable:true})</em><br />
<a href="http://wiki.starling-framework.org/manual/performance_optimization#make_containers_non-touchable" target="_blank">Explanations</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-6-performances-performances/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>V3.1.5 performances, comments, EazeTween</title>
		<link>http://citrusengine.com/v3-1-5-performances-comments-eazetween/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-5-performances-comments-eazetween</link>
		<comments>http://citrusengine.com/v3-1-5-performances-comments-eazetween/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 11:59:45 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=558</guid>
		<description><![CDATA[It was about time to have a new update, right? We hope there wasn&#8217;t this 3.1.5 but directly a 3.2 with all the features, but the time is going very fast this last weeks. So we decided to publish this &#8230; <a href="http://citrusengine.com/v3-1-5-performances-comments-eazetween/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It was about time to have a new update, right?</p>
<p>We hope there wasn&#8217;t this 3.1.5 but directly a 3.2 with all the features, but the time is going very fast this last weeks. So we decided to publish this udpate right now. Maybe it is better, people will have time to check the changelog and update their game accordingly.</p>
<p>In brief we have added comments in the SWC, added <a href="http://code.google.com/p/eaze-tween/" target="_blank">EazeTween</a> as the default tweening engine, updated on DragonBones V2.0 and added lots of flags (boolean) to improve performances!<span id="more-558"></span></p>
<ul>Changelog</p>
<li>SWCs include comments!</li>
<li>Added EazeTween as the default tweening engine.</li>
<li>Update on DragonBones V2.0</li>
<li>No more duplicated code between States class, all use the same basis: MediatorState. Now States class are just wrapper.</li>
<li>When Starling is set up it picks up fullScreen dimension if it&#8217;s running on mobile. The Context3DProfile parameter is also added.</li>
<li><span style="color: #ff0000;">Added updateCallEnabled property to CitrusObject: This property prevent the update method to be called by the enter frame, it will save performances. Set it to true if you want to execute code in the update method.</span></li>
<li>Added updateArtEnabled property to Art object. Set it to false if you want to prevent the art to be updated. Be careful its properties (x, y, &#8230;) won&#8217;t be able to change!</li>
<li><span style="color: #ff0000;">Add physics flags to prevent running contact if not necessary (beginContactCallEnabled, endContactCallEnabled, etc.).</span></li>
<li><span style="color: #ff0000;">Now physics is added to objects only when they are added to a state class. It&#8217;s called addPhysics function.</span></li>
<li>ACitrusView.update has the delta time in argument (and so its children).</li>
<li>Instead of a simple parallax property, now there are two: parallaxX and parallaxY</li>
<li>SoundManager can handles more than 32 sounds.</li>
<li>StarlingArt handles Texture view. It creates an Image.</li>
<li>AnimationSequence can add new animations and remove them.</li>
<li>Added a FluidBox into complex objects using ThresholdFilter, metaballs effect.</li>
<li>Removed set velocity on Box2D and Nape dynamic objects since we already use a reference.</li>
<li>Nape MovingPlatform&#8217;s default speed is 30.</li>
<li>Improved Box2D Hills.</li>
<li>Fixed a bug on Nape Missile&#8217;s angle.</li>
<li>Prevent to add several time the same object to the state.</li>
<li>Added a PolarPoint math class.</li>
<li>Added an Accelerometer Input Controller.</li>
<li>Added a ScreenTouch Input Controller for Starling.</li>
</ul>
<p><strong>EazeTween</strong><br />
We didn&#8217;t want to reinvent the wheel, so we took a look over the existant tweening engine and grab the best one!<br />
Why using <a href="http://code.google.com/p/eaze-tween/" target="_blank">EazeTween</a> instead of the very famous <a href="http://www.greensock.com/tweenmax/" target="_blank">TweenMax</a>? EazeTween has a MIT licence whereas TweenMax hasn&#8217;t. TweenMax isn&#8217;t free if you&#8217;re publishing your game on the App Store and sell it.</p>
<p><strong>Flags?</strong><br />
We have added several flags (boolean) into the engine to prevent lots of unuseful function call: for example a Coin object doesn&#8217;t need its update function to be called. On mobile it will save lots of performances! No worries, all the examples have been updated with the last engine code!</p>
<p><strong>Alef</strong><br />
It was about time to prove that the Citrus Engine could also be used for several type of games, and even apps! Let&#8217;s take a look on <a href="http://www.aymericlamboley.fr/blog/alef-is-out/" target="_blank">Alef</a>.</p>
<p>Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-5-performances-comments-eazetween/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>V3.1.4 improvements and Feathers</title>
		<link>http://citrusengine.com/v3-1-4-improvements-and-feathers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-4-improvements-and-feathers</link>
		<comments>http://citrusengine.com/v3-1-4-improvements-and-feathers/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 09:26:45 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Citrus Engine]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=539</guid>
		<description><![CDATA[Hey there, With this new update, we have included Feathers into all SWCs builds including Starling. Feathers isn&#8217;t used by the engine itself (at this time so this addition won&#8217;t change final file size if you don&#8217;t use it), but &#8230; <a href="http://citrusengine.com/v3-1-4-improvements-and-feathers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hey there,</p>
<p>With this new update, we have included <a href="http://feathersui.com/" target="_blank">Feathers</a> into all SWCs builds including Starling. Feathers isn&#8217;t used by the engine itself (at this time so this addition won&#8217;t change final file size if you don&#8217;t use it), but it was requested by many guys to make advanced user interface for their game. With this new update, you&#8217;ve all the <a href="http://gaming.adobe.com/technologies/gamingsdk/" target="_blank">Adobe Gaming SDK</a> in one framework especially designed for building awesome games! Using SWC file, you will compile your game in no time, and also we make sure those libraries are up to date, and compatible between them!</p>
<p>This update involves many improvements concerning camera, State management, Flash Pro as a level editor, UI and physics objects. Also we have started the draft for the V3.2.0 and as usual we will enjoy your feedback!<span id="more-539"></span></p>
<ul>Changelog:</p>
<li>Renamed AVirtualButtons and VirtualButtons classes into AVirtualButton and VirtualButton. Yes, they just add one button now. Easier to add many.</li>
<li>Added Starling&#8217;s simple trick to avoid the state changes (alpha 0.999).</li>
<li>StarlingCitrusEngine and Away3DCitrusEngine accepts State, useful to display quickly a state with graphics from a swf, ect.</li>
<li>States classes have a new method killAllObjects(&#8230;except). The _objects variable has also a getter.</li>
<li>States classes have a protected variable _ce which refers to the Citrus Engine.</li>
<li>Nape&#8217;s Hero has a static friction removed when the player move, and set when it stops moving (to prevent sliding).</li>
<li>ObjectMakerStarling has a FromMovieClip function. The second argument is the TextureAtlas. Objects made in Flash Pro can use a texture name for their view.</li>
<li>Added Panning to SoundManager.</li>
<li>Added a camera lens parameter to view.camera.setUp function.</li>
<li>Added zoomFit() to StarlingCamera and SpriteCamera.</li>
<li>Added a get function command for the console.</li>
<li>Added a trace to inform if we create a group with a high value.</li>
<li>view.camera.setUp returns the instance of the ACitrusCamera.</li>
<li>StarlingArt doesn&#8217;t generate mipmaps if view is a Bitmap.</li>
<li>Added Crate object to Nape.</li>
<li>Added a UI package for inventory and lifebar.</li>
<li>Added a Path class which is a set of points (MathVector) that can be used with the MovingPlatform.</li>
<li>Added Nape version of the Moving Platform managing also a Path if it&#8217;s specified.</li>
<li>Added line equation to MathUtils.</li>
<li>Added linear interpolation function to MathUtils.</li>
<li>Added Tools class with a print_r function to display objects and arrays content.</li>
<li>Improved the Timer&#8217;s cannon: it is paused if the CE is not playing.</li>
<li>Added a Bridge, Rope and Pool objects, into the new objects.complex.box2dstarling package.</li>
<li>Added a Multiply2 function into Box2DUtils.</li>
</ul>
<p><strong>UI</strong><br />
UI and HUD are really important in your games. Adding Feathers to the Citrus Engine will help you to make cool menu and interfaces for your game. Also you&#8217;ve certainly noticed the new ui package. At this time, there is only a life bar made for Starling and an inventory package managing objects (you defined) state.<br />
In the Citrus Engine, we used to make a compatibility with new features: they were available on the display list and Starling. Since we believe that Starling is the future of Flash gaming, we won&#8217;t port all the future features on the display list. Based on the inventory example, we will make the UI using Feathers. This will save us lots of time, but it won&#8217;t help to make a port easily of this inventory on the display list. So we prefer to drop the display list compatibility for those kind of features (saving time), and make sure they will be very powerful.</p>
<p><strong>V3.2.0: Physics improvement</strong><br />
As a developer, it&#8217;s very important to try different tools. This last month, I played a lot with <a href="http://unity3d.com/" target="_blank">Unity3D</a> and really enjoyed it! It gives me ton of ideas on level editing and coding.<br />
Do you remember our issue using the Frame Rate Independant Motion? Using the same code logic than Unity, it will help us to make sure that our game is running exactly at the same speed on different devices. Explanations:<br />
In Unity there is an Update function (called on each object) which is like a function called by the enter frame event in Flash. In this function you&#8217;re never sure that the call is made exactly at the same time than the previous one. There is also a FixedUpdate function which is performed at the same time than the physics engine doing a step. In the FixedUpdate function, we&#8217;re sure the time elapsed between each function is exactly the same.</p>
<p>So what I&#8217;m suggesting is to replicate this behavior:<br />
- keep our update function with the time delta as a parameter coming from the CitrusEngine class using an enter frame and the Date.time, and create a protected variable in APhysicsObject to register the timedelta (so it can be used in FixedUpdate).<br />
- then create a fixedUpdate function in APhysicsObject which will be called each time the physics engine make a step. The step of the engine comes from a Timer which have exactly the same delay than the physics engine step.<br />
This way we keep our view syncronized with the FP/AIR, and are sure the physics engine is performing at the same speed on each devices.<br />
The downside are we will have to rewrite some physics objects code, and there can&#8217;t be a backward compatibility. What do you think?</p>
<p>Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-4-improvements-and-feathers/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>V3.1.3 camera system and wiki, be ready for the game jam!</title>
		<link>http://citrusengine.com/v3-1-3-camera-system-and-wiki-be-ready-for-the-game-jam/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-3-camera-system-and-wiki-be-ready-for-the-game-jam</link>
		<comments>http://citrusengine.com/v3-1-3-camera-system-and-wiki-be-ready-for-the-game-jam/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 15:28:29 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=517</guid>
		<description><![CDATA[Hey folks! We&#8217;re happy to provide you a new build one day before the Gobal Game Jam! We&#8217;d time to improve the new camera system which is now very flexbile and have more cool features. Thanks you all for your &#8230; <a href="http://citrusengine.com/v3-1-3-camera-system-and-wiki-be-ready-for-the-game-jam/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hey folks!</p>
<p>We&#8217;re happy to provide you a new build one day before the <a href="http://globalgamejam.org/" target="_blank">Gobal Game Jam</a>!</p>
<p>We&#8217;d time to improve the new camera system which is now very flexbile and have more cool features. Thanks you all for your feedback!</p>
<p>Some users ask us to create a wiki to get start more quickly with the engine. We&#8217;ll took advantage of this opportunity to create also a part explaining how the Citrus Engine works internally. For example what happen when you add an object to the state, how StarlingView and StarlingArt works ect. The wiki is already available <a href="http://wiki.starling-framework.org/citrus/start" target="_blank">there</a>. Yup we stick with the Starling (excellent) community. Again feel free to tell us what you want to see there, if you have some better ideas for the structure ect. This wiki is made for you!<span id="more-517"></span></p>
<ul>Changelog:</p>
<li>new Camera system ready! you don&#8217;t call anymore view.setupCamera function, now it is view.camera.setUp</li>
<li>input uses its own update loop using Event.FRAME_CONSTRUCTED.</li>
<li>fixed tiled map parser&#8217;s problem where the layer index might be wrong.</li>
<li>fixed a bug in Keyboard&#8217;s input where some actions weren&#8217;t performed.</li>
<li>fixed Starling VirtualButtons and VirtualJoystick &#8216;s destroy method.</li>
<li>fixed a problem with parallax when zooming.</li>
<li>fixed a bug where Nape Missile&#8217;s angle wasn&#8217;t in radian.</li>
<li>Nape&#8217;s Hero no longer has a static friction.</li>
<li>fixed Nape&#8217;s Hero was able if the collisionAngle was really close to 0.</li>
<li>moved SpriteDebugArt and StarlingSpriteDebugArt into their respective package.</li>
<li>SpriteArt/StarlingArt/Away3DArt content property becomes private with a getter. It should only be set internally.</li>
</ul>
<p><strong>Camera demo</strong><br />
We&#8217;ve made a new demo using this new camera stuff! <a href="http://citrusengine.com/bin/camera-example.html" target="_blank">Demo</a>. Mouse wheel to zoom, x to rotate the view and r to randomize cloud positions. <a href="https://github.com/alamboley/Citrus-Engine-Examples/tree/master/src/cameramovement" target="_blank">Source code</a>.</p>
<p>Have a fun game jam!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-3-camera-system-and-wiki-be-ready-for-the-game-jam/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>V3.1.2 Performances and scalability</title>
		<link>http://citrusengine.com/v3-1-2-performances-and-scalability/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-2-performances-and-scalability</link>
		<comments>http://citrusengine.com/v3-1-2-performances-and-scalability/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 09:28:00 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=508</guid>
		<description><![CDATA[Happy new year! 2013 is already there, and we&#8217;re pretty sure this will be a good year for the Citrus Engine! The Global Game Jam is in one week, and we&#8217;re happy to share that Aymeric and Gsynuh will meet &#8230; <a href="http://citrusengine.com/v3-1-2-performances-and-scalability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Happy new year!</p>
<p>2013 is already there, and we&#8217;re pretty sure this will be a good year for the Citrus Engine!</p>
<p>The <a href="http://globalgamejam.org/" target="_blank">Global Game Jam</a> is in one week, and we&#8217;re happy to share that <a href="http://citrusengine.com/author/aymeric/" target="_blank">Aymeric</a> and <a href="http://citrusengine.com/author/gsynuh/" target="_blank">Gsynuh</a> will meet for the first time and make a game (with some other great guys!) using our beloved game engine. Before the game jam, it&#8217;s important for us to let you know on what we&#8217;re working and what we will be improved during the next week. As usual, we always love your feedback!</p>
<p>This update provides performances improvement using physics engine and a good scalability with some cool new features : CitrusGroup and outsourced camera stuff.<span id="more-508"></span></p>
<ul>Changelog:</p>
<li>improved physics performance removing the update call to the debug view if it isn&#8217;t visible.</li>
<li>outsourced camera stuff into a ACitrusCamera class and one camera by view : BlittingCamera, SpriteCamera, StarlingCamera and Away3DCamera2D.</li>
<li>renamed CitrusView into ACitrusView class.</li>
<li>addSound method has now two arguments : the id (String) and the sound (*, String or Class).</li>
<li>added CitrusGroup class to group different kind of objects.</li>
<li>added createAABB method in MathUtils package.</li>
<li>added CollisionGetObjectByType into Box2DUtils and NapeUtils.</li>
<li>added getObjectsByName method.</li>
<li>added a fla with Citrus objects components to create quickly objects using Flash Pro as a level editor.</li>
<li>you can change physics step thanks to their public var.</li>
<li>updated on Starling 1.3.</li>
<li>fixed a bug where the group property wasn&#8217;t updated using Away3DView, SpriteView and StarlingView.</li>
<li>fixed on StarlingArt, the object&#8217;s view changed but animation doesn&#8217;t update on the new view.</li>
</ul>
<p>For more details on CitrusGroup, please follow this <a href="http://forum.starling-framework.org/topic/ce-brainstorming-assign-object-into-group" target="_blank">discussion</a> and feel free to say what you need!<br />
Concerning camera, take a look on the work in progress of <a href="https://github.com/alamboley/Citrus-Engine/blob/master/src/citrus/view/starlingview/StarlingCamera.as" target="_blank">StarlingCamera</a>, most of its content will be moved to other camera too. It gives great options for developers : zooming and rotation. Combine this with your favorite tween engine and you will have easily an awesome scripted camera!</p>
<p>Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-2-performances-and-scalability/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>V3.1.1 Stage3D Interoperation</title>
		<link>http://citrusengine.com/v3-1-1-stage3d-interoperation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-1-stage3d-interoperation</link>
		<comments>http://citrusengine.com/v3-1-1-stage3d-interoperation/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 11:10:41 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Citrus Engine]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=493</guid>
		<description><![CDATA[Hey folks, We would like to thank you for the very nice feedbacks on the previous build, it seems that you loved the Braid demo! It&#8217;s already time to provide a new build with some fixes and improvements. We have &#8230; <a href="http://citrusengine.com/v3-1-1-stage3d-interoperation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hey folks,</p>
<p>We would like to thank you for the very nice feedbacks on the <a href="http://citrusengine.com/v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid/" target="_blank">previous build</a>, it seems that you loved the <a href="http://citrusengine.com/bin/Braid-Demo.html" target="_blank">Braid demo</a>!</p>
<p>It&#8217;s already time to provide a new build with some fixes and improvements. We have unify the way that <a href="http://away3d.com/" target="_blank">Away3D</a> is added, now it uses a template like <a href="http://gamua.com/starling/" target="_blank">Starling</a> with a cool <em>setUpAway3D</em> function which also allows Stage3D Interoperation. It means that you can easily create your Citrus Engine game with Away3D and use Starling for a 2D interface, in-game menu, ect.<span id="more-493"></span></p>
<ul>Changelog:</p>
<li>created starling and away3d package in citrus.core for StarlingCitrusEngine, StarlingState, Away3DCitrusEngine and Away3DState classes.</li>
<li>removed stage argument in setUpStarling function, override the handleAddedToStage method to call setUpStarling function instead.</li>
<li>added Nape parser for polygon/polyline.</li>
<li>AVirtualJoystick : action value scaling.</li>
<li>TimeShifter now listens to and routes input to his defaultChannel which remains channel 16 when instanciated.</li>
<li>fixed a bug where Starling couldn&#8217;t dispose.</li>
<li>fixed a bug on TimeShifter using params.</li>
<li>fixed camera offset for BlittingView.</li>
</ul>
<p>Thanks to this update it is really easy to use Away3D with Starling, it requires only few lines of code. Check the <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/src/stage3dinteroperation/Main.as" target="_blank">code example</a>!<br />
Also thanks to the new <em>Away3DCitrusEngine</em> we have improved how we set up Away3D. Previously, it was created inside the <em>Away3DView</em> class which means that Away3D was created and removed each time a new state was set up. Now it&#8217;s more logical and performance friendly.</p>
<p>Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-1-stage3d-interoperation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>V3.1.0 new input system, Nape 2, multiplayer friendly, meet Braid.</title>
		<link>http://citrusengine.com/v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid</link>
		<comments>http://citrusengine.com/v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 17:48:14 +0000</pubDate>
		<dc:creator>Gsynuh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Citrus Engine]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=433</guid>
		<description><![CDATA[Hi guys, Two weeks without Citrus Engine updates? What happened? No worries, we have worked hard to make this new update available adding tons of improvements, update and new features! A quick cool one : thanks to AIR3.6 and the &#8230; <a href="http://citrusengine.com/v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hi guys,</p>
<p>Two weeks without Citrus Engine updates? What happened? No worries, we have worked hard to make this new update available adding tons of improvements, update and new features! A quick cool one : thanks to <a href="http://labsdownload.adobe.com/pub/labs/flashruntimes/shared/air3-6_flashplayer11-6_releasenotes.pdf" target="_blank">AIR3.6</a> and the LevelManager update you&#8217;re now able to load SWF levels made with Flash Pro on iOS!</p>
<p>In this update we have made one breaking change : no more &#8220;com&#8221; and &#8220;engine&#8221; package, just &#8220;citrus&#8221; now. This one has been made to remove problems with code hinting in some IDE : you had to resize the code hinting window to actually see if you were in a box2d package, or a nape package, etc. We apologize for compatibility issues with games made with the previous version (it takes some time to rename package in level editors&#8230;), that&#8217;s why we started to save <a href="https://github.com/alamboley/Citrus-Engine/tree/master/bin/old-releases" target="_blank">old SWC releases</a> on the GitHub.</p>
<p>We&#8217;re pleased to announce a new input system available! Thanks to this one you can easily change your key configuration, handle VirtualJoystick and VirtualButton for quickly making awesome mobile games. We&#8217;ve added a channel system which means that henceforth the Citrus Engine is multiplayer friendly! Also with this new input system comes a TimeShifter for time manipulation, like in <a href="http://braid-game.com/" target="_blank">Braid</a> game. Yup, we&#8217;ve made a <a href="http://citrusengine.com/bin/Braid-Demo.html" target="_blank">Braid demo with the engine</a> (3 Mo to load, shift key for time management), also available on Android devices through an <a href="http://citrusengine.com/bin/apk/Braid-Demo.apk" target="_blank">apk</a> (working fine on Nexus 7). That&#8217;s one of the features of the TimeShifter, it allows to replay input actions too.</p>
<p>And finally, we&#8217;ve updated on <a href="http://napephys.com/" target="_blank">Nape 2</a> (and Starling RC 1.3 without compatibility issue). We&#8217;ve worked hard on the Nape platformer pre-built objects, now you have the same feeling with box2d ones concerning : world/space gravity, NapePhysicsObject, Enemy &amp; Hero behaviors. So everything is ready to start this new <a href="http://www.ludumdare.com/compo/about-ludum-dare/" target="_blank">Ludum Dare</a>!<span id="more-433"></span></p>
<ul>Changelog:</p>
<li>Renamed package &#8220;com&#8221; and &#8220;citrusengine&#8221; into &#8220;citrus&#8221;.</li>
<li>The LevelManager can load levels made with Flash Pro on iOS using a LoaderContext.</li>
<li>The setUpStarling function may take the flash stage as an argument (useful if not the root class).</li>
<li>AnimationSequence&#8217;s dictionary is now accessible thanks to a getter.</li>
<li>Changed _input to protected to allow custom Input.</li>
<li>Added the new input package supporting keyboard, joystick, button, channel, key action&#8230;</li>
<li>Added a TimeShifter à la Braid! Allow also to replay an action.</li>
<li>Upgraded on Nape 2.0.</li>
<li>Nape&#8217;s gravity is equal to Box2D&#8217;s gravity.</li>
<li>Nape&#8217;s object physics behavior are closed to Box2d one (friction, speed, hero &amp; enemy interaction&#8230;)</li>
<li>refreshPoolObjectArt handles the startIndex.</li>
<li>Now we can easily read the velocity of a body thanks to a getter.</li>
<li>Thanks to ObjectMaker we can define vertices using Tiled Map Editor software.</li>
<li>Update on Starling RC 1.3 + added its new AssetManager class.</li>
<li>StarlingArt is now able to dispose automatically basic DisplayObject.</li>
<li>Starling&#8217;s AnimationSequence has a clone method.</li>
<li>Starling&#8217;s AnimationSequence dispatch onAnimationComplete Signal.</li>
</ul>
<p><strong>The Input Package</strong></p>
<p>Prior to this update , the Input class was cleverly handling the keyboard with justPressed and isDown giving the basic but very useful methods to define what to do in your update loops as a response to input</p>
<p>Since this new input package is an important step for input handling and it introduces a new way of handling it, It requires some explanation on its origins so you can fully grasp why it was made and what you can use it for.</p>
<p>Introduction :<br />
The basic idea that made this new system came to life is : <strong>identifying the player&#8217;s intentions </strong>and not the key he is pressing. The best way to do that is to have the actual “intention” be easily identifiable &#8211; as a string, and that&#8217;s how this system works. Intentions are actions like “jump” or “duck” or “fly”, and it makes coding your game objects so much easier&#8230;</p>
<p>This means a lot for CE users : you no longer have to remember key codes or import flash.ui.Keyboard to have them of course, you can change the key configuration of your game in real time (a feature a lot of desktop gamers desperately want to have sometimes) and by extrapolating the idea further : it gives room for a wide variety of controllers ( gamepads , socket) … The Hero class would no longer need to know from which controller the “call” came from. Unifying any possible input styles is the best thing a game engine could need.</p>
<p>Inside the system :<br />
Now I hope I got you a bit excited about this new feature. This was inspired by the <a title="Midi Technical Specs" href="http://en.wikipedia.org/wiki/MIDI#Technical_specifications" target="_blank">MIDI</a> system : note on , note off, and continuous controller signals (but with a twist). We also thought of an on-screen joystick and buttons for games targeting tablets which was an idea that totally fit in the new input system and even got us to go further and made it what it is now.</p>
<p>How to use it :<br />
We left backwards compatible versions of isDown and justPressed in the Input so the basic games should still run without having to change much code, however If you are using special controls and custom objects requiring other keycodes than the simple arrows and spacebar configuration then you should migrate to the new system or your game will be &#8220;broken&#8221;. And here&#8217;s how to migrate/use the system :</p>
<p>inside your &#8220;hero&#8221;, you can now use</p>
<pre class="brush: as3; title: ; notranslate">
if(_ce.input.justDid(&quot;fly&quot;, inputChannel))
{
    //insert &quot;start flying&quot; code here
}

if(_ce.input.isDoing(&quot;fly&quot;, inputChannel))
{
   //if you are using a controller such as a joystick and want to give more control to your player, you can use the new getActionValue method
   var flying_intensity:Number = _ce.input.getActionValue(&quot;fly&quot;, inputChannel);
   //and apply it.
   _body.velocity.y = - flying_intensity * 150; //this is just an example application, it might not be as accurate as you'd want it to.

   //insert other &quot;flying&quot; code here
}
</pre>
<p>inputChannel should be a class property defining the channel the game object will listen to.<br />
Now in your state get the default keyboard from CE&#8217;s input instance, and add new actions to your keyboard :</p>
<pre class="brush: as3; title: ; notranslate">
//your hero can listen to channel 1 this way.
hero.inputChannel = 1;

var keyboard:Keyboard = CitrusEngine.getInstance().input.keyboard as Keyboard;
//and here we can add the &quot;fly&quot; action to the keyboard, that will only be sent to channel 1.
keyboard.addKeyAction(&quot;fly&quot;, Keyboard.F,1);
</pre>
<p>Now the F key will tell Input that the player wants to fly, and your hero will respond to that.<br />
The keyboard sends values of 1 when an action is on, so getActionValue is not interesting in this case, but if you are going to use the VirtualJoystick it will be.</p>
<pre class="brush: as3; title: ; notranslate">
//create a virtual joystick input controller :
var vj:VirtualJoystick = new VirtualJoystick(&quot;joy&quot;,{radius:120,defaultChannel:1});

//add the &quot;fly&quot; action to the Y axis of the joystick, when joystick is between -1 and 0
vj.addAxisAction(&quot;Y&quot;,&quot;fly&quot;,-1,0);
</pre>
<p>Now you can fly with the F key, or with the virtual joystick, with the added bonus that VirtualJoystick will control the velocity more precisely.</p>
<p>In this example we have decided to use channel number 1 but it is completely optional, if you do not want to set channels up, everything will go through channel 0.</p>
<p>A purposeful system :</p>
<p>Basically, it is a messaging system but focused on input, as using this for any other type of internal messaging is not recommended (you better use the Signal package). As long as you have access to the CitrusEngine Input instance, whether it be from your game menu or game objects, you can know what the user <strong>wants</strong> to do.</p>
<p>If it&#8217;s a “virtual controller” it&#8217;d be the same. It is conceivable to have a “socket” input controller (which you can create by extending the InputController class) from which data from an external server would be parsed and send actions to the input system, so you could control your game through IP very easily if you are into highly experimental stuff such as performance art that need to communicate with electronics (yes because CE can be used for anything !) .<br />
A virtual controller can also be an AI &#8211; so your main hero or enemies can be controller by an AI without having to hardcode it inside the class, but simply switching it&#8217;s inputChannel.<br />
This of course can have unwanted effects since the physics engine is unpredictable but you can still experiment with this possibility.</p>
<p>Other features :</p>
<p>you can route all input actions to a single channel if you need to : for example if you bring up a pause menu &#8211; so all the keyboard (or any other controller) actions get routed to the channel you want for your menu&#8217;s UI and in the background, the player&#8217;s character will no longer react to input.<br />
This came along with the development of TimeShifter, so we are waiting for your feedback on this feature, or any other features you&#8217;d want to be added or modified.</p>
<p>the following will route all input action to channel 5 when a menu comes up for example:</p>
<pre class="brush: as3; title: ; notranslate">
_ce.input.startRouting(5);
</pre>
<p>when you are done of course, just call</p>
<pre class="brush: as3; title: ; notranslate">
_ce.input.stopRouting();
</pre>
<p><strong>TimeShifter</strong></p>
<p>TimeShifter is an experimental class that saves the property changes on each frame, which means you can replay actions (kill-cams?) or rewind time, as long as you have registered the properties you want to be saved. It also takes snapshots of actions in the input system so they can get replayed. Replaying actions only is however not the best way to replay a section of gameplay since physics engines are non-deterministic and your player might fall on a platform in one replay and fall off of it on the next replay even though the snapshots are exactly the same.<br />
When constructing a TimeShifter instance, you need to define the maximum size of the buffer (in seconds) since it consumes memory to save &#8220;states&#8221; of properties and the buffer length shouldn&#8217;t be infinite (or it would be similar to a highly &#8216;dangerous&#8217; memory leak).<br />
As of now, this buffer length you define will be the amount of time that will be replayed or rewounded. For our <a href="http://citrusengine.com/bin/Braid-Demo.html" target="_blank">Braid demo</a>, we keep 20 seconds of buffer, but for a simple &#8220;kill-cam&#8221; replay style, you&#8217;d just need 5 seconds or less.</p>
<p>Here&#8217;s how to start a delayed replay :</p>
<pre class="brush: as3; title: ; notranslate">
// we want a maximum buffer size of 5 seconds.
var timeshifter:TimeShifter = new TimeShifter(5);
//and we want to replay the action 0.2 seconds after a coin has been hit
coin.onEndContact.add( function(e:InteractionCallback):void { timeshifter.startReplay(0.2); });
</pre>
<p>As of now, TimeShifter listens to channel 16 for the &#8220;timeshift&#8221; action.<br />
It is good to consider a certain channel to be an &#8220;internal&#8221; channel for such purposes &#8211; we arbitrarily chose 16.</p>
<p>TimeShifter only records what you ask it to. So let&#8217;s just take a look at how we set up the recording for a hero&#8217;s position and animations</p>
<pre class="brush: as3; title: ; notranslate">
timeshifter.addBufferSet(
{ object:hero,
continuous:[&quot;x&quot;, &quot;y&quot;],
discrete:[&quot;dead&quot;,&quot;inverted&quot;, &quot;collideable&quot;, &quot;animation&quot;, &quot;animationFrame&quot;] } );
</pre>
<p>the idea here is to give it continuous values (positions for example that will be interpolated linearly when the speed of playback is lower than 1)<br />
and discrete values such as booleans or strings to record.<br />
so what will be recorded here are publicly accessible (and not read-only) properties :<br />
-continuous:<br />
object.x<br />
object.y<br />
-discrete booleans:<br />
object.dead<br />
object.inverted<br />
object.collideable<br />
-discrete strings:<br />
object.animation<br />
-discrete int:<br />
object.animationFrame (which is a number, but cannot be interpolated as AnimationSequences would not know what frame 1.2345 is.<br />
Check out the <a href="https://github.com/alamboley/Citrus-Engine-Examples/tree/master/src/games/braid" target="_blank">Braid demo&#8217;s source code</a> to learn more about how you can use this system.</p>
<p><strong>Multiplayer friendly</strong><br />
Thanks to this new input system, we are able to make a multiplayer game using the Citrus Engine. First of all, I would like to highlight that making a multiplayer game based on physics engine is something complicated. Here are two links with very good references : <a href="http://gafferongames.com/game-physics/networked-physics/" target="_blank">Glenn Fiedler&#8217;s blog</a> (also very useful for <a href="http://gafferongames.com/game-physics/fix-your-timestep/" target="_blank">FRIM</a>) and a <a href="https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking" target="_blank">Valve article</a>.<br />
A quick and dirty <a href="http://citrusengine.com/bin/Multiplayer-Quick-Test.html" target="_blank">demo</a> made with <a href="http://www.unionplatform.com/" target="_blank">Union Platform</a> and their free services for quick testing (expect lags so some collisions may not happen!). Source code commented <a href="https://github.com/alamboley/Citrus-Engine-Examples/tree/master/src/multiplayer" target="_blank">there</a>. Obviously this demo needs lots of work to be fully functional like object&#8217;s movement interpolation when a new state snapshot is received, occupants management, ect&#8230; But it shows that the Citrus Engine thanks to this new input system is now multiplayer friendly!</p>
<p>We hope that you will love this update. Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-1-0-new-input-system-nape-2-multiplayer-friendly-meet-braid/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>V3.0.4 meets the Dragon!</title>
		<link>http://citrusengine.com/v3-0-4-meets-the-dragon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=v3-0-4-meets-the-dragon</link>
		<comments>http://citrusengine.com/v3-0-4-meets-the-dragon/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 11:16:35 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Citrus Engine]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=405</guid>
		<description><![CDATA[Yesterday when we pushed the version 3.0.3 we didn&#8217;t know that one day after, we&#8217;ll push a new build. We&#8217;d some time to take a look on DragonBones, the Open Source 2D skeleton animation solution for Flash. Quickly, it appears &#8230; <a href="http://citrusengine.com/v3-0-4-meets-the-dragon/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yesterday when we pushed the version 3.0.3 we didn&#8217;t know that one day after, we&#8217;ll push a new build. We&#8217;d some time to take a look on <a href="http://dragonbones.github.com/" target="_blank">DragonBones</a>, the Open Source 2D skeleton animation solution for Flash. Quickly, it appears that it was a must have to support into the Citrus Engine. One hour later, it was already included!</p>
<p>At the same time we have created a new ObjectMaker class exclusively for Starling, to improve performances. Therefore we have updated the parser for the <a href="http://www.mapeditor.org/" target="_blank">Tiled Map Editor</a> software.</p>
<p>This update has been pushed quickly so every guys going to the <a href="http://adobegamejamchi.eventbrite.com/#" target="_blank">Adobe Game Jam</a> in Chicago can test this new features. Also we&#8217;re very pleased to announce that <a href="http://citrusengine.com/author/nick/" target="_blank">Nick</a>, a CE&#8217;s contributor, will be present at this game jam!<span id="more-405"></span></p>
<ul>Changelog:</p>
<li>DragonBones support for StarlingArt class.</li>
<li>Moved ObjectMaker2D &#038; 3D classes and tmx package into a new objectmakers package.</li>
<li>Create a new ObjectMakerStarling class with a parser for Tiled Map Editor&#8217;s files optimized for Starling. </li>
</ul>
<p><strong>DragonBones</strong><br />
Our beloved Patch character meets the Dragon, <a href="http://citrusengine.com/bin/Citrus-Engine-DragonBones.html" target="_blank">quick demo</a>.<br />
How can we add a DragonBones object as a view of a CitrusObject? Simply like any other object :</p>
<pre class="brush: as3; title: ; notranslate">_armature = _factory.buildArmature(&quot;Dragon&quot;);
var dragon:Hero = new Hero(&quot;dragon&quot;, {x:150, width:60, height:135, view:_armature});
add(dragon);</pre>
<p>You can find all the demo code on the <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/src/dragonbones/DragonBonesGameState.as" target="_blank">GitHub for examples</a>. Be careful, we&#8217;ve modified &#8220;stand&#8221; Dragon&#8217;s animation name into &#8220;idle&#8221; so it respects Citrus Engine&#8217;s Hero animation name.</p>
<p><strong>ObjectMakerStarling</strong><br />
We&#8217;ve created a new ObjectMaker class exclusively for Starling, to provide optimized graphics. ObjectMaker2D stays compatible with Starling but you should use ObjectMakerStarling class if it provides method for the Level Editor you use. At the moment, there is a parser for Tiled Map Editor which use TextureAtlas and Quad Batch instead of Bitmap. Check its code example <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/src/tiledmap/starling/StarlingTiledMapGameState.as" target="_blank">here</a>.<br />
Here we&#8217;ve created a TextureAtlas (<a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/embed/tiledmap/Genetica-tiles-atlas.png" target="_blank">Genetica-tiles-atlas</a>, you may need to check the Extrude option using <a href="http://www.codeandweb.com/texturepacker/" target="_blank">TexturePacker</a>) with all the tiles. In the editor, we import the <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/embed/tiledmap/Genetica-tiles.png" target="_blank">Genetica-tiles png</a> and for each tile we give it the name corresponding to its <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/embed/tiledmap/Genetica-tiles-atlas.xml" target="_blank">texture atlas name</a>. That does the trick!<br />
Open the <a href="https://github.com/alamboley/Citrus-Engine-Examples/blob/master/embed/tiledmap/map-atlas.tmx" target="_blank">map-atlas.tmx</a> and check how we named a tile. We can automate the process easily writing a simple script and copy/paste the result.<br />
A video tutorial is in the pipeline.</p>
<p>That&#8217;s it for today. Have a nice meetup with Nick at Chicago!</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/v3-0-4-meets-the-dragon/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Updated to Version 3.0.3</title>
		<link>http://citrusengine.com/updated-to-version-3-0-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=updated-to-version-3-0-3</link>
		<comments>http://citrusengine.com/updated-to-version-3-0-3/#comments</comments>
		<pubDate>Wed, 28 Nov 2012 11:28:01 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Citrus Engine]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=393</guid>
		<description><![CDATA[Hi! We are happy to offer a new build one week after the previous one. The release rhythm is sustained to provide quickly new features and inform on the direction of the engine. We always detail the changelog as much &#8230; <a href="http://citrusengine.com/updated-to-version-3-0-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hi!</p>
<p>We are happy to offer a new build one week after the previous one. The release rhythm is sustained to provide quickly new features and inform on the direction of the engine. We always detail the changelog as much as possible so you can upgrade without pain.</p>
<p>The <a href="http://citrusengine.com/showcase/" target="_blank">showcase</a> page has been updated with two new games : <a href="http://www.newgrounds.com/portal/view/606457" target="_blank">Stack of Defence</a> which is a nice mix of tower defence and physics game and <a href="https://www.facebook.com/aichaetvous/app_449473045088858" target="_blank">Les aventures d’Aïcha</a> a platformer game using Starling where you control several characters having different skills!<br />
<a href="http://inflagrantedelicto.memoryspiral.com/" target="_blank">Joseph Labrecque</a>, a well known person in the Flash community, has made a <a href="http://memoryspiral.com/ludumdare/parentalnightmare/" target="_blank">game</a> using the Citrus Engine during the <a href="http://www.charitygamejam.com/" target="_blank">Charity Game Jam</a> which was last week-end. He shares his <a href="http://blogs.adobe.com/educationleaders/2012/11/charity-game-jam-with-citrus-starling-box2d-targeting-flash-player-and-stage3d.html" target="_blank">experience with source code</a>!</p>
<p>This time we didn&#8217;t need to make bug fixes (good news concerning the stability of the engine!), we have added some cool improvements (PoolObject managed by the State, ATF, <a href="http://www.mapeditor.org/" target="_blank">Tiled Map Editor</a> ObjectMaker improved) and announcing the future V3.1.0 which will be multiplayer friendly! Also there is a <a href="http://citrusengine.com/support/" target="_blank">support page</a> now and we invite you to give it a look.<span id="more-393"></span></p>
<ul>This is the changelog :</p>
<li>optimized MathVector class.</li>
<li>a PoolObject can be rendered through the State/StarlingState classes.</li>
<li>the LevelManager class can load tmx file.</li>
<li>ATF file format are supported by the StarlingTileSystem class.</li>
<li>tiled map objectmaker uses dynamic tileset name.</li>
<li>ObjectMaker FromTiledMap support now multipe tileSets.</li>
<li>added a RevolvingPlatform in box2d platformer&#8217;s package.</li>
<li>the Starling&#8217;s AnimationSequence class has a new parameter : the smoothing. Default is bilinear.</li>
</ul>
<p>The Ant tasks has been updated to generate the 11 swcs in just one click.</p>
<p><strong>Future input system</strong><br />
We&#8217;ve starting to work on a new input system. Firstly, it&#8217;ll help to be able to change quickly input keyboard keys. At the moment they are hard coding. We&#8217;ll add a Joystick support for playing on mobile and a Button class. The input will be injected, therefore we won&#8217;t make anymore conditions on input key but on Actions. It doesn&#8217;t matter if it comes from Keyboard, Joystick, &#8230; or from a server! At the same time it&#8217;ll use a channel system so it will help to have several players on the same game locally, or in a real multi-player mode! And finally we&#8217;ll also have a cool replay system, to be able to replay our previous actions. Sound awesome? Stay tuned!</p>
<p><strong>Donation and support for companies</strong><br />
We&#8217;ve opened a <a href="http://citrusengine.com/support/" target="_blank">support section</a>. Companies desiring a strong support may work with a freelancer. You can also make a donation which will be divided fairly between contributors or help to &#8220;hire&#8221; a specialist to work on an advanced feature requested by the community.<br />
The Citrus Engine is 100% Open-Source, free, and strongly supported. And it will always be!</p>
<p>As always, feedbacks are welcomed! Happy coding! </p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/updated-to-version-3-0-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Create UI, menu and meet the LevelManager</title>
		<link>http://citrusengine.com/create-ui-menu-and-meet-the-levelmanager/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=create-ui-menu-and-meet-the-levelmanager</link>
		<comments>http://citrusengine.com/create-ui-menu-and-meet-the-levelmanager/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 18:54:13 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Citrus Engine]]></category>
		<category><![CDATA[Feathers]]></category>
		<category><![CDATA[Level Manager]]></category>
		<category><![CDATA[Starling]]></category>

		<guid isPermaLink="false">http://citrusengine.com/?p=332</guid>
		<description><![CDATA[In this tutorial we&#8217;ll create a basic User Interface for a game using several methods (flash pro, Starling, Feathers) and learn how to use the LevelManager class. Theory We&#8217;re creating a game using Starling framework. It means that it runs &#8230; <a href="http://citrusengine.com/create-ui-menu-and-meet-the-levelmanager/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In this tutorial we&#8217;ll create a basic User Interface for a game using several methods (flash pro, Starling, <a href="http://feathersui.com/" target="_blank">Feathers</a>) and learn how to use the LevelManager class.<span id="more-332"></span></p>
<p><strong>Theory</strong><br />
We&#8217;re creating a game using <a href="http://gamua.com/starling/" target="_blank">Starling</a> framework. It means that it runs on Stage3D technology. So the first thing you have to take care of is : don&#8217;t mix flash display list elements with Stage3D content, or there will be bad performances. The game HUD must use Starling elements or Feathers.<br />
For the menu, there is an other deal : you may create it inside Flash Pro and use it quickly. If there isn&#8217;t any fancy effect, performances will be fine.</p>
<p><em>StarlingState</em> class extends <em>starling Sprite</em> class, so it means you can easily <em>addChild</em> HUD elements which will be on top of your game. Don&#8217;t use <em>StarlingState</em> class as a menu or anything which is not the game.</p>
<p>By default, the game state will be displayed at index 0. It can be easily changed thanks to the <em> _stateDisplayIndex</em> protected property from <em>CitrusEngine</em> class. Don&#8217;t forget that the state is added once a new one is created.</p>
<p>Finally, if you use Starling for your menu, be sure that the Context3D has been created before adding any object to Starling. You just need to override the protected <em>_context3DCreated</em> method from <em>StarlingCitrusEngine</em>.</p>
<p><strong>Level Manager</strong><br />
In many games, you can choose a level. Most of the code can be similar between each level : the way they are created, camera target, the logic itself&#8230; The Citrus Engine, thanks to the <em>LevelManager</em> class, helps you to create quickly new levels. The LevelManager is based on an abstract class : in this class you will create everything which is common to each level. Keep in mind that everything should be overridable. Then you create one class by level which extends your abstract class and you&#8217;ll be able to redefine what you need and add new stuff.<br />
There is a <a href="https://gist.github.com/4024256" target="_blank">snippet</a> which explains how to set up the <em>LevelManager</em>. It is a bit complex to handle at first since there are many things to set up, but very powerful later. Use it, or create your own.</p>
]]></content:encoded>
			<wfw:commentRss>http://citrusengine.com/create-ui-menu-and-meet-the-levelmanager/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.653 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-18 21:57:44 -->
