<?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/" >

<channel><title><![CDATA[G&aacute;bor's Site - Blog]]></title><link><![CDATA[http://www.gaborbacsi.com/blog]]></link><description><![CDATA[Blog]]></description><pubDate>Sat, 10 Dec 2022 11:17:46 -0800</pubDate><generator>Weebly</generator><item><title><![CDATA[Update of last 3 and half years]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/update-of-last-3-and-half-years]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/update-of-last-3-and-half-years#comments]]></comments><pubDate>Wed, 31 Jan 2018 18:38:39 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/update-of-last-3-and-half-years</guid><description><![CDATA[Okay, so I haven't been updating for quite some time. But a lot has been achieved!We have moved from Ireland to Italy. I do not speak Italian very well, but we managed to settle in, and I'm working as a software engineer (what else) in Verona.I have founded a company! COR-GEEKS Software is at your service, making games.I have released Nibbles! Under the disguise of Snake Supreme :). I will try to make some further updates in the future, mostly game projects updates. [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Okay, so I haven't been updating for quite some time. But a lot has been achieved!<ul><li>We have moved from Ireland to Italy. I do not speak Italian very well, but we managed to settle in, and I'm working as a software engineer (what else) in Verona.</li><li>I have founded a company! <a href="https://corgeeks-software.weebly.com/" target="_blank">COR-GEEKS Software</a> is at your service, making games.</li><li>I have released Nibbles! Under the disguise of <a href="https://play.google.com/store/apps/details?id=com.corgeekssoftware.games" target="_blank">Snake Supreme</a> :).<br /></li></ul> I will try to make some further updates in the future, mostly game projects updates.</div>]]></content:encoded></item><item><title><![CDATA[Nibbles Under the Hood - Edge Guide]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/nibbles-under-the-hood-edge-guide]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/nibbles-under-the-hood-edge-guide#comments]]></comments><pubDate>Sun, 10 Aug 2014 18:52:23 GMT</pubDate><category><![CDATA[programming]]></category><category><![CDATA[Unity]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/nibbles-under-the-hood-edge-guide</guid><description><![CDATA[ Word Cup is over, Scala course on Coursera course finished, time to get to work and extend Nibbles!    One of my good friend told me that it was difficult to navigate around on a map of Nibbles, because he didn't know the layout. Naturally I knew it already, so I didn't notice it. (That was when I realized I must use outside testers a lot! Thanks, David!) I came up with two features to handle this problem:   Adding a zoom function, so you can see more ahead  Adding 'edge guides' to dynamic elem [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:left;"> Word Cup is over, Scala course on <a title="" target="_blank" href="http://www.coursera.org">Coursera</a> course finished, time to get to work and extend <a href="http://www.gaborbacsi.com/nibbles.html">Nibbles</a>!<br> </div>  <div class="paragraph" style="text-align:left;"> One of my good friend told me that it was difficult to navigate around on a map of Nibbles, because he didn't know the layout. Naturally I knew it already, so I didn't notice it. (That was when I realized I must use outside testers a lot! Thanks, David!)<br> <span>I came up with two features to handle this problem</span>:<br>  <ul> <li><span>Adding a zoom function, so you can see more ahead</span></li>  <li><span>Adding 'edge guides' to dynamic elements (collectibles) to the scene</span></li> </ul>I also fine-tuned the camera options a little bit, now it follows the snake more tightly, but I think both of the above mentioned features will be necessary. I've finished with the 'Edge Guide' feature, so let's see how it was done!<span></span><br> <span></span> </div>  <div class="paragraph" style="text-align:left;"> First, let me lay out my idea:<br> <span>The whole concept was coming from</span> <a target="_blank" href="http://en.wikipedia.org/wiki/Descent:_FreeSpace_%E2%80%93_The_Great_War"><em style="">FreeSpace &ndash; The Great War</em></a>, and <em><a target="_blank" href="http://en.wikipedia.org/wiki/The_Elder_Scrolls_V:_Skyrim">Skyrim</a>.</em> <span style="">Let's take a look at FreeSpace first:<br> <span></span></span><em style=""><br> <span></span></em> </div>  <div> <div class="wsite-image wsite-image-border-thin" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/3349716_orig.png" alt="FreeSpace" style="width:100%;max-width:640px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> Can you see the green and white thingies on the top of the screen? They follow around the edge any important out-of-sight object (targeted ship, incoming missiles), marking their direction (you have to face your ship that way to center the object), distance (the number), and also your angle to the target (the wider the guide, the more you have to turn to face the target). Pretty handy.<br> </div>  <div class="paragraph" style="text-align:left;"> Next, let's see a screenshot from Skyrim:<br> </div>  <div> <div class="wsite-image wsite-image-border-thin" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/4672286_orig.png" alt="Picture" style="width:100%;max-width:1100px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> Can you see the markers on the top? No, you can't. Let me zoom in for you:<br> </div>  <div> <div class="wsite-image wsite-image-border-thin" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/3431092_orig.png" alt="Picture" style="width:100%;max-width:647px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> This is a navigation bar. It marks the direction of important locations for you, and works as a compass. (You can see the 'N' for North). The locations are marked with their own symbol, but my favorite thing was that the closer you were to a location, the bigger and less transparent the symbols were! (You can compare the the turkoise and the leftmost grey arrow-thingy.)<br> </div>  <div class="paragraph" style="text-align:left;"> Getting ideas from both concepts, I came up with the following design:<br>  <ul> <li>I need a component so an edge guide appears for the given game object</li>  <li>The edge guide appears on the edge of the screen, but on the inside, so it is visible by the player</li>  <li>The edge guide is positioned on the line connecting the object and the center of the main camera (to give the exact direction)<br></li>  <li>The edge guide is invisible if the object itself is visible</li>  <li>The edge has two components: and arrow like part, that is always poiniting to the target, and it is closer to the edge; and a symbol part, which is a visual guide of the nature of the object (typically the picture of the object itself)</li>  <li>The symbol part does not rotate, it is always right-side-up</li>  <li>The arrow part rotates, and always pointing to the object</li>  <li>the symbol part is always behind the arrow part, closer to the center of the screen</li>  <li>the further away the object is, the smaller and more transparent the edge guide is (both arrow and symbol), but only if it's possible to implement (SPOILER ALERT: it is)<br></li> </ul>Something like this:<br> <span></span> </div>  <div> <div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/7674440_orig.png" alt="Picture" style="width:100%;max-width:555px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> Let's see how can we implement this.<br> </div>  <div class="paragraph" style="text-align:left;"> First, let's notice, that the whole edge guide is rotating around the tip of the arrow. The symbol part however isn't rotated relative to the screen.<br> <span>This</span> gives us a structure, where the edge guide consists of two objects (an arrow and a symbol), where the symbol is the child of the arrow in the hierarchy.<br> <span>So let's say the center of rotation is the red dot, and we rotate the edge guide:</span><br> </div>  <div> <div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/9569069_orig.png" alt="Picture" style="width:100%;max-width:123px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> Almost good, but the symbol is not okay, it needs to be rotated to the opposite way:<br> </div>  <div> <div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/9236354_orig.png" alt="Picture" style="width:100%;max-width:132px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> Perfect. Now let's fire up the Unity editor, (and Visual Studio / VS Express if you prefer), and implement it.<br> </div>  <div class="paragraph" style="text-align:left;"> Let's create a new C# script, called 'EdgeGuide'. We will attach the script to our objects of interests.<br> <span>The first thing we need to do is test the object if it's visible form the main camera, or not. It would seem straightforward to use MonoBehaviour.OnBecameVisible() and MonoBehaviour.OnBecameInvisible(), but it wouldn't work. The reason for that - according to <a title="" target="_blank" href="http://pixelnest.io/tutorials/2d-game-unity/parallax-scrolling/">this</a> tutorial - is that these methods will take every camera into account, <strong>including the scene editor camera.</strong> So your results will be different in the editor, and in the built game.<br> <span>We have to develop our own solution, which will be a shamless steal from the <a title="" target="_blank" href="http://pixelnest.io/tutorials/2d-game-unity/parallax-scrolling/">previously mentioned</a> tutorial.</span></span> </div>  <div class="paragraph" style="text-align:left;"> So every frame we test if the object is visible, hide the the edge guide if it does, or show if it doesn't. Here is our Update(...) method (called every frame):<span></span><br> </div>  <div> <div id="477863546951032417" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml">  <?prettify?> <pre class="prettyprint" style="line-height:20px;font-size:18px">  void Update () {<br>  Plane[] planes = GeometryUtility.CalculateFrustumPlanes(mainCamera);<br>  if (!GeometryUtility.TestPlanesAABB(planes, thisRenderer.bounds)) {<br>    //... show edge guide<br>  } else {<br>    //... hide edge guide<br>  }<br>}<br> </pre> </div> </div>  <div class="paragraph" style="text-align:left;"> We will use 'planes' variable later, so we save it for later. These planes are the boundaries of the visible area of the camera. Everything inside is visible, outside is not.<br> </div>  <div class="paragraph" style="text-align:left;"> Let's see what happens when we want to show the edge guide.<br> We need to find the edge point The edge point is where the edge huide should be centered. For this, we create a 'Ray' that origins from the camera position, and points to the object itself. Then we test all the planes for this ray, and save the smallest distance:<br> </div>  <div> <div id="978475575191743146" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml">  <?prettify?> <pre class="prettyprint" style="line-height:20px;font-size:18px">  void Update () {<br>  Plane[] planes = GeometryUtility.CalculateFrustumPlanes(mainCamera);<br>  if (!GeometryUtility.TestPlanesAABB(planes, thisRenderer.bounds)) {<br>    Vector3 rayOrigin = mainCamera.transform.position;<br>    rayOrigin.z = transform.position.z;<br>    Ray ray = new Ray(rayOrigin, transform.position - rayOrigin);<br>    float smallestDistance = findEdgePoint(planes, ref ray);<br>  } else { <br>    // ... hide edge guide<br>  }<br>}<br><br>private static float findEdgePoint(Plane[] borderingPlanes, ref Ray rayToTarget) {<br>  float smallestDistance = -1.0f;<br>  foreach (Plane plane in borderingPlanes) {<br>  float rayDistance;<br>  if (plane.Raycast(rayToTarget, out rayDistance)) {<br>    if (smallestDistance &lt; 0.0f || rayDistance &lt; smallestDistance)<br>      smallestDistance = rayDistance;<br>    }<br>  }<br>  return smallestDistance;<br>}<br> </pre> </div> </div>  <div class="paragraph" style="text-align:left;"> Negative value is returned if none of the planess intersects the ray, but in our case this is impossible. We take the safe route in our code anyway.<br> </div>  <div class="paragraph" style="text-align:left;"> Setting the scale of the edge guide is trivial, but setting the opacity is not. I needed some <a target="_blank" href="http://forum.unity3d.com/threads/changing-an-objects-transparency-during-runtime.46134/">research</a> in this matter, but in the end it turned out to be really easy. Here is the code:<br> </div>  <div> <div id="526255865942718626" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml">  <?prettify?> <pre class="prettyprint" style="line-height:20px;font-size:18px">  private void setOpacity(Renderer renderer, float value) {<br>  Color color = renderer.material.color;<br>  color.a = value;<br>  renderer.material.color = color;<br>}<br> </pre> </div> </div>  <div class="paragraph" style="text-align:left;"> These are the interesting parts of the edge guide. Oh, one more thing, I've set the center of my arrow sprite to the tip of the arrow in Unity's sprite editor, so it automatically rotates around the right way:<br> </div>  <div> <div class="wsite-image wsite-image-border-thin" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/4064243_orig.png" alt="Picture" style="width:100%;max-width:877px"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:left;"> I've uploaded the whole EdgeGuide.cs <a href="http://www.gaborbacsi.com/uploads/3/0/1/8/30188245/edgeguide.cs">here</a>, for anyone interested. Study or use it for whatever you like!<br> </div>  <div class="paragraph" style="text-align:left;"> Happy coding!<br> </div> ]]></content:encoded></item><item><title><![CDATA[No Free Time!]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/no-free-time]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/no-free-time#comments]]></comments><pubDate>Mon, 23 Jun 2014 22:47:57 GMT</pubDate><category><![CDATA[personal]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/no-free-time</guid><description><![CDATA[I definately cannot update Nibbles this week.  Reason Number One is FIFA World Cup. I've implemented the camera moves during the matches, but not any more, it is not gonna work for more complex stuff.  Reason Number Two is my Scala / Functional Programming course I'm doing on Coursera. Coursera is awesome BTW. I recommend it to anyone. So my class is about to be finished, and there is one more big assigment to make, the deadline is this Sunday.  Hopefully next week will be more busy! I've decide [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:left;">I definately cannot update <a href="http://www.gaborbacsi.com/nibbles.html">Nibbles </a>this week.<br /></div>  <div class="paragraph" style="text-align:left;">Reason Number One is FIFA World Cup. I've implemented the camera moves during the matches, but not any more, it is not gonna work for more complex stuff.<br /></div>  <div class="paragraph" style="text-align:left;">Reason Number Two is my Scala / Functional Programming course I'm doing on <a target="_blank" href="https://www.coursera.org/">Coursera</a>. <a target="_blank" href="https://www.coursera.org/">Coursera </a>is awesome BTW. I recommend it to anyone. So my class is about to be finished, and there is one more big assigment to make, the deadline is this Sunday.<br /></div>  <div class="paragraph" style="text-align:left;">Hopefully next week will be more busy! I've decided to add Unity3D related post to this blog, whenever I finish something. This way not only you will get regular Sneak Peaks, but you can see under the hood a little bit!<br /></div>  <div class="paragraph" style="text-align:left;">See you next week!<br /></div>]]></content:encoded></item><item><title><![CDATA[New Sneak-Peak for Nibbles: Camera Moves]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/new-sneak-peak-for-nibbles-camera-moves]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/new-sneak-peak-for-nibbles-camera-moves#comments]]></comments><pubDate>Wed, 18 Jun 2014 21:58:47 GMT</pubDate><category><![CDATA[Nibbles]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/new-sneak-peak-for-nibbles-camera-moves</guid><description><![CDATA[ I've implemented the camera moves: now the camera follows the snake, in a kind-of natural way. Now I can make huge maps! I've already designed a bigger one, I call it "Crosses". It has medium difficulty, and little bit bigger.    Because the camera moves now, you cannot see the whole map. Unfortunately guides for the nearest "star" are not yet implemented, you have to search for them! And as usual you will have to reload the page after the game ends. That's why it's a sneak-peak! It is not a co [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:left;"> <a title="" href="http://www.gaborbacsi.com/nibbles-work-in-progress-180614---camera-moves.html">I've implemented the camera moves</a>: now the camera follows the snake, in a kind-of natural way. Now I can make huge maps! I've already designed a bigger one, I call it "Crosses". It has medium difficulty, and little bit bigger.<br> </div>  <div class="paragraph" style="text-align:left;"> Because the camera moves now, you cannot see the whole map. Unfortunately guides for the nearest "star" are not yet implemented, you have to search for them! And as usual you will have to reload the page after the game ends. That's why it's a sneak-peak! It is not a completed game AT ALL.<br> </div>  <div class="paragraph" style="text-align:left;"> The controls are the usual ones: Arrow keys and W-S-A-D are directions (or Q-C; E-Z), and ENTER or P starts and pauses the game. Enjoy it <a title="" href="http://www.gaborbacsi.com/nibbles-work-in-progress-180614---camera-moves.html">HERE</a>, and don't forget to give feedback!<br> </div>  <div> <div id="695054588601542744" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"> <!-- Place this tag where you want the +1 button to render. -->  <div class="g-plusone" data-annotation="inline" data-width="300"></div><!-- Place this tag after the last +1 button tag. -->  </div> </div> ]]></content:encoded></item><item><title><![CDATA[Balance]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/balance]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/balance#comments]]></comments><pubDate>Mon, 26 May 2014 20:42:23 GMT</pubDate><category><![CDATA[personal]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/balance</guid><description><![CDATA[ Balancing your life can get very difficult if you work on something in your free-time.    I work as a software engineer on my day job, and I've decided to also work on my game in my free time. I basically had 3 choices:     Sleep less  Work less  Have fun less     Let's examine these possibilities:   Sleep less: if you don't want to or cannot&nbsp; experiment with polyphasic sleep schedule, it is quite impossible. I recommend to always sleep enough, and be well rested. You need all your brain p [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:left;"> Balancing your life can get very difficult if you work on something in your free-time.<br> </div>  <div class="paragraph" style="text-align:left;"> I work as a software engineer on my day job, and I've decided to also work on my game in my free time. I basically had 3 choices:<br> </div>  <div class="paragraph" style="text-align:left;"> <ol> <li>Sleep less</li>  <li>Work less</li>  <li>Have fun less<br></li> </ol> </div>  <div class="paragraph" style="text-align:left;"> Let's examine these possibilities:<br>  <ol> <li>Sleep less: if you don't want to or cannot&nbsp; experiment with <a title="" target="_blank" href="http://en.wikipedia.org/wiki/Polyphasic_sleep">polyphasic sleep</a> schedule, it is quite impossible. I recommend to always sleep enough, and be well rested. You need all your brain power. You can even<span style="line-height: 0; display: none;">&#65279;</span> <strong>exercise more</strong><span style="line-height: 0; display: none;">&#65279;</span>: I've invested in a pair of quality running shoes, and I go run whenever I can (usually twice a week). Sittting in front of the computer is not very healthy, and exercise helps you sleep well too. Sometimes I can think about future features during run. It does worth to exercise instead of coding once or twice a week. </li>  <li>Work less: without changing job that is quite impossible. Be respectful to your employer. But try to have a tight schedule, and don't work overtime! Now that you have your own project you need every minute. Timebox your workday. I try to be a little bit early too rather than staying later, but whatever your preference is.</li>  <li>Have fun less: I've actually chose this one. And for me "have fun less" means "go to pub less" and "drink less". I won't have hangover, and I have more time. Friday is still "after work pub" day, but that one is kind of scheduled now. I didn't cut back on general internet browsing, and games, my other fun activities. I don't turn down occasional invitations either (barbeque, restaurant, etc...).<br></li> </ol> </div>  <div class="paragraph" style="text-align:left;"> Very important: don't steal your time from your family, partner, or other people who you are close to (including pets). It can be very difficult, but if they understand that this project is very important to you they will understand.<span></span><br> </div>  <div class="paragraph" style="text-align:left;"> Good luck!<br> </div>  <div class="paragraph" style="text-align:left;"> PS.: Don't cut back on hygiene ;-)<br> </div>  <div> <div id="606641291194785653" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"> <!-- Place this tag where you want the +1 button to render. -->  <div class="g-plusone" data-annotation="inline" data-width="300"></div><!-- Place this tag after the last +1 button tag. -->  </div> </div> ]]></content:encoded></item><item><title><![CDATA[Why Unity3D?]]></title><link><![CDATA[http://www.gaborbacsi.com/blog/why-unity3d]]></link><comments><![CDATA[http://www.gaborbacsi.com/blog/why-unity3d#comments]]></comments><pubDate>Sun, 25 May 2014 14:13:50 GMT</pubDate><category><![CDATA[Cocos2d]]></category><category><![CDATA[Unity]]></category><guid isPermaLink="false">http://www.gaborbacsi.com/blog/why-unity3d</guid><description><![CDATA[ If you want to create a multiplatform game, you have numerous choices.    You can create everything from scratch. That does not really feasible for a one-man team, so I won't tell more about this. I don't recommend this. I don't even recommend starting from scratch even if you aim for only one platform.    Another option is Cocos2d-x. I've tried it, it is not too bad. It is a C++ framework basically, but there are graphic tools that you can use. The main method of creating your game is through  [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:left;"> If you want to create a multiplatform game, you have numerous choices.<br> </div>  <div class="paragraph" style="text-align:left;"> You can create everything from scratch. That does not really feasible for a one-man team, so I won't tell more about this. I don't recommend this. I don't even recommend starting from scratch even if you aim for only one platform.<br> </div>  <div class="paragraph" style="text-align:left;"> Another option is <a target="_blank" href="http://www.cocos2d-x.org/">Cocos2d-x</a>. I've tried it, it is not too bad. It is a C++ framework basically, but there are graphic tools that you can use. The main method of creating your game is through coding though. It is totally free and open-source. I think it gives great freedom, you can integrate basically anything you want, but I think the development is slower.<br> </div>  <div class="paragraph" style="text-align:left;"> <a title="" target="_blank" href="http://unity3d.com/">Unity3D</a> is not free, but there is a free version. Some advanced features are disabled in that, but you can build to any platform even with the free version. A nice graphic interface, where you can drag-and-drop your features to the editor, and you can run your game inmediately. Once you ready to build to your platform, with a few clicks you can port to anything. Of course you have to take care of the different features for different platforms, but the entity based architecture allows you to enable and disable features with one click. (Example: I've implemented touch controls for my <a href="http://www.gaborbacsi.com/nibbles.html">Nibbles</a> game, but I can disable them with one click for the Web or Desktop build, and use the keyboard for control.)<br> </div>  <div class="paragraph" style="text-align:left;"> What else would you recommend?<br> </div>  <div> <div id="721199994728984908" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"> <!-- Place this tag where you want the +1 button to render. -->  <div class="g-plusone" data-annotation="inline" data-width="300"></div><!-- Place this tag after the last +1 button tag. -->  </div> </div> ]]></content:encoded></item></channel></rss>