Visualizzazione post con etichetta Cave. Mostra tutti i post
Visualizzazione post con etichetta Cave. Mostra tutti i post

lunedì 10 maggio 2010

Bug, compilatori e problemi tecnici

Come sapetelo sviluppo del roguelike è fermo per farmi tirare un po' il fiato e dare spazio anche ad altre mie attività (Kung Fu Verona per esempio), ma avevo comunque deciso di continuare a fare dei test sul motore di gioco per decidere quale sarebbe stata la parte da sviluppare per arrivare alla 0.3.

Ma è sorto un problema.

Infatti la 0.2 ha un bug critico che si manifesta dal settimo livello del dungeon in giù: in pratica quando si entra in uno di questi livelli c'è la possibilità che il gioco vada in crash (segmentation fault) a casua di un array con la misura sbagliata. Ho corretto il Bug sabato sera ma poi non ho avuto il tempo di sostituire il pacchetto per il download.

Il problema è che Sabato ho anche deciso di reinstallare il sistema operativo (Kubuntu) nella sua ultima versione (10.04), salvando i dati e riformattando. La cosa è andata a buon fine e, al di là di ovvi problemi di ambientamento, sono piuttosto contento.

Ma la sopresa arriva per quanto riguarda il D-Tango. Infatti prima di reinstallare mi sono assicurato che i pacchetti Tango fossero pronti per la nuova versione, ma non erano supportati da DSSS, il mio compilatore preferito. Chiedendo sul forum mi è stato risposto che esisteva un nuovo progetto chiamato LDC che avrebbe in qualche modo soppiantato DSSS non più supportato. Potevo così reinstallare contento.

Le cose però sono andate un po' diversamente: LDC non ne voleva sapere di compilare i miei sorgenti, ma più che altro perché la nuova versione di Tango aveva modificato parecchie librerie. Una volta allineate, e scaricato gcc, ho potuto utilizzare LDC per compilare. Anche in questo caso però il comnado per LDC prevede di elencare tutti i file che vengono importati, cosa che con DSSS non accadeva e che lo rendeva così utile.

Ma non sono poi così schizzinoso: insomma se LDC regala maggior performance sono anche disposto a creare un mio bash script che compili tutto.

Ma qui sono nati i veri problemi.

L'ultima compilazione con LDC crea un eseguibile LENTO, ma molto lento: figuratevi che non sono nemmeno riuscito a farlo partire perché dopo 10 minuti che aspettavo che l'inizializzazione finisse ho lasciato perdere e sono andato a letto.

Ho deciso così di tornare a DMD, tanto anche con quel comando dovevo far la lista di tutti i file, quindi tant'è. Testato or ora il gioco è tornato alla sua velocità abituale e quindi tutto, almeno per il momento, è risolto.

Voglio comunque tentare di reinstallare DSSS :-)

giovedì 6 maggio 2010

Arcan Myth RL 0.2

Ci siamo. A poco più di due mesi dalla 0.1 arriva questa nuova versione (disponibile nella pagina downloads) che introduce tutte le novità prefissate, raggiungendo quindi il suo obbiettivo. Il gioco, per chi ha provato solo la 0.1, è sostanzialmente stravolto.

Il cambio d'interfaccia, le possibilità tattiche, la varietà e la grandezza dei dungeon, la differenziazione delle abilit delle armi e tante piccole chicche rendono questa versione un rogue like sicuramente più piacevole (e più difficile) da giocare.

Tuttavia lo sviluppo per un po' si fermerà qui. Infatti ho deciso di prendermi una sorta di pausa da questo gioco per fare dei test che porteranno all'inizio dello sviluppo della 0.3. Nel frattempo sarò comunque disponibile per la gestione e la risoluzione dei bug.

Ma di questo ne parleremo più avanti.

giovedì 29 aprile 2010

Cave 0.5.9 - Specializzazioni e varietà

Questa settimana è stata molto produttiva e tutte le cose realizzate hanno avvicinato la versione di sviluppo a quella di pubblicazione.

