luac lua's byte code compiler can be used to reduce the time it takes to load lua code, to reduce memory usage and more!
each time the game is started the lua source code is loaded and compiled into byte code that lua can then run. that loading into memory, compiling, ect takes time and memory.
as users have more and more mods that load time, compile time, and memory foot print becomes significant. and people hate waiting!
luac does this by precompiling the lua source code into byte code and removing debugging information
to start you have to download and install lua 5.1.x (not 5.2.x)
once that is dont its easy to use luac
just open command prompt and enter:
luac -o <filename>.luac -s <filename>.lua
where is the name of the lua source code file that you would like to compile to byte code.
the -o option tells luac that you would like specify the name of the output file
and the -s option tells luac that you would not like to generate any debugging information, thus reducing the size of the resultant lua byte code and resulting in both faster load times and reduced memory usage!
where C:\dev\citiesxl\src\cxl_enhanced_mod\Data\interface\panels\ingame\ingame.lua contains the lua source code i would like luac to compile to lua byte code
and where C:\dev\citiesxl\release\cxl_enhanced_mod\Data\interface\panels\ingame\ingame.lua contains the lua byte code that i would like to release with my mod
an additional benefit of using luac is that you will no longer be releasing the source code to your mods. people who download them will only be getting the byte code. which protects your intellectual property. this does not mean that it is completely protected since byte code can easily be reconstitute as source code using decompiler. and this does not mean that mod developers cant still release a source code version of the mod for other modders, but giving just the byte code to players makes sense since it will load faster, use less memory and run slightly faster.
just so that everyone knows i tested the above to see if it would work by unpacking all the existing pak files, recompiling them all and then replacing the lua source code in the pak files with the luac byte code files (with same name) and while the game did not run any faster, its basically the same byte code, the game loaded up significantly faster and used more than 30mb less memory!
now i am not saying you would like to do that. perhaps focus should consider doing this and then making the source code available to modders as a zip file that they put someone on their modding website.
if you would like to learn more here is the man page for luac
anyways here is my first tutorial. hope it helps mod developers by offering new choices and options.
I will no longer be hosting XLNation as of March 1, 2017. Skullz613 will be taking the reigns of the site in early 2017 and XLNation will be moving to a new web hosting service. During that transition there will be an interruption in service of up to two weeks. Skullz613 is now a full administrator of XLNation. Be kind to him.
Tutorial using luac (lua's byte code compiler)
using luac (lua's byte code compiler) to useful things!!