L'industria dei giochi utilizza test automatici per parti visive di giochi / rendering? Come?


10

Alcune parti di un gioco sono facili da testare in modo automatizzato (logica, matematica, gestione degli input); ma ce n'è anche molto puramente visivo e non facilmente testabile.

Sarei sorpreso se l'industria dei giochi lasciasse tutto questo ai test manuali; ci sono abbastanza soldi che immagino che sia stato fatto uno sforzo per poter testare la regressione almeno su alcuni aspetti visivi dei giochi.

È vero? In tal caso, quali sono i modi possibili per testare il rendering dei giochi? Catturare l'output e confrontare le immagini (può essere affidabile?)? Intercettare i dati dalla scheda grafica a un livello basso? Catturare informazioni sui vertici (ecc.) Sulla strada per la scheda grafica? Sembra che ci siano molte possibilità; ma non riesco a trovare alcuna informazione al riguardo :(

Nota: questa domanda è stata contrassegnata come una copia di questa , ma non sto chiedendo informazioni su tecnologia / framework / strumenti specifici su come farlo, ma più in generale le idee su questa pratica e su cosa faccia l'industria dei giochi (se lo fanno affatto).


Direi che probabilmente usano solo una libreria grafica ben collaudata (di terze parti o sviluppata internamente). Quando arrivano a progettare un livello di gioco, non controllano che ogni oggetto sia esattamente alle coordinate X, Y, Z o se la prospettiva è giusta, ma cose più semplici come garantire che gli oggetti siano lì e non siano bloccati da muri, ecc. E se la libreria grafica è sviluppata internamente, i test sono automatizzati e più basilari.
— SJuan76,

@ SJuan76 Immagino che se stai costruendo su un motore, la domanda si applica alle prove del motore
— Danny Tuppeny,

Questa domanda non è forse un po 'più ampia di quella che è stata contrassegnata come duplicata? L'OP non ha menzionato C ++ o OpenGL. L'industria dei giochi è più grande di così.
— toniedzwiedz,

Probabilmente è più facile dimostrare formalmente che il codice è corretto dato che le API grafiche sono prive di bug piuttosto che testare che l'hardware stia facendo il suo lavoro. Poiché i driver AMD e NVidia sono proprietari, immagino che qualunque protocollo sia coinvolto nella comunicazione con la scheda grafica sia 1) proprietario, 2) soggetto a modifiche e 3) varia da scheda a scheda. Inoltre, anche se i dati inviati alla scheda grafica sono corretti, come fai a sapere che la scheda grafica non ha un difetto hardware?
— Doval,

2
Ho provato a riaprirlo poiché l'obiettivo dupe era più specificamente sulle strategie di test automatizzati della grafica OpenGL. Questa non è la mia specialità, ma mi fido del feedback di altri che conoscono molto bene l'industria del gioco, quindi voglio dargli un'altra possibilità. Per riferimento alla domanda simile vedi qui: programmers.stackexchange.com/questions/150688/…
— maple_shaft

Risposte:


1

Qualsiasi azienda lo farà in modi diversi, anche i diversi giochi verranno testati in modo diverso.

  • Forse la mancanza di informazioni sulla grafica è perché il rendering è in effetti abbastanza "ripetitivo" (non posso pensare una parola migliore, scusate) e in una scena complessa tipica ci saranno abbastanza combinazioni primitive in modo che la maggior parte delle persone di solito riesca a vedere facilmente la maggior parte dei glitch ( ad eccezione degli shader meno utilizzati, ma è possibile utilizzare un livello / demo speciale per lo shader da stress). Ricorda che gli umani sono stati cacciatori per migliaia di anni :) quindi probabilmente siamo stati progettati per vedere problemi tecnici.
  • Anche la libertà di movimento presente nella maggior parte dei giochi e la randomizzazione di altri elementi in un gioco tipico che lo fa sentire più "realistico" sono di solito un incubo per l'applicazione di test automatizzati puri: in realtà un tester umano troverà più rapidamente e di più errori rispetto a qualsiasi test automatizzato. Puoi codificare una logica per tempi di registrazione, statistiche e posizioni / angoli / altre variabili ogni volta che un tester sta giocando ... quindi anche su test non automatizzati avrai un feedback simile a test automatici. Di solito è utile essere in grado di eseguire una riproduzione di qualsiasi sessione di beta tester registrata (e di solito è una buona funzionalità anche per il gioco finale).
  • Per quanto riguarda il rendering delle statistiche, ad esempio puoi ottenere: le statistiche del conteggio delle chiamate per ogni shader (man mano che effettuerai le chiamate, è sufficiente mantenere alcuni contatori), il caricamento conta (lo stesso, controllerai quando i buffer della GPU vengono aggiornati), i tempi (non solo i fps, ma anche i giri tra una chiamata) e così via. Se necessario (ma credo che non sia consigliato tranne quando si cerca un errore specifico) è possibile ottenere statistiche dalla scheda grafica stessa (ad esempio è possibile ottenere tassi di riempimento e altri utilizzando le query di occlusione).
  • Infine, un altro motivo per utilizzare i beta tester è che diverse schede grafiche avranno probabilmente comportamenti diversi ... potrebbe essere necessario disporre di una fattoria di macchine di prova o_O. Gli amati beta tester umani ammorbidiranno tutto quel casino.

Spero che sia d'aiuto!

Disclaimmer: Non sono un betatester, sono uno sviluppatore XDDD.


Sono pienamente d'accordo con gli esseri umani progettati per vedere schemi, difetti, ... Siamo davvero esseri visivi.
— Trilarion,
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.