[英]How to make the bot pause every few seconds, in java ping pong game?
[英]Java game slow update for a few seconds
我正在制作一個生命游戲克隆,(你知道,只是為了好玩)而且我對更新(tick)方法有點問題。
這是更新和渲染循環:
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()
s(也就是說, deltaTick
繼續增加); 並且當游戲恢復時,這些堆積的tick()
s不會立即執行。 這里有多種解決方案; 當游戲暫停時,一個是暫停增加deltaTick
:
if (tickRunning) {
deltaTick += (now - lastTime) / nsTick;
}
另一種方法是在恢復或開始游戲時簡單地將deltaTick
設置為0
。
等等,我做了一些不同的工作(也許這就是你的意思)。 這是代碼:
while(deltaTick >= 1){
deltaTick--;
if(tickRunning){
tick();
ticks++;
}
}
從時間上看,鼠標有點反應遲鈍,但我認為之前有過。 非常感謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.