lunedì 7 ottobre 2013

Fare un Videogioco: Giochi di Ruolo parte 2

Ed ecco la seconda parte sul post relativo alla creazione di videogiochi RPG! Non perdiamo tempo e iniziamo subito.


Gameplay

Gli rpg hanno una varietà di gameplay piuttosto variegata, ma la maggiorparte si basano su una serie di meccaniche che permettono di determinare gli eventi che accadono durante il gioco tramite valori numerici. Questo è dovuto alle origini di questi giochi, ovvero i gdr cartacei come Dungeons & Dragons. Poichè dei suddetti rpg cartacei sono disponibili in una grande quantità e versioni, partiremo dai concetti base:

  • Generalmente tutte le entità del gioco hanno un modo di calcolare la loro resistenza ai colpi, come dei Punti Ferita o HP. Se tale resistenza è annullata, l'entità muore
  • Se un entità vuole ferirne un'altra, ha una certa probabilità di riuscirci. Tale probabilità è calcolata in diversi modi (probabilità percentuale, tiro casuale con aggiunti bonus da confrontare con la "difesa" di chi subisce l'attacco...). Se l'attacco ha successo, la resistenza della vittima viene diminuita.
  • Alcune entità possono usare effetti insoliti, che non utilizzano le normali regole di attacco. Questi effetti (come incantesimi, ma anche abilità) possono avere una serie di risultati variegati, oltre alla classica diminuzione di resistenza (per esempio un incantesimo che stordisce). Gli effetti possono essere instantanei o duraturi nel tempo.
  • Possono esserci alcuni oggetti che possono creare altri effetti insoliti (pozioni), oppure permettono alle entità di essere più potenti (armi, armature...)
  • Le entità dovrebbero avere la possibilità di crescere in potenza in base a determinati fattori (punti esperienza)

Questi sono punti fondamentali presenti nella maggiorpare degli RPG, escludendo qualche gioco sperimentale o molto innovativo. E' evidente come anche questo tipo di impostazione può essere implementata in una grande quantità di varianti, nonostante sia solo lo scheletro del GDR che stiamo progettando. C'è ancora molto lavoro da fare: anzitutto c'è da definire il sottogenere che si vuole sviluppare. Si vorrà un gdr classico o d'azione? Perchè per quest'ultimo si ha la necessità di un sistema di regole più snello e semplice che permetta al giocatore di concentrarsi sull'azione più che su un corretta comprensione del regolamento.

Inoltre bisogna valutare per esempio i modi in cui le entità possono interagire con il mondo. In questo caso, vorrei riprendere l'esempio di Nethack, di cui ho detto che abbia una grande libertà di azione e varietà di gioco, perfino superiore ai vari Elder Scrolls secondo me. In questo gioco il giocatore si trova davanti ad una grande quantità di oggetti, con i quali le possibilità di interazione sono innumerevoli: puoi prendere a calci un lavandino, ma scoprirai che non è una buona idea perchè ci si fà male alla gamba. Puoi bere l'aqua di una fontana, che con un colpo di fortuna potrebbe regalarti un bonus ad una caratteristica, ma potrebbe anche evocare un demone ostile. Mangiare il cadavere di un gigante è utile perchè aumenta la forza, ma non credo sia una buona idea farlo con un serpente velenoso, o con un cadavere che è lì da troppo tempo. I negozianti non faranno mai entrare un giocatore invisibile o con una piccozza per scavarsi una via di fuga senza pagare, e non sopportano chi gli sfonda una porta senza poi pagare per il danno! Insomma questi erano alcuni (e sono pochissimi) esempi di interazione possibile con il mondo di gioco.

Alcuni RPG danno inoltre la possibilità di personalizzare il proprio personaggio con abilità e talenti, oltre che con l'eventuale equipaggiamento. Utilizzando delle "classi" si può caratterizzare un entità dando maggiore importanza a determinati aspetti della stessa (un guerriero sarà un potente picchiatore ma un debole utilizzatore di incantesima, diametralmente opposto sarà invece un mago). Oppure altri permettono al giocatore di scegliere i valori delle caratteristiche fisiche e mentali del personaggio, per caratterizzarlo ulteriormente anche ad un eventuale livello di roleplay (un personaggio con alta intelligenza sarà bravo nelle attività che richiedono logica).

