我想爲我的遊戲使用artemis(https://github.com/junkdog/artemis-odb)。如何結合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
之間共享相同的Component實例,尤其是當它們是共用對象時。
任何想法如何結合artemis-odb + Glenn Fiedler遊戲循環?
編輯: 只是想通了我可以使用setEnabled()
禁用和啓用EntitySystems
。這會做現在。