Whats New in 1.5

halfnelson edited this page Feb 26, 2014 · 7 revisions

It has been a little bit since the last MOAI release, and the main branch has had a lot of work done.

First the big things:

Feature merge from Zipline

  • Massive rework of the garbage collection system to simplify object tracking. This solved one of the few remaining moai crashes
  • Reworking of the AKU Modules API. All of the modules (box2d,chipmunk,untz) are using the same api and are linked with the host-modules project instead of the host. This allows people to create custom hosts without having to generate an #ifdef soup. The #ifdef soup is all tucked away in aku-modules and a host developer only needs to link against it and call the 4 methods it needs.
  • Patrick got sick of working with GLUT and created a SDL host in host-sdl folder
  • A flag to MOAIAction to disable its auto-stop on no children

A New Build System

The gc changes and massive merge from zipline broke a lot of the build files (ios, osx projects, android make files, vs solutions). Turns out merging xcodeproj and sln files is a royal pain. The solution files and project files were ditched and the following added:

  • The CMake build system that was in place for the linux and blackberry hosts was extened to include all hosts
  • Luajit support was added to all platforms (via cmake scripts)
  • create-project-* scripts were created that allows you to generate vs2008->vs2013 and xcode project files.
  • Changes to a project can be recorded once in the relevant cmake script and all platforms should work instead of maintaining 6+ build configs
  • Plugin support was added for installing modules which are outside the moai sdk (other repos) More
  • Custom host support was added for compiling a host outside of the moai sdk repo. More
  • Support for compiling with Ming-w64 for a completely open source experience on windows (no more vcruntime to distribute)

Additional Features

  • Vector Pathfinding (MOAIVecPathGraph)
  • Box2D Closest Raycast Exposure
  • Twitter support in android
  • MOAIShader was enhanced with the 4x4 matrix and given access to UNIFORM_WORLD_VIEW
  • A faster and smoother android host with working keyboard support.
  • MOAISafariIOS is now MOAIBrowserIOS and MOAIBrowserAndroid added
  • Visibility can now be inherited!
  • Google Play Services
  • Updated Tapjoy and Vungle
  • MOAISim showCursor and hideCursor support
  • Documentation improvements
  • Chartboost for IOS and android
  • You can now EnqueueJoystickEvent from the host.
  • New HTML/JS host based on emscripten


  • Android logging support repaired
  • VFS works correctly on all platforms
  • A heap of lua stack overflows
  • Fixes to JSON parser and encoder
  • Textbox string bounds calculations fixed
  • PVR support working now

What didn't make it

  • Blackberry support is untested with all the changes
  • NaCL support is untested with all the fixes. Maybe this should be ported to PNacl or just use the HTML/JS host if possible

Breaking changes

  • [C++] The AKU Module interface is different and as a result any custom host will need to be updated to link against aku-modules.cpp and remove calls to modules from the host.
  • setInterface() set a metatable for the membertable, not an index as previous. So when using set interface a small shim might be needed:
        function setInterfaceLikeOldWay = function(self, newInterface)
          local interface = { }
          interface.__index = newInterface

This means that the flower library will not work without a small mod like above to the class implementation.

  • [C++] MOAILuaRef is now split into MOAILuaStrongRef and MOAILuaWeakRef. So calls to MOAILuaRef->getStrongRef etc need to be replaced with a MOAILuaStrongRef member and a getRef call