下载 App

耦合性 V2

07/092 浏览综合
目前耦合性已经从“偏高”降到了 中等偏低、可控
简单评价:
大问题已经收口,剩下的是结构继续细分的问题。
当前不会再出现明显的全局入口乱写、页面直接抢 UI Root、Network 回调污染全局这类高风险耦合。但 State、App 启动层、投资数据页面仍有进一步拆分空间。

已明显改善的部分

1. 全局 UI Root 已收口

现在 UI.SetRoot 只剩一处:
  • scripts/App/RootView.lua:14
业务页面不再直接 UI.SetRoot(...),而是通过 RootView / WorkshopContext.ShowFullscreen(...) 间接切换。
这解决了之前的问题:
  • 页面随意替换全局 UI 树
  • 返回路径不统一
  • App 层无法控制全屏页面生命周期

2. 高风险 State 写入口已收口

外部模块不再直接写:
  • State.currentPage
  • State.gameOver
  • State.soldier
  • State.modalOpen
这些写入现在集中在 scripts/Pages/纸上状态.lua 内部,通过方法间接修改,例如:
  • State.SetCurrentPage
  • State.ResetProgress
  • State.SetSoldier
  • State.SetGameOver
  • State.ClearGameOver
当前状态是:
写入口已经收口,但 State 仍然是共享大状态表。

3. Pages.纸上流程 双向依赖已缓解

Pages.纸上流程.lua 已经变成纯 action dispatcher,不再直接 require 关卡、建家、背包、翻页模块。
具体处理器统一在:
  • scripts/Pages/怪物工坊/init.lua:285
通过 Flow.Bind(...) 注入。
这让之前的结构:
text
纸上流程 <-> 纸上关卡 纸上流程 <-> 纸上建家 纸上流程 <-> 纸上背包 纸上流程 <-> 纸上翻页
变成了:
text
业务模块 -> Flow -> 入口注册的 handler
循环依赖风险显著下降。

4. 纸上谈兵存档已加用例层

新增:
  • scripts/App/纸上存档用例.lua
页面层已经不再直接依赖:
lua
require("Data.纸上存档服务")
也清掉了页面层的泛用:
  • Save.SaveData
  • Save.LoadData
  • Save.SaveProgress
这比之前页面直接知道存档 key、直接调用底层保存要好很多。

5. Network 客户端回调已去全局化

Network 里的字符串回调和全局 Handle* 基本清掉了。
现在全局 Handle* 只剩 main.lua 中的引擎入口转发:
  • scripts/main.lua:25
  • scripts/main.lua:31
这属于合理的入口层全局函数。
horizontal linehorizontal line

当前主要剩余耦合

P1. Pages.纸上状态 仍然是最大耦合点

虽然写入口已经收口,但 State 仍然承担太多领域:
  • 战斗状态
  • 关卡状态
  • 背包状态
  • 安全屋状态
  • 绘制状态
  • UI modal 状态
  • 财务能力状态
  • 公开安全屋挑战状态
所以现在的问题不是“乱写”,而是:
很多模块仍然共同读取同一个大状态对象。
这是当前最大的剩余耦合源。
建议后续拆成:
text
PaperCombatState PaperProgressState PaperInventoryState PaperHomeState PaperUiState
或者先不拆文件,只先按 API 分区,减少直接读字段。
horizontal linehorizontal line

P1. App 层仍偏重

main.lua 已经很轻,但职责转移到了:
  • scripts/App/客户端启动.lua
  • scripts/App/Update调度.lua
它们仍然承担:
  • UI 初始化
  • 主题设置
  • UI 音效 patch
  • 全局事件订阅
  • 登录流程绑定
  • 页面注册
  • 纸上谈兵插件绑定
  • Update 分发
  • Store 同步
  • UserDataProxy 超时检查
这类文件属于 composition root,耦合高一点可以接受,但当前已经接近需要再拆的程度。
建议后续拆成:
text
App.UiBootstrap App.EventBootstrap App.PluginRegistry App.UpdateLoop App.Session
horizontal linehorizontal line

P1. 投资/持仓/分析页面仍直接依赖 Data.Store

纸上谈兵存档已经收口,但投资记录系统页面仍然大量直接使用:
lua
Data.Store
典型模块:
  • scripts/Pages/设置.lua
  • scripts/Pages/记录/保存逻辑.lua
  • scripts/Pages/持仓/init.lua
  • scripts/Pages/分析/组合概览.lua
  • scripts/Pages/分析/指数对比.lua
这部分目前是“传统 MVC 直连 Store”的结构。
短期能跑,问题不大;长期建议加:
text
InvestmentUseCases HoldingsViewModel AnalysisViewModel RecordUseCases
horizontal linehorizontal line

P2. 怪物工坊内部仍是大模块协作

现在 _W_gameOver、全局渲染回调已经清掉了,但怪物工坊内部仍有较多模块互相协作:
  • init.lua
  • 游戏循环.lua
  • 战斗机制.lua
  • 合成面板.lua
  • 渲染.lua
  • 纸上关卡.lua
  • 纸上建家.lua
  • 纸上背包.lua
