gpt4 book ai didi

Java游戏更新慢几秒

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:32 27 4
gpt4 key购买 nike

我正在制作 game of life克隆,(你知道,只是为了好玩)我在更新(打勾)方法上遇到了一点问题。

这是更新和渲染循环:

while (running) {
double nsTick = 1000000000 / amountOfTicks;

long now = System.nanoTime();
deltaRender += (now - lastTime) / nsRender;
deltaTick += (now - lastTime) / nsTick;
lastTime = now;

while (deltaRender >= 1){
render();
frames++;
deltaRender--;

if (tickRunning) {
while(deltaTick >= 1) {
tick();
ticks++;
deltaTick--;
}
}

if (System.currentTimeMillis() - timer > 1000){
timer += 1000;
System.out.println("Ticks: " + ticks);
frames = 0;
ticks = 0;
}
}
}

stop();

如您所见,我已将渲染和刻度函数分开,因为刻度的速率由用户实时控制。

问题是,当游戏开始时(或未暂停),tick 的更新率不稳定几秒钟(大约 10 秒)然后调整到正确的。可以修复吗?

游戏目前在单线程上运行。

最佳答案

问题似乎是当您暂停游戏时,您仍在计算必须执行的 tick()(即 deltaTick 继续增加);这些堆积起来的 tick() 会在游戏重新开始时立即执行。这里有多种解决方案;一种是在游戏暂停时暂停增加 deltaTick:

if (tickRunning) {
deltaTick += (now - lastTime) / nsTick;
}

另一种方法是在恢复或开始游戏时简单地将 deltaTick 设置为 0

关于Java游戏更新慢几秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com