摘要: 目前游戏中普遍使用Lua作为脚本语言,Lua由纯粹的C实现,无任何外部依赖, 代码量较小, 无论是PC游戏还是移动游戏都能很好地适用, 其工具链也较为完善. 但仍有部分缺陷难以解决, 比如代码重构, lua文件较多时,对于函数改名等操作是非常困难的, 只能通过人工检查和运行时验证等手段, 缺少精确的 阅读全文
posted @ 2020-11-26 00:26 剑过不留痕残月分断魂 阅读(242) 评论(1) 推荐(0) 编辑
摘要: 部分第三方代码会用到少量汇编代码, 比如AngelScript脚本,有几个跟系统调用相关的函数采用了汇编实现, 如果直接将代码加入项目,通过UBT编译会失败, 可以预编译为链接库, 但这种情况不方便调试(上传PDB到git不太可行). 可以将汇编部分代码预编译,其他c/cpp代码用UBT编译,在bu 阅读全文
posted @ 2020-09-09 09:29 剑过不留痕残月分断魂 阅读(222) 评论(0) 推荐(0) 编辑
摘要: LuaJIT自带的编译脚本虽然很纯正,不依赖编译器之外的程序,但是在不便于阅读和维护,打算改为xmake描述编译过程。 原版在Windows上是一个简单的bat定义了编译过程,内容比较简洁,已经翻译成了对应的xmake,只编译了链接库,没编译luajit.exe,暂时不需要exe 翻译过程借助了编译 阅读全文
posted @ 2020-05-17 14:09 剑过不留痕残月分断魂 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 为了尝试将LuaJIT接入虚幻Lua插件之中,需要预编译LuaJIT链接库,在桌面平台问题不大, 主要是移动平台,涉及跨平台编译,因为对跨平台编译具体细节没有系统研究,这里先记录一下跨平台编译LuaJIT的主要过程 由于官方提供的编译脚本仅有MakeFile,所以暂时只能跨平台编译,在Windows 阅读全文
posted @ 2020-05-16 21:12 剑过不留痕残月分断魂 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 在UnLua插件中可以直接使用协程编写蓝图中LatentAction逻辑,实现延迟执行线性逻辑。 典型用例:在蓝图中可以调用delay函数,不过,仅能在事件图表使用,因为整个事件图标是作为一个蓝图函数处理的,在Delay或者说是LatentAction位置就记录节点ID,待计时器触发,继续执行图表函 阅读全文
posted @ 2020-04-21 13:47 剑过不留痕残月分断魂 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 前几回初步实现了在LUA层中新建UClass,让C++自动调用Lua函数,但因为虚幻是单个脚本状态机,不方便处理多个LUA状态机,本文尝试初步解决该问题。 参考UnLua插件后暂时搁置在LUA中新建UClass的方式,改用Hook的形式修改先修的UClass里面的函数实现C++自动调用LUA函数。 阅读全文
posted @ 2020-04-15 18:32 剑过不留痕残月分断魂 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 通常情况下安装还Unreal后,会自动关联uproject文件,但偶尔也会出现关联失败或者被损坏,又不想去Launcher里面点验证(太慢了), 有个简洁的办法是用命令行成成代码改成文件,批处理如下: Linux和Mac会陆续追加 阅读全文
posted @ 2020-04-12 18:51 剑过不留痕残月分断魂 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 接上一回处理多个LUA状态机问题,暂时无法解决单个虚幻状态机对应多个LUA状态机问题,故先搁置,转而看看UnLua的设计,本文记录对其改进过程。 UnLua里面有个非常便捷的功能,就是在蓝图编辑器界面可以直接生成LUA代码模板,开始以为是基于反射生成的,看了下发现其实是从内置的LUA文件复制的, 非 阅读全文
posted @ 2020-04-09 12:40 剑过不留痕残月分断魂 阅读(1290) 评论(0) 推荐(0) 编辑
摘要: Unreal默认同步方式能解决大部分轻量游戏的常用情况,不需要太多改动, 但仍然需要留意其一些内置函数的用法,此处略作简要记录。 一、单位隐身 单位隐身后,显然服务器不能在给敌方玩家同步隐身的单位的数据(包含位置,血量等),友方玩家的同步机制不变, 此时可以在服务器端的AActor::IsNetRe 阅读全文
posted @ 2020-04-07 15:09 剑过不留痕残月分断魂 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 此一回主要研究虚幻的反射类。 虚幻的反射类跟C++的静态编译类不同,可以在Runtime增删改,其概念更接近LUA的table。 UClass实质功能就是描述一段内存的内容,使用FProperty描述成员变量,UFunction描述反射函数。 FProperty描述了成员变量在Container(即 阅读全文
posted @ 2020-04-03 18:28 剑过不留痕残月分断魂 阅读(659) 评论(0) 推荐(0) 编辑