giovedì 30 aprile 2009

Labyrinth 0.2.1 - trappole e tesori

Come di consueto ecco l'aggiornamento sullo sviluppo del mio roguelike. Labyrinth ha fatto molti passi avanti ed ha raggiunto la versione 0.2.1.

In questa versione Mr @ può scoprire porte segrete e trappole, può cadere in una delle trappole e farsi molto male, ma può anche evitarla con un tiro salvezza. I tiri salvezza sono diventati delle abilità aumentabili, proprio come in Arcan Myth, con fattore di costo 2: in sostanza per aumentarli di un punto occorrerà spendere il doppio dei punti incremento di una normale abilità.

Ho abilitato gli stock, in modo che nell'inventario gli oggetti identici possano essere stoccati nello stesso slot: li ho creati principalmente per le munizioni (dardi e frecce) ma ho visto che funzionano bene anche con oggetti di altro tipo.

Le creature adesso possono essere equipaggiate, usano l'equipaggiamento e, una volta uccise, lasciano a terra TUTTO ciò che hanno. Questo perché non mi piace questa moda che imperversa in molti RL e MMORPG dove vieni attaccato a colpi di ascia da un orco gigante e una volta ucciso lascia a terra 2 monete d'argento: e l'ascia? Svanita...

Il tempio di Zutra

Ho costruito a mano il livello del tempio di Zutra e l'ho provato sostituendolo al livello zero presente ora per i test. La prova è stata interessante perché ad esempio ha messo in luce uno dei due bug della porta qui sotto e soprattutto ha evidenziato il buon funzionamento (anche se non perfetto) del sistema di visione del personaggio: il tempio infatti è un livello completamente illuminato, ma vengono messe in ombra tutte la parti coperte da muri e pilastri: ne nasce un effetto alquanto suggestivo :-)


Bug noti

Ebbene si, iniziano ad esserci alcuni bug che verranno corretti nelle prossime versioni:
  • @ riesce a chiudere una porta pur trovandovisi sopra
  • Se una creatura attraversa una porta risulta sempre visibile
  • Se si equipaggia un oggetto da uno stock viene equipaggiato tutto lo stock come fosse un oggetto unico.
Per il momento mi sembra tutto

giovedì 23 aprile 2009

Labyrinth 0.1.4 - In guardia!!

Come dice il titolo in questione, con la 0.1.4 viene implementato un semplice sistema di combattimento che consente a Mr @ di attaccare, difendersi, ferire ed essere ferito.

Naturalmente mr @ è in netto vantaggio sulle creature perché può impugnare un'arma e indossare un'armatura, quindi nel combattimento riesce ad avere la meglio, ma non è così matematico.

Ho implementato, per questo motivo, le abilità: è una lista piuttosto semplice, con abilità basilari che più avanti andrà sicuramente ampliata, specie per l'utilizzo delle armi. Intanto viene utilizzata l'abilità di combattimento per tutto quello che avviene in mischia, le altre bilità sono comunque in lista.

Mancano ancora parecchie cose prima di poter passare allo sviluppo effettivo del gioco: questa settimana penso che mi concentrerò sul targeting, sull'aumento delle abilità (avanzamento) e sul combattimento a distanza. Sarebbe anche bello riuscire a implementare porte segrete e trappole sempre per giovedì prossimo.

Poi sarà la volta delle quest, altra parte particolarmente complessa a mio avviso, che forse richiederà più settimane per essere sviluppata: l'obbiettivo è implementare un metodo che consenta la costruzione personalizzata di semplici quest, in modo da poter scrivere quella principale che riguarda lo sferoide di Narus.

Non credo per la prima versione giocabile sarà possibile vedere e interagire coi PNG, anche se qualche idea al riguardo ce l'ho.

venerdì 17 aprile 2009

Esperienza

Tutti i roguelike a cui ho giocato hanno un sistema di acquisizione di punti esperienza simile al gdr Dungeons&Dragons: in sostanza i punti si acquisiscono uccidendo le creature, anche senza una motivazione valida. Questa cosa viene estremizzata nei MMORPG (sempre tra quelli che ho visto) dove appunto i personaggi se ne vanno in giro ad ammazzare qualsiasi creatura si pari loro di fronte e questo, nella maggior parte dei casi, avviene senza motivo.

Naturalmente quando faccio il master di Arcan Myth questa regola non esiste: negli ultimi anni utilizzo una regola semplicissima, valuto il mio divertimento da 1 a 10 per la sessione appena fatta, moltiplico per 10 ed ecco i punti incremento che assegnerò ad ogni giocatore per quella seduta.

Questo secondo metodo però in un Roguelike non può funzionare, in quanto non c'è un master, ma non voglio nemmeno utilizzare il primo che trovo semplicemente ridicolo. Allora, per il momento, ho deciso che Mr @ collezionerà punti incremento in base alla pura esplorazione dei vari livelli di dungeon. Questa regola è destinata a cambiare, ma per il momento, anche per eseguire dei test sull'incremento delle abilità, rimarrà così.

