bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


jocs_libgdx

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
jocs_libgdx [2024/04/09 16:52]
enric_mieza_sanchez [Ortographic Camera]
jocs_libgdx [2024/04/12 11:52] (actual)
enric_mieza_sanchez [Desenvolupament de jocs amb libGDX]
Línia 3: Línia 3:
  
 En aquest article utilitzarem una llibreria específica, libGDX per realitzar el joc. Aquesta té molts avantatges, sobretot que permet compilar en diverses plataformes (Android, Desktop, iOS, HTML). A més, ens permetrà utilitzar recursos gràfics específics que ens facilitaran operacions complexes en 2D i 3D amb acceleració OpenGL. En aquest article utilitzarem una llibreria específica, libGDX per realitzar el joc. Aquesta té molts avantatges, sobretot que permet compilar en diverses plataformes (Android, Desktop, iOS, HTML). A més, ens permetrà utilitzar recursos gràfics específics que ens facilitaran operacions complexes en 2D i 3D amb acceleració OpenGL.
- +{{ libgdx.png?250 }}
 {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 #DamMp08Uf03 jocs games}} {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 #DamMp08Uf03 jocs games}}
  
Línia 27: Línia 26:
 buildToolsVersion "33.0.0" buildToolsVersion "33.0.0"
 </file> </file>
 +
 +\\
 +
 +===== Definicions =====
 +Objectes principals del //framework//:
 +  * ''Game'': classe principal del joc, contenidor de pantalles.
 +  * ''Screen'': hi encapsulem una pantalla (game over, presentació, etc.), nivell, minijoc. Cadascuna és independent de l'altra.
 +  * ''OrtographicCamera'': objecte per traduir coordenades. Pot servir per adaptar tamanys de pantalla o per projectar en 2D una imatge 3D.
 +  * ''SpriteBatch'': objecte per pintar //sprites// (imatges, animacions).
 +  * ''ShapeRenderer'': objecte per pintar formes geomètriques (cercles, el·lipses, rectangles, triangles, etc.
 +  * ''BitmapFont'': objecte per pintar lletres.
 +  * ''Texture'': imatge.
 +  * ''TextureRegion'': fragment d'una imatge.
 +  * ''Animation'': objecte per gestionar les animacions i //spritesheets//.
 +  * ''Actor'': objecte tipus //widget//, que pot ser alhora un element gràfic i una entrada de dades. Exemples: Button, Dialog, TextInputListener, etc.
 +  * ''Stage'': objecte per renderitzar ''Actors''.
 +  * ''Skin'': conjunt de imatges i fonts per renderitzar ''Actors''. Imprescindible si es vol emprar ''Actor'' i ''Stage''.
  
 \\ \\
Línia 375: Línia 391:
  
 Posant que volem una pantalla de 800x480 Posant que volem una pantalla de 800x480
 +
 +<file java DesktopLauncher.java>
 +public class DesktopLauncher {
 +    public static void main (String[] arg) {
 +        Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
 +        config.setWindowedMode(480, 800);
 +</file>
 +
 +A l'arxiu de ''Game'' o ''Screen'':
  
 <code java> <code java>
Línia 402: Línia 427:
  
 <code java> <code java>
 +protected int virtual_joystick_control() { 
 +    // iterar per multitouch 
 +    // cada "i" és un possible "touch" d'un dit a la pantalla 
 +    for(int i=0;i<10;i++) 
 +    if (Gdx.input.isTouched(i)) { 
 +        Vector3 touchPos = new Vector3(); 
 +        touchPos.set(Gdx.input.getX(i), Gdx.input.getY(i), 0); 
 +        // traducció de coordenades reals (depen del dispositiu) a 800x480 
 +        game.camera.unproject(touchPos); 
 +        // les dades convertides s'enregistren a la mateixa variable touchPos 
 +        //...
 </code> </code>
 +
 +\\
 +
 +===== Actors, Scenes i Skins =====
 +Per fer controls avançats com Buttons, Dialogs, etc. hem de tenir en compte que son elements tant de renderització com de entrada de dades, i es tracten de forma especial. En caldrà emprar els objectes ''Stage'' i ''Skin'':
 +
 +Algunes referències:
 +  * [[https://stackoverflow.com/questions/33062574/how-to-properly-implement-a-dialog-box-using-libgdx|Com fer un Dialog]].
 +  * [[https://github.com/BlueBoxWare/LibGDXPlugin|libGDX plugin per IntelliJ (Android Studio)]]
 +  * [[https://github.com/libgdx/libgdx-skins/tree/master/skins|Skins bàsics]]
 +  * [[https://github.com/czyzby/gdx-skins|Mes skins]]
 +
 +IMPORTANT: perquè funcioni el skin cal descarregar tots els arxius a la carepta assets.
 +
 +\\
  
jocs_libgdx.1712681574.txt.gz · Darrera modificació: 2024/04/09 16:52 per enric_mieza_sanchez