Autore Topic: architettura nello scrivere un videogioco  (Letto 8865 volte)

marco1991

  • Visitatore
architettura nello scrivere un videogioco
« il: 17 Luglio 2012, 11:46:15 CEST »
0
salve ragazzi,
mi avete appena chiarito un quesito e già sono qui a chiedere una mano xD spero che questa volte il mio topic sia un po' più interessante..

ho appena finito la scrittura di un gioco snake-like e lo ho progettato in questo modo:
in pratica ho creato una classe Game (che estende activity ) che all'interno ha una classe "screen", screen si occupa di quello che viene visualizzato sullo schermo.
se ad esempio dal menu principale dell'applicazione clicco su settings, allora parte lo screenSetting. in pseudocodice sarebbe:
"se viene cliccato il bottone settings, allora Game.screen = settingsScreen, se viene cliccato help allora Game.screen = helpScreen" etc...
da notare che screen non eredita da activity, quindi alla fine dei conti in tutto il gioco cè una sola activity e ogni altra schermata del gioco non è una nuova activity ma solo un nuovo screen... questo metodo è quello che mi ha insegnato il libro che sto leggendo..

ora io mi chiedo: non è forse meglio fare una activity nuova per ogni voce del menu? ad esempio se premo su settings non cambia lo screen ma parte proprio una nuova activity...

quali sono i pro e i contro di queste tipologie?
io ho pensato che la tipologia proposta dal libro sia più veloce e chieda meno risorse perché in effetti activity è abbastanza pensate però non so.. il realtà difficoltà non ne vedo perché le veri e activity non dovrebbero comunicare tra loro (quindi manco andrebbero fatti boundle da passare agli intent)... gli unici dati che interessano a tutte la "schermate" sono lo stato del volume e il punteggio, tutte cose che vengono "comunicate" direttamente alla classe settings che è statica..


grazie !

Offline Kruger

  • Nuovo arrivato
  • *
  • Post: 10
  • Movimento "Mela-Marcia"
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Ubuntu 11.10, Windows 7
Re:architettura nello scrivere un videogioco
« Risposta #1 il: 17 Luglio 2012, 11:53:50 CEST »
+1
Ciao =D

Potresti anche creare solo i layout in xml e nell'onClick(...) richiami il metodo setContentView(layout), in modo da non creare activity in più..

Spero ti sia di aiuto =)


Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #2 il: 17 Luglio 2012, 12:47:57 CEST »
+1
L'ho letto anche io "il libro" e mi è sembrato ben fatto anche se alcune cose non sono il massimo.  ;-)

ora io mi chiedo: non è forse meglio fare una activity nuova per ogni voce del menu? ad esempio se premo su settings non cambia lo screen ma parte proprio una nuova activity...

quali sono i pro e i contro di queste tipologie?
In un caso del genere i pro per una activity non esistono.

La activity è più lenta, a parte i settings statici devi comunque sottostare al meccanismo classico per il passaggio dati (casomai ti servisse).
In più devi duplicarti tutta la gestione di pause/resume/creazione schermo/gestione wake lock.

Se hai N sezioni del menu non implementate con un layout scarno ma con grafica vera e propria (o addirittura renderizzate in 3D) se caricano lo stesso font devi caricarlo N volte, così come il suono di un bottone o altro.

marco1991

  • Visitatore
Re:architettura nello scrivere un videogioco
« Risposta #3 il: 17 Luglio 2012, 13:35:55 CEST »
0
grandi mi sono chiarito molto bene  ora!

@undead: mi sapresti specificare lo cose che non sono il massimo su quel libro? così magari integro con qualche altra guida, grazie !!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #4 il: 17 Luglio 2012, 14:39:53 CEST »
0
La telecamera soffre di gimbal lock (ma nel libro c'é scritto) ma é un topic avanzato visto che senza quaternioni non risolvi. Non c'é una vera e propria scena e nemmeno uno scene graph (non che sia necessario ma a volte aiuta).
Diciamo che in generale é la versione base di libgdx (stesso autore credo).

Altri esempi: non c'é nessun accenno al rendering multithreading. Se non sbaglio manca del tutto anche opengl es 2.0 (magari una introduzione sugli shader e sulle differenze tra fixed function pipeline e programmable pipeline ci stava).

Comunque é un libro molto buono, per problemi specifici o avanzati puoi cercare su google o magari vedere altri motori (libgdx che é una evoluzione o il classico andengine che ha una versionr opengl 2.0 se non sbaglio)!

 ;-)

marco1991

  • Visitatore
Re:architettura nello scrivere un videogioco
« Risposta #5 il: 17 Luglio 2012, 19:07:01 CEST »
0
io sono abbastanza attratto da andengine (magari la versione normale per mantenere la retrocompatibilità) ma davvero non trovo una guida decente... boh per ora mi finisco sto libro che sono solo a pagine 300 e le opengl mi stanno facendo abbastanza penare


