Booty5 v1.8.9b now available – Code restructure and Actions Lists

Booty5 1.8.9b out NOW

Booty5, the HTML5 Flash Like Game Maker
Booty5, the HTML5 Flash Like Game Maker

Booty5 1.8.9b represents a big shift towards making the Booty5 JavaScript engine more modern, a number of major changes have taken place to the engine including:

  • Code restructured
  • All classes moved into the b5 namespace
  • TheApp class renamed to App
  • window.app replaced with b5.app
  • Added new property to App called canvas_fill_window which when set to false will prevent the canvas from being resized to fit window
  • Added support for sequential and concurrent actions to app, actors and scenes via ActionsListManager and ActionsList classes
  • Large collection of pre-defined actions added:
    • A_ChangeActions
    • A_CreateExplosion
    • A_CreatePlume
    • A_ChangeTimeline
    • A_AttractX
    • A_AttractY
    • A_Attract
    • A_Sound
    • A_CamStopMove
    • A_CamGravity
    • A_CamMove
    • A_CamMoveTo
    • A_CamFollow
    • A_CamFollowPath
    • A_CamFollowPathVel
    • A_CamLimitMove
    • A_Wait
    • A_SetProps
    • A_AddProps
    • A_TweenProps
    • A_Call
    • A_Create
    • A_Destroy
    • A_FocusScene
    • A_StopMove
    • A_Gravity
    • A_Move
    • A_MoveTo
    • A_MoveWithSpeed
    • A_Follow
    • A_LookAt
    • A_FollowPath
    • A_FollowPathVel
    • A_LimitMove
    • A_SetLinearVelocity
    • A_SetAngularVelocity
    • A_ApplyForce
    • A_ApplyImpulse
    • A_ApplyTorque
  • Actor.setPositionPhysics() deprecated, use setPosition instead
  • Actor.setRotationPhysics deprecated, use setRotation instead
  • Moved getResFromType() out of App and Scene classes into common Utils class
  • Added new Utils.findObjectFromPath() and Utils.resolveObject() which can be used to find actors, scenes, action lists and timelines from a path such as gamescene.actor1.timeline1
  • Added new Utils.findResourceFromPath() and Utils.resolveResource() which can be used to find resources from a path such as gamescene.sound1
  • Added new _atlas, _bitmap, _clip_shape properties to Actor that can use resource paths as well as instances of resources
  • Added new _clip_shape property to Scene that can use resource paths as well as instances of resources
  • Added new _focus_scene and _focus_scene2 properties to App that can use resource paths as well as instances of resources
  • Added vx_damping and vy_damping to scene camera
  • Updated Xoml.js to load new actions lists from Booty5 editor exported JSON format
  • generateExplosion, generatePlume and generateRain now also accept string version of type
  • Logic and rendering decoupled. Logic (app.mainLogic) now ran on timer at default 60 fps whilst and rendering (app.mainDraw) at max frame rate
  • New Actions example added
  • Fix: Animation.Update() locks up when only a single key frame is specified
  • Fix: “none” rescaling method was not working correctly
  • Fix: Box2D forces applied in Actor OnTick were not being applied

Booty5 game maker editor changes v1.8.9b include:

  • Added new property to project section called Fill Window which when set to false will prevent the canvas from being resized to fit browser window. Setting to false is useful if you have a canvas that fits in vertically with other page content as no borders will be shown.
  • Updated events editor
  • IsPath added to Shape properties, which can be used to mark shapes to be used as paths
  • Added actions system and Action List editor to Actors and Scenes
  • Project property Frame Rate now exported
  • Fix: Proportional origins were not working
  • Fix: “Wait for resources” project option not saving correctly
  • Fix: Attempting to export a project that has a brush that points to an image that is not present on disk crashes

Goji Game Maker for Marmalade v1.8.5b out now

