Scrolling i transformació món-pantalla¶
Introducció¶
- Scrolling 1
Desplaçament dels elements de l’escena d’un videojoc (fons, text, etc).
Els jocs abans del scroll: la tècnica coneguda com flip screen.
Tipus de scrolling:
Scrolling del fons, decoratiu. Ex: Joc d’arcade Galaxian.
Parallax scrolling. Ex: joc d’arcade Moon patrol.
Vertical scrolling. Ex: joc d’arcade 1943.
Side scrolling. Ex: jocs de plataformes tipus Super Mario bros
Complet («8 direccions»). Ex: jocs tipus The legend of Zelda
Aquesta llista està ordenada segons la dificultat de programar-ho.
Com programar un scroll decoratiu del fons¶
Aconseguir una imatge més ample, en la qual una part, de l’amplada de la finestra, estigui repetida.
Visualitzar només una secció de la imatge de fons (una finestra). En pygame, podem fer que el fons sigui un sprite tota la imatge, molt més gran que la pantalla i amb coordenades negatives, o bé una imatge petita, que sigui una subsurface de la gran.
Fer que quan la finestra arribi a Tmax, torni a Tini.
Scroll complet: Un món més gran¶
El món (escenari, mapa) és més gran que la pantalla. És a dir, els elements del joc viuen en un món i a la pantalla es projecta una vista del món.
Transformació món-pantalla (o window-viewport)¶
La funció de transformació de coordenades de món a coordenades de pantalla és una transformació lineal (un canvi de coordenades): translació + possible escalat. La transformació inversa també.
En 3D la situació i els càlculs es compliquen: 2 … => concepte de càmera.
Com afecta això al bucle del joc?¶
A partir d’ara, podem entendre que el fons és el món i que tots els elements del joc (personatges, obstacles, tresors, .etc.) viuen en espai de món. Disposen, doncs, de dues representacions: la del món (les seves coordenades, mida,…) i la de la vista (la seva representació en la pantalla, potser només una imatge). El fons és un element més del joc: la representació del mapa.
Actualització (update) => actualització dels elements, en coordenades de món.
Visualització (render) => visualització dels elements, transformats en coordenades de vista.
Clipping: descartar (o tallar) els elements no visibles, per eficiència.
Tractament dels events (processar input & al.) => en coordenades de vista, transformades a coordenades de món.
Cal emmagatzemar la transformació món-pantalla (la càmera). En 2D, la finestra del món és un rectangle, del qual es poden deduir les funcions de transformació.
Més d’una vista¶
Ara que ja sabem com fer la transformació món-pantalla, no hi ha problema en obtenir més d’una vista en el joc! Exemples:
Alguns enllaços interessants¶
Mètode *scroll* de les surfaces de pygame