Skip to content

Substitueix la temàtica de la guillotina per un porquet al camp que menja massa xiclet

jordi fita mas requested to merge jfita/tramposillu:libgdx into java

El joc és exactament el mateix que teníem fins ara, però he canviat tot l’apartat gràfic perquè el joc sigui un pèl menys violent i sembli més «happy world», tot i que hi ha violència implícita —a l’estil Looney Tunes.

El codi ha canviat força, majoritàriament per poder mostrar les animacions i els gràfics nous, i no m’he preocupat gens de seguir el model del MonoGame que tenim a la branca master. En contret, he substituït tota la part de la interfície nostre GameState per la Screen de la libGDX, i la gestió de touch down/up ho fa una implementació de la InputListener en comptes de les Screen.

La part més complicada, penso jo, és la de gestionar les quatre vistes dels jugadors. En particular el renderitzat, perquè l’única opció «nadiua» de la libGDX, el ScissorStack, només deixa retallar zones rectangulars i les vistes que jo volia fer eren triangulars.

He hagut d’aprofitar-me del búfer de profunditat de l’OpenGL: primer el poso tot a Z=1 i després hi dibuixo el triangle amb el ShapeRenderer sense color però Z=0, de manera que deixa la forma del triangle amb Z=0 sobre el buffer, puc activar la comprovació de profunditat al següent dibuixat, el de tots els gràfics i color, i només li deixo pintar a on Z=1, ignorant la resta de píxels. A més, haig de tenir en compte que cada pantalleta —Stage, li he dit jo— està rotada i han de mantenir una matriu de transformació per dibuixar-ho tot com si el (0,0) fos, com sempre, la cantonada de baix a l’esquerra però surt rotat per pantalla.

Per l’administració d’estats de l’Stage he tornat a fer servir la mateixa tècnica del GameState que hem fet al MonoGame, perquè aquí no té gaire sentit l’Screen.

Pel que fa als fitxers gràfics, he volgut provar què tal anava el Texture Packer perquè no em barrufava haver d’escriure l’.atlas jo mateix, com vam fer a l’MLRL. Per això he deixat tots els sprites cadascú a un fitxer a part dins de la carpeta assets de l’arrel del projecte i he afegit una tasca de Gradle, packTextures per generar sprites.png i sprites.atlas a dins d’android/assets i que és el que fa servir el joc.

Malauradament, no he sabut com fer que la tasca s’executi només quan hi ha un canvi de les imatges sueltes i ara per ara s’ha d’executar a mà cada vegada que es canvia alguna imatge, i cada cop que es fa un checkout. Sospito que ens acabarà mossegant el cul d’alguna manera o altra, però és que executar la tasca cada cop no és pas gaire ràpid tampoc.

Merge request reports