Un amico mi ha chiesto perché non facessi aumentare le abilità in base all'uso che il PG ne faceva: molto semplice, trovo che sia molto più divertente distribuire i punti nelle proprie abilità, piuttosto che queste facciano tutto da sole.

Tuttavia introdurrò anche un altro piccolo particolare, riciclato sia da Arcan Myth che dall'idea dell'automatismo: non si potranno incrementare abilità non si sono utilizzate dall'ultimo incremento. Questa regola, solo intenzionale in verità, va però affinata, anche perché, sempre teoricamente, l'aumento delle abilità può avvenire in qualsiasi momento.

Quindi magari alla fine, potrebbe essere che l'aumento delle abilità si possa fare solo ogni X turni di gioco, oppure solo in determinati luogi o momenti (ad esempio dopo aver riposato).

Vedremo :-)

giovedì 16 aprile 2009

Labyrinth 0.0.9 - e la luce fu

La programmazione di un RL si sta rivelando un'impresa ardua. In effetti quando si gioca ad un roguelike, si ha l'impressione di utilizzare un qualche cosa di semplice e solo quando si affrontano i problemi per realizzarlo si apprezza veramente il gioco.

Riuscire a far aprire una porta o a far in modo che la luce che circonda mr @ non oltrepassi i muri è un grande risultato, anche se agli occhi dell'utente queste sono cose scontate.

Ecco qui la versione 0.0.9 di Labyrinth: come si può vedere ora i muri non sono più dei semplici cancelletti, ma dei blocchi pieni, le porte sono color legno, mr @ è verde (anche se solo per sfizio) e ci sono creature che girano.

Adesso il personaggio può raccogliere e lasciare a terra ogni tipo di oggetto, inoltre con l'ultima build può equipaggiare la lanterna, ma solo quella. Nelle prossime versioni si potranno equipaggiare la armi, le armature e altri tipi di oggetti.
Ogni oggetto equipaggiato avrà subito influenza sul personaggio.

E' stata implementata anche la prima parte del combattimento: infatti utilizzando l'abilità "fight" è possibile attaccare e uccidere le creature che girano per le stanze. Le creature sono invece ancora inermi.

Direi che è tutto per il momento, ma probabilmente nella prossima settimana ci saranno ancora passi avanti.

martedì 14 aprile 2009

Puntatori e DCurses

Mentre Labyrinth sta arrivando alla versione 0.0.8, sto continuando a leggere il libro Learn To Tango With D. Purtroppo devo confermare le mie prime impressioni: il libro è tutt'altro che esaustivo in molti suoi punti; per esempio i puntatori sono trattati poco e molto molto male, rimandando lo studio a wikipedia (??) e analizzando soltanto le differenze tra i puntatori del D e quelli del C/C++. Tentando già di tirare qualche somma, direi che il libro è più rivolto ai programmatori del C++ che non all'utente in generale; visto che Tango viene referenziata come Developer library ci potrebbe anche stare, ma questa scelta editoriale direi che lascia molto a desiderare.

Ho fatto delle indagini su DCurses chiedendo un help nel canale #d.tango, poichè la versione fornita per Tango è piuttosto datata e non funziona con le ultime versioni. Dopo qualche blando tentativo mi è stato detto (e non da un utente qualsiasi ma da uno che conta diciamo) che Tango e il canale IRC non è pensato per "newbie" e che devo imparare prima a compilare le applicazioni e poi forse riuscirò a far funzionare dcurses.

Stessa storia di quando anni fa chiesi aiuto con Linux. L'ambiente dei programmatori e dei sistemisti (ambiente di cui faccio parte per'altro) è pieno di gente con la puzza sotto il naso.

Vabbeh, chi fa da sé...

giovedì 9 aprile 2009

Labyrint 0.0.4

Ebbene si! Questa settimana il lavoro è stato così intenso da portare labyrinth alla 0.0.3 e alla 0.0.4!

In sostanza è stato implementato l'inventario, che può contenere circa 20-25 oggetti. Mr @ adesso può raccogliere e lasciare a terra qualsiasi oggetto gli capiti sotto i piedi. Il "Drop" deve essere affinato nel senso che, attualmente, se due oggetti vengono lasciati sulla stessa casella, apparirà a video il primo degli oggetti lasciati e non l'ultimo.

Pensavo di passare immediatamente ad implementare l'equipaggiamento, invece dovrò lavorare ancora sull'inventario in modo che mostri tutto lo spazio disponibile e non solo gli oggetti posseduti.

Nel frattempo ho già creato l'oggetto "Globe of Narus", come si evince dalla piccola immagine: man mano che costruirò i vari livelli lo sposterò sempre più sotto.

Un'altra pecca da risolvere per la 0.0.4 è che i due piani di dungeon sono così simili che se un oggetto viene posizionato per il primo, sarà presente anche nel secondo e si rigenererà al ritorno nel primo. Fino ad ora questo mi è tornato comodo per testare l'inventario, ma in settimana conto di risolvere anche questa.

domenica 5 aprile 2009

Classi e livelli

Ho giocato a parecchi roguelike, anche se a una minima parte di quelli che ci sono in giro, e devo dire che quasi tutti seguono più o meno liberamente lo schema delle classi e dei livelli.

