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.

 

Goji Editor Game and App Editor is Born

Hey everyone, its been a long while since I posted anything to my blog that I would class as benefiting many developers. Well, that is about to change.

I posted some details about a game / app editor that I had started back in May 2013. Well, I decided that I was going the wrong way with that so I scrapped it and started again. Well, when I say started again I mean I created something else and decided to expand on it. I created a simple tool for AppEasy that allows the user to convert TexturePacker and SVG data (as exported from the likes of Inkscape) to the XML format that AppEasy could understand. The tool proved pretty useful for my own projects so I decided to expand on it and turn it into a full on game editor. Of course, once it became a game editor I wanted to expand on that further and turn it into a game editor that could also be used to create complete games and apps (essentially a complete integrated development system). Out of that was born the Goji Editor.

The Goji Editor can be used as a generic game / app layout editor and / or a complete development system. Here’s a quick shot of the editor in its current state:

Goji Game and App Editor screen shot

Goji Game and App Editor

And a quick list of its current feature set:

  • Export to many different game and app engine / programming language formats
  • 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 and layout management
  • Full drag and drop support
  • 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 supported engines
  • Create complete working / compilable projects

And other features that are currently in the pipeline include:

  • Support for animation using time lines editor
  • Particle system editor
  • Geometry creation and editing
  • Export support for all major game engines
  • Intellisense / autocomplete for all supported API’s
  • Support for audio, video, in-app purchase, ads and many more additional services

I’m currently using the Goji Editor in the production of an Angry Birds style game that I’m working on. The project for this game will be released at the same time as the editor providing a working commercial game as an example.

Closed alpha testing will begin soon. If you want to take part then get in touch here

Interested in export support for your format? Get in touch here

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:

<!--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>

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

<Icon Name="Sprite1" Position="200,0" Background="bg1" Geometry="Geoms1" />

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:

<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>

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.

Finally Game / App Editor Started

Note to self, update my blog more often. These days my blog seems to have turned into an AppEasy update feed, well I want to change that and start blogging about other things (besides AppEasy).

Well, this blog post is not completely devoid of AppEasy news as the game editor will target AppEasy to begin with.

Today I want to blog about a new game editor that I have started work on (its a bit of a pet project because I’m getting fed up of writing game or app specific editors). The editor is tentatively called Groove Game Editor which will have the following features when finished:

  • Completely customisable – You can define all of the types of objects that can be edited along with all of the properties for those objects using an input XML file
  • Placement, scaling, rotation of game objects on a large virtual canvas
  • General layout, tile and zone maps
  • Automatic atlas generation
  • Resource management
  • Music and sound effects
  • Physics
  • Actions, events and triggers
  • Key frame animation editor
  • Lua scripting
  • Support for all XOML types out of the box
  • Support for HTML5, Marmalade Quick, Cocos2d-x, Corona, Gideros and other game / app development SDK’s and systems
  • Binary, xml and JSON export

Thus far I have implemented the customisation system which enables developers to create a single XML file that describes the following elements to the editor:
Enumerations – You can use these to define sets of possibilities, e.g.

Here’s an example that shows an enum for the Joint Type used by XOML joints:

<Enum Name="JointTypeEnum" Info="Physics joint type">
	<Property Name="weld" />
	<Property Name="distance" />
	<Property Name="revolute" />
	<Property Name="prismatic" />
	<Property Name="pulley" />
	<Property Name="wheel" />
</Enum>

You can later use this as a type for object properties

Object Types – These represent specific types of objects that can be edited, for example Actors, Scenes, Images, Programs, Actions etc are each single types, e.g.*

Heres an example of a Box2D material:

<Type Name="Box2dMaterial" Base="Common" Info="Box2D material resource" Colour="#ffe4ff00">
    <Property Name="Type"            Type="Box2dMaterialTypeEnum" Category="General"  Value=""	  Info="Type of material" />
    <Property Name="Density"         Type="double"                Category="General"  Value="1"   Info="Material density" />
    <Property Name="Friction"        Type="double"                Category="General"  Value="1"   Info="Materials coefficient of friction" />
    <Property Name="Restitution"     Type="double"                Category="General"  Value="0.1" Info="Materials coefficient of restitution / bounciness" />
    <Property Name="IsBullet"        Type="bool"                  Category="General"  Value=""	  Info="Treat object as moving at high speed" />
    <Property Name="FixedRotation"   Type="bool"                  Category="General"  Value=""	  Info="Prevent rotation of body" />
    <Property Name="GravityScale"    Type="double"                Category="General"  Value="1"	  Info="Amount to scale gravity" />
</Type>

As you can see you can define the name of the type, the base, which is kind of like a base class in C++, the type inherits all properties of the base. Info is used for tool tips and the colour is the colour that will be used to display objects of this type in the resource view. There are other properties but I wont go into them right now. Within the TYpe tag is the properties, thee define the properties that can be edited along with their types, the category they appear under and the tool tip

Type Groups – Type groups are used to group together types that share similar function, e.g.

<Group Name="Basic Actors">
    <Type Name="ActorImage" />
    <Type Name="ActorConnector" />
    <Type Name="ActorText" />
    <Type Name="ActorParticles" />
</Group>

Here we group together four different types into a group called Basic Actors. We can later use these to set up menu groups and other interesting stuff

Menu Groups – Finally we have Menu Groups. These are used to define how the user can create hierarchical data. Each menu group defines a list of types that can be creayed when the user attempts to create a child object within its hierarchy, e.g.:

<MenuGroup Name="NewAnimationChild" Context="Animation">
    <Section Name="">
        <Type Name="Frame" />
        <Type Name="Atlas" />
    </Section>
</MenuGroup>

Here we create a Menu Group called NewAnimationChild that contains two possible types (Frame and Atlas), these are the only two possible types of objects that an Animation object can contain. The Context attribute specifies what type of object will use this menu for creating new child objects in its hierarchy. The Section tag specifies the name of the sub-menu that the type should appear under. In this case the section name is blank so Frame and Atlas will appear in the root.

Most other items and other parts of the editor will be defined in this customisable editor file.

The editor is not currently in a usable state and only has the following functionality:
* Allows editing using all custom types, enumerations and menu groups that are specified in the editors definition XML file
* Loads files that are based on the editors definition XML file
* SUpports all AppEasy XOML types and enumerations using colour coding

Next on the list is export to XML. However, before I do that I need to get objects that are specified inside templates working. The problem I face is that the editor creates UI that allows you to edit specific types. For example, a bool type will use a check box and an enumeration will use a drop down list. Problem with this is that objects that are defined inside a XOML template can have parameters that are template parameters (strings), so the UI needs to change for all objects that are sat inside a template to allow these parameters to be modified. Problem is that Windows Presentation Foundation (WPF the technology that I am using to create the editor) uses data binding to specific types. I need to figure a way around this. I have a few ideas that I can try.

Once I have export working I will release a version for those that are interested in taking a look to play around with. For now I will leave this screen shot that shows my porgress so far:

Groove game editor

Groove game editor

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.

Murder Detective 2: Corruption Available – Made with AppEasy

Murder Detective 2: Corruption Made with AppEasy

I’m pleased to announce that our team at Pockeeters has finished a brand new AppEasy powered game for Australian based developer Tournay Software. The game is called Murder Detective 2: Corruption and was developed with AppEasy. In fact, some of the features of the game helped shape many of the features of AppEasy that you see in the latest release.

AppEasy is a cross platform game and app development system that enables easy development using XOML mark-up and Lua.

The game is currently available on iTunes for iOS and Google Play for Android

The games features include:
* A thrilling murder mystery storyline.
* Mini games and puzzles.
* Hidden objects.
* Interact with characters.
* Cinematic cutscenes that enhance gameplay.
* Inventory interaction.
* Plenty of locations.
* A must for any murder mystery fan.

The Android version of the game will be available very soon.

Murder Detective 2 is the first fully fledged Pocketeers produced commercial game utilising many of the latest features of AppEasy and shows just how powerful and flexible AppEasy has become.

Very soon we will post a small post mortem that examines how and what we did to create the game using AppEasy