如何结合 artemis-odb + Glenn Fiedler 游戏循环

How to combine artemis-odb + Glenn Fiedler game loop

我想在我的游戏中使用 artemis (https://github.com/junkdog/artemis-odb)。

最近我读到了 Glenn Fiedler 的游戏循环: http://gafferongames.com/game-physics/fix-your-timestep/

所以提到的游戏循环有两个部分,其中 artemis world.process();会发生。集成部分和渲染部分。

关于我如何用 artemis 完成这样的事情的任何想法。

while(!quit) {
    .....
    while (accumulator >= dt) {
       world.process("only EntitySystems of group1 or with Components X (INTEGRATE STUFF)");
       ....
    }
    ....
    world.process("only EntitySystems of group2 or with Components Y (RENDER STUFF)");
}

artemis支持这种gameloop吗?

我现在想到的唯一解决方案是:

设置一个全局静态标志,指示其是集成还是渲染过程,然后在设置错误标志时退出所有EntitySystem.process(Entity e)方法。像这样:

@Override
protected void process(Entity e) {
    if(GLOBAL.RENDER_TIME) {
        return; // exit cause, this entity should only be processed when it is INTEGRATE TIME
    }   
}

这个问题是对很多实体进行了迭代,这些实体并不需要,因为这些实体不处理任何东西。

我正在考虑拥有 2 个 Worlds,但我认为我无法在 Worlds 之间轻松共享相同的组件实例,尤其是当它们是池对象时。

知道如何结合 artemis-odb + Glenn Fiedler 游戏循环吗?

编辑: 刚刚发现我可以使用 setEnabled() 来禁用和启用 EntitySystems。现在就这样吧。

https://github.com/junkdog/artemis-odb/wiki/InvocationStrategy

这就是我要找的东西

我是这样实现的: https://github.com/TomGrill/logic-render-game-loop