Tag: corona sdk

Free IDE for Corona SDK with autocompletion and parameter info


The amazing IntelliJ IDE has an even more amazing Lua plugin creating the perfect Corona SDK development environment:

  • Real time Lua parsing.
  • Syntax error notification.
  • VCS (Git, SVN, etc) and console in the editor.
  • Launch Corona Simulator from the code.
  • Corona autocompletion and parameter info (with the Corona API reference for IntelliJ initially created by sylvanaar2 and now updated by me).
  • And more!

And it’s free! (IntelliJ Community Edition). Here is a video tutorial showing step by step how to setup IntelliJ Community Edition to be a Corona SDK editor (but it works for IntelliJ Ultimate too). Watch in HD:

Download links:

Useful links:

Credits: this tutorial is an improved version of the one published by Thomas Gorence and another by John Lindquist.

Book Corona SDK Mobile Game Development: Beginner’s Guide available!


This may be a little late, but if you missed the news the book Corona SDK Mobile Game Development: Beginner’s Guide by Michelle M. Fernandez has been released and is available to purchase worldwide!

Facebook Page

The book Facebook Page has 870 likes at the moment! Like it to follow news and announcements about the book as well general Corona SDK stuff :)

Full game source code now available to Corona SVG Level Builder customers!


The source code of the slingshot game Angry Trolls is now part of the Corona SVG Level Builder! So by getting Corona SVG Level Builder you are not only getting an amazing level and physics library with dozens and dozens of features, but also getting the code of a full working commercial game made with Corona SDK and Corona SVG Level Builder.

What is this game about?

You can see a video here:

Why should I bother with an ugly game like this?

Because this game implements almost all features of the Corona SVG Level Builder, as well it has all the main elements you need in order to have a mobile game:
  • Main Menu
  • Options
  • Chapter Selection -> Level Selection in a chapter.
  • Story reader.
  • Multiple Levels.
  • Pause menu with restart, go to level selection, continue game, sounds on/off.
  • Game Won / Lost overlay.
  • Three different ranks according to the score made (three stars anyone?).
  • Leaderboards with Game Center.
  • A rudimentary multi-language scheme.
  • Scenes and game flow management.
  • Asset caching and management.
It is a great learning resource so you can understand the structure behind a working commercial game.

Are existing customers getting the source code as well?

Yes! A newsletter has already been sent to you about this and the source code is already available to you in your members area.

What are you waiting for?

Now there is no excuse to not get Corona SVG Level Builder! Not only you have access to an amazing level editing and creation tool, but a full game source code. If you have no idea on how to create a mobile game, you now have access to a full game.
If you don’t have it, what are you waiting for? Go buy it now and save dozens if not hundred hours of development! Or you may consider checking all the features first? Here they are: levelbuilder.karnakgames.com!

* Due to the Angry Trolls source code addition to the bundle, the price has been increased to US$ 99.90.

Corona SVG Level Builder 1.5: iPad 3 support, multiple SVGs, downloadable content, new examples and more!


The next major Corona SVG Level Builder update is here! Corona SVG Level Builder 1.5 has dozens of small fixes, new examples and major features:

  • iPad 3 support.
  • Multiple SVGs loaded in the same scene.
  • SVGs and Spritesheets in the System folders (Temporary, Cache, Documents) – for downloadable content.
  • Object cloning.
  • SVGs as definition tables – bodies are only parsed, not shown, so you can create them on demand (infinite scrolling games, non games apps, etc).

All the new features are documented and expressed with the new examples.

Update Available in the Members Area

If you are a customer, you can download the updated version in the Members Area. If you haven’t received an e-mail about the Members Area or forgot your access details, please contact me with the same e-mail as your purchase e-mail.



[+] Support for iPad 3 in the dynamic resolution settings.
[+] Support to Multiple SVGs loaded on the same scene (i.e. SVGs with different definitions of bodies. Useful in
games with upgradable items, shops, etc, where you can choose as an example a background and a character from different sets,
in this case the background and level would come from a SVG and the character from another SVG).
[+] exposeRawAttributes SVG:createBody parameter, to expose all the SVG attributes from a body.
[+] Support to XML spritesheets.
[+] Support to XML spritesheets in subfolders.
[+] Support to SVG and Spritesheets in the Caches and Temp System folders (i.e. downloadable content)
[+] New API for body cloning and external body creation; new config: parseOnly to only parse objects from Inkscape, without creating the bodies.