riguardo al tema principale mi p venuto in mente che avendo più activity il tasto back del cellulare acquisirebbe più senso visto che altrimenti premendolo si esce dal gioco, ma alla fine basta inibirlo

marco1991

  • Visitatore
Re:architettura nello scrivere un videogioco
« Risposta #6 il: 30 Luglio 2012, 16:38:16 CEST »
0
scusate se riesumo questo thread ma rileggendo alcune parti del libro ho letto che dice: " noi non tratteremo ciò che riguarda la cartella res/ di un progetto perché non la considero inerente allo sviluppo di un videogioco".... però rata se la faccio per 480x320 e poi passo a 800x480 è un bello scaling fastidioso quindi forse è più indicato usare rawable ..?

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #7 il: 30 Luglio 2012, 17:18:28 CEST »
0
Parti dal presupposto che non puoi fisicamente gestire ogni risoluzione.
Secondo me la soluzione migliore è farsi due set di grafica, una hi-res e una low-res. Scegliere quella adatta alla meno peggio e poi scalare come dice il libro.  ;-)

marco1991

  • Visitatore
Re:architettura nello scrivere un videogioco
« Risposta #8 il: 30 Luglio 2012, 18:12:30 CEST »
0
ok però per gestire i due set di grafica sarebbe cmq meglio usare res/, altrimenti andrebbero fatti un sacco di if all'interno del codice, o mi sbaglio?
poi facendo i disegni in vettoriale poi non diventa troppo complicato fare più versioni dello stesso disegno... però il libro snobba del tuttola res/

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #9 il: 30 Luglio 2012, 18:23:04 CEST »
0
beh potresti avere anche tanti if è vero ma potresti anche fare una classe che semplicemente contiene delle stringhe per ogni tipo di asset.
per esempio fai una classe base graficamiogoco e ci metti una cosa del tipo

public String backgroundmenu;

poi ti fai un costruttore vuoto.

Ti derivi un graficamiogiocoHD e nel costruttore:

backgroundmenu = "sfondoHD.jpg";

Ti derivi un graficamiogiocoSD

e allo stesso modo nel costruttore:

backgroundmenu = "sfondoSD.jpg";

A quel punto nel codice fai un solo if:

graficamiogioco nomi = null;

if( qualcosachecontrollalarisoluzione ) nomi = new graficamiogiocoHD();
else nomi = new graficamiogiocoSD();

e da lì in poi praticamente puoi dimenticarti degli if ma fare solo

nomi.backgroundmenu

EDIT: hai pure il vantaggio che se vuoi creare un nuovo tipo in cui magari cambiano 3-4 immagini ti derivi una nuova classe, nel costruttore chiami super e poi cambi solo i nomi dei files.

e sicuramente il codice è più pulito perchè hai tutte le stringhe insieme, non devi ricordarti dove hai scritto cosa.

 :-P
« Ultima modifica: 30 Luglio 2012, 18:25:20 CEST da undead »

marco1991

  • Visitatore
Re:architettura nello scrivere un videogioco
« Risposta #10 il: 30 Luglio 2012, 18:45:00 CEST »
0
mmm cavolo noi tutti i torti !

però ancora non sono convinto perchè così hai solo 2 tipi, invece con i res nei hai 4 e comprendi anche i tablet

cmq ora riprendo in mano il gioco snake e provo a fare come dici te :)
anche se non so per qialche assudo motivo ma il mio snake sia su cell che su AVD gira benissimo per 2-3 minuti per poi bloccarsi (esce dall'app e ritorna al 'desktop')
senza nessun apparente motivi, e il logcat non mi segnala nulla..boh..il codice è uguale a quello sul libro...

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #11 il: 31 Luglio 2012, 12:43:21 CEST »
+1
Beh con questo sistema puoi averne quanti ne vuoi. Diciamo che di solito è sempre "comodo" togliere le stringhe o i riferimenti diretti alle risorse e in questo modo è come se tu avessi una "classe di configurazione". In teoria potresti anche riempirtela con dei dati letti dall'esterno (DB/file di configurazione/etc).

Li potresti pure leggere via internet.  :-P

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:architettura nello scrivere un videogioco
« Risposta #12 il: 05 Settembre 2012, 15:19:17 CEST »
0
Si può dire il nome di questo fantomatico libro ?  :D

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:architettura nello scrivere un videogioco
« Risposta #13 il: 05 Settembre 2012, 16:17:29 CEST »
0
Beginning android games development. L'ultimo è beginning android 4 games development.  ;-)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:architettura nello scrivere un videogioco
« Risposta #14 il: 05 Settembre 2012, 16:18:48 CEST »
0
Si, stò leggendo anche io beginning android 4 games development :D mi pare che rispetto al precedente non cambi molto o sbaglio ?