Programação de games em java

Preciso de uma ajuda para resolver o meu sistema de cameras, me falaram que tinha como trocar meu codigo de camera para uma forma mais rapida e melhor, so que toda vez que vou trocar para como me indicaram o mapa não aparece, alguem poderia me ajudar a resolver isso?? pelo menos me falar o erro e como posso fazer para resolver
A parte do codigo que se encontra comentado é o que eu estou tentando colocar, embaixo dele esta o qual eu uso, sou novato ainda, primeiro jogo que tento criar, a unica coisa que não são de tamanho 57x57p é o tile de chão e parede que são de tamanho 23x23p

package com.TenebrisGames.world;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.TenebrisGames.entities.Enemy;
import com.TenebrisGames.entities.Entity;
import com.TenebrisGames.entities.Lifepack;
import com.TenebrisGames.entities.Weapon;
import com.TenebrisGames.main.Game;

public class World {

private Tile[] tiles;
public static int WIDTH, HEIGHT;


public World(String path) {
	try {
		BufferedImage map = ImageIO.read(getClass().getResource(path));
		int[] pixels = new int[map.getWidth() * map.getHeight()];
		WIDTH = map.getWidth();
		HEIGHT = map.getHeight();
		tiles = new Tile[map.getWidth() * map.getHeight()];
		map.getRGB(0, 0, map.getWidth(), map.getHeight(), pixels, 0, map.getWidth());
		for(int xx = 0; xx < map.getWidth(); xx++) {
			for(int yy = 0; yy < map.getHeight(); yy++) {
				int pixelAtual = pixels[xx + (yy * map.getWidth())];
				tiles[xx + (yy * WIDTH)] = new FloorTile(xx*23, yy*23, Tile.TILE_FLOOR);
				
				if(pixelAtual == 0xFF81BA44) {
					//Floor	
					tiles[xx + (yy * WIDTH)] = new FloorTile(xx*23, yy*23, Tile.TILE_FLOOR);
					
				}else if(pixelAtual == 0xFF7A6358) {
					//Wall
					tiles[xx + (yy * WIDTH)] = new WallTile(xx*23, yy*23, Tile.TILE_WALL);
				
				}else if(pixelAtual == 0xFF000000) {
					//Player
					Game.player.setX(xx*23);
					Game.player.setY(yy*23);
					
				}else if(pixelAtual == 0xFFC09121) {
					//Enemy
					Game.entities.add(new Enemy(xx*23, yy*23, 57, 57, Entity.ENEMY_EN));
					
				}else if(pixelAtual == 0xFF0D27DB) {
					//Weapon
					Game.entities.add(new Weapon(xx*23, yy*23, 57, 57, Entity.WEAPON_EN));
					
				}else if(pixelAtual == 0xFFFA7BFF) {
					//Life Pack
					Game.entities.add(new Lifepack(xx*23, yy*23, 57, 57, Entity.LIFEPACK_EN));
					
				}
			}
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	
}

public void render(Graphics g) {
	for(int xx = 0; xx < WIDTH; xx++) {
		for(int yy = 0; yy < HEIGHT; yy++) {
		
	/*int xstart = Camera.x >> 4;
	int ystart = Camera.y >> 4;*/
	
	/*int xfinal = xstart + (Game.WIDTH >> 4);
	int yfinal = ystart + (Game.HEIGHT >> 4);*/
	
	/*for(int xx = xstart; xx <= xfinal; xx++) {*/
		/*for(int yy = ystart; yy <= yfinal; yy++) {
			if(xx < 0 || yy < 0 || xx >= WIDTH || yy >= HEIGHT)
				continue;*/
			Tile tile = tiles[xx + (yy * WIDTH)];
			tile.render(g);
		}
	}
}

}