|
发表于 2024-8-28 15:26:26
|
显示全部楼层
我就说说我自己的机器体系用下来的的体会吧。
我这个机器主打的是状态机模式,
https://www.pkuxkx.net/forum/thread-48864-1-1.html
但实际用下来发现还是有点太僵化了。但我也完全不想玩北侠了,所以也没心思重构了。
我这个框架的经验有3点
1.自我认同的 有效的策略配置:
https://www.pkuxkx.net/forum/thread-48870-1-1.html
参考这个。
策略配置是个很重点的问题
2.觉得还有不足的遍历移动模块:
这个我做的时候还是抽象不足。
而且为了做阉割版本,遍历模块做的有点糟心,必须有固定路径。
其实后后面还做了另一个版本的,但两个遍历不同模式有点恶心。
这个我这个机器主要是做了 路径的动态生成,就是指定区域或指定房间,能膨胀N格后,动态生成遍历的路径。(上一个机器是路径多重标签,delay设置)
但现在觉得应该指接遍历房间,而不是路径。因为房间可能会进不去,这时候之前把进不去的路径或房间临时排除就好。
迷宫系统我能放到遍历里去,但不够抽象,算无功无过。
3.觉得还有不足的状态管理
对于足够模块化的机器,各种组件的生效不是问题,失效才是核心。
我最一开始的思路是都用状态机来处理,由当前状态负责各种操作。在实际开发的时候觉得还是不够的,然后扩展了 OnRoom系列和OnQuest系列。
现在让我重构的话,我会分成很多不同的Layer。
每个Layer代表对一作用域,比如Global,Quest,Walk,Status,Combat。
每个Layer有一个唯一的Context。所有的触发/计时/事件/超时都要注册到对应的Layer的当前Context里。
实际上我那个eventbus库有个forward功能,就是为了把事件转发到不同的Layer里去的。
Context失效或者替换的话,所有注册到Context的组件直接失效。
极端化的话大部分Layer的Context都应该有默认超时事件,超过事件自动失效。
这个才更,怎么说呢,俗点叫优雅,按我的话是看了代码让我从头到脚一股舒服。
|
|