Lo sviluppo di giochi in ambiente Android - La Struttura di Libgdx

 

Libgdx  è  composto  da  diversi  moduli  ognuno  dei  quali  fornisce  un  diverso servizio  per  ogni  step  di  una  tipica  architettura  di  gioco.  La  figura  seguente mostra questi moduli.

 

  • Input, fornisce  un  modello  per  la  gestione  dei  dispositivi  di  input  su tutte  le    Supporta  tastiera,  touchscreen,  accelerometro  e, dove disponibile, mouse.
  • Graphics, consente  il  disegno  delle  immagini  sullo  schermo  tramite OpenGL ES.
  • Files, consente l’accesso ai file su tutte  le piattaforme.
  • Audio, facilita  la  registrazione  e  la  riproduzione  di  suoni  su  tutte  le piattaforme.
  • Networking, fornisce  i  metodi  per  eseguire  operazioni  di  rete,  come  ad esempio  semplici  richieste  HTTP  o  comunicazione  client/server  con Socket TCP.

 

Le  diverse  piattaforme  di  destinazione  di  un  progetto  in  Libgdx  presentano diversi  dispositivi  di  input.  Sui  dispositivi  desktop  l’utente  invia  comandi tramite  tastiera  o  mouse;  sui  dispositivi  Android,  invece,  il  mouse  viene sostituito  da  un  touchscreen  capacitivo  e  la  tastiera  spesso  manca.  Inoltre,  i dispositivi  Android  spesso  dispongono  anche  di  un  accelerometro  e  di  un sensore di campo magnetico.

Libgdx  tratta  mouse  e  touchscreen  allo  stesso  modo  ed  a  seconda  del dispositivo  di  input  è  possibile  eseguire  un’ interrogazione  ciclica  dello  stato del  dispositivo  (polling)  oppure  registrare  un  listener  che  si  occuperà  di ricevere  gli  eventi  di  input  in  ordine  cronologico  (event  handling).  Il  primo metodo  è  sufficiente  alla  gestione  di  semplici  giochi  arcade;  il  secondo metodo,  invece,  è  necessario  quando  nel  videogioco  sono  coinvolti  element i dell’ interfaccia  utente  come  i  tasti,  poiché  questi  si  basano  su  sequenze  di eventi  come  tocco/rilascio  del  tasto.  La  gestione  di  tutti  i  dispositivi  di  input  è affidata all’ interfaccia di Input. 

 

L’ interfaccia  Graphics  fornisce  informazioni  riguardo  il  display  del dispositivo  o  la  finestra  dell’applicazione,  a  seconda  che  si  tratti  di piattaforma  Android  o  desktop  rispettivamente,  nonché  informazioni  e accesso  al  contesto  OpenGL  corrente.  Più  nello  specifico  fornisce informazioni  riguardo  la  dimensione  dello  schermo,  la  densità  dei  pixel  e  le proprietà  del  frame-buffer  come  la  profondità  di  colore  ovvero  la  quantità  di bit  necessari  per  rappresentare  un  colore  in  un  singolo  pixel  del  frame-buffer, appunto,  di  un  dispositivo  video.  Come  per  altri  comuni  moduli  di  Libgdx, l’accesso è fornito tramite  l’utilizzo di campi statici della classe Gdx.

Il  modulo  Graphics  permette  la  realizzazione  di  giochi  2D  o  3D.  In particolare,  per  il  2D  mette  a  disposizione  il  package  scene2d  che  consente un’agevole  costruzione  di  interfacce  GUI  grazie  ad  una  gerarchia  di  attori.

Tali  attori  sono  definiti  nella  classe  Actor  del  package  scene2d  ed  è  possibile impostare  posizione,  dimensione,  punto  di  origine,  scala,  rotazione  e  colore.

La  seconda  delle  tre  classi  che  compongono  il  cuore  di  scene2d  è  la  classe Group  che  a  sua  volta  è  un  attore  e  può  avere  attori  figli.  Quando  viene apportata  una  modifica  (rotazione,  scala…)  ad  un  oggetto  group  questa  si ripercuote  su  tutti  gli  oggetti  figli.  Infine,  la  classe  Stage  che  è  un InputProcessor  che  gestisce  il  disegno  degli  attori  e  quando  riceve  eventi  di input  li  invia  agli  attori  appropriati.  La  gestione  della  grafica  è  affidata all’ interfaccia Graphics.

 

Ben tornato