Adesso il gioco propone 4 tipi diversi di dungeon, aggiungendo varietà al solito dungeon standard formato solo da stanze e corridoi. Questi nuovi modelli però non saranno disponibili nei primi livelli in quanto rendono il gioco più difficile perché consentono alle creature di avvicinarsi al giocatore con maggior facilità: forse dovrei limitare questo aspetto ma attendo alcuni feedback dai miei tester.

Ho aggiunto nuove abilità per le armi. In sostanza adesso non sarà più possibile usare qualsiasi arma con la stessa abilità: FIGHT è stata relegata al solo combattimento a mano nuda. Le abilità aggiunte sono per varie tipologie di arma e hanno costi differenti: Little weapons (Daga e Coltello), Axes (Accetta e Ascia), Swords (Spada Corta e Spada), Sabres (Sciabola e Scimitarra), Maces (Mazza e Morning Star), Pole Weapons (Lancia e Alabarda) e 2 Hands Weapons (Martello da Guerra, Ascia da Battaglia e Spadone a 2 mani). Per gli archi e le balestre rimane un'unica abilità (Throw). Naturalmente più l'abilità fa maneggiare armi potenti e maggiore è il suo costo in termini di punti incremento; tuttavia occorre valutare che le armi più forti si trovano nei livelli più bassi e le armi a 2 mani non consentono di utilizzare l'arma doppia.

Ho introdotto la Minimappa (comando m) che consente di vedere una mappa grezza in miniatura della zona esplorata: questo aspetto è da migliorare per renderlo visivamente più gradevole e dare magari più informazioni sul dungeon stesso.

La morte del personaggio avviene visivamente in maniera diversa: in sostanza scompare dal dungeon e, se saranno presenti fonti di luce, si vedranno le creature muoversi o allontanarsi dalla zona di battaglia. Premendo ESC si ritornerà alla schermata principale.

A parte l'eliminazione di alcuni bug minori, mi pare che sia tutto. Oramai le specifiche per la 0.2 sono state ampiamente superate, quindi questa settimana la spenderò a fare test e a correggere i bug che mi segnaleranno. Spero comunque di poter pubblicare prima di giovedì prossimo.

Vedremo :-)

giovedì 22 aprile 2010

Cave 0.4.8 - Non sottovalutiamo il nemico

Come avevo predetto nel post della scorsa settimana in questi giorni ho concentrato lo sviluppo sul miglioramento dell'intelligenza artificiale delle creature.

L'AI è quindi migliorata, ma non si tratta della versione definitiva, è semplicemente quella che basta per il momento. In sostanza adesso una creatura insegue mr @ per attaccarlo senza fare movimenti casuali e riesce ad aggirare anche piccoli ostacoli: tuttavia ostacoli più grandi bloccano le creature, ma questo sarà risolto quando deciderò di migliorare ulteriormente l'algoritmo. Le creature cercano anche, nel limite del possibile, di evitarsi tra di loro per concentrare gli attacchi sul nemico comune: non ho ancora inserito l'opzione di non attaccare creature a meno che questa non sia una prerogativa della creatura che attacca, anche perché vorrei legare questa scelta alla razza della creatura stessa: magari è più facile che un goblin attacchi un millepiedi piuttosto che un altro goblin o un orco suo parente.

Ho risolto anche alcuni bug minori, come la scritta di salvataggio corrotto all'uscita dal gioco e l'apparizione , apparentemente casuale, di nuove creature quando queste si uccidevano tra di loro.

Con questo miglioramento si concludono gli obbiettivi previsti per la 0.2, ma come ho già detto aspetterò ancora prima di pubblicare per cercare di offrire una maggiore varietà nei dungeon casuali. Spero comunque che la pubblicazione avvenga presto, magari entro 2 settimane.

giovedì 15 aprile 2010

Cave 0.4.4 - Tattiche di battaglia

