从AnyState引出链接会使性能变差

从 AnyState 连接链接(尤其是设置了条件的链接)会使运行变得越来越慢。
这并不是由链接数量决定的,而是由“从 AnyState 出发的条件总数”决定的,感觉是条件越多,系统越重。

在测试时,如果使用像“ActionGameMan”这样轻量级的游戏,可能察觉不到明显变化;但在像“Advanced Sample: Side-Scroller Mouse Shooter”这样较重的游戏中,变化会非常明显,帧率也会大幅下降。

似乎“设置画面尺寸越大”、“存在的状态(如玩家角色等)越多”,变化就越明显。
如果画面较小且状态数量较少,几乎感觉不到变化。
但一旦达到一定规模,即使只使用4条链接,也会出现明显的卡顿。
在“Advanced Sample: Side-Scroller Mouse Shooter”中,大约有20条链接,每条设置了4个条件(即使是按键操作也可以),差异就会非常明显。

在 Actus 中,即使创建了100个通用动作,也完全感觉不到性能变化。目前我们只能通过避免使用 AnyState 的方式来应对,但这样自由度会大大降低。

我自己也一直被VS的重量问题所困扰,
仅仅改个名字就会变重,
不过好歹用分组功能把状态收起来,
减少显示数量后,确实变轻了一些。
但即便如此,新建状态时还是比以前稍微慢了一点。

1 个赞

我写在错误报告中的内容是关于游戏运行时的卡顿问题,但VS的卡顿也是一个问题吧。
例如,当某个状态设置了“生成对象”时,点击的响应会变得异常迟钝。
在这种情况下,似乎生成的对象对其他对象的引用越多,就越卡(不过我也没仔细深入调查过)。

是这样啊。

我自己也在Anystate中连接了很多链接,

如果只是这样倒还好,但一旦和其他状态也连接起来,

就会因为Anystate的叠加而变得非常沉重……

链接数量多的话,可能在状态转移条件的检查上会变慢吧……

而且如果涉及链接的联动,有时攻击判定会失效,即使Takedamage有反映,但“攻击命中”状态却不会发生转移……

感谢您的报告。
关于状态数量增多导致变慢的问题,我们之前已经收到过报告,现在也将与AnyState相关的部分一并加入报告中……!