Page 1 of 1

Lua hot reloading

Posted: Sun Oct 09, 2016 2:33 am
by seph
Hey everyone! I've just started using love, and its gorgeous. Fantastic, clean API and beautiful documentation.

To speed up development of my game I made a little hot reloader. Its super hacky at the moment, but y'all might enjoy it anyway. It consists of a simple nodejs web server which hosts the game content itself, and a launcher which downloads the game content from the server when the app starts up. And it'll download a fresh copy when you press shift+R or touch your mobile screen with 5 fingers.

Its not clean - the whole thing was done in a single evening. So caveats:
  • It doesn't reload automatically when the source files change
  • When you reload the game it re-downloads all your assets. That could all be fixed pretty easily by looking at timestamps.
  • It doesn't recover automatically when you lua throws errors
  • It won't terminate secondary threads. (Easily fixable by adding an optional love.unload() function that could get called when reloading the game)
  • It doesn't support custom love.run function
  • If it can't contact the server the client should just run the last good copy of your game. (Its sitting *right there* in the save directory). That'd be great for demos and stuff. Right now it just hangs.
The whole thing is under 200 lines at the moment. Just fork the project and add those features yourself if you want them.

Oh yeah, and you need to reference your assets from _bundle/images/sprite.png instead of just images/sprite.png. I don't think there's a way to add file search paths from lua, and I'm hesitant to dump the whole game raw in the save directory. (Which is how it works right now). I guess I could hotpatch all the love functions which load files to look in _bundle, but that seems error prone.

The hot reloader itself is here. Have fun! Let me know if you run into problems. (Or, as I say - fix them. Its seriously <200loc.)

Thanks to everyone behind the love example browser for example code showing how to reload a love2d game.

Re: Lua hot reloading

Posted: Sun Oct 09, 2016 6:16 am
by zorg
Pretty neat, though i'd call the current version something more like an "Auto-updater" than "Hot reloader". :3