In Nethack (e in generale tutti nel genere roguelike) e Diablo una delle principali componenti è la casualità, poichè i livelli, i mostri, gli oggetti (e nel primo Diablo anche le missioni) sono tutte generate casualmente, ampliando così la rigiocabilità del titolo. Ogni partita è diversa da quella precedente, creando così un'esperienza di gioco relativamente nuova.

Per quanto riguarda i mmorpg, va tenuta in conto la vastità che richiede un progetto del genere, che deve permettere al giocatore la possiblità di avanzare nel gioco oltre all'uccidere in modo ripetitivo i nemici. Che sia un sistema di quest o che altro, devono essere presenti alternative. Ma il vero problema di sviluppare mmorpg sta nell'architettura, e ne parlerò nel prossimo paragrafo.


Farne uno

Tiriamo ora le somme e arrivimiamo al dunque: esattamente come si può creare un RPG? Innanzitutto con una grande forza di volontà, e sopratutto sapendo cosa si stà facendo, perchè questo tipo di progetti sono generalmente mastodontici sia a per quanto riguarda progettazione che per lo sviluppo. Nella lista degli aspetti che bisogna curare, progettare e sviluppare infatti i sono:
  • Un regolamento che fornisca lo scheletro del gioco
  • Decidere il genere e il gameplay
  • Un'ambientazione e/o una trama
  • Ogni singolo nemico e boss
  • Ogni singolo oggetto, equipaggiabile o consumabile
  • Ogni personaggio non giocante con il quale si può interagire
  • Ogni singola abilità, incantesimo, talento o skill in dotazione al personaggio
  • Definire l'architettura del gioco in modo da gestire grafica e altre risorse in modo ottimale
  • Per i mmorpg, considerare come fondamentale la necessita di gestire un gran numero di giocatori attraverso internet in modo efficiente (ed è molto più difficile di quello che sembra)
  • Evitare squilibri del gameplay o nel regolamento (personaggio troppo debole/forte contro i nemici o viceversa)
  • Evitare un gameplay ripetitivo, fornendo la maggior varietà possibile (tanti nemici, enigmi, situazioni di gioco diversificate...)
  • Caratterizzare il mondo di gioco a livello di interattività
  • Creare abbastanza materiale per una discreta longevità e/o rigiocabilità
Da questa (non completa) lista si capisce che lo sviluppo di questi giochi non è indicato per i principianti, indipendentemente dal modo in cui ci si approccia a tale impresa. Di sicuro utilizzare ambienti di sviluppo come RPGMaker o OHRRPGCE, che danno praticamente già una base di regolamento potrebbe aiutare a diminuire il carico di lavoro, che comunque rimane enorme. Se queste premesse non vi scoraggiano e vi reputate all'altezza dell'impresa non mi resta che augurarvi buona fortuna! Al prossimo post!

giovedì 3 ottobre 2013

Fare un videogioco: Giochi di Ruolo parte 1

Salve a tutti! Inizio il post per ringraziare tutti voi che leggete il mio blog, perchè avete fatto tolre 10.000 visualizzazioni! Grazie molte, per me vuol dire tanto!

Oggi vorrei parlare dei Gdr, o Rpg per dirla all'inglese, ovvero uno dei generi tra i più venduti e preferiti dal pubblico.


Genere

