Jump to content

  • Log In with Google      Sign In   
  • Create Account

lthannyl

Member Since 30 May 2012
Offline Last Active Jun 01 2012 12:44 AM

Topics I've Started

Need help regarding how to draw smoothly in Java.

30 May 2012 - 05:39 PM

Hey guys, i've been making a little super mario clone in Java but I need help,

you see, if you download it and play it, you will notice it is quite stutter-y, and that really shouldn't be the case since it's such a small program.

So i assume it's 2 things, either my game loop is faulty (i'll provide the code below) or it's simply that Java just sucks at this, so I'm gonna go with the first one cause i love Java.


Anyways, here's my game loop.
 


/**

* Contains the main flow of the game.

*/

private void run() {



timer.schedule(new TimerTask() {

private final BufferStrategy bf = frame.getBufferStrategy();

private long startTime = System.currentTimeMillis();

private long currTime = startTime;

@Override

public void run() {

elapsedTime = System.currentTimeMillis() - currTime;

currTime += elapsedTime;

try {

//get graphics

g = bf.getDrawGraphics();

//get input

inputGame();

//update the game

updateGame(elapsedTime);

//draw the game

drawGame(g, elapsedTime);



} finally {

g.dispose();

}



// Shows the contents of the backbuffer on the screen.

bf.show();



Toolkit.getDefaultToolkit().sync();

}

//start this loop every 17 milliseconds, which is roughly 58 frames per second

}, 10, 17);

}

the variable timer, is of class Timer in Java.util.Timer, not the swing Timer, which i heard is unreliable, but this one is too clearly.

at the moment, I'm not really doing much with elapsedTime, but it's there just in case, i figured i didn't need it since that loop will
run every 17 milliseconds, and my update and rendering methods only take 2-5 milliseconds to finish.

Do you guys know of very effective game loops that provide very smooth rendering?

I can provide more code if necessary, Thanks in advance!

 


PARTNERS