As a small Christmas gift I have decided to port some neat Booty5 changes over to the AppEasy Core and Goji Editor. I’ve listed the changes to 1.8.5b below:

  • Added new “clone to all scenes” menu action which will clone an Icon / Label to all scenes
  • Added new “delete from all scenes” menu action which will remove all Icons / Labels from all scenes that share the same name as the selected item
  • Added new “copy to scene” which clones the selected actor into a new scene
  • Added support for filled / unfilled ellipses and rects / rounded rects
  • Added new Filled, CornerRadius and Thickness properties to actors
  • Updated actors to support bitmap animation frames, actor properties now support frames property which can be use to change default frame order
  • ImageActor XOML tag has new Filled (bool) property which specifies the filled / unfilled status of an actor, unfilled will be drawn with a border
  • ImageActor XOML tag has new CornerRadius (float) property which can be used to specify the corner size of a rounded rect (note that RenderAs must be set to 2) to force actor to be rendered as a rect
  • ImageActor XOML tag has new Thickness (float) property which specifies the border thickness for actors that are rendered unfilled
  • ImageActor XOML tag has new RenderAs (int) property which specifies how the actor should be rendered, 0 – normal, 1 – render as an arc and 2 – render as a rect / rounded rect
  • ImageActor XOML tag has new PlaybackSpeed property which specifies how quickly any attached bitmap animation will play back
  • ImageActor XOML tag has new AnimFrames (array of its) property which specifies the order in which bitmap frames are played back
  • Brush XOML tag has new RectFrames property which is a list of x,y,w,h rect frames that can be used to assign bitmap animations to actors

The most exciting changes (for me at least) are the addition of support for rendering arcs, rectangles and rounded rectangles, these can be filled with solid colour / bitmaps or rendered with an edge stroke that can also be solid colour or bitmapped. I found that these objects come in very useful when it comes to UI. If you look in the actors property panel in Goji you will notice a new “RenderAs” property. Changing this enables you to tell the engine to override the default rendering to render the actor as an arc or rect. Additional properties have been added to allow you to specify properties such as corner radius for rounded rects and thickness. If you are interested in seeing the code that generates these shapes then take a look in CzGeometry.cpp.

Another addition that I decided to port across was bitmap brush animations. Its awkward having to set up bitmap animations in XOML so I made it easier. You can now add individual rectangular frames to a brush to create an animation (Goji shows a preview of the animation). Once the brush is attached to an actor an as long as the Playback speed is set to something other than 0 then the animation will play. You can also override the order in which animation frames are played by setting your own animation frame indices in the Anim Frames properties box.

 

 

 

 

Booty5 HTML5 game maker now available for free download

Booty5 HTML5 Game Maker
Booty5 HTML5 Game Maker

Its taken many months of pain staking development and quite possibly a mountain of coffee but it is finally here. Booty5 the 2D HTML5 game editor and engine (a game maker) is now available for download

Booty5 enables you to produce HTML5 based games and apps for mobile and desktop using a WYSIWYG game editor.

Booty5 HTML5 game maker screenshot
Booty5 HTML5 game maker screenshot

AppEasy Core SDK is now open source!

If I remember correctly I promised a while back that I was going to open up the source to the AppEasy Core SDK. if you don’t know what that is then its a FREE open source cross platform game and app engine for mobiles and desktop that can be re targeted to work on anything you like as long as you implement the platform abstraction layer. At the moment, a Marmalade SDK layer is implemented so you can use it right out of the box. You will however need a Marmalade license to use it, although having a Marmalade license will give you deployment access to a vast range of platforms so its well worth it. if not then simply implement the platform layer for whatever platform(s) you desire. If you dont fancy any of that and just want to use Lua and XOML then you can always give the AppEasy service a try, which lets you deploy apps to iOS / Android and Windows desktop without the need to compile and re-write code etc..

AppEasy Core SDK is basically the big professional and powerful child of the old IwGame Engine. The IwGame Engine started as a tutorial project that I started a few years ago that was meant to teach developers how to use the Marmalade SDK. However, Marmalade has no out of the box game engine so IwGame evolved into a fully fledged game / app engine to fill that gap, although it was hastily developed and built directly on the Marmalade platform. I’m very much a recycler, so that’s not how I generally like to write an engine, I like to have a clear separation between engine and platform so it can be re-targeted at different platforms quite easily. I also wanted to get rid of the obscenely long names and add some proper structure / documentation to make the whole thing more easily understandable.

Well I think I accomplished all that and more, I also added many new features and fixed a mass of bugs along the way. When I get the time I will be replacing the old IwGame Engine page with an AppEasy Core SDK page, for me IwGame needs to be buried now I think.

I also developed a game / app editor called Goji Editor that lets you develop full on games and apps within the editor and export to AppEasy, Marmalade Quick and other engines coming soon, including HTML 5.

AppEasy Core SDK has the following core features:

