我已经在使用ECS几年了,我真的很喜欢设计模式。然而,我一直在努力找出如何在不同的频率下运行多个ECS循环,以便为LOD(层次详细度)提供服务。理想情况下,我想创建执行速度为一半、四分之一、八分之一等的LOD系统。
例如,如果我的固定帧率是30Hz,我可能想在5Hz的频率下运行AI逻辑或生成过程。然而,问题是,运行速度较慢的系统正在读写与30Hz系统读写相同的数据。
看起来,明显而又简单的方法就是简单地将较慢系统需要的数据重复一份,这样它们就不必等待0.2秒钟,而是让更快的系统在0.03秒钟内访问数据。然而,这种方法感觉很糟糕,并且不适合有许多LOD的情况下进行扩展。我的另一个想法是让系统完全不依赖相同的数据,但这将是一个挑战,因为一个AI逻辑系统通常需要知道它所模拟的代理的变换。
有人尝试过这个问题吗?有没有什么看法?
编辑:假设我需要5Hz系统的整个0.2秒。这个想法是将重计算放置在较慢系统中(例如,数千个AI代理的逻辑),以确保渲染线程不会等待重计算。
评论 (0)