giovedì 28 maggio 2009

Labyrinth 0.5.2 - Oggetti fantastici

Visivamente non è cambiato molto nel gioco, anzi direi nulla.

Tuttavia ho completato, almeno per il momento, il progetto sugli oggetti: allo stato attuale posso ricreare oggetti di tutti i tipi, con diverse maledizioni o con dei modificatori negativi, oppure oggetti magici, che possono dare ogni tipo di bonus se indossati.

Nonostante abbia già affermato che gli oggetti magici sarebbero stati rari, questo passaggio è fondamentale per la buona riuscita del gioco.

La vera novità, che nei vari roguelike che ho giocato non ho mai visto, è che un oggetto magico/maledetto può essere indossato anche da una creatura ed ha egualmente effetto. Perciò quando troverete un goblin con equipaggiamento normale, sarà una cosa, quando ne troverete uno con uno o più oggetti magici, sarà un'altra. Questo fa si che, ad esempio, possa legare alcuni oggetti magici a mostri unici che magari sono tali (cioè famosi) proprio grazie all'utilizzo di quell'oggetto magico.

Queste implementazioni hanno portato via parecchio tempo, principalmente perché vanno ad influire su svariati aspetti del gioco (come ad esempio il salvataggio) e quindi c'è stato molto lavoro da fare.

Comunque sia, sono sempre più vicino al raggiungere una versione giocabile del gioco stesso.

Rimanete sintonizzati :-)

giovedì 21 maggio 2009

Labyrinth 0.4.8 - salvate il nostro eroe


Questa settimana ci sono numerose novità: molte cose sono tecniche e quindi non percepili. La più importante è una gestione più leggera degli oggetti presenti nel dungeon consentendo al gioco di essere comunque più veloce.

L'altra grande implementazione della settimana è la possibilità di salvare e caricare una partita: è stata una mezza impresa perché attualmente d.tango non supporta la serializzazione degli array e delle classi, se non tramite alcuni artifici piuttosto macchinosi.

Ora viene generato un testo che poi viene salvato su file (di testo); prossimamente provvederò a trasforamre questi dati compattandoli e criptandoli per evitare il cheating. Non so ancora come fare, in quanto anche in questo caso, il supporto che fornisce d.tango mi sembra scarso, ma devo ancora indagare a fondo. Comunque allo stato attuale il salvataggio e il caricamento funzionano, anche se lavorano su file di testo.

In questa versione inoltre è stata migliorata la piccola interfaccia, rendendola più godibile (a qualcuno piacevano i colori sgargianti?) ed è stata migliorata la creazione del personaggio.

Nella settimana che seguirà, quasi sicuramente mi dedicherò a terminare e ottimizzare il salvataggio e il caricamento, ma se avanzerà tempo dovrò lavorare sulla tipologia delle creature e sull'assegnazione di equipaggiamento alle stesse.

giovedì 14 maggio 2009

Labyrinth 0.4.2 - La genesi

Lo sviluppo del gioco nell'ultima settimana è accelerato parecchio e ci sono diverse novità.

Innanzitutto con l'introduzione di PKCurses, (una classe da me create), Labyrinth ha finalemente ina piccola interfaccia (una serie di cornici in realtà) e quindi risulta più ordinato e leggibile. Inoltre ho implementato quasi tutte le funzionalità mancanti citate la volta scorsa: il personaggio può ora riposare per rigenerare le ferite, esistono dei flag che indicano la gravità delle ferite ricevute da Mr @ e la modalità di seraching si disattiva nel caso in cui si venga attaccati.

Ho creato un finestrella laterale alla mappa dove vengono riassunte le statistiche più interessanti del proprio personaggio, ma nella stessa finestra si visualizzarà lo stato di "benessere" del nemico di turno, con una barra che ne indica i punti vita e che cala e cambia colore in base ai danni subiti.

Ho sistemato il livello del tempio che da questa versione è diventato il livello zero del gioco stabilmente: al centro del tempio è stato messo l'alto altare di Zutra.

Dall'ultimissima versione il gioco si apre con una semplice schermata di presentazione, dopo di che verrà proposto un menù da quale è possibile scegliere se iniziare a giocare o uscire dal gioco. Scegliendo di iniziare si passerà alla creazione del personaggio: in questa sezione si avranno dei punti da distribuire tra le varie statistiche e abilità. Finita la creazione s'inizia a giocare dal tempio. In caso di morte, dopo un messaggio di sistema, si torna al menù principale.

