Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
jocs_libgdx [2023/05/16 09:45] enric_mieza_sanchez [Primer joc: Drops] |
jocs_libgdx [2026/03/06 00:03] (actual) enric_mieza_sanchez [Viewports i resolucions] |
||
|---|---|---|---|
| Línia 3: | Línia 3: | ||
| En aquest article utilitzarem una llibreria específica, | En aquest article utilitzarem una llibreria específica, | ||
| - | + | {{ libgdx.png? | |
| {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 # | {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf3 # | ||
| Enllaços: | Enllaços: | ||
| - | | + | - [[https://libgdx.com/wiki/ |
| - | | + | - [[https:// |
| - | - [[https:// | + | - [[https:// |
| - | - [[https:// | + | - [[libGDX Stage]] per a objectes de la llibreria Scene2D (en aquesta wiki). |
| + | - [[libGDX Comunicacions]] per a crides HTTP i websockets (en aquesta wiki). | ||
| \\ | \\ | ||
| Línia 19: | Línia 19: | ||
| Necessites tenir instal·lat Android Studio. | Necessites tenir instal·lat Android Studio. | ||
| - | Crea el projecte amb l' | + | Crea el projecte amb l' |
| - | \\ | ||
| - | ==== Troubleshooting | + | ===== Definicions ===== |
| - | Si t'apareix | + | Objectes principals del // |
| - | | + | * '' |
| - | | + | * '' |
| - | buildToolsVersion "30.0.3" | + | * '' |
| - | compileSdkVersion 31 | + | * '' |
| - | targetSdkVersion 31 | + | * '' |
| - | </ | + | |
| + | | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| \\ | \\ | ||
| Línia 65: | Línia 70: | ||
| - **Android**: | - **Android**: | ||
| - **Desktop** (java app, Windows o Linux): afegeix una nova configuració< | - **Desktop** (java app, Windows o Linux): afegeix una nova configuració< | ||
| - | - Selecciona Module: '' | + | - Selecciona Module: '' |
| - Selecciona Main Class: '' | - Selecciona Main Class: '' | ||
| - [[https:// | - [[https:// | ||
| - | - [[https:// | + | |
| - | | + | \\ |
| + | |||
| + | ===== Viewports, resolucions | ||
| + | |||
| + | El codi que fem a libGDX és multiplataforma, | ||
| + | |||
| + | **Ves a l' | ||
| + | |||
| + | Hi treballaràs les resolucions de pantalla i els principis per moure objectes bàsics de forma adequada dins la pantalla. En particular veuràs com fer rebotar pilotes a les parets. | ||
| \\ | \\ | ||
| Línia 207: | Línia 220: | ||
| // TextureRegion ens permet retallar un fragment de la Texture | // TextureRegion ens permet retallar un fragment de la Texture | ||
| // retallem el fragment de background des de la posició del personatge (posx, posy) | // retallem el fragment de background des de la posició del personatge (posx, posy) | ||
| - | bgRegion.setRegion(posx, | + | bgRegion.setRegion( |
| + | (int)game.SCR_WIDTH, | ||
| // (2) PINTAR | // (2) PINTAR | ||
| Línia 218: | Línia 232: | ||
| game.batch.end(); | game.batch.end(); | ||
| </ | </ | ||
| + | |||
| + | <WRAP important> | ||
| + | ULL amb la funció [[https:// | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Només que un dels paràmetres sigui un '' | ||
| + | </ | ||
| {{ietiwalk.gif}} | {{ietiwalk.gif}} | ||
| Línia 234: | Línia 256: | ||
| De la **llibreria Math** destaquem: | De la **llibreria Math** destaquem: | ||
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| I a la **llibreria Graphics** destaquem: | I a la **llibreria Graphics** destaquem: | ||
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| - | * El //batch// només pinta [[https://libgdx.badlogicgames.com/ci/ | + | * El //batch// només pinta [[https://javadoc.io/ |
| - | * [[https://libgdx.badlogicgames.com/ci/ | + | * [[https://javadoc.io/ |
| Línia 269: | Línia 291: | ||
| \\ | \\ | ||
| - | ===== Pilotes rebotant ===== | ||
| - | Molts jocs es basen en fer rebotar pilotes per la pantalla. Us passo algunes estratègies típiques per aconseguir-ho. | ||
| - | |||
| - | {{Pilota-rebots.png}} | ||
| - | |||
| - | Ull! Segons aquesta imatge l' | ||
| - | |||
| - | Com pots veure a la imatge, rebotar una pilota és fàcil si tens les coordenades (pos_x i pos_y) de la posició, i la trajectòria la emmagatzemes com una velocitat descomposada en component X i component Y (vel_x i vel_y , per exemple). | ||
| - | |||
| - | Quan la pilota arriba al límit inferior o superior, només cal invertir el signe de la velocitat Y si la trajectòria semblarà exactament un rebot. | ||
| ==== Exercici ==== | ==== Exercici ==== | ||
| Línia 298: | Línia 310: | ||
| \\ | \\ | ||
| - | ===== Controls | + | ===== Controls |
| - | Els controls d' | + | Els controls d' |
| - | * Teclat (només | + | * Teclat (per versions Desktop) |
| - | * Pantalla | + | * Pantalla |
| * Acceleròmetre | * Acceleròmetre | ||
| * Brúixola/ | * Brúixola/ | ||
| - | Convé llegir la [[https:// | + | Hi ha 2 estratègies importants per gestionar els // |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | Per saber les tecles que s'han premut consulta els [[https:// | ||
| Línia 368: | Línia 385: | ||
| * Ús WebSockets per comunicacions a temps real. | * Ús WebSockets per comunicacions a temps real. | ||
| </ | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | |||
| + | ===== 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 '' | ||
| + | |||
| + | Algunes referències: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | IMPORTANT: perquè funcioni el skin cal descarregar tots els arxius a la carepta assets. | ||
| \\ | \\ | ||