Qual é a maneira mais prática de implementar câmera / viewport em um jogo 2D?
Eu li que devo armazenar a posição mundial do objeto em vez da posição relativa à tela?
Situação atual:
Eu implementei um jogo 2D simples, onde carrego objetos e níveis de arquivos XML. Atualmente, o arquivo XML de nível se parece com isso:
<map>
<tile obj="ground" x="0" y="555" />
<tile obj="ground" x="16" y="555" />
<tile obj="ground" x="32" y="555" />
...
</map>
Todos os objetos têm uma "posição" do vetor 2D armazenando sua localização atual na tela.
O que eu quero que seja:
Na foto:
- A câmera é 800x600 ou 640x480
- Blocos e sprites são 16x16 pixels.
- O tamanho do mundo pode variar
- As coordenadas provavelmente devem ser normalizadas em relação ao mundo, não à tela?
- A posição da janela de visualização em relação ao x, y do jogador e se move quando o jogador atinge a zona morta da câmera (semelhante a este vídeo ).
Estou perguntando pseudo exemplos / artigos, mas se você precisar saber o que estou usando para o desenvolvimento: SDL & C / C ++.