I had been using this run method as game loop.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| public void run(){ Map.initMap(); initResources(); int SKIP_STEPS = 1000/Global.STEPS_FOR_SECOND; long gameTime = getCurrentTime(); int loops; int frames = 0; long lastFPSCount = getCurrentTime(); int updates = 0; long lastUPDCount = getCurrentTime(); long now; long updStartTime = 0; long updEndTime = 0; long updTime = 0; while (running){ now = getCurrentTime(); loops = 0; updStartTime = getCurrentTime(); while(now>gameTime && loops<Global.MAX_FRAMESKIP){ updateGame(SKIP_STEPS); updates++; if (now - lastUPDCount > 1000){ lastUPDCount = getCurrentTime(); Global.ACTUAL_STEPS_FOR_SECOND = updates; Global.UPDATE_RATE = (int)((float)((float)Global.ACTUAL_STEPS_FOR_SECOND/(float)Global.STEPS_FOR_SECOND)*100); updates = 0; } gameTime += SKIP_STEPS; loops++; } updEndTime = getCurrentTime(); updTime = updEndTime - updStartTime; System.out.println(updTime); interpolation = (now + SKIP_STEPS - gameTime)/SKIP_STEPS; displayGame(); frames++; if (now - lastFPSCount > 1000) { lastFPSCount = now; Global.FRAMES_PER_SECOND = frames; frames = 0; } } } |
But the output of the bench marking is
1 2 3 4 5 6 7 8 9
| 59 8 2 2 1 1 2 1 0 |
I couldn't understand why 0's appear as elapsed time for updates. Also the STEPS_PER_SECOND is 50. Thanks.