Nella prossima settimana mi dovrò concentrare sul sistema di salvataggio e caricamento, visto che il D (con Tango) non ha praticamente il supporto per la serializzazione degli oggeti e quindi avrò molto da fare.

Comunque non dovremmo essere lontani da una versione giocabile :-)

lunedì 11 maggio 2009

PKCurses

Signore e signori vi presento PKCurses :-)

Se state pensando ad una conversione di dcurses per Tango, vi state sbagliando: la cosa è al di là dei miei obbiettivi ed avrebbe richiesto decisamente troppo tempo.

Fino ad ora gli effetti testo erano lasciati ad una Struct di nome Texteffect, da oggi questo compito sarà svolto dalla Classe PKCurses che però sa fare molto di più.

In sostanza è possibile creare e piazzare una finestra dove si vuole nella console e la stessa cosa si può fare con del testo: stando bene attenti è possibile quindi mettere dove si vuole una finestra che contiene del testo. Grazie a questo sistema mi è stato possibile creare tre finestrelle: una per il gioco vero e proprio, una per i dati del PG (Mr @) e una invece per i messaggi di gioco.

Infine PKCurses permette di reinizializzare una nuova console sopra a quella vecchia esattamente come avviene nei roguelike scritti in C o C++ (e che probabilmente per ottenere tutto questo utilizzano pdcurses o ncurses).

Tutto questo ha comunque portato il gioco alla versione 0.0.3.6 (Labyrinth 0.3.6).

giovedì 7 maggio 2009

Labyrinth 0.2.9 - Sotto il tempio


Lo sviluppo procede veloce e forse quest'ultima versione meriterebbe almeno un 0.3, ma mancano ancora alcune piccole accortezze per il passaggio.
Innanzitutto ho eliminato tutti i BUG della versione precedente, anche se è stato meno semplice del previsto.

Le importanti novità di questa versione sono:
  • Implementazione delle porte segrete (se non scoperte sembrano una normale parete)
  • Modalità "searching" che aiuta ad individuare trappole e porte segrete
  • Implementazione delle porte chiuse a chiave
  • Possibilità di utilizzare l'abilità "lockpick" per scassinare le porte
  • Implementazione delle quest di base, con la quest principale già assegnata
  • Creazione del primo livello di dungeon che viene popolato automaticamente quando vi si arriva
  • Creazione di 3 tipi di creature di bassa difficoltà (centipede, spider, zombie)
  • Possibilità di accedere ad una lista dei comandi in linea premendo ?
Mi pare che sia tutto, ma penso che molto presto dovrò iniziare a scrivere un Change Log serio, visto che il gioco sta prendendo una forma piuttosto delineata.

Ci sono comunque ancora molte cose da aggiungere. Ad esempio Mr @, se viene ferito, attualmente non rigenera MAI le ferite e questo può essere un grosso limite, anche se è compensato dal fatto che la regola sulla morte, com'è presente in Arcan Myth, non è ancora stata inserita. La modalità "searching" in caso di combattimento dovrebbe disattivarsi. Dovrò implementare un comando (o modalità) di riposo che consenta un recupero maggiore delle forze. Dorvò far attivare dei flag quando le ferite iniziano ad essere più preoccupanti.

Infine devo assolutamente iniziare a pensare come sviluppare l'interfaccia, seppur minimale, del gioco: adesso è semplicemente una serie di caratteri su console e questa cosa, per la verisione 0.1, va assolutamente cambiata.

martedì 5 maggio 2009

Oggetti Magici

In linea con l'ambientazione che ho voglia di applicare al mio rogue-like, ho deciso che non ci saranno oggetti magici.

Mi spiego meglio.

Non credo che inserirò degli oggetti magici generici, ma i pochi oggetti magici che ci saranno, saranno tutti oggetti unici, possibilmente ognuno con una storia, un nome e un perché. Dovrò quindi valutare anche quanti oggetti magici creare, specie all'ingrandirsi del gioco (parlando di una versione oltre la 0.1) fino alla sua estensione finale.

Penso invece che farò in modo che gli oggetti possano avere un livello di fattura, una cosa molto seplice in realtà, che li possa rendere quindi peggiori o migliori della media. In questo modo potrei quindi dare un valore al materiale con sui sono fatte o alla zona di provenienza.

Questa decisione, oltre a rendere ogni oggetto magico preziosissimo, potrebbe tornare utile per determinate quest, dove magari occorre recuperare un oggetto magico e quindi alla fine, per risolverle, separarsene.

Sarebbe un'ardua decisione ;-)