21 giu 2010

Qualche Considerazione

Programmazione | Roguelike

A livello generale tendo a considerare i miei numerosi tentativi di programmazione come parti di un unico percorso che, prima o poi, sfocerà in uno (e spero più) prodotti completi. In questo senso prendo come guida una dichiarazione che ho avuto occasione di leggere tanti, tanti anni fa in un’intervista agli sviluppatori della Maxis, al tempo dell’uscita di Sim City 2000. Il punto era che i precedenti Sim avevano offerto ciascuno un progresso sotto un dato aspetto tecnico o di design, e tutti questi elementi erano stati tutti presi e fusi insieme nel nuovo Sim City. Ad esempio Sim Earth aveva permesso loro di concentrarsi sulla gestione delle finestre di interfaccia.
E più o meno questo è quello che accade sempre, o è lo stile di pensiero sul quale bisognerebbe concentrarsi: che ogni goccia del proprio lavoro non viene mai sprecata, ma è l’opportunità per espandere le proprie conoscenze, per scoprire qualcosa di nuovo, perfezionare qualcosa di già conosciuto, o per sfruttare qualche conoscenza in una maniera completamente diversa.

A livello di progetto direi invece che è importante mantenere il controllo sul proprio lavoro: avere sempre d’occhio lo schema complessivo, l’obiettivo finale, e procedere gradualmente partendo dallo specifico ed ampliandosi verso il generale. Creare prima delle unità funzionali, ovvero moduli di codice che facciano quello che ci si aspetta, e poi farli comunicare tra loro rendendoli compatibili. Prendendo a modello l’analogia più banale del mondo, si tratta di rispettare i canoni di buonsenso che si utilizzano in qualsiasi lavoro di costruzione: si parte dalle fondamenta, e quando queste sono solide, si procede verso l’alto – tenendo sempre d’occhio equilibrio e stabilità.
Ovviamente non è mai un processo costituito da fasi distinte in maniera netta: ci sarà sempre un pò di uno ed un pò dell’altro, e in un singolo momento si dovrà pensare a tre cose diverse. Per questo è necessario avere prima di tutto le idee chiare.
E questo significa anche prendere appunti, specialmente PRIMA di iniziare lo sviluppo. Annotare le idee, organizzarle in base alla loro reale importanza, mettere avanti la visualizzazione a schermo, la lettura dei comandi di base, la creazione e la modifica dei dati, il tipo di variabili e strutture necessarie e più efficaci. L’obiettivo non è tanto creare un gran gioco al primo tentativo, quanto creare un gioco che funzioni, e sul quale si possa poi implementare tutto il resto con la massima facilità raggiungibile.

Per me il quadro complessivo è la creazione di un mondo di gioco dove il personaggio possa dedicarsi al free roaming, girovagando liberamente, completando quest (generate sempre casualmente), e soprattutto dove gli eventi possano trasmettere un certo grado di “finto” realismo, come se venisse messa in scena una rappresentazione teatrale altamente convincente.

In Omen Nomen, l’”unità funzionale” è composta dal villaggio di superficie. Per completare l’ambiente ho introdotto al suo interno anche l’entrata dei dungeon che vengono esplorati dal giocatore. Il prossimo step vedrà più villaggi (tutti basati sul primo) all’interno di una mappa più ampia, che conterrà anche i dungeon, in locazioni separate. Una volta stabilita questa base introdurrò elementi di interazione tra dungeon e villaggi: bande di mostri che girano per la mappa, o carovane di mercanti che vanno da paese a paese. Ad un livello ancora più avanzato verranno introdotti ulteriori punti di interesse che potrebbero comporre una primitiva catena commerciale:
- Miniere/Cave da cui si estraggono minerali magici.
- I minerali vengono trasportati nelle fucine dei fabbri.
- I fabbri usano i minerali per applicare proprietà magiche agli oggetti prodotti.
- Gli oggetti lavorati vengono trasportati nei mercati dei villaggi dalle carovane.
A questo punto l’intervento del personaggio potrebbe avere un peso più grande sul mondo di gioco: salvare una carovana (o depredarla… perchè no?) potrebbe modificare o mantenere l’equilibrio della rete commerciale. Fornendo una varietà di obiettivi ed equilibrando l’esito di azioni con scopi e grandi di moralità diverse è possibile creare un certo livello di libertà.

Anche Dead City dovrebbe seguire uno sviluppo simile: invece del villaggio abbiamo un’intera città, che nel mondo del gioco (di natura più apocalittica, come si potrà immaginare) sarebbe accompagnato da accampamenti di superstiti più o meno protetti, centri di ricerca o bunker militari, mentre orde di zombi dalle varie capacità vanno in giro distruggendo quello che incontrano. La rete commerciale potrebbe basarsi su beni primari come il cibo o le medicine, e il mondo risulterebbe molto più dinamico: gli zombi potrebbero finire con il dominare l’intera mappa, se qualcuno non si mette d’impegno a coordinare e favorire lo sviluppo dei gruppi di sopravvissuti.

Le prospettive sono incredibilmente allettanti, e questi sono solo i punti di sviluppo più evidenti – non meno importante è l’inserimento di dettagli e particolari meno palesi (come un sistema di informazioni che renda possibile venire a sapere di certi eventi aldifuori del proprio raggio d’azione). Ma come ho già avuto modo di dire, occorre mantenere il controllo: anche sulle proprie ambizioni. Ogni cosa a suo tempo.

Scrivi un commento