Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
25. April 2013


As you may know from previous posts I am rather a big fan of Lua based game engines.  When I learned about a new one completely off my radar, I just had to check it out.  The game engine in question is Dreemchest.



As I mentioned earlier, Dreemchest is scripted using Lua.  Underneath Dreemchest is powered by a C++ core.  In terms of other Lua game engines, Dreemchest is probably most similar to Corona in scope.  It comes with a WYSIWYG editor and somewhat uniquely, enables you to use Flash to create your user interface.  Unlike Corona, you don’t need to authorize against and build on their servers, everything is done locally, I know some people really hate that about Corona and Gideros ( and more recently Loom ). Oh yeah, it’s also free(for now?).  Let’s jump in and take a look at Dreemchest.


First things first, you need to download Dreemchest, which you can do right here.  It is available for Windows and MacOS, although I have to admit, the MacOS version seems to be a lot less stable right now, so if you have a choice I would consider choosing the Windows version.  There is no installer, simply download the archive, extract it then run composer.  Dreemchest seems to be a Qt app, so I’m a bit shocked a Linux build isn’t available.  Then again, Linux is a fairly small sub-set of the population, so maybe that’s a down the road feature.


Meet Dreemchest Composer.


Dreemchest Composer in action


This is the WYSIWIG environment in action with the Animation sample loaded.  Currently there are over 20 samples available showing you how to perform various actions in Dreemchest.  As you can see from the Window above, it’s a pretty sparse environment, but most of the information you need is available.  Across the top is the toolbar you would use to configure and run your application.  Below the is the WYSIWYG editing area and below that is the output panel.  On your right hand side is the Property window, which is populated dynamically by your script objects, allowing you to view and configure values visually instead of in code.  Below that are your assets, that you can import, create then drag and drop into your scene.


The UI itself is incredibly customizable, every dialog can be detached, moved or closed, leaving you law things out exactly as you want.



Coding and documentation


So, where exactly do you do the coding?  If you have the Animation sample open, take a look at the assets panel and you will see a pair of script objects, App and Hero.



Double click one of these script files and it will open in the integrated text editor.


It’s a fairly barebones editor, but it does what you need including syntax highlighting, auto-completion and automatic indention.  It’s nice not having to switch apps to edit code.


The programming language itself is standard Lua 5.1, with an class inheritance system.  If you know Lua you will be immediately comfortable with Dreemchest.  If you press play or F5 to run your application, it runs directly inside Dreemchest:


As of right now, debugging options are quite light.  You can alter position, from portrait to landscape, simulate home button press and not much else.  Oddly enough, once the application is running, you see the options traditional debugging options, such as step in, step out and continue.  That said, I cant figure out how to add an actual breakpoint.  My guess is, this is a feature under active development.  I look forward to it too, as for now you would be limited with printing to the output window while debugging.  Build and load times are virtually non-existent, which is nice.


From a coding perspective, there is a pretty good amount of documentation, especially for such a young project.  As mentioned earlier, there are currently 20+ samples included with the download.  There are a series of tutorials available here as well as an API reference available here.  The API is quite straight forward, somewhat minimal, but still under developed.  Pretty much everything you need to create a 2D game is currently there, including graphics, tweening, audio and physics.  For physics, there is also an integrated shape editor which is rather convenient.  Still under development, new functionality is being added with each release.  This is critical though, as you don’t get source code, so you need all functionality needs to be in box.




Perhaps the most innovative feature of Dreemchest is the ability to embed and communicate with Flash objects for creating your UI layer.  You can included an SWF file just like you do any other graphic file.  The swf file can contain ActionScript2 code, and the two languages can communicate back and forth.  Here is a simple example from the SDK on working with a Flash animation, showing how you can load and communicate between the languages.  uiButtons is the swf file that has been added to the scene.

class "Main"( StageObjectContainer )

function Main:main()
    -- Register necessary functions for Flash UI
    UIManager.registerFunction( 'nativeSetPitch', function( value ) trace( 'Pitch set to: '..value ) end )
    -- Attach to events dispatched from Flash UI
    UIManager.attachListener( 'uiStop', self )
    UIManager.attachListener( 'uiToggleMusic', self, 'onMusicToggle' )
    local ui =
    self:attach( ui )
    -- Notify Flash UI by dispatching an event
    UIManager.dispatchEvent( 'onRefresh', { version = 104, message = 'hi there!' } )
function Main:uiStop( e )
    trace( 'Stop the music' )
