前言
公司開發的第二個虛幻4項目已經上線了,慢慢趨於穩定。回想起開荒的日子,歷歷在目。從引擎腳本的選擇,各工具(導表,協議生成...)的重構、開發, 引擎擴展(多骨骼支持,Notify擴展,技能編輯器...),UMG藍圖的設計、適配,戰斗Demo的創建,開發流程的接軌,功能堆砌,人員一波波的更迭...
回到正題,18年中,立項的時候,UE4的腳本語言都在實驗期,沒有成熟的,Python、JS V8、Lua等等開源的腳本也都測試過,最終選擇了Lua,主要是基於:
1、Lua語言在游戲業的廣泛引用性。確認不遠的將來會有更穩定、程序的框架
2、UE3老項目戰斗Lua的繼承
最終框架使用了unreal.lua, https://github.com/asqbtcupid/unreal.lua, 感謝大大。最近也一直在關注騰訊游戲的lua開源框架,slua和UnLua,現在有時間了,所以來研究下,為新項目最准備。
一、相關源碼獲取
1,UnLua: https://github.com/Tencent/UnLua
2,Emmylua: https://github.com/EmmyLua/IntelliJ-EmmyLua
3,LuaSocket: https://github.com/diegonehab/luasocket
4,Lua5.3: https://www.lua.org/ftp/
5,MobDebug: https://github.com/pkulchenko/MobDebug/tree/master/src
二、LuaSocket搭建
1、編譯Lua5.3.4
Lua源碼目錄創建install.bat
REM open `Developer Command Prompt For Visual Studio` REM install.bat 5.3.4 %~d0 cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c ren lua.obj lua.o ren luac.obj luac.o link /DLL /IMPLIB:lua53.lib /OUT:lua53.dll *.obj link /OUT:lua.exe lua.o lua53.lib lib /OUT:lua53-static.lib *.obj link /OUT:luac.exe luac.o lua53-static.lib del *.obj del *.o REM bin if exist ..\bin ( rd /s /q ..\bin ) mkdir ..\bin move *.exp ..\bin move *.dll ..\bin move *.exe ..\bin REM lib if exist ..\lib ( rd /s /q ..\lib ) mkdir ..\lib move *.lib ..\lib REM include if exist ..\include ( rd /s /q ..\include ) mkdir ..\include copy lauxlib.h ..\include copy lua.h ..\include copy lua.hpp ..\include copy luaconf.h ..\include copy lualib.h ..\include PAUSE
啟動x64 vs命令行,執行install.bat
bin目錄加入Path
2、編譯LuaSocket
a、打開sln,選擇x64,指定Lua的include和lib目錄,編譯生成core.dll
b、復制socket文件夾(帶着core.dll)到lua bin目錄,這個文件夾后續也要復制在游戲引擎目錄
c、復制src中的lua文件到lua bin目錄
3、測試
三、Emmylua搭建
1、安裝IntelliJ IDEA
2、編譯Emmylua
Emmylua源碼目錄下: gradlew buildAll
3、IDEA 安裝Emmylua
4、設置IDEA配置
a、取消代碼拼寫錯誤檢測
5、啟動debug調試
新建運行配置
運行
四、引擎、UnLua配置
1、UnLua源碼置於Plugins下
2、復制socket文件夾(帶着core.dll)復制到 Engine\Engine\Binaries\Win64
3、Lua腳本Content\Script目錄下,創建debugger文件夾,將LuaSocket源碼下的lua復制進來
4、MobDebug.lua也復制進來,修改Socket路徑
5、UnLua.lua中require MobDebug
五、OK,IDEA加上斷點調試