Como melhorar meu método de renderização

Pessoal,

Estou desenvolvendo um RPG,
tenho na classe Mapa um ArrayList chamada tiles, que armazena todos os tiles
do mapa onde o personagem está, que não são poucos.

Meu método de renderização percorre essa Array +/- assim:

    	for(int i=0; i< tiles.size(); i++){
    		tiles.get(i).render(g,pos);
    	}

e o método render do tile é:

	public void render(Graphics2D g, Position pos){
		g.drawImage(sprite, (x*32-pos.x) + 320, (y*32-pos.y) +304, null);
	}

E deste modo é muito, muito ruim e lento,
só que não encontro uma saída para o que preciso. :frowning:

Se alguém puder me dar uma ajuda.

Pensei até em mudar o modo de organizar os tiles, mas o problema
é no render mesmo.

Só pra adicionar o mapa é criado a cada movimentação do jogador,
não um mapa fixo.

Por exemplo o jogador anda para a direita o mapa da extrema esquerda
é excluido e adicionado um mapa a direita e assim vai.

Bem-vindo ao GUJ.

Leia com atenção a descrição dos fóruns antes de postar. Sua dúvida é de interface gráfica, e não de Java Básico. Vou mover o tópico para o fórum mais adequado.

Eu não recomendo Java para o desenvolvimento de jogos. Infelizmente, é uma linguagem bastante limitada nesse quesito.

Quanto à sua dúvida específica, desenhe apenas os tiles que estão na tela.
Ao invés de um ArrayList, use um Map de Maps e simule um array bidimensional. Eu já postei algo assim no GUJ:
http://www.guj.com.br/java/60930-graphics2d#320623

Assim fica bem fácil calcular qual é o primeiro tile da tela e qual é o último.

Você também pode melhorar seu método de renderização criando constantes para aquele monte de número mágico ali.

Old esse.

@Gui_Nunes
Eu resolvi aquele problema justamente como o ViniGodoy explicou.

Muito obrigado gente, pela atenção,
desculpa pelo erro de subfórum, pensei que era alguma coisa mais básica,
por isso tinha feito lá.

Amei os exemplos,

Tou fazendo as devidas modificações,

O problema do Marky é exatamente o meu,
me identifiquei ali uahuah :lol:

Depois posto o resultado,

Porque na verdade é um mmorpg, estava bem avançado até
mas achei esse problema quando passei o jogo para um amigo
que tem uma máquina mais simples jogar.

Obrigado mais uma vez.