[+] notDraw is now recognized in materials.
[+] Path materials now accept notDrawn.
[-] Images not loaded from SpriteSheets won’t be scaled forcefully in case of a resolution independent project.
[+] Fixed a issue which was affecting the scaling of physics bodies on different resolutions.
[+] Adjusted the order of replacement in custom attributes: body attributes correctly replaces material ones; Images not loaded from SpriteSheets won’t be scaled forcefully in case of a resolution independent project.
[+] Spritesheets flagged as persistent are now really persistent.


[+] parseSvgFile(svgFile, config)
[+] createBody(bodyId, addToLayerGroup, exposeRawAttributes, svgFile)
[+] bodiesIdsFromLayer(layerId, svgFile)
[+] bodiesFromLayer(layerId, svgFile)
[+] cleanUpFile(svgFile, cleanPersistentData)


[+] Multiple SVGs and Multiple Spritesheets in the same level.
[+] Resolution Independence 2, with support for iPad 3.
[+] Spawn at Touch Location.
[+] Clone object.
[+] Waypoints (not fully implemented, just gives an overall idea).


[+] Added a timer to the leg of the scrolling example character.

Where to go next?

  • If you still haven’t purchased the Corona SVG Level Builder, you can purchase it right here. It comes with dozens of examples as well all future updates will be sent to you for free.

Corona SVG Level Builder 1.3 features and examples!


The massive Corona SVG Level Builder 1.3 update has been finally released! It has dozens of new features and it finally comes with examples.

Now you can edit even more of your game properties direct into Inkscape. You will edit Lua source code only to add and take care of your game logic! Let’s take a look at the new features and at the examples!

Resolution Independence and Dynamic Scaling

Draw your levels just once and it will work for all resolutions: iPhone, iPhone Retina, iPad, Android Phones and Android Tablets.
Corona SVG Level Builder - Resolution Independent Levels
It comes with an example showing the resolution independence, so it is easy to achieve it. You just need to worry on exporting the different graphical assets on different sizes, other than that, Corona SVG Level Builder does all the job for you.


Corona SVG Level Builder now loads and take care of spritesheets created with TexturePacker.

Assigning SpriteTo create levels that use spritesheets you just have to create them with TexturePacker and add one variable with the spritesheet name when you load your levels:

local level = svg:new("levelFile", {spriteGrabber = "game"})

You can have levels with:

  • Single spritesheet.
  • Multiple spritesheets.
  • Externally loaded spritesheets.

Assigning a game object with a sprite is as simple as assigning it with an image: the step is the same! Just add an image attribute with the sprite name.


Corona SVG Level Builder AnimationsTo add more sauce to the spritesheet support, you can have animated sprites and objects as simple as having static objects. By simple assigning the frame names, giving a pose name and frame positions to a game object, you can animate, change poses and pause it in your code, with methods provided by Corona SVG Level Builder (from SpriteGrabber)!

-- Grab the body with the ID you set
local monkeyNpc = level.bodies.monkeyNpc
-- Call playClip with the pose name

Game Materials

This is one of the coolest additions. You can now define your materials (game objects properties) in an external file and they will persist for all your levels.

As an example let’s consider a game where you have a zombie and a type of block to construct the levels. You need to make 100 levels in Inkscape. If you had to define your block properties along 100 levels, this would be too time consuming. And what if you had to update properties (like friction) from this block? It would require you to manually edit 100 levels.

With game materials, you define and update only once, and the attributes and properties will reflect in all levels for bodies that use the materials name!