Questo accade in maniera più massiccia nei MMORPG, sia in quelli che ho visto, sia in quelli di cui ho sentito parlare, dove sono sempre forti le correnti hack'n'slash e powerplaying (probabilmente perché più commerciali).

Questa soluzione è molto comoda perché consente, in qualche maniera, di alzare il grado di difficoltà del gioco in base al livello, di impostare gli oggetti come di classe e via discorrendo.

Io però ho deciso di non percorrere questa strada e di creare un RL basato sull'incremento delle signole abilità, a libera scelta del giocatore, esattamente come avviene nel mio gdr cartaceo e contando che questo possa divertire di più.

Il problema è che, per come ho intenzione di impostare il gioco, l'hack'n'slash sarà fortemente sconsigliato: arrivare allo sferoide di Narus sarà quindi un compendio di più fattori, dal saper affrontare certe creature al saper evitare i combattimenti troppo esosi, trovando quindi degli escamotage di un certo tipo.

sabato 4 aprile 2009

Lo sferoide di Narus

Come promesso eccomi qui per parlarvi di Narus, meglio conosciuto come lo Sferoide di Narus (Globe of Narus).

Nell'ambientazione di Arcan Myth, il mondo di Endymia, lo Sferoide di Narus è un artefatto perduto dagli inenarrabili poteri.

Le leggende legate a questo mitico oggetto erano innumerevoli, ma nel corso degli ultimi secoli sono state dimenticate e oggi soltanto in pochi sono in possesso di queste informazioni.

Secondo le leggende di origine più antica questo artefatto era in possesso dei primi Re di Endymia, probabilmente quindi elfici, che sarebbero stati resi invincibili dallo stesso. Tuttavia venne ben presto a galla la natura negativa dello sferoide e, per evitare che cadesse nelle mani sbagliate, venne posto in un luogo sicuro.

Altre leggende vogliono che Narus sia andato perduto durante la Guerra dell'Oblio (che sancì la scissione delle razze elfiche) e che da allora non se ne sia saputo più nulla.

Le leggende più recenti avrebbero origine all'inizio della terza era, nei secoli di glaciazione subito dopo la catastrofe, e queste darebbero lo sferoide in mano agli ultimi imperatori Auroriani. In questi Narus sarebbe stato uno dei fautori della catastrofe e della caduta dell'impero.

Maggiori informazioni sul mondo di Endymia le trovate qui.

giovedì 2 aprile 2009

Programmazione Blog

In queste prime fasi il progetto Labyrinth mi sta divertendo molto: sto facendo una cosa che mi piace (un Roguelike) e sto imparando un linguaggio nuovo (il D).

Per questo motivo, ad ogni progresso fatto, starei sempre qui a postare sul blog, quasi a sventolare la bandiera della vittoria. Poiché questo avviene sull'onda dell'entusiasmo, ho deciso di essere più cauto e di impormi un solo post alla settimana riguardante lo sviluppo tecnico (progressi e novità) del gioco: questo post sarà fatto sempre il giovedì sera e riassumerà il lavoro svolto e gli obbiettivi raggiunti durante la settimana.

Comunque in altri giorni della settimana potrebbero esserci dei post riguardanti altri aspetti del gioco: ambientazione, nuove features e idee in generale.

Considerando il post di ieri come quello per questa settimana, vi dò appuntamento a Giovedì prossimo.

mercoledì 1 aprile 2009

Labyrinth 0.0.2 - In giro per la cantina

Ho disegnato due livelli di prova, praticamente identici, collegati da una scala e con delle porte da aprire.

Ora la chiocciolina può andarsene in giro per questi due livelli ad esplorare quello che la circonda, può aprire e chiudere porte e sa scendere e salire le scale. Le manca la parola insomma :D

Ho anche piazzato, per prova, una creatura immobile (simbolo N) ed ho iniziato a scrivere un semplice algoritmo che consenta ad N di inseguire la chiocciolina. Non è un vero e proprio tentativo di implementare la AI, ma si tratta di una prova per capire meglio il problema.

Naturalmente siamo ancora lontani dal combattimento, dall'inventario e tutto il resto. Bisogna avere pazienza.

Nessuna novità su dcurses, mentre mi sono stampato il libro (in inglese) "Learn to Tango with D" che scaricai tempo addietro da un sito di freepress. Ho visto che il libro è a pagamento, quindi forse quando l'ho scaricato io era in fase promozionale. Gli autori sono, almeno credo, i creatori della libreria Tango: Kris Macleod Bell, Lars Ivar Igesund, Sean Kelly e Michael Parker.

Ad un primo sguardo comunque, il libro non mi è sembrato esaustivo in parecchie parti: ad esempio l'installazione del D, di Tango e dei compilatori, è descritta per il solo Windows, mentre dovrebbe comprendere almeno i sistemi linux, specie per la sezione compilatori. Per il momento quindi abbandono l'idea di usare dsss e mi limiterò a DMD che, per'altro, visto che devo compilare si e no 3 script funziona benissimo. Più avanti passerò a dsss.