Mario

No, but I’m seeing this too. I thought it was just something in Java 2D, but I realized that no other Java game has this problem…

Are you using a BufferStrategy? That tends to diminish the effect a bit.

Yes, I’m using BufferStrategy. However, I’m currently attempting to port to OpenGL rendering (with LWJGL). Do you think this may fix the problem?

UPDATE
Well, I made an attempt at using LWJGL to render, but it looked much worse. The alpha was not loading correctly (edges looked very odd), and the tearing was just as visible. So I dumped that idea.

This is a nice little engine.
The physics are nice but it feels it can use just a little bit more friction or im just imagining things.
The scrolling is very smooth and well… works.
I found that mario actully speeds up mid-jump when you just hold the up button.
Other then that keep up the good work!

Roninator

Thanks for testing, Roninator. And I kind of felt the same way about the friction, I’ve been playing around with it getting it as close as possible to the orignal. But as I said brefore, this will be a more unique game. Not like most mario-clones. Currently I just have to work out all these little details.

UPDATE
I have located the tearing problem. It has something to do with the FSEM (fullscreen exclusive mode). As I took it out of fullscreen, and there was no problem - looked great. However, I’m still not sure how to fix this. Maybe my fullscreen code isn’t any good?

		// Create the Frame.
		frame = new Frame("Mario");

		frame.add(this);
		frame.setResizable(false);
		frame.setUndecorated(true);

		frame.pack();
		frame.setVisible(true);

		// Initialize the back buffer.
		createBufferStrategy(2);
		buffer = getBufferStrategy();
		screen = (Graphics2D)buffer.getDrawGraphics();

		// Set the display mode and enter fullscreen mode.
		GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
		if (gd.isFullScreenSupported()) {
			gd.setFullScreenWindow(frame);
			if (gd.isDisplayChangeSupported()) {
				try {
					int refresh = gd.getDisplayMode().getRefreshRate();
					gd.setDisplayMode(new DisplayMode(gameW, gameH, 32, refresh));
				} catch(Exception e) {
					gd.setFullScreenWindow(null);
					System.out.println("No suitable display mode was found. Switching back to windowed mode.");
				}
			} else {
				gd.setFullScreenWindow(null);
				System.out.println("Display mode change not supported. Switching back to windowed mode.");
			}
		} else {
			System.out.println("Fullscreen mode not supported. Using windowed mode.");
		}