General Features
– FREE and open source! (MIT)
– Can directly use data exported from the Goji Editor (http://www.gojieditor.com)
– Can be targeted at any development system / SDK by implementing the platform layer
– Marmalade SDK platform already implemented, giving you access to many platforms out of the box
– Develop using XML, Lua and / or C++
– Easy to learn mark-up driven language called XOML that enables rapid development
– Support for Lua scripting
– Styles and Templates
– Local and web based assets
– Proportional sizing and positioning
– Auto screen sizing and device orientation lock
– Local storage access
– Multi-touch input
– Accelerometer and compass support
– Smooth sub-pixel rendering and batch rendering for speed
– Touch panning and pinch zoom
– Persistent data
– HTTP POST / GET defined declaratively
– Access to video camera streaming
– Define actions that can be carried out when events occur

Game Features
– Polygonal based sprites and sprite depth
– texture atlases and batching
– Support for Scenes (game world / app canvas) and Actors (game / app objects)
– Images, fonts, compressed WAV sound effects and and MP3 music
– Animation
– Box2D Physics (fixtures, shapes, materials, collisions and joints)
– Video Playback

App Features
– Create simple or complex user interfaces
– Full support for simple and complex data bindings
– Data definition and organisation
– Access to local and remote data
– Support for SQLite

User Interface Features
– Text input boxes
– Buttons / Check boxes
– Labels
– Icons
– Sliders
– Panels (StackPanel, WrapPanel, Canvas)
– Grids
– Image / Text View – Support for pinch zoom and pan
– Web View (display web content)
– Tab Bars
– Video Overlays
– Sliders
– XML data bindings
– Multi-touch based user interface (up to 5 simultaneous touches)

Monetisation Features
– Ad integration
– In-app purchases

Advanced Features
– XOML Variables
– Modifiers
– XOML Programs and commands
– Inline scripts

Social Features
– Facebook API support

API documentation
API documentation is located at http://www.appeasymobile.com/appeasy-api/

The AppEasy Core SDK comes complete with:
– PDF documentation located in the Docs sub folder
– Extensive doxygen code documentation
– An example app that contains 70 examples demonstrating many parts of the SDK
– An example game
– XML schema for XOML

Whilst free support is not provided, a community support forum is available at AppEasy Community

You can download AppEasy Core SDk from Github

Goji Game and App Editor beta is now available

The Goji Editor has finally entered beta and is now available for download from www.gojieditor.com.

What is the Goji Editor?

One of the more difficult processes involved in developing applications and games is how to create and organise the content. By organising content we refer to managing all of the elements that make up the game or app, such as images, sounds, brushes, physics materials, level layouts, user interface layouts, scripts and so on. The Goji Editor primarily helps you to quickly create and test game levels / app layouts and organise the lifetime of resources as well as test in real-time across different screen resolutions.

Goji’s secondary function is to enable full game and app production using available game and app development systems such as AppEasy / IwGame Engine, Marmalade Quick, Corona, GiderOS, HTML5 etc,.,. Goji aims to be as platform and development system agnostic as possible to ensure that exported data can be used by any development system and on any platform.

What does the Goji Editor look like?

Goji Editor Screenshot

Who is the Goji Editor for?

Goji has been designed primarily for designers and developers that create apps and games for mobile and desktop systems. However, Goji is flexible, supporting a huge canvas area and could be used in any capacity that involves organising and laying out graphical information spatially. Goji is also a great learning tool for students that are interested in learning the process of putting together apps and games in an environment where they can make changes and see the results of those changes very quickly.

What are Goji’s features? 

  • Create and organise game level levels and app layouts into scenes and actors

  • Export to many different game and app engine / programming language formats, including AppEasy / IwGame Engine, Marmalade Quick, JSON, XML (HTML5, Corona and GiderOS coming soon)

  • Export in multi-resolution friendly format, allowing exported data to be used on any sized display

  • Assisted layout editing, including tools to enable easy layout / layout management, bookmarking, edge / vertex snapping, directional cloning and so on

  • Full drag and drop support, drop entire folders of resources onto Goji and Goji automatically sorts them all for you

  • Support for import of SVG, Texture Packer and other formats

  • Support for physics including fixtures, joints and the ability to test physics

  • Definition of gaming logic and play using events and actions lists

  • Support for Lua / Javascript and other language editing, includes syntax highlighting, code folding and search / replace

  • Interactive play mode that launches the game using the built in engine or other engines, also shows coloured debug output

  • Create complete working / runnable projects

  • Support for user properties

Notes:

  • TexturePacker is a tool that is used to combine many images into a single image, usually referred to as a sprite / texture atlas. Packing images into a single image improves rendering performance.

  • SVG (Scalable Vector Graphics) format is an XML based format that is used to represent two dimensional vector art work. Goji imports the following tags svg (scene), g (layer), image (actor), rect (shape) and path (shape or geometry). SVG is used by packages such as Inkscape and Adobe illustrator

Future features

Features that are currently in development or will be available in the near future include:

  • Export for Corona, GiderOS and HTMl5

  • Complex actions lists

  • Support for animation creation using timelines

  • Deployment to iOS and Android devices

  • Support for audio, video, web views, in-app purchase, ads and many more additional services

How do I download the Goji Editor?

At the moment the Goji Editor is in open beta and is free to use, however the Goji Editor will eventually become a paid product in the future. To download the Goji Editor please register and sign in then click the download menu to be taken to the download area where you can download a beta copy of the Goji Editor.

 

AppEasy 1.5.0 is now out

AppEasy the cross platform mobile game and app development system for iPhone, iPad, Android and Windows that is aimed at all levels of experience releases latest update

AppEasy version 1.5.0 is now available for download from here.

Please upgrade to the latest version. Note that before updating, close down your current version of AppEasy, rename c:\AppEasy to c:\AppEasy2, install and run AppEasy 1.5.0 then copy any changes / certificates from c:\AppEasy2 to c:\AppEasy. Note that if you install the update before renaming c:\AppEasy then simply exit the AppEasy project manager, rename the folder and run AppEasy again.

The main new features include:

  • Support for Facebook
  • Communication between web view content and the native app
  • New Lua HTTP API
  • Support for AdModa banner / rich media ads and Leadbolt app walls

New Tools:

  • AppEasy manager now supports new Facebook App ID field
  • Android Test deploy will now replace previous installed APK and automatically launch it
  • BUG FIX: iOS wizard was copying development certificate over distribution certificate

Core Engine Changes:

  • Added new Facebook Lua API that provides access to Open Graph API
  • If UI actor (does not work with basic image or text actor) is assigned Box2dmaterial but no shape then a default rect shape will be created and assigned
  • Extended UV tiling to beyond 8×8
  • Geometries now support percentage based sizing
  • Actors now support the Tiled attribute which tells the actor to use texture tiling when rendering itself
  • Actors now support the new Tiling attribute which specifies texture tiling factors on a per actor basis, if x or y tiling factors are > 1.0 then actor Tiled attribute will automatically be set to true
  • Tiled attribute has been removed from brushes
  • Added actor.findTagged(tag, scene) function that returns a table of actors that are tagged with a specific tag
  • All properties that are set from Lua via functions such as actor.set() / scene.set() now accept a userdata object or the name of the object, instead of an object name. For example when setting an actors timeline property you can pass either the name of the timeline or a lua object that represents the timeline
  • Added readable TextSize property to text based actors that returns the width and height of the area that the text covers
  • Added scene as 2nd parameter to resource.removeTagged() to allow tagged resources to be removed from specific scenes
  • Added new actor.destroyTagged(tag-name, container-scene) which destroys groups of tagged actors
  • WebView actor now supports OnJavascript event that is called when Javascript calls back to XML using s3e.exec(), see Test25
  • WebView actor property Javascript when read from Lua returns Javascript data that was sent via s3e.exec(), allowing data passed back from Javascript within a web view to be read
  • Updated Test25 to show how to send Javascript to web view from XOML to modify page content as well as send data back to XOML from a web view
  • Added http Lua API that deals with finding remote requests as well as setting and getting their properties
  • Added status() function to market Lua API which returns the status of the last request
  • Added available() function to market Lua API which returns the availability of the market
  • Added new sys.getOSVersion() function which returns current OS version as a string
  • All files that are downloaded over http (e.g. images, fonts and audio) now work if the original request URL results in a redirect
  • Updated Test63 to support Admoda banner and rich media ads, also added support for Leadbolt app walls
  • Actor.set(), add() and get() can now be used to access user properties of the actor by tagging a true onto the end of the call, this will access user properties instead of xoml properties
  • Added sys.setBackgroundColour(red, green, blue)
  • BUG FIX: Fixed issue where geometries would not render in a scene with batched turned on
  • BUG FIX: Fixed issues with SVG exporting from AppEasy Tool
  • BUG FIX: Fixed issues with tiled images in batch rendered layers
  • BUG FIX: Fixed issue with multiple onbegintouch events not firing correctly for actors
  • BUG FIX: Fixed OnResponse event callback in RemoteReq
  • BUG FIX: Fixed, Lives property of ActorParticles renamed Repeat
  • BUG FIX: Fixed, Lua errors now output to Error channel and not Info channel
  • BUG FIX: Fixed extents scaling by camera scale
  • BUG FIX: Fixed touch panning with scaled camera

AppEasy 1.4.9 Now Available – Polygonal sprites, multiple fixtures, sqlite and SVG, TexturePacker tools

AppEasy Version 1.4.9 is Now Available

AppEasy the cross platform mobile game and app development system for iPhone, iPad, Android and Windows that is aimed at all levels of experience releases latest update

AppEasy version 1.4.9 is now available for download from here.

Please upgrade to the latest version. Note that before updating, close down your current version of AppEasy, rename c:\AppEasy to c:\AppEasy2, install and run AppEasy 1.4.9 then copy any changes / certificates from c:\AppEasy2 to c:\AppEasy. Note that if you install the update before renaming c:\AppEasy then simply exit the AppEasy project manager, rename the folder and run AppEasy again.

New Tools:

  • New tool added that converts Texture Packer and SVG data to XOML

Core Engine Changes:

  • Timeline has new property called AutoDelete which if set to true will auto delete the timeline when its finished. Be careful not to delete timelines that are shared across multiple objects
  • Animation has new property called AutoDelete which if set to true will auto delete the animation when its finished being played by a timeline. Be careful not to delete animations that are shared across multiple timelines
  • Actors now support multiple physics shapes (fixtures) using the new Fixtures inner tag
  • Actor Shape property is now write only. Setting a shape will remove all previous shapes
  • Support for new Geometry type which enables creation of actors that are built from collections of triangles, quads or a polygon
  • Actor has new attribute called Geometry which defines a geometry that the actor will use to render itself
  • New example (Tes68) added that shows how to use Geometries
  • Removed Video OnStopped event as its no longer needed
  • Support for sqlite added
  • Added Test69 which shows a sqlite test
  • BUG FIX: Fixed VideoOverlay OnEnd and OnStart events

Polygonal Sprites

One of the most exciting changes we have brought to 1.4.9 is the ability to step outside of the rectangular sprite based actors system using our new versatile geometry system. Using the new geometry system you can create any shape you like. Actors can now be built from polygons, triangle lists and quad lists. You can also specify your own UV texture coordinates as well as per vertex RGBA information. AppEasy will handle taps and intersection of this new type of geometry including disconnected geometry. Here are a few examples of geometries:

[sourcecode language=”xml”]
<!–Create a single triangle–>
<Geometry Name="Geoms1" Vertices="-200,-200,200,200,-200,200" UV="0,0,1,1,0,1" Type="TriList" />
<!–Create two triangles–>
<Geometry Name="Geoms2" Vertices="-200,-200,200,200,-200,200,-400,-400,-200,-400,-200,0" Type="TriList" />
<!–Create a house shape –>
<Geometry Name="Geoms3" Vertices="-200,-200,0,-300,200,-200,200,200,-200,200" Indices="0,1,2,3,4" Colours="255,0,0,255,0,255,0,255,0,0,255,255,255,255,255,255,255,255,255,255" Type="Poly"/></pre>
[/sourcecode]

Once you attach any of the above geometries to an actor the actor will take on the new geometric shape:

[sourcecode language=”xml”]
<Icon Name="Sprite1" Position="200,0" Background="bg1" Geometry="Geoms1" />
[/sourcecode]

Physics Now Supports Multiple Fixtures

Actors now supports the new Fixtures inner tag that enables you to specify multiple shapes and materials etc that are attached to a single actor, e.g:

[sourcecode language=”xml”]
<Icon Position="0,0" Background="Land" Box2dMaterial="FixedHeavy">
<Fixtures>
<Fixture Shape="LandScapeBase" Box2dMaterial="FixedHeavy" CollisionFlags="1,1,1" COM="0,0"/>
<Fixture Shape="LandScapePeak" Box2dMaterial="FixedHeavy" CollisionFlags="1,1,1" COM="0,0"/>
</Fixtures>
</Icon>
[/sourcecode]

SQLite Added

Due to popular request we have added lsqlite3 to 1.4.9 which enables SQL interaction via Lua.

Asset Conversion Tool

A new tool has been added that facilitates conversion of Texture Packer and SVG data to XOML. In particular the tool enables you to use SVG editors such as Inkscape to layout game levels and app layouts as well as create complex geometries easily.

AppEasy 1.4.8 Now Available

AppEasy Version 1.4.8 is Now Available

AppEasy the cross platform mobile game and app development system for iPhone, iPad, Android and Windows that is aimed at all levels of experience releases latest update

AppEasy version 1.4.8 is now available for download from here.

Please upgrade to the latest version. Note that before updating, close down your current version of AppEasy, rename c:\AppEasy to c:\AppEasy2, install and run AppEasy 1.4.8 then copy any changes / certificates from c:\AppEasy2 to c:\AppEasy. Note that if you install the update before renaming c:\AppEasy then simply exit the AppEasy project manager, rename the folder and run AppEasy again.

Core Engine Changes:

  • Added new Lua function particles.removeAll() which removes all particles from the actor
  • Added new Lua function resource.findOfType(resource-type-name, container (optional)) which returns a table of resources that are of the specified type
  • Added new Lua function scene.findOfType(scene-type-name) which returns a table of scenes that are of the specified type
  • RemoteReq now supports Header inner tags that enables you to add headers to requests
  • New RemoteRequest test example added (Test 64)
  • Added new Lua function actor.findAll(scene) which returns a table of all actors in a scene, including actors that are in the process of being destroyed
  • New lua library added called xml which deals with creating xml as well as loading and saving it
  • Scene Physics property can now be written to, however if the scene was not declared with physics enabled then it has no affect
  • Added new keyboard functions to Lua input library, getKeyPressed(), isKeyDown(key-code), isKeyUp(key-code)
  • Added new keyboard test demo (Test65)
  • Added new lua function sys.getTotalFrames() which returns the total number of frames that have been processed since app boot
  • Added new lua function sys.getFrameRate() which returns the current estimated frame rate
  • Added new lua function sys.pauseTime(paused (boolean)) which pauses / un-pauses time. Passing false will reset the time delay from the last frame, useful when performing long operations that take a long time such as loading and prevents sudden jumps at the start of a level
  • Added new lua function sys.isTimePaused() to test if time is paused
  • Added new SetPaused(paused (boolean)) action
  • Added new lua function variable.asTable(variable) which returns an array variable as a lua table
  • Added new lua function resource.create(type-name(string), parameters(table), parent(object, optional)) that allows creation of any type of XOML resource from lua (actors, scenes, images, fonts, etc..) (returns an instance of the created resource)
  • Added new lua function resource.createFromString(xoml-string (string), parent(object, optional) that creates XOML directly from a string
  • Added Anchor property to actors that enables you to change the anchor point between top-left and centre. Anchoring does not currently work with actors placed inside container controls such as list boxes
  • Added new lua function scene.updatePhysics(scene, time) – Manually calls the scenes physics update, can be used to stabilise physics world pre frame
  • Added new lua function scene.cleanup(scene) which cleans up deleted actors from the scene
  • Added new XOML type called Timer that enables actions to be called when they time out. Global resource manager, Actors and scenes each have their own timers manager
  • Added new Lua library called timer which enables interaction with XOML timers
  • Added new ChangeTimer action
  • Added new Test0 example that shows the use of anchors
  • Added new Test67 example which shows how to use timers
  • BUG FIX: When no actor is specified and scene is specified in CallActions the scene will now be used as the target
  • BUG FIX: Fixed bug in xml parser that wasnt correctly reading tag values
  • BUG FIX: Fixed crash that occurs when attempting to set a property that is read-only or read a property that is write-only
  • BUG FIX: Weld joint reference angle wasn’t correctly calculated for rotated objects
  • BUG FIX: Fixed box2d polygon vertex winding issue

Creating XOML from Lua

One of the biggest changes in 1.4.8 is the ability to create any type of XOML resource on the Lua side. This includes actors and even scenes. Lets take a look at a short example that shows how to create al label actor:

-- Create a XOML label from a table
local label = resource.create("Label", {
	Name="Label1", 
	Font="serif", 
	Position="0, -100", 
	Text="Hello World", 
	BackgroundColour="80, 80, 80, 255", 
	Background="Button1Brush", 
	Size="-100, 50", 
	AutoHeight="true"}, _scene)
-- Change the Text property
actor.set(label, "Text", "Hey man")

Also, it is now possible to instantiate a complete string of XOML from Lua. Lets take a quick look at an example:

-- Create XOML label from string
local xoml = [[
<Label Position="0, 100" Font="serif" Text="Test creating XOML resources from Lua" BackgroundColour="80, 80, 80, 255" 
Background="Button1Brush" Size="-100, -10" AutoHeight="true" IgnoreCamera="true" />]]
resource.createFromString(xoml, _scene)

Timers

Another great new feature that has been added is Timers. Timers are incredibly useful in game and app development. A timer can be created and given a timeout duration, when the timer times out an actions list will be called. Timers can repeat a specified number of time and can also delete themselves when finished, allowing you to use them in a fire and forget manner.

Actor Anchors

Its now possible to change the position of an actors visual anchor, so those of you that are used to working with placing sprites using their top-left anchor point can do so.

Remote Request Headers

Remote Requests now support headers allowing you to pass heads along with HTTP requests to your web services.

Pausing Time

We’ve now made it possible to pause and resume game time. This is very useful if you have operations that take a while to complete mid-game (such as loading) and can be used to prevent unrealistic frame time jumps.

AppEasy 1.4.7 – The Easy Cross Platform Development System for Mobile now Available for Download

AppEasy Version 1.4.7 is Now Available

AppEasy the cross platform mobile game and app development system for iPhone, iPad, Android and Windows that is aimed at all levels of experience releases latest update

AppEasy version 1.4.7 is now available for download from here.

Please upgrade to the latest version. Note that before updating, close down your current version of AppEasy, rename c:\AppEasy to c:\AppEasy2, install and run AppEasy 1.4.7 then copy any changes / certificates from c:\AppEasy2 to c:\AppEasy. Note that if you install the update before renaming c:\AppEasy then simply exit the AppEasy project manager, rename the folder and run AppEasy again.

Core Engine Changes:

  • ActorParticles has new property called VelocityAll which sets the velocity of all particles in the particle system
  • actor lua lib has new closest(actor, type) and furthest(actor, type) which return the closest and furthest actors from the specified actor
  • CallGlobalScript action now works the same way as CallScript
  • All lua functions now report file and line number errors
  • All command and actions now report error files and line numbers, although line number reported is the actions list or program that contains the problem action or command and not the actual problem action or command
  • ActorParticles has new attribute called AutoDelete, when set to true (default) actor is deleted when it finishes otherwise it is left in an inactive and invisible state
  • BodyAwake attribute added to actors which returns true if the physics body is awake
  • Destroyed attribute added to actors which returns true if actor has been marked as destroyed by the system
  • actions.call() can take a scene or actor. If neither are supplied then the containing actor or scene will be used as the target
  • sys.loadXoml() function added to load XOML files from Lua
  • Scene now has new OnPan event that gets called when the scene is panned
  • New actor.findOfType(type, scene) added that returns a table of all actors of the specified type
  • Bindings now support index variables
  • Adding to Position, PositionX and PositionY are no longer applied using the original position
  • PositionOrg, PositionOrgX and PositionOrgY added that do reference the original position (write only and cannot be set, only used for adding)
  • Added new particles lua library that can be used to interact with the particles within an ActorParticles based actor
  • ActorParticles Gravity changed from float to vec2
  • ActorParticles has new ParticleCount property
  • BUG FIX: Calling global script from actions in actor container was not passing in container actor
  • BUG FIX: Memory leak when adding a tag other than particle inside ActorParticle definition
  • BUG FIX: Particles depth broken in ActorParticles
  • BUG FIX: Some events were not being over written when set via properties
  • BUG FIX: actor.add() fixed
  • BUG FIX: Setting opacity property did not work as intended
  • BUG FIX: When setting variable to a whole number from lua, trailing zeros are now removed
  • BUG FIX: Box2dMaterial was not being applied when set as a property
  • BUG FIX: OnCollisionStart / OnCollisionEnd was being called for each actor that the target actor collided with

Error Reporting

We have done more work on the error reporting system, you will now find more meaningful error reports in debug.txt, including file names and line numbers.

Programmable Particle Systems

Particle actors have been made more versatile, including providing a new lua API (particles) that provides direct access to individual particles.

Other stuff

Scenes now support the OnPan event, which is called when a user pans the camera in a scene. The sys lua library also now allows loading of XOML files from lua.