前言

  公司开发的第二个虚幻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. %~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加上断点调试

最新文章

  1. Redis到底该如何利用(二)?
  2. C# 检测程序运行时间的方法,Stopwatch类
  3. spring源码深度解析-2功能扩展
  4. 在js自定义函数中使用$(event.target)代替$(this)
  5. [King.yue]Grid列赋值文本,隐藏Value
  6. java的单例设计模式
  7. spring Annotation 组分注塑
  8. C# 网上收集的一些所谓的开源项目
  9. 2012-11-17 12:28 用MFC实现的计算器(详细版)
  10. Django使用模板后无法找到静态资源文件
  11. 不可思议的纯CSS导航栏下划线跟随效果
  12. Item 19: 使用srd::shared_ptr来管理共享所有权的资源
  13. pxc集群进入非主模式怎么让最后的节点允许提供服务
  14. jquery循环方法
  15. Codeforces 464D-World of Darkraft - 2
  16. Cannot subclass final class class com.sun.proxy.$Proxy
  17. Ubuntu16.04编译安装Redis Desktop Manager
  18. PowerDesigner导出word,PowerDesigner把表导出到word,PDM导出word文档
  19. http协议基础(十一)http与https
  20. [Android] Android MVP 架构下 最简单的 代码实现

热门文章

  1. 《STL源码剖析》——Array
  2. 2019-11-29-WPF-多个-StylusPlugIn-的事件触发顺序
  3. layui 日期插件一闪而过
  4. winform IO文件操作
  5. PostgreSQL查询当前时间的时间戳
  6. 深入挖崛:mysql主从复制原理
  7. python数据分析三剑客之: matplotlib绘图模块
  8. 监控微信小程序中的慢HTTP请求
  9. Java 之 Set 源码分析
  10. html书写行内元素时-tab和换行会在行内元素间引入间距