Live coding in Lua with ZeroBrane Studio

I was working on a lightweight Lua IDE for those who want to learn programming when I came across Bret Victor's Inventing On Principle and Kill Math projects. If you haven't seen them before, I recommend you spend a bit of time listening to his ideas about interactive design. Just don't close this page and come back when you're done as I'll show you how you can do some of it with Lua scripts today.

The core part of the message is that designers need an immediate connection to their creations and even a short update-run-use loop may be too long to explore a variety of different options, parameters, and their interactions. Sometimes the relations or dependencies between variables become more obvious when you not only have a way to interact with the object, but also control the interaction. The live coding feature I am going to present gives you that ability.

The video shows how you can use live coding with different scripts running in ZeroBrane Studio (you may need to switch the video to 720p to make the text more readable).

The functionality is highly experimental, but I have tested it on various scripts without problems. The application is executed in a separate process, so any problem in it should not affect the IDE (this interaction is controlled by the debugger I have been developing). Give it a try and let me know how it works for you or what you can do with it.

You should get a copy of my slick ZeroBrane Studio IDE.


very good. i will try it.

awesome ! , m sure this will be very helpful in making games in Lua

I'd like to try your IDE on Linux and Mac, but there are no build instructions in source code. How do I build it?

Hi Konstantin,

I just released MacOS version a day ago. There are no build instructions, because as long as you can compile wxlua/wxwidgets for your platform, you should be able to run "bin/lua src/main.lua zbstudio" to run the IDE (tested with wxwidgets 2.8.7-12 on Windows and MacOS). The process is a bit more complicated for MacOS, that's why I packaged everything into .app (including *.dylib files for wxwidgets 2.8.12).

There is also some information on running it on Linux captured in this ticket.

Leave a comment

what will you say?