I giochi di ruolo sono generalmente caratterizzati da un'ambientazione di fantasia nella quale si deve far crescere un personaggio, portando contemporaneamente avanti una storia più o meno complicata. Alcuni di essi sono caratterizzati da un'ampia possibilità di personalizzazione dell'eroe principale, altri invece dalla possibilità di far raggiungere al suddetto protagonista livelli di potere altissimi. Molti sono caratterizzati dalla presenza di un party, ovvero un gruppo di eroi che avanzano nella storia svolgendo un ruolo particolare.

 Tendenzialmente si tende a dividere gli RPG in base alla provenienza, avendo quindi i wRPG (western RPG) e JRPG (japanese RPG). I primi sono sono GDR sviluppati generalmente ad occidente (Usa o Europa) come i classici Ultima, Baldur's Gate, Neverwinter Nights, Diablo e più recentemente Dragon Age e The Witcher. Gli altri invece sono di origini giapponese, come per esempio i vari Final Fantasy. Poi ci sono una marea di sottogeneri, come per esempio il GDR d'azione (Diablo), il Roguelike (Nethack), lo strategico e ovviamente il genere che ora sta avendo un boom (per non dire una saturazione), ovvero il MMORPG.

Grafica

Nei giochi di ruolo l'aspetto grafico è, secondo me, assolutamente secondario. Essendo questi giochi basati prima di tutto su meccaniche di gameplay (percentuali per colpire e di danno, resistenze al danno, tipologie di danno, immunità, incantesimi a bersaglio singolo o a bersagli multipli, punti esperienza), è evidente che creare un RPG dalla grafica stratosferica ma con un gameplay fallato è perfettamente inutile. Bisogna innanzitutto creare un regolamento interno bilanciato e un'idea di gameplay accattivante, che non riduca l'esperienza di gioco ad un misero "vai lì, uccidi il mostro per i punti esperienza, sali di livello, ripeti x volte fino a fine gioco" e dopo pensare a creare una presentazione grafica all'altezza. A difesa di tale tesi posso dire che "Nethack", pur avendo caratteri ASCII come grafica, permette una libertà di azione e una varietà di gameplay che perfino giochi come Skyrim si sognano!





A prima vista potrebbe sembrare confusionaria, ma una volta presa confidenza con il gioco in sè, l'interfaccia grafica è estremamente funzionale e efficace nella sua semplicità. Il carattere "@" è il nostro protagonista, che è in una città sotterranea piena di negozi: le varie parentesi e slash sono oggetti in vendita ai negozi, mentre < e > sono scale per scendere e salire! Ovviamente questa impostazione grafica era dovuta al fatto che questo gioco era in voga nel campus universitari degli anni ottanta, unico posto dove era possibile utilizzare dei terminali che potevano mostrare solo testo. Poco più avanti, si ebbero miglioramenti non indifferenti nella grafica degli RPG.






Questo uno screenshot del primo Ultima, datato 1980 ed uscito sugli home computer dell'epoca. Andando avanti ancora...

Dungeon Master, che per la prima volta introduceva in questo genere la prima persona, permettendo al giocatore di immedesimarsi in un eroe che doveva esplorare un difficilissimo e complesso sotterraneo pieno di mostri letali. L'impostazione in prima persona diventerà poi fondamentale in alcune serie come The Elder Scrolls. Negli anni novanta poi arrivarono Diablo e Baldur's Gate con la leggendaria e secondo me bellissima grafica isometrica






Ed infine in tempi più recenti, dove tutto è fatto con grafica tridimensionale in prima o in terza persona. Anche se c'è da dire che vi è un ritorno della vecchia grafica bidimensionale, in particolare l'isometria tanto sfruttata dalla saga di Baldur's Gate, perchè è evidente che, con i mezzi odierni, ha da esprimere infinite potenzialità.
 


Poichè questo post inizia a dilungarsi, terminerò qui la prima parte del discorso. La prossima volta parlerò di come caratterizzare e progettare un gameplay per questo genere di giochi che, come non mi stancherò mai di ripetere, non è fatto dalla grafica.


Qui la seconda parte del post!

venerdì 20 settembre 2013

Fare un videogioco: videogiochi su Smartphone

Oggi voglio introdurre la programmazione su smartphone, dato che la facilità di accesso a tali mezzi in termini di sviluppo e l'enorme diffusione che hanno tali piattaforme, che con molta probabilità sostituiranno le console portatili.

