{"id":2973,"date":"2012-10-12T20:58:30","date_gmt":"2012-10-12T20:58:30","guid":{"rendered":"http:\/\/www.drmop.com\/?p=2973"},"modified":"2012-10-13T11:00:48","modified_gmt":"2012-10-13T11:00:48","slug":"iwgame-engine-0-4-has-landed-massive-update-lua-camera-and-more","status":"publish","type":"post","link":"http:\/\/www.drmop.com\/index.php\/2012\/10\/12\/iwgame-engine-0-4-has-landed-massive-update-lua-camera-and-more\/","title":{"rendered":"IwGame Engine 0.4 has Landed &#8211; Massive Update, Lua, Camera and more"},"content":{"rendered":"<p><!--adsandwich--><br \/>\n<a href=\"http:\/\/www.drmop.com\/wp-content\/uploads\/2012\/01\/IwGameLogo2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-705\" title=\"IwGameLogo2\" src=\"http:\/\/www.drmop.com\/wp-content\/uploads\/2012\/01\/IwGameLogo2-1024x300.png\" alt=\"\" width=\"512\" height=\"150\" srcset=\"http:\/\/www.drmop.com\/wp-content\/uploads\/2012\/01\/IwGameLogo2-1024x300.png 1024w, http:\/\/www.drmop.com\/wp-content\/uploads\/2012\/01\/IwGameLogo2-300x88.png 300w, http:\/\/www.drmop.com\/wp-content\/uploads\/2012\/01\/IwGameLogo2.png 1350w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/p>\n<p>New here? What&#8217;s IwGame? IwGame is an open source free to use cross platform game and app engine for iPhone, iPad, Android, Bada, Playbook, Symbian, Windows Mobile, LG-TV, Windows and Mac, built on top of the <a title=\"Marmalade SDK\" href=\"http:\/\/www.madewithmarmalade.com\/\" rel=\"nofollow\" target=\"_blank\">Marmalade SDK<\/a>. You can find out more and download the SDK from our <a title=\"IwGame Engine\" href=\"http:\/\/www.drmop.com\/index.php\/iwgame-engine\/\" target=\"_self\">IwGame Engine page<\/a>.<\/p>\n<p>Its been a long while since we did a major update of the IwGame Engine, but we have one heck of an update for you today. We have a huge number of new features, changes and bug fixes for you.<\/p>\n<p>We&#8217;ve also got a slight license update. Basically the new license says that if you use IwGame then you MUST credit the IwGame either in the app \/ game or on the apps support web site. A VERY small price to pay for such a huge and useful engine that has taken many man months to create, test and maintain. If you cannot live with the license terms then we are willing to forego the terms for a small fee or hire one of our teams to create your project <a href=\"http:\/\/www.pocketeers.co.uk\/?page_id=8\">(get in touch to discuss)<\/a><\/p>\n<p>Lets take a look at the complete change log:<\/p>\n<p>IwGame 0.4 Changes:<\/p>\n<ul>\n<li>AppEasy for Marmalade Project Manager and Apple Wizard tool added, easy wizard to help guide developers through the Apple iOS sign-up, certificate generation, provisioning etc..<\/li>\n<li>Over 60 XOML \/ Lua examples added showing how to use the many parts of the IwGame engine core<\/li>\n<li>New XOML documentation added, outlining the complete XOML and Lua API&#8217;s in depth<\/li>\n<li>Lua API added which enables apps to be developed without C++ or a combination<\/li>\n<li>New Script resource type added which enables scripts to be included via XOML. Globally declared scripts will exist in the global script space, whilst scene local scripts will be local to the scene<\/li>\n<li>Support for Video Camera streaming added (IWGameCam)<\/li>\n<li>New XOML resource type added that enables declaration of Video cam in XOML and streaming to a image (CIwGameVideoCam)<\/li>\n<li>Sound effects have been moved into the XOML system. You can now define and play back music and sound effects from XOML<\/li>\n<li>New RemoteReq XOML type added that enables you to make POST and GET requests declaratively<\/li>\n<li>New XOML actions added \/ old ones removed<\/li>\n<li>\t\tFromTemplate &#8211; Instantiate a XOML template from an action<\/li>\n<li>\t\tPauseTimeline &#8211; Pauses a a timeline<\/li>\n<li>\t\tCallGlobalScript &#8211; Calls a script in the global script space<\/li>\n<li>\t\tChangevideoCam &#8211; Modifies a VideoCam instance (start \/ stop)<\/li>\n<li>\t\tActivate \/ Deactive scene removed<\/li>\n<li>\t\tCallScript &#8211; Calls a script<\/li>\n<li>\t\tInline &#8211; Executes script inline<\/li>\n<li>\t\tRemoteReq &#8211; Executes a remote request<\/li>\n<li>Action \/ command parameters now support 5 parameters instead of 4<\/li>\n<li>CIwGameActionsManager now supports removal of actions with removeActions<\/li>\n<li>Actors \/ Sprites now support Orphan feature which enables them to be displayed outside their normal parent-chld hierarchy. This enables them to be layer sorted with other actors<\/li>\n<li>Actors now support percentage positioning using the new PercPos actor property. When PercPos is set to true the actors Position property is classed as a percentage of the devices screen size<\/li>\n<li>Actors \/ Sprites now have a new property called IgnoreCamera. Actors with this property set to true will ignore the scenes camera transform<\/li>\n<li>Actors now have getProperty() method that can be used to retrieve actor properties<\/li>\n<li>Actors now have an OnTick event that can call an actions list each time the actor is updated (each frame)<\/li>\n<li>Actors have other new methods including CheckCollisionRect(), getDistanceBetween() and getAngleBetween()<\/li>\n<li>Actors have many more properties that can now be set from XOML<\/li>\n<li>Actors can now handle up to 5 simultaneous Begin \/ End touch and Tapped events in XONL<\/li>\n<li>IwGameAds now sends correct user-agent for iOS and Android<\/li>\n<li>CIwGameAnimTimelinesManager now allows removal of timelines<\/li>\n<li>Image Brushes now support setting of UV coordinates directly using new UV property<\/li>\n<li>XML parser pooling system changed from global to per XML parser instance, pools are auto calculated. This eliminates the need to set up XML pools.<\/li>\n<li>Files can now transfer their data into a script when loaded<\/li>\n<li>CIwGameImage has been extended to support CIwTexture instead of CIw2DImage, also now supports dynamic images that can be modified<\/li>\n<li>CIwGameImage now has SaveBmp(), SaveTga(), SavePng() and SaveJpg() methods<\/li>\n<li>New CIwGameModScript modifier added to enable actors \/ scenes to call scripts<\/li>\n<li>Commands can now be conditionally executed using conditions<\/li>\n<li>New Commands added to program system &#8211; add_var, get_var, if_var, call_script, call_global_script, inline, from_template, music, sound, wait, debug_text, remote_req<\/li>\n<li>ChangeProgram action now supports restart command<\/li>\n<li>Scenes now support new ScriptEngine tag which defines which script engine the scene should use<\/li>\n<li>Scenes now support setProperty() and getProperty()<\/li>\n<li>Scenes now have an OnTick event that can call an actions list each time the scene is updated (each frame)<\/li>\n<li>Scene allos setting of physics time step with new PhysicsTimestep property<\/li>\n<li>Most sprite, actor and scene parameters that were fixed point based and now floating point based<\/li>\n<li>CIwGameSprite now has new methods SimpleTestOverlap() and TestOverlap()<\/li>\n<li>CIwGameBitmapSprite now supports direct setting of its Uv coordinates<\/li>\n<li>WebView (CIwGameUIWebView) completely reworked. Now uses device coordinates and can now show dynamic html \/ javascript<\/li>\n<li>XOML variables can now be made persistent so that their values are saved and restored between sessions<\/li>\n<li>XOML array variables can now be populated from comma delimited data, elements will be split at commas<\/li>\n<li>Variables can now be removed from CIwGameXomlVariableManager<\/li>\n<li>New CIwGameSettings class added that is used to save and restore engine settings. Currently controls debug trace output level and enable \/ disable device power saving<\/li>\n<li>Many new error checks and error \/ warning messages added throughout<\/li>\n<li>Slider, Imageview and TextView now support binding to integer variables<\/li>\n<li>Labels and TextViews now have a new property TextUseParentOpacity. When set to true the labels text will scale its opacity by the label images opacity, default is not to scale<\/li>\n<li>ActivateScene and DeactivateScene actions removed, activation \/ deactivation rolled into resume \/ suspend<\/li>\n<li>Actors with no size or SrcRect defined will default to 100% proportional sizing<\/li>\n<li>SetVar action now supports the generation of a random number in the same way that set_var command does<\/li>\n<li>SetVar action and set_var command when called on an array will now fill the whole array, including the random version<\/li>\n<li>SetVar action and set_var command now support generation of random characers with randchar<\/li>\n<li>P1, P2, P3, P4, P5 can now be used instead of Param1, Param2, Param3, Param4, Param5 for command and actions parameters<\/li>\n<li>All commands can now accept variable substitutions for parameters<\/li>\n<li>Conditions can now be used on arrays for string searches, number comparisons etc..<\/li>\n<li>Added new system variable array called touches. This array of integers represents the x, y, touched status of 5 simultaneous touches<\/li>\n<li>Variables passed as action and command parameters now cached to speed up access<\/li>\n<li>Raw script can now be executed inline using the new &#8220;Inline&#8221; action and &#8220;inline&#8221; command. P2 specifies scene in which to run the script (omit to run in global script space)<\/li>\n<li>Actors that have Draggable set to true will also set Hittest to true unless you override it<\/li>\n<li>All files are now Preload and Blocking by default<\/li>\n<li>If you now try to add a resource that already exists in the scope it is loaded then a warning will be displayed and the resource will be overwritten<\/li>\n<li>WebView now supports new Html attribute which can be used to pass html to the web view to be displayed<\/li>\n<li>WebView now works in screen coordinates and not virtual canvas coordinates<\/li>\n<li>Actors now have new UserData property that can be use to store a single integer, can be used to store index into script table \/ array for additional data<\/li>\n<li>Html Ads are now integrated via the web view (see section 20 of XOML User Guide)<\/li>\n<li>WebView now has OnError event handler which is called if the web view is not available<\/li>\n<li>VideoCam now has OnError event handler which is called if camera fails to start<\/li>\n<li>TTF local font loading reworked to use memory buffers<\/li>\n<li>String class optimised to minimise memory allocations and data copying<\/li>\n<li>String class now supports Occurrences() and Split() methods<\/li>\n<li>Internal slot array optimised to reduce memory allocations<\/li>\n<li>TTF local font loading reworked to use memory buffers<\/li>\n<li>Particles defined within a Particle Actor have a new property called Attached. When set to true the particles will follow the emitter, if false then they do not.<\/li>\n<li>Image brushes now have a new Tiled property that allows you to enable \/ disable tiling of the brush<\/li>\n<li>BUG FIX: Sprites no longer appear at origin on first frame<\/li>\n<li>BUG FIX: Fixed problems with CIwGameAnimInstance <\/li>\n<li>BUG FIX: Scene layering fixed and optimised<\/li>\n<li>BUG FIX: Crash when deleting or adding scenes at the same time as removing them<\/li>\n<li>BUG FIX: Scene layers now taken into account when processing touches<\/li>\n<li>BUG FIX: Patch9 based actor clipping bug fixed<\/li>\n<li>BUG FIX: Text margin for labels now fixed<\/li>\n<li>BUG FIX: Crash when assigning invalid timeline to scene<\/li>\n<li>BUG FIX: Template parameter case issue fixed<\/li>\n<li>BUG FIX: Nop command now returns immediately<\/li>\n<li>BUG FIX: Crash when not assigning brush a type. Defaults to Image with a warning<\/li>\n<li>BUG FIX: WebView was not positioned correctly when scene origin was set to something other than centre<\/li>\n<li>BUG FIX: Web view now works on iOS and Android (does not work on Windows)<\/li>\n<li>BUG FIX: AspectLock fixed<\/li>\n<li>BUG FIX: None batched sprites now render correctly at edges<\/li>\n<li>BUG FIX: Deleting particle actor that was child of another actor crashed when removing particle actor<\/li>\n<li>BUG FIX: Particle actor placed inside parent actor didn&#8217;t scale by parents opacity when UseParentOpacity set<\/li>\n<li>BUG FIX: Particle angvelmode, scalevelmode, depthvelmode names corrected<\/li>\n<li>BUG FIX: Empty Param2 in FromTenplate action \/ commands crash<\/li>\n<li>BUG FIX: Fixed changing orientation resizing<\/li>\n<li>BUG FIX: Touch panning glitch fixed<\/li>\n<li>BUG FIX: Crash fixes in CIwGameDataFile<\/li>\n<li>BUG FIX: Compass fix<\/li>\n<li>BUG FIX: Actors OnCreate event was not working<\/li>\n<li>BUG FIX: Deleting scene crash<\/li>\n<li>BUG FIX: Crash when invalid animations added to a timeline<\/li>\n<li>Many other small additions and bug fixes that we forgot to note \ud83d\ude42<\/li>\n<\/ul>\n<p>I did say there were a lot of changes \ud83d\ude42<\/p>\n<p>Lets separate some of the changes and take a look at what they mean to IwGame Engine users:<\/p>\n<h2>Moving Towards a Portable Engine<\/h2>\n<p>We have decided to make IwGame portable as we no longer see the iwGame engine as a Marmalade learning tool. With this in mind we have started abstracting Marmalade specific code out of the main code and into its own platform section (see Marm sub folders). Over time all Marmalade types, classes, functions and constants will be moved out and replaced with a universal system that can be easily ported. We will then be porting IwGame to each individual native platform, These platforms include:<\/p>\n<p>* Windows XP\/Vista\/7\/8<br \/>\n* Mac OS<br \/>\n* Android<br \/>\n* Apple iOS<br \/>\n* Windows Phone 8<br \/>\n* BlackBerry OS 10<br \/>\n* PlayStation Vita<br \/>\n* Marmalade SDK<\/p>\n<p>With this in mind you will have a couple of changes to make to get your existnig projects to work with IwGame. Here are the changes you will need to make:<\/p>\n<p>1) Add #include &#8220;Marm\\IwGamePlatformMarm.h&#8221; to your main.cpp file<br \/>\n2) Call IwGamePlatformMarm_Create(); at the start of main() before you do anything related to dynamic memory allocation or IwGame \/ Marmalade<br \/>\n3) Call IwGamePlatformMarm_Destroy();; right before you exit main() after you have done freeing memory and shutting down IwGame \/ Marmalade<\/p>\n<h2>Lua API<\/h2>\n<p>By far the most interesting addition to IwGame is the Lua API. The IwGame Lua API enables you to develop games and apps without any need to fall back to C++. Just about anything you can do in C++ you can do in Lua + XOML. We want to move IwGame towards a none compiler based system where you can create great games and apps without the need for professional level knowledge of C++ or compilers or IDE&#8217;s. In fact, we have a new service for Marmalade and none Marmalade developers called AppEasy that is built upon the IwGame core that does just that and is available at <a href=\"http:\/\/www.appeasymobile.com\">http:\/\/www.appeasymobile.com<\/a><\/p>\n<p>Actors can call scripts and scripts can create and modify actors, scenes and all sorts of other stuff. You can even execute inline script in XOML!<\/p>\n<h2>AppEasy for Marmalade<\/h2>\n<p>AppEasy for Marmalade has been included in this distribution of the IwGame engine. AppEasy for Marmalade is a cool little project manager that lets you organise assets, scripts, icons, splash screens, set app info and generate a fully working MKB project for you that you can build and deploy. We have provided this awesome tool to enable you to easily check out all of the new examples, as well as give you a taste of C++ free development.<\/p>\n<h2>Over 60 Examples<\/h2>\n<p>IwGame 0.4 comes with nearly 70 examples that show off the various parts of the SDK. Here&#8217;s a complete list of examples:<\/p>\n<p>Accelerometer \u2013 Shows how to use the accelerometer<br \/>\n\u2022 ActorChildren \u2013 Shows how actor hierarchies work<br \/>\n\u2022 ActorCollisionFlags \u2013 Shows how to use collision flags to mask collisions between actors<br \/>\n\u2022 ActorConnector \u2013 Shows how to use the connector actor to visually connect actors<br \/>\n\u2022 ActorDocking \u2013 Shows how actors can be docked to arrange them effectively on different sized screens<br \/>\n\u2022 ActorLayers \u2013 Shows how actors can be layered to add depth sorting<br \/>\n\u2022 ActorModifier \u2013 Shows how to use actor modifiers to add additional functionality to actors<br \/>\n\u2022 ActorParticles \u2013 An example that shows how to use the particles system. This example builds up to 1000 animating particles at different depths over a short period of time.<br \/>\n\u2022 ActorPhysics \u2013 Shows how to apply physics to actors<br \/>\n\u2022 AdvancedCollision \u2013 Shows how to query and interact with an actors list of start \/ end collision contacts<br \/>\n\u2022 BasicActions \u2013 Shows how to use basic actions to play and pause an animation<br \/>\n\u2022 BasicAnimation \u2013 Shows how to create basic animation and attach it to an actor<br \/>\n\u2022 BasicDataBindings \u2013 Shows how to basic data bindings. This example binds properties of an actor to different variables<br \/>\n\u2022 BitmapAnimation \u2013 Shows how to create a bitmap animation from a sprite atlas and attach it to an actor<br \/>\n\u2022 ComplexProgram \u2013 Shows how to create a slightly complex program using commands that are executed in sequence or in parallel<br \/>\n\u2022 ConditionalActions \u2013 Shows how to execute actions based on certain conditions being met<br \/>\n\u2022 ConditionalImages \u2013 Shows how to load different image sets based on conditions such as the screen size<br \/>\n\u2022 DataGrid \u2013 Shows how to create a grid user interface component and bind XML data to it<br \/>\n\u2022 Demos\/Happy Birthday \u2013 Shows image loading and basic animation<br \/>\n\u2022 Demos\/SpaceGame \u2013 Shows a basic demo of an object flying through space that can shoot bullets. Lua is used to provide the game logic<br \/>\n\u2022 DynamicWebView \u2013 This example shows how to write html directly to a web view using actions creating dynamic web content. It also shows how to use actions to navigate web pages \/ sites.<br \/>\n\u2022 Files \u2013 Shows how to load files and bind the loaded data to a label<br \/>\n\u2022 Games\/GameOf10 \u2013 A game written completely in XOML, including logic<br \/>\n\u2022 Games\/HangMan \u2013 A hang man game written in XOML and Lua<br \/>\n\u2022 Games\/RockPaperScissors \u2013 A rock paper scissors written completely in XOML<br \/>\n\u2022 HelloWorld \u2013 Basic hello world XOML example<br \/>\n\u2022 Joints \u2013 Demo that shows how to use a variety of different Box2D joints to connect actors together<br \/>\n\u2022 Music \u2013 Shows how to play and stop music using actions<br \/>\n\u2022 OverlapTest \u2013 A simple example that shows how to use script to test for overlapping actors<br \/>\n\u2022 PersistentVariables \u2013 An example that shows how variables can be made persistent across different app sessions<br \/>\n\u2022 ProgramLoops \u2013 Shows how to create and use loops in programs<br \/>\n\u2022 RemoveResources \u2013 Shows how to remove resources from the global resource manager<br \/>\n\u2022 SceneAnimation \u2013 Shows how to animate a scene<br \/>\n\u2022 SceneAugmentation \u2013 Shows how to add functionality to a scene after it has already been declared<br \/>\n\u2022 SceneClipping \u2013 Shows how to change the clipping extents of a scene<br \/>\n\u2022 SceneEvents \u2013 Shows how to use and handle scene events<br \/>\n\u2022 SceneExtents \u2013 Shows how to change a scenes extents<br \/>\n\u2022 SceneLayers \u2013 Shows how to layer scenes<br \/>\n\u2022 ScenePanning \u2013 Shows how to use touch camere panning within a scene<br \/>\n\u2022 ScenePhysics \u2013 Shows how to set up basic physics in a scene<br \/>\n\u2022 SceneSwitch \u2013 Shows how to load and switch between different scenes<br \/>\n\u2022 SimpleCollision \u2013 Shows how to use collision modifiers to add collision detection to actors<br \/>\n\u2022 SimpleProgram \u2013 Shows how to create a simple XOML program<br \/>\n\u2022 SimpleScript \u2013 Shows how to add a simple script<br \/>\n\u2022 SoundEffects \u2013 Shows how to play sound effects<br \/>\n\u2022 Styles \u2013 Shows how to use styles to style a group of actors<br \/>\n\u2022 Templates \u2013 Shows how to use templates to create multiple actors at the same time<br \/>\n\u2022 Templates2 \u2013 Shows how to create actors from templates from actions<br \/>\n\u2022 TiledBrushes \u2013 Demo that shows how to use tiled brushes to create effects<br \/>\n\u2022 UI_Canvas \u2013 Shows how to use the Canvas UI container control<br \/>\n\u2022 UI_Complex \u2013 A more complex UI example that shows a large complex virtual user interface<br \/>\n\u2022 UI_Grid \u2013 Shows how to use the Grid UI container control to host pre-set UI elements<br \/>\n\u2022 UI_Grid2 \u2013 Shows how to create a UI Grid component automatically from data<br \/>\n\u2022 UI_ImageView \u2013 Shows how to create an ImageView container UI control. The ImageView container supports pinch zoom \/ pan<br \/>\n\u2022 UI_Listbox \u2013 Shows how to use the Listbox container UI control to host preset UI<br \/>\n\u2022 UI_Listbox2 \u2013 Shows how to use the Listbox container UI control to host dynamic UI<br \/>\n\u2022 UI_Slider \u2013 Shows how to use the slider UI component<br \/>\n\u2022 UI_StackPanel \u2013 Shows how to use the StackPanel UI container control<br \/>\n\u2022 UI_TabBar \u2013 Shows how to use the TabBar UI container control to host different views of information<br \/>\n\u2022 UI_Textbox \u2013 Shows how to use the Textbox UI component to allow the user to enter information<br \/>\n\u2022 UI_TextView \u2013 Shows how to use a Textview UI control<br \/>\n\u2022 UI_WebView \u2013 Shows how to use a web view UI control to show web content<br \/>\n\u2022 UI_WrapPanel \u2013 Shows how to use the WrapPanel container UI component<br \/>\n\u2022 Variables \u2013 Shows how to use XOML variables<br \/>\n\u2022 Video \u2013 Shows how to display video<br \/>\n\u2022 VideoCam \u2013 Shows how to stream the video cam to an image and then map that image to actors<br \/>\n\u2022 XMLVariables \u2013 Shows how to use XML variables in XOML to pull specific information from XML files<\/p>\n<h2>New XOML \/ Lua API Documentation<\/h2>\n<p>The XOML and Lua API have been fully documented in an over 200 page manual that accompanies the SDK. The latest version of this manual is also available at <a href=\"http:\/\/www.appeasymobile.com\/XOML%20User%20Guide.pdf\">AppEasy XOML User \/ Programming Guide PDF<\/a>. The C++ documentation has not yet been updated with all of the latest changes so will not be available for some time.<\/p>\n<h2>Apple iOS Wizard<\/h2>\n<p>You will find that a new tool has been added to the IwGame Engine called the Apple Wizard. This handy little tool is ideal for beginners or event veterans who sometimes forget the long winded and overly complex procedures involved in generating signing certificates requests, creating developer \/ distribution certificates, provisioning devices, creating App ID&#8217;s etc.. Well this little tool will walk you through the whole process so it can be done in minutes.<\/p>\n<h2>Support for Video Camera Streaming<\/h2>\n<p>You can now declare a new VideoCam tag in XOML which enables you to stream the users front \/ rear camera to an image then display that image as an actor. Check out the VideoCam example for a cool demo.<\/p>\n<h2>Audio Integration<\/h2>\n<p>We&#8217;ve moved sound effects into the XOML system properly so you can now include compressed wav files into your apps without the need to put them through the Marmalade resource manager. You can even host them on a web server and download them as and when required, just like any other resource. <\/p>\n<h2>Remote Requests<\/h2>\n<p>We&#8217;ve made it possible to construct POST and GET requests in XOML and send and receive responses from XOML \/ Lua. This is a very interesting new feature that enables communication with web based services declaratively.<\/p>\n<h2>Orphan Actors and Sprites<\/h2>\n<p>A number of users have made comment regarding not being able to depth sort child sprites, well we&#8217;ve found a workable solution for you that doesn&#8217;t break our API. You can now set actors as &#8220;Orphans&#8221; by adding Orphan=&#8221;true&#8221; to their declaration. An actor that is orphaned will be taken out of the normal sprite parent \/ child hierarchy allowing it to be depth sorted with parent regular actors<\/p>\n<h2>Percentage Based Positioning<\/h2>\n<p>It became apparent to us that as we had a percentage based sizing system in IwGame that we also needed a percentage based positioning system too, allowing truly device screen independent layouts. Actors can now be marked as percentage based by adding PercPos=&#8221;true&#8221;. When set, the actors position will be taken as a percentage instead of an absolute coordinate.<\/p>\n<h2>Multi-touch Actors<\/h2>\n<p>Actors can now handle up to 5 simultaneous Begin \/ End touch and Tapped events in XOML. This enables you to create some very interesting styles of app and game play as you can monitor and react to 5 touches at the same time. <\/p>\n<h2>Proper User-Agent<\/h2>\n<p>IwGameAds now gets a proper browser user-agent from the system for Android and iOS using the new UserAgent EDK extension. This should help increase ad fill rates substantially.<\/p>\n<h2>XML Pools have Gone, Woopeee!<\/h2>\n<p>I was never keen on the global XML pool system so we destroyed it, well not completely, we wanted to keep XML memory pooling but make it an automated process. The XML parser will now pre-scan an XML file and calculate how many tags \/ attributes are present then allocate just the right amount of pool memory. <\/p>\n<h2>Cool Brushes<\/h2>\n<p>Image brushes can now use clamping or tiling. Also, you can now set the UV&#8217;s of an image brush directly using the new UV attribute which accepts 8 numbers (topleft-uv, topright-uv, bottomright-uv, bottomleft-uv)<\/p>\n<h2>Web View Reworked<\/h2>\n<p>The Web View control has been reworked and can now display dynamic html content that can be set via XOML, Lua and C++.<\/p>\n<h2>Actions and Command<\/h2>\n<p>Actions and commands now accept XOML variables as parameters. Many new actions and commands have also been added, expanding the functionality of XOML substantially.<\/p>\n<h2>XOML Variables<\/h2>\n<p>XOML variables have had many changes including:<br \/>\n* Variables can now be made persistent so theri values are saved and restored between game sessions<br \/>\n* XOML array variables can now be populated from comma delimited data, elements will be split at commas<br \/>\n* Conditions can now be used on arrays for string searches, number comparisons etc..<br \/>\n* Added new system variable array called touches. This array of integers represents the x, y, touched status of 5 simultaneous touches<\/p>\n<p>As you can see there&#8217;s been a huge number of changes, good luck with the update and happy coding. <\/p>\n<p>Oh, please direct all XOML \/ Lua questions to our AppEasy forum at <a href=\"http:\/\/www.appeasymobile.com\/forum\">http:\/\/www.appeasymobile.com\/forum<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>New here? What&#8217;s IwGame? IwGame is an open source free to use cross platform game and app engine for iPhone, iPad, Android, Bada, Playbook, Symbian, Windows Mobile, LG-TV, Windows and Mac, built on top of the Marmalade SDK. You can find out more and download the SDK from our IwGame Engine page. Its been a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,13,445,155,29,43,118,66,44,154,42,181,270,441,28,148,3,45,337],"tags":[746,491,490,492,718,71,739],"class_list":["post-2973","post","type-post","status-publish","format-standard","hentry","category-airplay-sdk","category-android-app-development","category-appeasy","category-apps","category-blackberry-playbook","category-blackberry-playbook-app-development","category-c-programming","category-cool-news","category-game-and-app-development","category-games","category-ios-app-development","category-iwgame-engine","category-iwgameads-sdk","category-lua-programming","category-marmalade-sdk","category-pocketeers-limited","category-programming","category-samsung-bada-development","category-xoml","tag-appeasy","tag-applewizard","tag-iwgame-0-4","tag-lua","tag-marmalade-sdk","tag-update","tag-xoml"],"_links":{"self":[{"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/posts\/2973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/comments?post=2973"}],"version-history":[{"count":14,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/posts\/2973\/revisions"}],"predecessor-version":[{"id":2990,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/posts\/2973\/revisions\/2990"}],"wp:attachment":[{"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/media?parent=2973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/categories?post=2973"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.drmop.com\/index.php\/wp-json\/wp\/v2\/tags?post=2973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}