¿Cuál es la forma más práctica de implementar la cámara / vista en un juego 2D?
He leído que debo almacenar la posición del mundo del objeto en lugar de la posición relativa a la pantalla.
Situación actual:
He implementado un juego 2D simple donde cargo objetos y niveles desde archivos XML. Actualmente, el archivo XML de nivel tiene este aspecto:
<map>
<tile obj="ground" x="0" y="555" />
<tile obj="ground" x="16" y="555" />
<tile obj="ground" x="32" y="555" />
...
</map>
Todos los objetos tienen una "posición" de 2d-vector que almacena su ubicación actual en la pantalla.
Lo que quiero que sea:
En la imagen:
- La cámara es de 800x600 o 640x480
- Los bloques y sprites son de 16x16 píxeles.
- El tamaño mundial puede variar
- ¿Las coordenadas probablemente deberían normalizarse en relación con el mundo, no con la pantalla?
- Posición de la vista relativa a la x, y del jugador y se mueve cuando el jugador alcanza la zona muerta de la cámara (similar a este video ).
Estoy preguntando pseudo ejemplos / artículos, pero si necesita saber lo que estoy usando para el desarrollo: SDL & C / C ++.