當你發布lua時,你或許不想用戶看到你的lua源碼,更不想用戶修改你的lua代碼和系統內部的秘密,那就需要用別的方式來發布。
最終的文本文件可以通過lua作者提供的標准發布版本中的程序來執行。這個程序稱做luac.exe,把lua文本文件“編譯”成二進制的文件。這樣就可以讓別人更難知道你的游戲是如何運行的,采用了什么技術。
當寫好一個lua文件后,可以通過一個典型的編譯命令去“編譯”這個文件:
這一行代碼會編譯helloworld.lua腳本並在helloworld文件中生成二進制數據。
lua解析器並不關心你傳給它的是文本文件還是二進制文件,也不關心擴展名是什么。
用這個方法,就不用擔心別人可以看到你的代碼了。
補:
發現當用到require加載某些子模塊時會有出錯。根據《Lua 程序設計第二版》第15章所說:
當require一個模塊mod.sub時,require會用原始的模塊名“mod.sub”作為key來查詢table package.loaded和package.preload,其中,模塊名中的點在搜索中沒有任何意義。
當搜索一個定義子模塊的文件時,require會將點轉換為另一個字符,通常就是系統的目錄分隔符。轉換之后require就像搜索其他名稱一樣來搜索這個名稱。
所以最好的方法是在編譯完lua腳本后,也把二進制文件改成.lua后綴。