Questa settimana è stata molto più produttiva della scorsa e in effetti si sono aggiunte parecchie features che stanno andando a completare la tabella che avevo redatto in questo post ai primi di marzo.

Da quest'ultima versione impugnando due armi si ha diritto ad un attacco in più: tuttavia occorrerà l'abilità di ambidestrismo per portarlo efficacemente; infatti l'ultimo attacco verrà portato con l'abilità dal valore più basso tra ambidestrismo e combattimento. Questa regola è identica a quella presente nel gioco di ruolo Arcan Myth di cui sono co-autore.

Inoltre è possibile impostare il tipo di attacco, se normale o moltiplicato: in questo secondo caso si ha diritto a due attacchi (con l'arma principale) ma il primo avrà un malus di -2 e il secondo di -4. Ne consegue che impostando l'attacco multiplo e impugnando una seconda arma si potranno fare ben 3 attacchi e con le abilità ben studiate questo può rendere mr @ un temibile guerriero.

Naturalmente è stato aggiunto un controllo che distingue le armi per cui servono 2 mani (grandi armi o armi da lancio) e le altre per le quali è sufficiente una mano sola.

Anche la generazione casuale del dungeon è migliorata: ho sostanzialmente eliminato le "porte volanti" rendendo quindi il sotterraneo più credibile e concludendo quindi anche questa parte.

Al momento l'unica feature che è rimasta fuori dalle competenze della famosa tabella è il miglioramento della AI delle creature che comunque conto di fare la settimana prossima. Tuttavia non penso che pubblichero la 0.2 perché volevo migliorare ancora la parte di creazione casuale del dungeon: infatti mi piacerebbe riuscire a costruire altre funzioni di generazione per tipi di dungeon differenti dal solito corridoio stanza, oppure per fare in modo che la creazione utilizzi delle stanze speciali al posto di quelle standard.

Comunque spero non ci voglia molto.

giovedì 8 aprile 2010

Cave 0.3.9 - Armiamoci fino ai denti

La settimana scorsa non ho proseguito lo sviluppo a causa di una brutta influenza che ha rallentato il lavoro anche per questa settimana. Le cose da fare sono ancora molte, ma la pubblicazione della 0.2 non è distantissima, almeno credo.

In questi giorni ho mdoficato la funzione che genera il dungeon per far in modo che i corridoi siano solo perpendicolari tra loro: ho valutato la cosa abbastanza bene prima di renderla definitiva, ma giocare in un dungeon più "squadrato" mi sembra decisamente più divertente che non in quello che si generava prima. Inoltre ho lasciato più spazio tra una stanza e l'altra per avere ancora meno confusione.

Altra cosa implementata è la possibilità di impugnare la seconda arma, ma questa non può ancora essere usata in combattimento: fortunatamente il recente refactoring mi consentirà di modificare il sistema di combattimento in colpo solo.

Sto lavorando ad altre feature più "nascoste" per ottenere maggior comodità in caso di creazione o caricamento del personaggio.

Spero che la settimana ventura sia più produttiva.

giovedì 25 marzo 2010

Cave 0.3.2 - "Circondatelo!"

Questa settimana lo sviluppo è ripreso a ritmi normali apportando al gioco altre piccole feature e novità.

Per prima cosa il death system è stato completato, quindi quando i punti vita scenderanno al di sotto della metà dei totali inizieranno i guai: avere un buon tiro salvezza in costituzione sarà cosa buona per chi vuole sperare di cavarsela in situazioni disperate. Il death system funziona anche per le creature, quindi sarà più facile farle fuori, ma non per i non morti: la mummia diventa quindi un avversario piuttosto temibile e bisognerà stare molto attenti dal terzo livello in poi.

Il sistema di combattimento ora lascia la scelta al giocatore se puntare sulla parata o sulla schivata per quanto riguarda la difesa: parare comporta più svantaggi che vantaggi, ma consente di difendersi anche se uno non ha l'abilità di schivare e questo non è poco considerando che i l'abilità evade ha costo doppio e consuma quindi un sacco di punti. Una strategia che punta sulla parata con l'arma e sull'alzare il tiro salvezza in costituzione potrebbe rivelarsi tutt'altro che stupida. Parare consente quindi di utilizzare l'abilità FIGHT al posto di EVADE, ma se l'avversario ha un arma di taglia superiore alla nostra si avranno dei malus piuttosto pesanti alla parata stessa. La cosa vale, come sempre, anche per le creature. Il tasto z consente di switchare tra modalità parata e modalità schivata (block/evade).

Da oggi tutti quanti potranno fare una sola difesa per round. Questo va a discapito del personaggio che, se si ritroverà circondato, rimarrà senza difese di fronte ad altri attacchi. Tuttavia ho messo una soglia minima (20) per poter colpire un avversario indifeso ma consapevole: al di sotto di questa soglia si manca il bersaglio. Questa modifica è già strutturata per implementare più difese per round e più attacchi per round, che sono un'altra feature prevista per la 0.2 e che spero di poter implementare la prossima settimana.

Infine, come ultima chicca, da questa versione è possibile scegliere il nome del proprio personaggio e avere quindi salvataggi diversi :-)

