The game developer's mobile editor

As a developer, many of us have always wanted an editor that could run on the iPad and wished that we could work on it creating our apps. The only issue has been that the iPads have some wonderful text editors, that allow for a whole range of functionality, but... it does nothing more than being a text editor. Now that is not much of a help. Imagine you are sitting at the airport and a super idea strikes you, you want to test this out, but you are also about to board the plane for a 3 hours flight, you are not allowed any electronic equipment, even if you do manage to get your MacBook on, there is no Internet connectivity, and for the sake of convenience, you might want to develop on your iPad.

Let this not be an article of a feature wish list. There is such an app, that is scheduled to be released on the app store in the coming week. Codify will be released next week, created by Simeon from Two Lives Left, an Australian mobile development company. It has a full featured text editor which has some really awesome productivity enhancing features. When developing, and trying to enter color information, it is generally a trial and error or a look from from a series of numbers for standard colours. However in Codify, it is as simple as tapping the colour triad, and the colour picker pops-up, allowing for visual selection. Want to select an image, tap on the sprite name, and select the sprite visually, need to modify a number, tap on it and swipe to increase/decrease the number.

OK, fine, those are wonderful features to have in a text editor, so what? well it does not stop there. Now that one has typed in the code in Lua, how about running it? "Yeah", one might say, "as if...", but Codify has an inbuilt Lua compiler/interpretter that runs the Lua. So you can not only type your code, but also run your code and test what happens. There are a few other Lua based apps like iLuaBox, LuaConsole that allow for lua apps to be run, but these are more interactive apps than projects and complete apps.



The Engine

Codify runs modeled/inspired by the Processing engine and lua. The text editor that acts as the interface between makes all the difference in the experience that the user gets. Processing for those that might not have heard about is an open source library and runs on various platforms including the Mac, Windows and Unix. The graphics from processing can be exported into PDF, DXF, TIFF and many other file formats. The processing library has already been ported to work with JavaScript, ActionScript, Ruby, Python and Scala amongst others.

The keyboard has a quick look icon (the eye) that allows for browsing the documentation. As a few keystrokes are typed, the auto suggestions pop-up and can be selected with the key that looks like the tab -->| key, another major brillinat touch is the inclusion of the move left, move right type of keys, since there are no cursor keys on the iOS devices, it is a pain trying to accurately set the cursor at the position just after the closed " to enter a , and some other parameter, so the keys -->] or [<-- are the solution, tapping on them is equivalent of moving the cursor to the left or the right.

The Lua engine is sand-boxed where the *potentially* hazardous commands are removed, so you cannot use commands like rawget, rawset, rawequal, setfenv, getfenv, string,dump, dofile, load, loadfile, loadstring and the commands related to require and package.

Verdict

Lua in itself has proved to be a winner, allowing users to work faster and generate apps that are easy. The language is easy to learn, it is more natural than some other programming languages, it hides from the user the hassle of points and memory management, Java might have no pointers but it still requires initialisations with new and so on, lua there is no new, a new object is created as soon as it is defined.

Processing is a library that is not only free and Open Source but also an amazing library and is being used by schools and universities, but has been used in Music Videos and Advertisements.

So Codify hinges on two blocks that are winners in themselves. Acting as glue Codify integrates them together allowing for rapid and wondrous creations. Native features like Multi-Touch, Accelerometer are all available to use in the simplest for.

In short, if you want to try learning Lua and creating applications, then Codify is the solution. Another thing to keep in mind is that it is now in version 1.1, and it has already proved itself as being wonderful. From a practical point of view, the games created in Codify can only be played in Codify, these cannot be distributed as of now, it is sand-boxed according to Apple's policy on code. However the author has a clear road-map, where he would like to OpenSource the back-end engine thereby allowing the wonderful community to allow for newer additions and extensions to Codify. Maybe someone might port it for Windows and Linux, and the Desktop version could even create stand-alone distributable versions for the iPad.

This is just the start, I would recommend that "Two Lives Left" is followed on twitter to know what they are upto.

A Visual journey









The Code View

Here is an example of how the accelerometer can be used to move the arrow based on the device's orientation. You can note that every template created using Codify has a hook called Draw, which is called on every frame, and the setup() function which is called on start of the app. The code can show how easy it is to get the accelerometer values and then use it with vector transformations to rotate the arrow accordingly.

GravityX = 0
GravityY = 0 -- we are just using this for the watch()

-- Use this function to perform your initial setup
function setup()
    print("An example that shows how to use the Gravity vector")
    watch("GravityX")
    watch("GravityY")
end

-- This function gets called once every frame
function draw()
    GravityX = Gravity.x -- a bit not nice
    GravityY = Gravity.y

    background(127, 127, 127, 255)

    stroke(255, 255, 255, 255)
    strokeWidth(15)

    lineCapMode(ROUND)

    pushMatrix()

    translate(WIDTH/2, HEIGHT/2)

    grav = vec2(Gravity.x * 300, Gravity.y * 300)

    --print(grav)

    line(0, 0, grav.x, grav.y)

    -- Arrowhead
    down = vec2(0,-1)
    orient = down:angleBetween(grav)

    pushMatrix()
    resetMatrix()

    translate(WIDTH/2,HEIGHT/2)
    translate(grav.x,grav.y)
    rotate(math.deg(orient))
    
    line(0, 0, -20, 25)
    line(0, 0,  20, 25)
    popMatrix()
    -- End Arrowhead

    popMatrix()
end


SUMMARY
Software : Codify
Version : 1.1
Publisher : Two Lives Left
Website : http://twolivesleft.com/
Twitter : @TwoLivesLeft
Platform : iPad
Price : $7.99
iTunes Link : http://itunes.apple.com/us/app/codify/id439571171?ls=1&mt=8

And we have a copy of Codify for one lucky winner, all you need to do
1. Follow @whatsin4me
2. Retweet the message "Read reviewme.oz-apps.com, follow @whatsin4me and RT this msg. You might win a copy of #Codify from @TwoLivesLeft"
or
Follow us on Facebook by liking our page at
http://www.facebook.com/whatsin4me

Comments