function Main:onMusicToggle( e )
    if e.pause then
        trace( 'Pause music' )
        trace( 'Continue music playback' )

This allows you to use the rich UI functionality of Flash/ActionScript for your UI layer, while performing game logic and rendering in Lua.


Building your application


When it comes to creating and deploying your application, that’s a pretty simple process.  Simply select the File->Export menu and select the platform.  You need to have a Mac to build iOS or OSX target.  You need to install the Android or iOS SDK and point Dreemchest at the proper directory before you can export to either platform.  The results of the build (an apk in the case of Android) are in the output subdirectory although I had to do a bit of searching to figure this out.






Dreemchest is certainly a young engine, but it has a great deal of potential.  I did experience crashes and a few UI glitches, although the newest release seems a great deal more stable.  I’m actually quite surprised by just how much it did improve in just a couple weeks, this bodes well for the future. This is certainly an engine worth keeping an eye on, especially if you like Lua and are targeting iOS or Android.  It may not be for everyone, if you need source code for example, Moai is a better fit.  But if you are looking for an all in one accessible toolkit, Dreemchest is a good pick.  Of course, it’s free too, so you’ve got nothing to lose by checking it out.


11. April 2013

I mentioned yesterday that i've become rather smitten with Codea but didn't exactly find the prospect of typing on the iPad screen appealing.  I could have hooked up a Bluetooth keyboard, but I don't want to carry one around with me, especially as the one I own is massive.  I didn't really feel like spending 50-100$ on a portable one, I generally can't stand them if I'm honest.  In the end I came up with the following solution and I actually rather like it.  There is a price tag attached with this setup though, about 16$  ( or 1416$ if you count the MacBook and iPad Mini…).  Which ironically enough is more than Codea costs!  I was going to buy the one app anyways for other reasons, so that was a non-factor for me.


Here is my Codea dev environment in action!




Instead of using a Bluetooth Keyboard, I am using my MacBook as one using the application Type2Phone, a simple little application that acts like a virtual bluetooth keyboard.


Connect and pair like a normal bluetooth device, then when the app has focused, anything types is sent to your iPad and the iPad's keyboard is hidden.  Type2Phone has a 4.99$ price tag, but it works very well and has plenty of options.  Even more important, it handles connects and disconnects very well.  There is a more expensive app called iKeyboard, the one you will find if you google.  It doesn't appear to be maintained, doesn't work with iOS6 and costs twice as much.  Use Type2Phone instead, even if it has a horrible name! :)  It's one of those slick little utilities that sets out to do one thing and does it well, I appreciate those.  If you are running on a PC, I am certain you will be able to find similar utilities, as long as you have bluetooth that is.


Now typing and looking at a different device is kinda awkward, so I decided to mirror my iPad's display to screen.  The easiest way to do this is with Reflector a 13$ purchase that runs on either Mac OS or Windows an enables you to mirror your iPad display on your desktop using Airplay.  So long as your network connection, the results are pretty solid.  In the above picture, I am out at a coffee shop with both devices tethered through my Android phone and it was a bit choppy at times when running a game or movie, but flawless when programming in Codea.  On my home network, it's simply flawless.

Here is Codea running mirrored on my desktop using Reflector.

Codea over airplay


