I'm evaluating moai for my next project, and from what I can tell, it looks really powerful. Great job! There is a decent chance we'll use MOAI going forward.
Here's my feedback for possible improvements, at the API level:
+ Consider shortening some of the class names. Rename the MOAI* prefix to M*, so that classes look like: MQuad instead of MOAIGfxQuad2D. I will be typing these names every day, and while my text editor's autocomplete is pretty good, I still usually have to Type MOAIGfx before I can trigger completion.
Here are some examples that might make my day to day life easier:
MOAIEaseType.EASE_IN => MEase.EASE_IN
MOAITouchSensor.TOUCH_DOWN => MTouch.TOUCH_DOWN
MOAIInputMgr.device.pointer:setCallback => MInputManager.pointer:setCallback
That last one is an interesting example. I found that the API seems to abbreviate some words arbitrarily, and it doesn't look very consistent (to me). But in this case, it's probably OK to expand Mgr to Manager, because once I type "MInputM" I can hit autocomplete to get the rest. With the 0.9 API, I need to type "MOAIInputM", which is 10 chars to the 7 chars in my example. The 0.9 API is thus "1.4X slower" to type. If you optimize your API's tradeoff between type-ability and memorize-ability, you could have a super slick toolkit here.
+ Provide some default initialization wrapper that makes the Hello World super short. The simplest example I could find is:
https://github.com/moai/moai-beta/blob/master/samples/basics/gfxQuad2D/main.lua
The first time I encountered MOAI, I couldn't the difference between a viewport, layer, renderpass, or prop. The Hello World could look something like:
stage = MStage.new ()
quad = MQuad2D.new ()
quad:setTexture ( "cathead.png" )
stage.addChild(quad)
In Corona SDK, the simplest hello world is two lines:
local textObject = display.newText( "Hello World!", 50, 50, nil, 24 )
textObject:setTextColor( 255,255,255 )
Having a super short Hello World is important, because it gets more people to try your SDK. The more users, the better!
My reasoning is that your API and tools are MOAI's user interface. We developers have to interact with it every day. Thus, the more streamlined it is, the better.
Thanks!
Ron
p.s. I know it's a pain in the ass to rename everything, but the MOAI prefix can be fixed with (almost) a global search/replace. I look forward to an awesome 1.0.


