Area di progetto 5IA
Conquest of Paradise
S. Bartoli - M. Belloni - I. Capra - G. Magrin
Conquest of Paradise! 1
Indice
- Introduzione pag. 3
- Analisi tecnica dei requisiti pag. 4
- Soluzioni tecniche individuate pag. 6
- Premessa pag. 6
- Classi principali pag. 7
- Approfondimento sui nemici pag. 8
- La gestione dei boss pag. 9
- Livello 9 pag. 9
- La gestione degli ostacoli pag. 9
- La dimensione della finestra di gioco pag. 10
- Conclusioni pag. 10
- Menu pag. 11
- Sito web pag. 12
- Suddivisione dei compiti pag. 13
- Calendario avanzamento attività pag. 13
- Consegna e distribuzione progetto pag. 14
Conquest of Paradise! 2
Introduzione
•
Conquest of Paradise è un gioco a piattaforme single-player scritto in linguaggio Java.
Nel corso dei 9 diversi livelli, pensati secondo la simbologia dantesca del numero 3, propone al giocatore di “aiutare” Dante nella sua riconquista del Paradiso tenuto in scacco dal Diavolo aiutato da tutti i “cattivi” che, in un modo o nell’altro, hanno fatto parlare di loro durante la Storia.
Da Erode a Hitler passando per Dracula e Stalin l’utente dovrà avvicinarsi sempre di più a Satana cercando di sconfiggerlo nell’ultimo livello.
Ogni Boss di livello è aiutato dagli stessi loschi personaggi che, durante la permanenza sulla Terra, lo hanno coadiuvato nelle sue malefatte.
I livelli in un crescendo di difficoltà sono organizzati in ordine cronologico sulla linea del tempo seguendo passo passo l’avvicendarsi dei cattivi rappresentati: Erode prima di Nerone, Jack lo Squartatore prima di Stalin e a seguire tutti gli altri...
Il gioco, pur essendo single-player in senso stretto, permette l’utilizzo, sulla stessa copia, di giocatori diversi, ognuno con la sua percentuale di completamento e con i comandi da lui scelti, modificabili dal menu.
Il menu, sempre scritto in Java, è un progetto “autonomo” del componente del gruppo Guido Magrin che ha creduto fortemente nella sua idea di un menu animato, sebbene non fosse di facile realizzazione.
E’ giusto precisare che ogni singolo elemento grafico presente nel gioco è originale essendo stato realizzato da un duo di disegnatori esterni che hanno lavorato sulle precise richieste dei membri del gruppo.
E’ stata così seguita l’impostazione del lavoro che avviene nella realtà dove, le software house, che producono videogiochi, non si prendono in carico anche la parte grafica degli stessi ma la assegnano ad aziende specializzate del settore lavorando quindi “solo” sul codice che la anima oltre a tutta l’effettiva struttura del gioco stesso.
E’ quindi motivo di orgoglio dire che, in via teorica, il prodotto è assolutamente commercializzabile non avendo violato alcun vincolo in materia di copyright o diritto d’autore.
Conquest of Paradise! 3
Analisi tecnica dei requisiti
•
La scelta del linguaggio Java, oltre ad essere coerente con quanto affrontato nell’anno di quarta durante il nostro percorso di studi, è dettata dalla necessità di assoluta portabilità, propria di questa tecnologia e dalla constatazione che il futuro del gaming, soprattutto in ambito mobile, sta andando fortemente in questa direzione (il linguaggio per dispositivi Android prende spunto in tutto e per tutto proprio da Java).
Sebbene non propriamente pensato per la realizzazione di giochi ha permesso in maniera semplice e snella la creazione di un applicativo completo e soddisfacente, in linea con la nostra idea iniziale.
E’ quindi necessario che l’utente abbia installata sulla propria macchina l’ultima versione della JVM (Java Virtual Machine) che permette la creazione di una macchina virtuale che fornisce al nostro applicativo un ambiente assolutamente indipendente dal sistema operativo sul quale si ha intenzione di eseguirlo.
A conseguenza di quanto detto Conquest of Paradise funziona quindi in maniera perfetta su Microsoft Windows (testate versioni XP, 7 e 8) e, seppur con qualche piccola modifica, su Mac OS X (testata versione 10.7); la diversa gestione degli eventi generati dalla tastiera da parte del sistema operativo Linux Ubuntu (e genericamente dalle diverse distribuzioni di Linux) non permette un’esperienza di gioco fluida garantendo comunque il suo utilizzo e il corretto funzionamento dell’applicativo in generale.
La costante coesistenza di oggetti grafici anche di grosse dimensioni richiede la presenza di almeno 512 MB di RAM, parametro della virtual machine impostato in fase di programmazione in quanto non di default.
La dimensione dell’applicativo completo e delle sue risorse è di circa 300 MB, insieme all’eseguibile .jar del gioco saranno presenti una serie di cartelle e sottocartelle contenenti tutte le risorse grafiche e di recording che vanno tenute nella stessa directory dell’applicativo stesso (consigliato collegamento sul desktop del .jar per usi frequenti mantenendo inalterata la gerarchia delle cartelle fornite).
Per un’esperienza di gioco più appagante è richiesta, per un’esperienza di gioco più appagante, una scheda video non integrata nella scheda madre, soprattutto per la corretta gestione del menu e del suo pesante carico computazionale a livello grafico.
Non è necessaria alcuna connettività di rete a meno di voler gestire, a completa discrezione di un gruppo di giocatori, una sola installazione su più macchine diverse eseguendo lo stesso eseguibile su più computer, riferendosi però sempre alla stessa struttura dati condividendo quindi le informazioni dei giocatori e le loro preferenze.
La struttura dati è gestita utilizzando in maniera mista file di record e file testuali a seconda delle necessità; nel dettaglio, la cartella data/ contiene la totalità dei file utilizzati dall’applicativo (riconosciuti dal formato .cqp, Conquest of Paradise).
Il primo file che si incontra, “screenconfig.cqp” contiene le informazioni sulle preferenze legate alla dimensione della finestra di gioco, nel caso in cui si vogliano cancellare queste informazioni si deve cancellare questo file; l’applicazione, nella sua fase iniziale, provvederà, non trovando dati pregressi, a richiedere le preferenze riguardo alla dimensione della finestra salvandole in un file analogo (N.B. la cancellazione del file “screenconfig.cqp” non modifica in alcun modo le modifiche apportate ai comandi degli utenti e le loro percentuali di completamento del gioco).
Nella sottocartella data/utenti/ sono presenti le informazioni legate ad ogni singolo utente; oltre al file “listaUtenti.cqp” di esclusivo uso dell’applicativo, sono presenti ‘n’
Conquest of Paradise! 4
sottodirectory, ognuna di proprietà dell’utente che l’ha creata (informazione facilmente riconoscibile grazie al nome della cartella stessa).
Ipotizzando l’esistenza di un utente di nome “mario”, all’interno della cartella data/utenti/mario troverà i file “comandi.cqp” e “livello.cqp” che l’applicazione modificherà in maniera autonoma (questi file vanno modificati solo in caso di assoluta necessità e prendendosi a pieno la responsabilità del gesto non potendo garantire il corretto funzionamento dell’applicazione a seguito di ciò).
Tutte le funzionalità previste all’inizio del progetto sono state effettivamente realizzate utilizzando anche metodi e algoritmi più efficienti di quanto ipotizzato.
Conquest of Paradise! 5
Soluzioni tecniche individuate
•
Premessa
Conquest of Paradise nella sua interezza utilizza in maniera importante e diffusa la tecnica del multithreading ovvero la possibilità di dividere un processo in un insieme di operazioni autonome che comunicano tra loro tramite variabili comuni; non deve stupire quindi, guardando lo schema UML delle classi, la discendenza totale dalla super-classe java.lang.Thread.
Semplificando si può dire che, a meno di pochissime eccezioni (come i listener per gli eventi o le classi per la creazione dell’interfaccia di gioco), tutti gli oggetti presenti sullo schermo e visibili dal giocatore sono dei thread; tutto ciò aumenta notevolmente sia la difficoltà di scrittura del codice che il carico computazionale dell’applicativo stesso.
Di seguito è riportato uno schema semplificato delle classi utilizzate (a meno della già presente Thread, messa a disposizione da Java, sono state tutte scritte partendo da zero).
Conquest of Paradise! 6
Classi principali
Di rilievo, il largo utilizzo dell’ereditarietà propria dei linguaggi ad oggetti che ha permesso la creazione di una gerarchia di classi ben definita e di facilissima estensione.
A seguito di una attenta fase di progettazione su “carta”, non risulterebbe un problema l’ampliamento di quanto il gioco offre, introducendo nuove funzionalità, grazie alla presenza di super-classi studiate ad-hoc completamente indipendenti dalle specificità delle sotto-classi da esse discendenti. Si noti quindi come Personaggio descriva in maniera generale un qualsiasi oggetto grafico rappresentabile all’interno dell’interfaccia e come la classe derivata Dante (che analizzeremo in seguito) definisca in modo preciso le variabili di stato legate al personaggio principale e i metodi propri utilizzati nell’applicazione.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Introduzione Conquest of Paradise tesina
In questa tesina di maturità ho voluto presentare Conquest of Paradise, un gioco a piattaforme single-player scritto in linguaggio Java. Nel corso dei 9 diversi livelli, pensati secondo la simbologia dantesca del numero 3, propone al giocatore di “aiutare” Dante nella sua riconquista del Paradiso tenuto in scacco dal Diavolo aiutato da tutti i “cattivi” che, in un modo o nell’altro, hanno fatto parlare di loro durante la Storia. Da Erode a Hitler passando per Dracula e Stalin l’utente dovrà avvicinarsi sempre di più a Satana cercando di sconfiggerlo nell’ultimo livello.
Ogni Boss di livello è aiutato dagli stessi loschi personaggi che, durante la permanenza sulla Terra, lo hanno coadiuvato nelle sue malefatte.
I livelli in un crescendo di difficoltà sono organizzati in ordine cronologico sulla linea del tempo seguendo passo passo l’avvicendarsi dei cattivi rappresentati: Erode prima di Nerone, Jack lo Squartatore prima di Stalin e a seguire tutti gli altri. Il gioco, pur essendo single-player in senso stretto, permette l’utilizzo, sulla stessa copia, di giocatori diversi, ognuno con la sua percentuale di completamento e con i comandi da lui scelti, modificabili dal menu.
Il menu, sempre scritto in Java, è un progetto “autonomo” del componente del gruppo Guido Magrin che ha creduto fortemente nella sua idea di un menu animato, sebbene non fosse di facile realizzazione. È giusto precisare che ogni singolo elemento grafico presente nel gioco è originale essendo stato realizzato da un duo di disegnatori esterni che hanno lavorato sulle precise richieste dei membri del gruppo. È stata così seguita l’impostazione del lavoro che avviene nella realtà dove, le software house, che producono videogiochi, non si prendono in carico anche la parte grafica degli stessi ma la assegnano ad aziende specializzate del settore lavorando quindi “solo” sul codice che la anima oltre a tutta l’effettiva struttura del gioco stesso. È quindi motivo di orgoglio dire che, in via teorica, il prodotto è assolutamente commercializzabile non avendo violato alcun vincolo in materia di copyright o diritto d’autore. Partendo quindi dall’analisi di questo videogioco, ho anche effettuato nella tesina anche dei collegamenti interdisciplinari con le varie materie scolastiche.
Collegamenti
Conquest of Paradise tesina
- Informatica - Java, SQL (Gioco, pagina web con database).
- Sistemi - Programmazione JSP (Pagina web, www.conquestofparadise.tk).
- Italiano - Dante (Inferno e Paradiso).
- Storia - Russia (Stalin - comunismo), Germania (Hitler - nazismo), Francia (Napoleone).