这属于复杂玩法模块常见状态。当前已经比之前健康很多。
下一步如果继续拆,可以引入:
text
PaperWarController PaperWarScene PaperWarCombatUseCases PaperWarHomeUseCases
CursorService.SetStyle(...)WorkshopContext.Show(...)State.SetBattleActive(...) 这类场景副作用再集中一些。
horizontal linehorizontal line

当前耦合等级判断

维度当前情况评价
全局 UI Root已完全收口良好
全局函数污染基本清理,只剩入口层良好
Network 事件回调已局部化良好
页面直连 Network已基本消除良好
纸上存档底层依赖已加 App 用例层良好
State 共享状态仍偏大中等风险
App 启动层职责偏多中等风险
投资系统 Store 直连仍较多中等风险
怪物工坊玩法模块复杂但可控中等

结论

现在项目耦合性可以评价为:
从“高耦合、全局入口多、页面可直接抢控制权”下降到了“中等偏低耦合、关键边界已收口、剩余主要是模块继续细分问题”。
如果继续治理,优先级建议是:
  1. Pages.纸上状态 的领域状态。
  2. App/客户端启动.luaApp/Update调度.lua
  3. 给投资/持仓/记录系统加 UseCase / ViewModel。
  4. 给纸上谈兵加 PaperWarScene,收口光标、overlay、battleActive 等场景副作用。
【求积分】
因为没有积分继续完善框架,目前测试连接进入游戏界面,可能需要如下操作:
1、先随意输入用户名,默认密码123点击“进入系统”
2、稍等一会儿,会读取到当前用户ID的用户名,默认密码123就可以进入了
3、进入游戏修改密码,下次默认密码就不是123了
如果大家都能帮忙来体验,可能这个便签墙上会有越来越多的便签,需要玩家来丰富便签墙截图
【求积分】 因为没有积分继续完善框架,目前测试连接进入游戏界面,可能需要如下操作: 1、先随意输入用户名,默认密码123点击“进入系统” 2、稍等一会儿,会读取到当前用户ID的用户名,默认密码123就可以进入了 3、进入游戏修改密码,下次默认密码就不是123了 如果大家都能帮忙来体验,可能这个便签墙上会有越来越多的便签,需要玩家来丰富便签墙
3 赞
7 回复
耦合 V1
已分析当前 scripts/ 用户代码,未修改文件。整体看,项目是一个 main.lua 主入口 + 投资页面模块 + 纸上谈兵插件模块 + 网络/数据代理模块 的结构,耦合点比较集中。 1. 主入口如何耦合其他模块 主入口是: scripts/main.lua 它分服务端和客户端两条启动路径。 服务端路径 main.lua 先判断服务端模式: scripts/main.lua:7:判断 IsSe
官方
4 赞
耦合性 V5
结论:主游戏业务耦合优化已经基本完成,可以收尾。 不是说项目里完全没有高入度/高出度模块,而是: 主要业务热点已经拆完 原 API 都保持兼容 每批拆分都通过了 LSP 每批拆分都通过了官方构建 每批局部依赖检查都没有循环 当前项目仍然构建成功 当前 Lua LSP errors = 0 当前验证状态 刚刚重新确认: Lua LSP errors = 0 官方构建成功 当前 Lua 文件数 = 4
官方
3 赞
耦合性 V3
当前耦合性已经从“中低耦合”进一步改善到: 低到中低耦合;核心玩法聚合直连基本消除,剩余主要是状态 Facade 和数据 Store 的中心化耦合。 量化结果 只读扫描 scripts/: Lua 文件数:175 内部 require 边数:534 循环依赖数:0 关键聚合模块入度: Pages.纸上障碍 incoming = 0 Pages.怪物工坊.战斗机制 incoming = 0 Page
官方
4 赞
耦合性 V4
当前游戏耦合性评估 结论:低到中低耦合。 经过多轮拆分后,原来的高入度 Facade / shim 基本已经清空业务依赖,当前主要热点已经转为“细粒度状态模块”和“流程编排模块”,结构比最初健康很多。 1. 当前核心指标 Lua 文件数: 200 内部 require 边数: 615 外部 require 引用: 79 平均内部出度: 3.08 循环节点: 0 关键结论: 循环依赖: 0 这是最重
官方
4 赞
01:32
【号外:新游】《小韭成长记》截图
【号外:新游】《小韭成长记》
《小韭成长记》是一款“投资记录 + 游戏化成长”的复合型小游戏: 投资端:记录股票、资金流水、账户管理等投资行为,生成多维度分析(组合估值、融资成本、指数对比等)。 游戏特色:你可以给后面来踢馆的玩家制造麻烦! 游戏端:通过“纸上谈兵”将投资数据转化为游戏战力(核心、甲片、行动点等),支持造兵、闯关、建设安全屋,让投资成果可视化、趣味化。 股票操作:支持「买入/卖出/分红/融资借入/还款」,自
【申请积分】刚把架构搭建了一些,希望能申请一些积分把游戏跑通截图
【申请积分】刚把架构搭建了一些,希望能申请一些积分把游戏跑通
4 赞
3 回复