giovedì 18 marzo 2010

Cave 0.2.4

Mi sono preso una settimana di relax dal progetto sistemando solo alcune cosette e alcuni bugs.

Prima di tutto ho dato colore al dato dei punti vita: verde al massimo, giallo ferito, rosso in pericolo e infine evidenziato in rosso quando c'è il rischio concreto di morire. Questo sistema sostituirà i warning delle ferite facendomi guadagnare spazio sull'interfaccia e introduce infine il dead-system di Arcan Myth, dove c'è rischio di morte al di sotto della metà dei punti vita con ferite non stabilizzate. Questo renderà più semplice la morte sia di Mr @ che delle creature, ma introdurrà il sostanziale vantaggio dei non-morti, che non crepano finché non raggiungono lo zero.

Ho risolto invece il bug che assegnava alle creature di un stesso livello, lo stesso oggetto: in realtà questo si verificava al caricamento di un salvataggio, quindi di prima mano non accadeva e questo ha reso difficile l'individuazione del problema.

Un problema invece ancora da risolvere è la velocità di caricamento di un vecchio salvataggio: attualmente risulta molto lenta, non tanto per la dimensione del file, ma per l'estrazione delle creature dei vari livelli. Giocando normalmente se arrivo al livello 6 o 7 del dungeon senza aver ucciso gran parte delle creature, salvando e ricaricando avrò un attesa di 30 (!!!) secondi, cosa inpensabile per un gioco del genere.

La soluzione però non è semplice: o ricreo da zero le funzioni di estrazione oppure cerco una via per ottimizzarle. Vedremo.

giovedì 11 marzo 2010

Cave 0.2.2 - Riduzione dell'interfaccia

Con Cave 0.2.2 è stato centrato un altro degli obbiettivi prefissati, ossia quello di ridurre l'interfaccia per essere visualizzata nello spazio disponibile in una console di default.

La cosa potrebbe sembrare abbastanza semplice, ma una console linux ha, di norma, 80 colonne per 24 righe che rispetto all'interfaccia di prima è veramente poco. Tra l'altro delle 24 righe, solo 23 sono utilizzabili in quanto quando la numero 24 viene occupata, la console scala lo schermo verso l'alto di una riga, automaticamente tagliando quindi la riga superiore dell'interfaccia.
Naturalmente se non avessi prima implementato lo scroll della mappa questo obbiettivo non sarebbe stato realizzabile, ma sono piuttosto contento di aver risolto il tutto in una settimana.

Comunque l'ottimizzazione dell'interfaccia di gioco rimane un aspetto sempre sotto controllo e che porto avanti anche durante lo sviluppo di altre feature. Infatti questa disposizione non mi consente di realizzare alcune altre idee che avevo in mente, ma alle quali non voglio rinunciare e quindi continuerò a riflettere su come guadagnare nuovi spazi senza che la giocabilità ne risenta.