Now, Reflector is a cool little application and one I was intended to purchase anyways ( it's one of the easiest ways to screen capture an iOS game at full speed without having to run the simulator.


Now you may be asking, why not just run the simulator?  At the end of the day, you can't beat running on the actual device, especially when it comes to motion controls and multitouch.  Plus, under this setup, all of my code exists in one place, on the device, no need to move from Mac to Dropbox to iPad for example, or the other various deployment mechanisms.  Plus at any time I can just pick up the device and go, the big strength of Codea.  This way, I can give myself a desktop like development experience when I am at home or have my laptop with me, but I can still take advantage of the iPad based nature of Codea when I am on the go.


There is one downside to this setup, and one I don't think I am going to be able to overcome…  you still need to touch the device… there is no mouse support in iOS ( unlike Android ) and Reflector is for display only.  You will find yourself clicking things in Reflector over and over until you get used to it.  If you know a way to control the touch screen on an iPad from a Mac, let me know!


You can see a video of the entire thing in process right here:

10. April 2013

Now that I am actually setting off to create a mobile game, it dawned on me I don't have any current iOS devices to develop and test on.  I have an iPad 1, that my daughter has pretty much co-opted, and an iPhone 3g, which is absolutely prehistoric at this point.  I have zero desire to own an iPhone ( wayyyyyyyyy too small for me ) so I decided to pick up this iPad mini last weekend.  I figured it was a good base-line target device, as it shares the same basic components as the iPad 2.  Besides, I was going to be buying one for ShadowRun eventually anyways!



Of course, with a shiny new toy, I pretty much spent the weekend playing with it.  So i've been installing the various games and applications that aren't available in Android land.  


One such application I eventually installed was Codea.


If you've never heard of it, Codea is a Lua based game development system that is run on the iPad.  That's right, it's a full IDE, code editor and game library that you run on your iPad to make games for your iPad.  As you may know I am a pretty big fan of Lua game engines and amazingly enough, Codea is pretty good.  After I installed it, the next couple hours just disappeared.


Codea comes with a pretty extensive number of demos and a great deal of art assets for you to get started with.  You also have the ability to publish to the app store.  The documentation is pretty good, although locating it from their website isn't immediately obvious.  You can take a look at the reference here, although it uses Sencha touch, so it will only run on webkit browsers ( Safari & Chrome ).  Again there are a number of demo applications with complete source code included as well.  Pretty much everything you need is actually included.  Perhaps coolest of all, there is even a book available, although only a chapter is dedicated to Codea.


So, what you may ask, is it like to program on an iPad?  Pretty freaking terrible actually.  I've never been a huge fan of the iOS keyboard, now imagine writing code with it.  Codea do have a toolbar that make accessing special character and navigating between text ( think Home and End ) easier, and it does help.  They've also made a number of things very touch friendly, like colour selection bringing up a colour select dialog or touch and drag to change a numeric value.  There are also drag and drop snippets that make the process quicker.  At the end of the day though, you still have to type a fair bit and with the onscreen keyboard it's kinda frustrating.  Codea does about everything it can to help you, but in the end, they are at the mercy of the device they run on.  You really want a bluetooth keyboard if you are going to do serious work, if only just to reclaim screen space.


I am actually rather hooked.  I can't see myself using Codea for a full release project, but as something to play or prototype with when out and about away from my PC it's great fun.  I think it would also be a good app for someone just learning the basics of programming.  This app is easily worth the 10$ cost.  As I am going to be playing with it a bit more, I might as well do a review… expect one shortly.

4. April 2013

Well, this certainly wasn't expected, and I double checked the calendar, it's no longer April 1st...


Introducing Corona SDK Starter

Okay, so here’s where it gets really exciting. From very early on, we have focused on democratizing app development. We felt (and still do) that anyone could create the next great app with Corona. Since then, Corona has been embraced by indies and your apps have hit the top of the charts.

Indies are a key part of our community, so today, we are taking that vision a step further. We are announcing Corona SDK Starter – a completely FREE version of Corona that lets you publish to all the platforms we support without paying us a single cent.

With Corona SDK Starter and the Starter tier of Corona Cloud, you can publish amazing, connected apps faster and more affordably (free!) than ever before. We are the only platform that lets developers do this. A lot of other products have hidden fees or force some sort of watermark/splash screen. There is no such restriction with Starter. That’s the difference between “fake free” and a true free option.

So, what's the catch?

If you want to access certain specific features like in-app purchase and analytics, you’ll need to subscribe to a paid plan. You can still build with those features on your own device, but you can’t publish apps to the store if they use those premium features. Daily builds are also only available to paying subscribers.

Not really much of a catch in the end, at least so far as existing Corona goes.


There is however also a "coming soon" Corona, that will be available in the Pro version:


As I talked about last week, our bleeding-edge OpenGL-ES 2.0/shader-based graphics engine is in the works. You are going to be blown away with what you can do. I’ll talk about that more later but I did want to give you a teaser.

If you watch this week’s CoronaGeek episode, you’ll be able to see 5,000 fish running at 60 fps! It may be hard to tell from the video, but this is what I showed to a lucky few at GDC. I recommend watching the whole show, but if you’re pressed for time, you can skip to roughly the 35:00 mark.


Second, there’s Project Gluon, a.k.a plugins. We’ve done a ton of plumbing work so that you’ll be able to do integrate 3rd party services and functionality into your app, and do so painlessly from the comfort of the Corona Simulator.

Now there’s good news and bad news here. There are a lot of moving parts, so plugins didn’t quite make it to the public release — and yes, I’m disappointed too.

But the good news is that plugins are coming very soon! We’re getting ready to seed this to beta testers this month. We are actively building a library of plugins that will be hosted on our servers. We’re working with folks like Amazon to get you more monetization options. We are acutely aware that this is a big issue for a lot of you.

Device Access

Lastly (for now), we have found a way for you to access certain Java and Objective-C APIs from Lua! On the Android side, we already have the foundation there thanks to Enterprise, and we’re looking at how we can accelerate bringing those Enterprise innovations down to Pro developers. In parallel, we also have a proof-of-concept on the iOS side, so I’ll have more news once we’re past the research phase.

The pro version is going to have a 599$ a year price tag, but existing customers will be able to subscribe for 349$.


So, nutshell version is… the product we know today as Corona is now available for free, minus some web services.  Their is a new more powerful version coming soon, at it will be a paid only version with a price increase.


So basically, if you haven't used Corona, it's great news.  If you are an existing subscriber, not so much.


You can read the entire release here.


3. March 2013


After a 4 month pause, there has been a new Moai release.  They also removed sign up requirements to download the SDK ( which was misleading before, so nice move ) as well as added nightly builds for those that like to walk on the wild side.


The biggest new features are android keyboard support ( finally! ), better threading and off screen frame buffering.  The full changelog is below


tTerrainMask () to MOAIPathFinder; renamed setTerrainScale () to setTerrainWeight ()
* Some work has been done on threading. Check MOAIThread.
* added support for default texture; finished async load; samples for async texture load
  and default texture
* added support in MOAIDataBuffer to detect zip files, inflate on load; added inflate on load
  support to MOAIDataIOTask
* moai coding style guide in .doc format
* first phase of offscreen rendering architecture completed
* added setClearColor () to MOAILayer
* samples to test multiple viewports inside an offscreen buffer
* integrated sfmt random number generator
* Merged playnomi contribs to MOAIImage, MOAIImageTexture, MOAIParticleSystem and MOAIParticlePexPlugin


by Adam Villalobos ( )
* Adding GCM support ( replacing C2DM ) to Android host.
* Adding file not found log if a texture file fails to load
* Fixing build errors for DataTaskIO
* Fixing issue with setting visibility not properly updating dependencies
* Fixing bug with Font reloading on Android
* Added Android keyboard support


by John Copic ( )
* Adding sfmt lib to android build.


by JoakimBlomberg ( )
* Script node apply of attributes should unpack attribute id or it will not be applied


by Bogdan Tatarov ( )
* adding MOAIUnitzSound::_getFilename()


by mxttie ( )
* updated box2d physics sample adding mouse manipulation using mouse joint


by Tommo Zhou ( )
* fix edge case that new-created-paused action cannot receive further update
* fix: MOAIImageTexture not override OnInvalidate


by Antonio ( )
* Initial Camera Support for iOS


by sporksmith ( )
* Log file-open failures


by Clement Farabet ( )
* Fixed VSYNC issue for OSX host.
* Added missing files to iOS (XCode) project.


by Francisco Tufro ( )
* Several fixes in build systems for all platforms
* New release script in bin/distribute


by Stephen Belanger ( )
* Recommended to enable this with C-Ares


by Ben Borowski ( )
* Adds call to FMOD update to iOS sample project.


by Robert Wahler ( )
* GlutHost will run "main.lua" if host binary is called without arguments
* add Lua global 'arg' that mimics the lua/luajit built-in global 'arg' to GlutHost


by Alexey Zankevich ( )
* MOAIJsonParser fix - checking if lua number is integer has been added
* Fixed MOAIEnvironment.screenDpi nil issue for Android
* Fixed MOAIEnvironment.screenDpi nil issue for iOS host


by Seebs ( )
* Clarify description of textbox color escapes, fixing one typo and reducing confusion
  between number of bits and number of values represented.
* Terser output
* add (untested) support for controlling GL blend equations.


by ChairGraveyard ( )
* Add support for collideConnected flag to MOAIBox2DWorld::_addRopeJoint
by out-of-pixel ( )
* Fixed last Key Error from MOAIAnimCurve


by superquadratic ( )
* Fix Clang 4.2 (Xcode 4.6) Compiler Warnings


They also changed the file structure as follows:

bin/ Development binaries for Windows and MacOSX, Linux will be added soon
docs/ Documentation for this release and attribution images
hosts/ Source and IDE projects for the different platform's hosts
include/ Include headers
lib/ Compiled (static and/or dynamic) libraries for all the supported platforms
samples/ Moai SDK feature samples


Head on over to the Moai website to download.


AppGameKit Studio

See More Tutorials on!

Month List