Sebbene ci siano svariati sistemi operativi proprietari, gli smartphone attualmente più utilizzati sono fondamentalmente Iphone e cellulari Android.  E' quindi evidente che la scelta ricadrà quindi se piazzare il proprio gioco sui prodotti Apple o su un qualunque smarthpohne del sistema operativo di Google. E' dunque necessario fare un distinguo:

  • Iphone ha IOS come sistema operativo. Il numero relativamente limitato di modelli permette un minor lavoro di compatibilità tra diversi device. Su di esso di sviluppa principalmente con il linguaggio Objective C, linguaggio non semplicissimo per i neofiti.
  • Android invece è presente su un grande numero di disposivi, create da molteplici aziendi che spesso personalizzano il sistema in base alle proprie esigenze. Questo rende più problematica la questione della compatibilità, dato che è molto difficile rendere la propria applicazione universale. Tuttavia il linguaggio utilizzato su android è il Java, la cui semplicità di utilizzo è nota.
 Ovviamente, come per la programmazione di giochi per computer, ci sono determinate librerie, engine e programmi che permettono di semplificare la vita dello sviluppatore. Infatti programmi come Game Maker e Unity Engine permettono di sviluppare giochi multipiattaforma, quindi sia per IOS che per Android. Uniti all'estrema semplicità di utilizzo di questi due applicazioni, questo aspetto apre a tutti la possibilità di creare il proprio gioco per tablet o smartphone.

Per quanto riguarda invece le possibilità offerte dalla programmazione, si può dire che basta saper utilizzare OpenGl e si è già perfettamente in grado di sviluppare giochi. Gli ambienti di sviluppo principali sono, nel caso di Android, Eclipse con il plugin di Android SDK. Per quanto riguarda IOS invece l'IDE ufficiale è Xcode.

Detto ciò, è bene ricordare che la programmazione OpenGl è relativamente di "basso livello", e quindi è particolarmente complessa e di solito usata solo per costruire da zero l'engine del gioco. D'altra parte, se si hanno le giuste competenze, è possibile ottimizzare tutto l'ottimizzabile ed ottenere eccellenti prestazioni. Aggiungo che se ci si limita a giochi bidimensionali, su Android si può benissimo fare a meno di librerie grafiche, ma è comunque un approccio che sconsiglio: quando ho tentato di fare un port del mio gioco Arkolour direttamente su Android, non è stato proprio facile e in generale non lo considero un successo al 100%.

Ma per chi non mastica l'OpenGl, che rimane da fare? Utilizzare librerie ed engine, ovviamente! E c'è da dire che tante sono le scelte in questa categoria, che possono essere più o meno valide a seconda delle proprie necessità. Io personalmente consiglio LibGDX per lo sviluppo su Android. E' una libreria Java estremamente efficiente e semplice da usare, con un vantaggio da non sottovalutare: permette di sviluppare un singolo progetto che poi può essere compilato con pochissime righe di codice sia per PC, che per Android che per altre piattaforme! In parole povere permette di poter rilasciare un gioco sia per smartphone che per computer, o ancora di poter testare le proprie app direttamente sul pc SENZA usare l'emulatore!

Un'alternativa, sempre per sistemi Android, è Andengine. Tuttavia non lo consiglio calorosamente per via della sua natura "inusuale" e per l'assenza di documentazione. E' pesantemente basato su ereditarietà e programmazione ad oggetti, ed è notoriamente considerato poco efficiente. Ciononostante ha un discreto numero di sostenitori pronti ad aiutare i principianti sul forum.

Tra le altre possibilità segnalo Cocos2d-x, engine crossplatform che permette di sviluppare sia per Android che per IOS, ed ha una certa fama nell'ambiente, anche se, devo ammetterlo, non ho mai avuto modo di provarlo.

Detto ciò, non rimane altro che attaccare il proprio smartphone al computer, programmare un gioco, caricarlo.... e iniziare il debug! Spero che questa guida vi sia stata utile e ci vediamo al prossimo post!