giovedì 4 marzo 2010

Cave 0.1.7 - Primo Dungeon Random

I primi esperimenti sui dungeon creati in modo random stanno andando bene.

Rimangono i problemi citati nel post della settimana scorsa (quelli sulle porte per intenderci), ma ho aggiunto alcune chicche.

Innanzitutto ora il dungeon è completo di trappole, porte segrete e porte chiuse a chiave (queste due ultime sono il 5/10% delle porte totali)  e il dungeon è ora più grande di circa 1/3 rispetto a quelli di prima.

Ho inoltre aggiunto lo scroll dello schermo, centrando fin da ora una delle feature che mi sono proposto. Questo obbiettivo è in realtà basilare per raggiungerne altri come la riduzione dell'interfaccia ad esempio.

Nel forum di Rogue Temple mi hanno fatto notare che non si capisce fin da subito che la finestra di console deve essere allargata e così ho messo un avviso sulla schermata d'entrata, speriamo che serva.

Ho notato un bug che devo ancora analizzare con attenzione: in alcuni livelli tutte le creature portano tutte lo stesso equipaggiamento. Può darsi che sia saltato fuori solo ora a causa delle modifiche ai sistemi di salvataggio (per gestire i dungeon di dimensioni differenti).

Per il momento è tutto.

mercoledì 3 marzo 2010

Arcan Myth RL 0.2 - Cave

Così come ho fatto per la versione 0.1, anche per questa ho deciso di creare una lista di obbiettivi da raggiungere prima della pubblicazione.

La 0.1 in realtà ha disatteso alcune specifiche che avevo preventivato, ma in compenso ne ha raggiunte altre allora insperate, quindi mi sento di poter dire che questa lista non è così rigida come vorrei, ma potrebbe variare man mano che si avanza nello sviluppo.

Le caratteristiche probabili della 0.2 saranno:
  • Creazione casuale dei dungeon alla prima visita del personaggio
  • Scroll della mappa
  • Nome del personaggio assegnabile
  • Riduzione delle dimensioni dell'interfaccia
  • Implementazione di attacco e difesa multipli
  • Implementazione del tipo di difesa da adottare (blocco / schivata)
  • Migliorare l'AI delle creature
Ci sarebbero forse altre cose da aggiungere ma penso che ci sia già abbastanza carne al fuoco; nella fattispecie la creazione casuale dei dungeon ed il miglioramento della AI credo mi porteranno via parecchio tempo.

giovedì 25 febbraio 2010

Cave 0.1.1

Una prima versione del generatore casuale di dungeon è pronta, però mancano alcuni piccoli ma fondamentali elementi per integrarla nel gioco.

Innanzitutto manca un controllo che stabilisca se il dungeon è chiuso oppure no, ma penso che risolverò questo dilemma semplicemente "incorniciandolo" e chiudendo quindi le scappatoie che manderebbero in crush il gioco. Manca poi una funzione che piazzi ad arte le scale per scendere e salire: sarebbe bene che non fossero troppo vicine ma nemmeno troppo distanti, anche se su questo aspetto credo di dover riflettere ancora un po'.

Il grande problema della generazione del dungeon è il piazzamento delle porte: nei primi script le porte venivano disposte lungo i muri di una stanza quando questi incontravano dei corridoi, ma ottenevo sempre stanze con una sfilza di porte che, se aperte, avrebbero dato su un muro. Mi sono quindi documentato su rogue basin e su ascii dreams ed ho trovato parecchi buoni spunti per migliorare la funzione. Il risultato attuale è soddisfacente anche se ampiamente migliorabile: qualche porta sperduta tra gli spigoli si trova ancora, ma questo è inevitabile con la creazione al volo delle porte; questo aspetto può migliorare soltanto aggiungendo dei controlli al creatore di corridoi, ma per il momento non ho intenzione di migliorare questo metodo.

Preferisco infatti concentrarmi su alcuni altri dettagli come appunto le scale oppure le trappole.