Skip to content

lanchengkai/y3-lualib

 
 

Repository files navigation

y3-lualib

这是Y3编辑器的Lua开发框架,旨在帮助 纯Lua开发者 更好的开发地图。 本项目希望可以和广大用户共同开发此框架,因此希望大家可以积极提出建议,包括框架设计也可以提出自己的想法一起讨论。

快速开始

使用Y3编辑器创建一张地图,然后将地图内的 script/y3 目录替换为此工程即可

Q&A

该框架的代码与“ECA转Lua”的代码有什么关系?

绝大部分的接口会保持兼容,但是对于纯Lua作者来说,很多功能有更好的实现方式。比如ECA中的动作“将整数加一”在“ECA转Lua”时会生成函数调用,但在此框架中该函数被移除了。 而触发器、事件等功能也会和ECA中的有较大差异,利用Lua的语言特性使用了更加方便Lua开发的形式。

我看很多函数都是简单的转发,是否可以直接调用CAPI?

尽量不要直接调用。因为目前已经有计划修改CAPI,直接调用CAPI可能会在未来产生兼容性问题。

ECA与Lua协同开发时,ECA如何调用Lua函数?

ECA可以直接执行Lua代码,你也可以参考此代码注册一个绑定函数供ECA调用。

使用VSCode进行附加调试

  1. VSCode在扩展市场中搜索安装插件 actboy168.lua-debug
  2. y3/.vscode 复制到你的项目中。
  3. 启动游戏后,点击 F5 开始调试。

通常调试器附加成功时已经错过了游戏初始化时机,如果你想要追踪初始化相关的代码,可以在相关代码前面加一行 LDBG:event 'wait'。当游戏执行到此行代码时,游戏会“卡主”,直到调试器附加完成才会继续往下执行。

已知问题

  • 无法调试 main.lua 文件,建议暂时在 main.lua 中直接 require 另一个文件。
  • 无法触发异常断点。
  • 无法追踪一些内部函数的执行。

工程结构

📦 y3/
    ├── 📁 example/
    ├── 📁 game/
    │    ├── 📜 const.lua
    │    ├── 📜 game.lua
    │    ├── 📜 helper.lua
    │    ├── 📜 py_converter.lua
    │    ├── 📜 py_event_subscribe.lua
    ├── 📂 meta/
    ├── 📂 object/
    │    ├── 📁 editable_object/
    │    ├── 📁 runtime_object/
    │    ├── 📁 scene_object/
    ├── 📂 tools/
    ├── 📂 tools/
    ├── 📜 debugger.lua
    └── 📜 init.lua

已知问题

Lua的数字由于浮点数误差问题可能会造成客户端之间不同步

未来会将Lua的数字实现改为定点数

给对象注册事件会产生泄露

正在讨论解决方法

想要做的事情

  • 可以不用打开编辑器直接运行地图
  • 可以重启游戏并应用新的Lua代码
    • 可以在游戏内直接应用新的Lua代码(热重载)
  • Lua专用的日志系统
  • Lua调试器
  • 枚举值使用更加友好的表示方式

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%