Game2 目录结构与 Lua 扩展加载教程
1. 这篇教程解决什么问题
很多人第一次接触这个项目时,最容易混淆下面几个目录:
services
lualib
lualib-src
luaclib
service-src
framework
尤其是看到 lualib-src 时,经常会问一句:
- 这个目录到底是不是 Lua 脚本目录?
- 改了这里为什么还要重新编译?
- 它和
lualib、luaclib 到底是什么关系?
这篇教程就是专门把这套关系讲清楚。
2. 先看结论
可以先记住这几句话:
lualib 是纯 Lua 代码目录。
lualib-src 是 Lua 原生扩展的 C/C++ 源码目录。
luaclib 是 lualib-src 编译后的 .so 动态库目录。
services 是业务服务入口,主要由 Lua 服务组成。
service-src 是 C Service 源码目录,编译后会生成 cservice/*.so。
framework 是底层框架层,里面也有自己的一套 lualib / lualib-src / luaclib / cservice。
最简单的理解方式是:
- 写业务逻辑,优先看 Lua 目录。
- 写底层扩展、性能模块、协议处理、地图寻路,优先看 C/C++ 扩展目录。
3. 目录关系总览
下面这张图可以先建立一个整体印象:
graph LR
A["services/*.lua<br/>业务服务"] --> D["运行中的 Skynet 服务"]
B["lualib/*.lua<br/>项目 Lua 库"] --> A
C["framework/lualib/*.lua<br/>框架 Lua 库"] --> A
E["lualib-src/*.c/*.cc<br/>项目原生扩展源码"] --> F["luaclib/*.so<br/>项目 Lua C 模块"]
G["framework/lualib-src/*.c<br/>框架原生扩展源码"] --> H["framework/luaclib/*.so<br/>框架 Lua C 模块"]
I["service-src/*.c<br/>项目 C Service 源码"] --> J["cservice/*.so<br/>项目 C Service"]
K["framework/service-src/*.c"] --> L["framework/cservice/*.so"]
F --> A
H --> A
J --> D
L --> D
4. 每个目录是做什么的
***付费内容***
剩余 80% 内容需要支付 100.00
金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
|