Come segnalare i bug rilevati a livelli generati proceduralmente?


8

Esistono molti argomenti su come funziona la generazione procedurale, ma non sono riuscito a trovare informazioni su come testare e, cosa più importante, su come segnalare bug che possono verificarsi a livelli generati proceduralmente. Qual è il modo migliore per descrivere un bug, ad esempio relativo alla progettazione dei livelli, su una mappa che apparirà diversa ogni volta che giochi a un nuovo gioco? Quali informazioni dovrebbero essere incluse nella segnalazione di bug in modo da riprodurle sarebbe più facile per il designer di livelli, l'artista di livello, ecc. E quindi anche durante il processo di regressione?

EDIT: Vale la pena ricordare che il gioco, che mi sto preparando a testare, è in una fase molto precoce di sviluppo e cambia costantemente con i sistemi responsabili della generazione dei livelli. Lo scopo di questa ricerca è quello di imparare a descrivere i bug (quali informazioni includere nel report) in modo che la regressione in un ambiente in evoluzione sia il meno dispendiosa in termini di tempo ed efficace possibile.


2
Chi è il tuo target di riferimento? Voglio dire, chi compilerà queste segnalazioni di bug?
Vaillancourt

1
Una delle possibili soluzioni è quella di aggiungere la funzionalità di "salvataggio", o almeno un meccanismo di hashing. In questo modo il tester può includere l'intero livello nel suo rapporto o almeno includere l'hash testuale che può essere successivamente invertito a un mucchio di livelli simili. La prima opzione è semplice ma consuma traffico / spazio. La seconda opzione richiede un serio brainstorming da implementare. Ps Potrei sbagliarmi, ma per quanto ricordo Diablo 2 ha usato l'hashing. Quindi il livello (e altri livelli che sembrano più o meno simili) è stato descritto dall'hash.
Sergey.quixoticaxis.Ivanov,

Che tipo di gioco? Le tecniche di IE utilizzate in un gioco a turni potrebbero non essere adatte a un gioco in tempo reale e viceversa.
Pikalek,

@ Alexandre Vaillancourt: i tester segnaleranno i bug utilizzando uno strumento automatizzato che raccoglierà alcune semplici informazioni come la quantità di oggetti fisici, il numero di AI, ecc. Mi chiedo cos'altro potrebbe essere incluso non solo in quei rapporti automatizzati ma anche nel convenzionale rapporti scritti dai tester. @Pikalek: è un gioco d'azione FPP con un mondo aperto e un gameplay in tempo reale.
BoYLER,

Risposte:


18

Può anche essere molto utile quando l'algoritmo di generazione della mappa è deterministico e ripetibile sulla base di un valore iniziale iniziale. Quindi, quando inserisci lo stesso valore seme, ottieni la stessa mappa. Questo potrebbe essere più facile da implementare di quanto si pensi. La maggior parte delle API di generazione di numeri casuali può essere inizializzata con un valore seed e quindi generare sempre la stessa sequenza di numeri casuali per lo stesso seed. Se stai utilizzando una delle poche piattaforme in cui questo non è il caso (come JavaScript basato su browser), potresti implementare il tuo generatore di numeri casuali. Ci sono molti algoritmi attorno ai quali non sono molto difficili da implementare e di solito richiedono sempre un valore seed.

I tester possono quindi menzionare il seme della mappa nelle loro segnalazioni di bug. Un bug segnalato come "Gli alberi crescono nel mezzo di un lago" può avere un'istruzione di riproduzione "Genera una mappa con seme a4f6dd32 e vai alla posizione 4321500: 1269100". Dopo aver verificato ciò, è possibile impostare un breakpoint condizionale del debugger nell'algoritmo di generazione della mappa che si innesca sul blocco della mappa interessato e verificare esattamente cosa sta succedendo.

Un algoritmo di generazione di mappe deterministiche consente inoltre di implementare test automatizzati. È possibile disporre di vari seed di test con output noti e quindi i test automatici controllano se l'output è ancora lo stesso dopo aver apportato alcuni miglioramenti delle prestazioni dell'algoritmo di generazione.


Grazie a tutti per le idee. Non posso ancora provarli e usarli, poiché il gioco non è in uno stato giocabile / testabile, in realtà avrà bisogno di molto più tempo per essere pronto per il test. Per ora sto solo facendo ricerche su questo argomento.
BoYLER,

Questa è un'ottima risposta Attualmente sto creando un gioco che utilizza Dungeon Architect per generare casualmente livelli basati su un seme. Ho fatto un ulteriore passo avanti e ho creato una classe singleton casuale che distribuisce i valori casuali su TUTTI i sottosistemi, sia quelli di DA che i miei. Il vantaggio è che se conosco il valore del seme e il valore del livello stesso (diciamo sotterraneo 1-1 o foresta 3-6), posso ricreare lo stesso identico livello, con gli stessi mob, negli stessi posti con lo stesso tavoli di bottino e tutto il resto. Poiché questo valore è registrato, sarebbe facile per me analizzare una segnalazione di bug e ricreare lo scenario.
Jesse Williams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.