• Create Account

### #Actuallthannyl

Posted 30 May 2012 - 05:44 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() {

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!

### #1lthannyl

Posted 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() {

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