local gameMaterials = {
    brick = {
        type = "static",
        image = "brickImageName",
        width = 45,
        height = 20,
        friction = 0.5,
        bounce = 0

    zombie = {
        type = "dynamic",
        image = "zombie",
        frames = "idle:1:1:100:0; walking:2:5:200:0",
        width = 40,
        height = 100,

        custom = {
            health = 120,

            lootRate = {
                coin = 10,
                ammo = 20

Custom Attributes

Consider an example game where you add coins, and then you want to set the value of the coin. The “value” can be set as a custom attribute, additionally to all attributes you already add. Other examples could be the health of an enemy type, the score for a breakable block, etc.

That means: you are tweaking and editing game values in Inkscape. You don’t need to edit a line of Lua code!

You can also now set Custom Level Attributes, which allow you to set level specific attributes you can read in you game code. Examples of level attributes are the OpenFeint Leaderboard ID, Level Speed, Highscore ranks (10.000 = 1 star, 12.000 = 2 stars), whenever you need on a higher level just after loading the level, edited all in Inkscape.

Multiple Named Layers, z-ordering and object filtering

Now you can have multiple named layers, which means you can group common objects in your Inkscape drawing and treat them on your code accordingly to the layer they are in.

Also the order they are placed in Inkscape is the order that your game objects will be placed (z-ordering).

Want to put curtains above all your elements? Just move the layer with curtains above the other layers and all your game objects will be covered! I can’t imagine doing that manually in a level with 100+ elements!

Drawing Vectors and Primitives

You don’t need to always assign a sprite or image to your game objects. You now can have them in your game in the same way you drew them in Inkscape: as a rectangle, ellipse or path! Corona SVG Level Builder will even draw them with the fill color, stroke color and stroke size you choose.

Massive Documentation

Well, this isn’t new: the documentation has always been massive. But now it is even bigger! With all the new features it has grown up and got updated. You can check it here: http://levelbuilder.karnakgames.com/doc/.


Nothing better than learning by practice. Now Corona SVG Level Builder comes with source codes showing each one of its features. Some examples even add some more: what about an example with camera and level scrolling? You have it!

Let’s see a fast video showing the examples in action:

Platformer Game Kit

I’m working now on the Platformer Game Kit! Well, I think the name says it all, right? Along all the dozens and dozens of the Corona SVG Level Builder features, the Platformer Game Kit will be killer. You won’t have anything similar out there.

With the 1.3 update you can already make practically any type of level and game with the Corona SVG Level Builder, while editing your game values and properties all in Inkscape.

But, that is not enough for me: the Platformer Game Kit not only will contain the main features of the classic platformers, but will also come with menus, etc, that means: the source code for a complete game!

What now?

If you don’t have it, what are you waiting for? Go buy it now and save dozens if not hundred hours of development! Or you may consider checking all the features first? Here they are: levelbuilder.karnakgames.com!


The 1.3 update uses Free Art Packs made by Vicki Wenderlich – http://www.vickiwenderlich.com/. All credits go to Vicki Wenderlich.

Angry Trolls and what’s coming to Corona SVG Level Builder 1.3


I made a slingshot game using Corona SVG Level Builder which features similar stuff as Castle Crusher and Angry Birds: characters expressions, progressive destructible objects, etc. For the shooting logic it uses Beebe’s Ghosts vs. Monsters sample code, but after that it has a complex custom camera and all the additional character and physics fancy features, plus lots of levels.

Initially this game was intended only to show Corona SVG Level Builder features, but I liked working on it so much, that it has grown up as a very playable and polished game (graphics may not look polished, but actually that’s the “troll/meme” style). It has been submitted to the AppStore already. You can follow about it in the official site www.angry-trolls.com and check it in action:

And where does all that stuff relate with Corona SVG Level Builder? First all levels are made in Inkscape and taken care by Corona SVG Level Builder. Take a look at how one of the levels look like in Inkscape:

Angry Trolls level in Inkscape

Upcoming Corona SVG Level Builder features

Next it simply contains everything that is coming to the next update:

  • Spritesheets support (TexturePacker and SpriteGrabber), with multiple spritesheets per level, persistent spritesheets, external spritesheets.
  • Dynamic scaling: draw your level only once and it will work for all resolutions, loading related graphics for the resolution.
  • Multiple layers support.
  • Composite backgrounds (images, vectors, colors).
  • Vector display objects as you draw in Inkscape (the actual support consists only in showing the physics objects assigned with images).
  • Persistent and external game materials: define all your objects in an external table and you can use them accross your SVG elements by assigning the material name to them. This makes life extremely easy, since you have to define objects properties only once. You may be wondering: isn’t there material support already? Yes, there is. But in the actual support you have to define your materials in your SVG level, for every level. This time you define them in an external lua file.
  • Mark objects as non physical.
  • Custom attributes for bodies and materials.

And an extensive list of fixes and small adjustments.

When is the update coming out?

I’m now working on the documentation, a game example and video tutorial and then it will be released!

Corona SVG Level Builder released! Get it now!


After two months of work, the Corona SVG Level Builder is here!

Corona SVG Level Builder is a set of libraries to be used in a Corona SDK game that allows you to create Corona SDK physics based games, levels and maps by just drawing in the free and open source vector drawing Inkscape. Everything you draw in Inkscape is automatically converted into Corona physics bodies or paths.

It supports almost every Inkscape tool, allowing the creation of simple (rectangles, ellipses) to very complex physics bodies and paths (bezier paths). Then you can set physical properties and attributes (density, friction, vertices, etc) direct into Inkscape, without ever programming them. It supports all Corona SDK physics properties.

With it you only have to program the game logic itself. You won’t have to worry about element placement and positioning, which can be very time consuming when done by hand.

You can see the complete list of features and buy it on the official page: http://levelbuilder.karnakgames.com.

What kinds of games can you make with it?

With the Corona SVG Level Builder you can create and edit Corona SDK physics based games and levels by just drawing in Inkscape and then setting physics properties with the built in Inkscape XML editor. Corona SVG Level Builder allows you to create very simple levels with just a few elements to very complex levels with lots of physics curves, complex terrains and lots of elements (example: an Incredible Machine like game).
It is a drag and drop level and physics editor.
Examples of games that can be created:
  • Platformers.
  • Top view racing games.
  • Labyrinths and mazes.
  • Slingshot based games.
Basically: any physics based game and level based game.

Big Discount

But even if it took all that time, not all planned features are implemented, including no Game Examples and no Templates. For this reason, it is being released with a price almost 65% off! Buy it now!

* Price increased by $10 on May 30, 2011. It will increase again once the first update is released. So grab it as soon as you can.

Corona SVG Level Builder: Complex Corona physics based terrains with Inkscape paths and bezier curves


It’s been more than one month since the first preview of the Corona SVG Level Builder! Since then I made a huge progress. It’s now possible to have any kind of Inkscape drawing as physics 2D bodies and game elements. This is going to be the perfect tool to any kind of physics driven game. I can’t image doing a Bezier curve coordinate by coordinate manually: with the SVG Parser you simply draw a Bezier Curve and it is added to your game as a Box2D static body, enabling perfect collisions and every supported Corona physics interactions.

You can create levels for “traditional” platform games (boxes, circles, curves), as well any kind of terrains, walls, etc. Take a look at this video:

Physics Materials

Next I’ll showcase physics settings and materials as well game elements templates. And then you will be ready to grab it!

Want to know more?

This is still a work in progress, so if you want to hear more about it when it is ready, you can follow me on Twitter: @KarnakGames and/or signup to my Corona Newsletter:

Karnak Games Corona SDK and Corona SDK book newsletter. Your e-mail:

Presenting the drag and drop level editor for Corona SDK with Inkscape and SVG!


Inkscape Level Editor for Corona SDK

I’m working on another cool Corona SDK thing along with the book: a SVG based level editor for Corona SDK!

By just dragging and dropping rectangles in an Inkscape* document you can have game levels with physics bodies deployed instantly.

No more manual physics bodies positioning and tuning! Take the pain out of level creation.

* Free and open source vector graphics editor – http://inkscape.org/

Demonstration and level creation process video

Want to know more?

This is still a work in progress, so if you want to hear more about it when it is ready, you can follow me on Twitter: @KarnakGames and/or signup to my Corona Newsletter:

Karnak Games Corona SDK and Corona SDK book newsletter. Your e-mail:


This is not intended to be a competitor or replacement to the excellent Lime. Lime is totally based on Tiled. My level editor is based on Inkscape and SVG parsing (which is a XML file). Although I make use of Tiled, I don’t use the Tiled map itself, I just use the IMAGE exported from a Tiled map (File, Save as Image…).

Transition Manager for Corona SDK: Pause, Resume and Manage all transitions in a scene


UPDATE: Transition Manager is outdated and lacks features. Instead, I recommend that you check and use this: http://developer.anscamobile.com/code/pausable-timers-and-transitions-speed-adjustment.

Actually to pause a transition in Corona, you have to cancel it. Then to resume it later, you have to keep track of the elapsed time and create the transition again. That means, it still doesn’t have a pause and resume function. For this reason I’ve created the class “TransitionManager” that keeps track of all transitions in a Corona scene and allows you to pause, resume and cancel them all at once.

This totally simplifies dealing with interruptions, pausing and resuming the game or simply moving to another scene. I won’t explain it here, instead, you can watch the following video and download the class and example code from GitHub.