前言
公司开发的第二个虚幻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 ..in ( rd /s /q ..in ) mkdir ..in move *.exp ..in move *.dll ..in move *.exe ..in 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)复制到 EngineEngineBinariesWin64
3、Lua脚本ContentScript目录下,创建debugger文件夹,将LuaSocket源码下的lua复制进来
4、MobDebug.lua也复制进来,修改Socket路径
5、UnLua.lua中require MobDebug