尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

vaststars架构揭秘:C++核心库+Lua玩法层+双层ECS如何协作打造手机工厂游戏

vaststars架构揭秘:C++核心库+Lua玩法层+双层ECS如何协作打造手机工厂游戏 vaststars架构揭秘C核心库Lua玩法层双层ECS如何协作打造手机工厂游戏【免费下载链接】vaststarsA game demo for Ant engine项目地址: https://gitcode.com/gh_mirrors/va/vaststarsvaststarsRed Frontier是一款由灵犀互娱开发的手机工厂建设游戏也是开源游戏引擎 Ant 的第一个完整项目范例。它的架构堪称移动端游戏工程的教科书C 核心库负责高性能模拟Lua 玩法层负责快速迭代的逻辑与数据双层 ECSC 层 Lua 层则把两者无缝焊接在一起。本文带你用最短的路径看懂这套架构是如何协作的。️ 整体架构三个目录三套职责打开仓库项目结构天然地把三层职责分得非常清楚目录角色一句话概括3rd/ant引擎Ant Engine渲染、窗口、资源、ECS 基座clibs/gameplay/C 核心库背包、仓库、流体、电网、路网等重性能逻辑startup/pkg/Lua 玩法层玩法系统、渲染表现、原型数据、UI、启动流程整个游戏的启动入口是 startup/main.lua它通过import_package机制按需加载功能包feature最后交给 Ant 引擎的ant.window拉起窗口。⚙️ C 核心库把算得重的放到底层工厂类游戏的痛点在于成千上万个建筑、电力网络、流体管道、运输卡车每帧都在更新。这些活儿全部交给 C代码集中在 clibs/gameplay/srccore/ 业务核心world.cpp世界、backpack.cpp背包、chest.cpp仓库、fluidflow.cpp流体网络、heatnet.c热量网络、saveload.cpp存档roadnet/ 路网系统network.cpp道路网络、lorry.cpp运输车、route.cpp路径system/ 建筑行为building.cpp、generator.cpp、powergrid.cpp、drone.cpp 等C 如何暴露给 Lua看 gameplay.def 就一目了然——每个 C 模块都导出一个luaopen_*符号LIBRARY vaststars EXPORTS luaopen_vaststars_world_core luaopen_vaststars_fluidflow_core luaopen_vaststars_roadnet_system ...这就是标准的 Lua C 模块协议编译成动态库后Lua 侧直接require即可调用无需手写胶水代码。 双层 ECSLua 定义组件C 执行数据这是 vaststars 架构中最巧妙的部分。第一层Lua ECS数据驱动层。所有组件的定义都用纯 Lua 写在一个文件里——startup/pkg/vaststars.gameplay/init/component.luamainkey building { uint16 prototype, uint8 x, uint8 y, uint8 direction, } mainkey lorry { uint16 prototype, roadnet::straightid ending, uint16 item_amount, ... }第二层C ECS性能执行层。构建时compile_ecs.lua 脚本会读取上面这份 Lua 组件定义自动生成 C 头文件src/util/component.h由 make.lua 中的compile_gameplay_ecs任务驱动。C 的 ECS 用这份头文件以紧凑的 SoA 内存布局持有全部组件数据遍历速度极快。一句话总结Lua 是组件的单一事实来源代码生成保证 C 与 Lua 永远同步既拿到了 C 的性能又保住了 Lua 的改配置即生效。 协作流程一帧游戏是如何跑起来的整套协作可以概括为一条流水线pipeline定义在 startup/pkg/vaststars.gameplay/init/pipeline.lua输入与编辑玩家在触屏上放置建筑vaststars.gamerender包建造器、选择框、指示器等把操作翻译成 ECS 实体变更Lua 玩法层驱动register/csystem.lua 把 C 系统注册进 ECS 更新管道每帧update阶段按序执行C 核心结算电力、流体、制造、运输等重计算在 C 中批量完成直接读写组件内存表现层读取vaststars.gamerender/render_updates/下的 Lua 系统如assembling.lua、fluidbox.lua读取最新状态驱动动画、粒子与 UI数据层兜底vaststars.prototype 包以纯数据形式定义所有建筑、配方recipe.lua、科技树technology.lua、教程模板策划改数值不碰代码。 为什么这套架构特别适合手机工厂游戏热更新友好玩法与数值全在 Lua 与数据包里手机开发时用 Ant 的文件服务器即可实时同步修改见README.md的 iOS 开发流程性能有底电网、流体、路网这类 O(N) 重计算锁定在 C中低端机型也能跑满建筑团队分工清晰策划改vaststars.prototype、程序写clibs/gameplay、渲染逻辑写vaststars.gamerender互不踩脚引擎范例价值作为 Ant Engine 首个项目它完整演示了import_package功能包机制、ECS 代码生成、C/Lua 混合开发的推荐姿势。 延伸阅读路径建议阅读顺序入口startup/main.lua → startup/pkg/vaststars.cmd/main.lua组件定义与代码生成component.lua → compile_ecs.lua系统注册register/system.lua、register/csystem.lua存档管线vaststars.gameplay/system/saveload.lua ↔ core/saveload.cpp构建配置根目录 make.lua、clibs/gameplay/make.lua看懂了 C 核心库、Lua 玩法层与双层 ECS 的分工你就掌握了 vaststars 乃至整个 Ant 引擎项目组织的核心思路——把重交给 C把变留给 Lua用代码生成缝合两者。【免费下载链接】vaststarsA game demo for Ant engine项目地址: https://gitcode.com/gh_mirrors/va/vaststars创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表