Pau_wolf Inviata 14 Febbraio 2010 Segnala Inviata 14 Febbraio 2010 onte: http://aigamedev.com/open/article/bugs-caught-on-tape/ NOTA DI PAU : ho impiegato quasi 1 ora a tradurre questa pagina apposta per voi, apprezzatelo XD. A volte, non essendo io un esperto di programmazione, ho usato parole piu convenzionali, o commesso piccoli errori di traduzione. Ma il filmato parla da sè. I titoli ai filmati li ho dati io, quelli inglesi non sempre erano uguali (nè sul sito nè su youtube) OCCHIO NON VEDE... NEMICO NON DUOLE www.youtube.com/watch?v=2DZX-Fq5N0I Game: Half-Life 2, 2004. Sintomo 1 giocatore trasporta un barile davanti agli occhi in modo da nascondere il PNG nemico dalla scena. Questo a sua volta non attacca il giocatore finchè non butta il barile! Cause Spiegare il bug richiede un po di contesto. Come detto da Tom Leonard, il sistema sensorio di Half life è fatto per impedire frustrazioni ai giocatori, quindi soldati e nemici nel gioco non attaccano il giocatore finchè lui non li nota. In tale caso, puoi usarlo a tuo vantaggio trasportando 1 barile, ma puoi dimostrare il bug anche camminando all'indietro in una stanza piena di nemici! Cura Dato che questo è 1 caso speciale nel sistema sensorio introdotto artificialmente per ragioni di gioco, sistemarlo necessita uno sforzo di design. Ecco qualche idea: * Aggiungi una condizione extra a "ignora giocatore" nel sistema sensorio, ad esempio solo quando il giocatore è sotto attacco o ha ricevuto danni di recentee. * Rimuovi il comando "ignora giocatore" con un meccanismo a tempo che si attiva in pochi secondi. Questo dà realismo alla AI colta alla sprovvista e dà del tempo al giocatore Andando oltre, un generale "gestore di esperienza" puo determinare quale PNG dovrebbe vedere il giocatore come bersaglio in base all'attuale sfida al giocatore MEDICI ***** www.youtube.com/watch?v=Ji_r0reKJFI Game: Hitman: Blood Money, 2006. Sintomi Un PNG dottore caccia il giocatore, di recente scappato dall'ospedale, ma non nota il giocatore che si cambia vestiti di fronte a lui. Il dottore abbandona la caccia, viene minacciato dal giocatore (ora vestito da Hitman) e va ad avvisare la guardia PNG dell'ultima posizione nota del prigioniero scappato. Nel processo, il PNG dottore corre oltre il giocatore gridando "scappa se vuoi salvarti" Extra: le guardie non reagiscono alla fuga del giocatore finchè non avvisate dal personale dell'ospedale Cause Tutti i PNG del gioco hanno un sistema sensorio che permette loro di reagire approssimatamente quando il giocatore si veste in modo diverso. Questo permette cose come cambiare vestiti per nascondersi alle guardie e dottori. Però c'è una scappatoia nel sistema che non viene affrontata quando il giocatore è visibile durante il cambio abiti. Extra: lo stesso sistema sensorio significa che non tutte le guardie sanno subito della fuga finchè avvisate, ma questo fa in modo che le guardie non tengano conto delle ovvie azioni dei giocatori Cura Il problema è causato dall'aggiunta di un sistema sensorio molto utile. Però, i casi limite avvengono per via della complessità addizionale. Si può risolvere in questi modi: * Nascondere questi problemi e migliorare la AI; ogni guardia deve essere fatta con un comportamento default che si attiva quando il giocatore fa qualcosa di sospetto - indipendentemente dagli indumenti. Ad esempio, reagire al giocatore che corre li vicino * una flag extra è necessaria nel sistema sensorio per indicare se il giocatore ha cambiato vestiti mentre visibile. In tal caso la flag aiuta a mantenere il comportamento attivo * Questa flag si può impostare 1 volta globalmente per il giocatore o, nello spirito del gioco, per ogni PNG. Questo permetterebbe ai dottori di comunicare con le guardie il travestimento del giocatore. POLIZIOTTI BROCCHI www.youtube.com/watch?v=eEBWiI0PtBQ Game: Grand Theft Auto San Andreas, 2004. Sintomi I poliziotti PNG seguono in acqua il giocatore, ma non sanno nuotare e affogano subito. Cause Questo tipo di situazione è uno dei molti casi speciali che si verificano nei mondi aperti, specialmente se i PNG non hanno le stesse abilità del giocatore. In particolare, questo bug è causato dai poliziotti che non sanno dell'acqua, o non sanno che gli serve un'abilità speciale per entrare in acqua. Invece, la AI dei poliziotti reagisce muovendosi verso il giocatore. Cura Il problema è stato risolto con le seguenti release, forse così: * aggiungendo + informazioni nel grafico di navigazione riguardo il tipo di ambiente,in questo caso i volumi dell'acqua * rendere i poliziotti consapevoli dell'acqua evitandola a tutti i costi. La AI si ferma prima di entrare in acqua NEMICO CURIOSO! www.youtube.com/watch?v=vre1ABXbMoM Sintomi Il PNG indaga su un barile in fiamme lanciato dal giocatore e atterrato li vicino. Il barile esplode mentre il PNG lo guarda Cause Il comportamento indagatore del PNG si attiva quando un suono inaspettato viene emesso dal barile caduto, ma il fatto che il barile sta bruciando non viene considerato. Cura Ecco due possibili cure, in ordine di preferenza: 1. Attivare il comportamento ScappaDalPericolo per i barili in fiamme, e assicurarsi controllare periodicamente sesi attiva. 2. Aggiungi una precondizione caso-speciale per il comportamento indagatore, che controlla se l'oggetto che fa rumore non è pericoloso CALCIATORE RINCOGLIONITO www.youtube.com/watch?v=-gpIytQCKZg Game: FIFA 08, 2007. Sintomi La AI di un giocatore individuale della squadra rivale rimane totalmente immobile nel mezzo del campo, eseguendo solo un'animazione occasionale. Rimane fermo anche se un umano corre verso quella AI, gli mette la palla al piede o gliela tira contro Cause Questo bug generale è difficile da identificare senza vedere il codice. Anche col codice sottomano, spiegare perchè un PNG non fa ciò che dovrebbe fare generalmente è difficile. In tal caso, potrebbe essere uno tra questi casi: * il giocatore non ha una AI aggiornata per via del bug di logica del gioco * il giocatore individuale ha trovato uno stato "terminale" nel comportamento, che non offre vie di uscita. Un problema nella logica relativamente semplice da aggiustare quando identificato. Cura La AI funziona x il resto della squadra nonchè per altre partite, quindi sembra un caso molto speciale. Abbastanza speciale che la EA ha venduto il gioco includendolo. 1 volta isolata, rintracciare la fonte è facile usando un meccanismo per identificare il problema particolare (se il designer viene con te con la soluzione). Ma per capire questo problema generalmente devi raccogliere le statistiche generali di ogni giocatore, come la distanza percorsa, passaggi mandati e ricevuti ecc, e guardare se ci sono anomalie SOLDATI RINCOGLIONITI www.youtube.com/watch?v=ncj9ZsPHVfM Gioco: Armed Assault, 2007. Sintomi Al confine della mappa vicino l'acqua, 1 squadra ha l'ordine di muoversi verso l'altra riva, e decide di muoversi attraverso l'acqua. La IA individuale dei soldati nuota raggiungendo infine la riva, da dove si possono muovere verso il punto scelto. Nel video, il giocatore raggiunge quel punto in 1/3 del tempo Cause Il bug forse è causato da 2 cose: * la navigazione non prevede l'acqua. Possibilmente il mondo è creduto un terreno 2D con ostacoli sparsi * La navigazione usata dalle squadre non prevede aree concave come vicino ai bordi della mappa, credendo si tratti di terreno 2D Cure Il modo piu facile di sistemarlo è spianare la costa di ogni mappa, in modo che ci sia solo terra convessa. Altrimenti, la squadra potrebbe tenere piu conto dell'acqua, evitandola di default SONO INVISIBILE, FATE IL GIRO www.youtube.com/watch?v=9NiVybcXoas Game: Company of Heroes, 2006. Sintomi 1 cecchino invisibile controllato dal giocatore fa fermare il carroarmato, che trova una via attorno a lui quando si sposta. Il carro armato e i nemici non sanno che c'è il cecchino quindi non lo attaccano Cause La causa del problema è un contrasto tra logica del gioco e comportamento di alto livello ignorando il cecchino, ma il computer cerca ancora di trovare il modo di aggirare il cecchino nascosto. Cure Ci sono 2 modi di sistemare la cosa, uno chiede meno design e l'altro + tecnologia: * Rimuovi la capacità di invisibilità del cecchino! I carri armati attaccherebbero il cecchino anzichè passarci oltre * Quando il cecchino si nasconde, rimuovilo come ostacolo per le unità nemiche MOONWALKERS www.youtube.com/watch?v=FlZBKz-f6yk Game: Prince of Persia: Rival Swords (PSP), 2006. Sintomi Le guardie PNG vengono viste in 2 casi camminare sul posto e contro le porte chiuse, mentre l'animazione continua a camminare Extra: Il nemico è passivo finchè non viene attaccato. Cause Ci sono 2 bug che causano il comportamento: 1. Il navigatore non è abbastanza accurato, tenendo in conto della larghezza del personaggio vicino ai pilastri o non aggiornandosi dinamicamente quando la porta si chiude. 2. Il computer non è capace di notare la mancanza di progresso, e semplicemente continua nonostante i problemi di collisione. Cure Sistemare le 2 aree problematiche basterebbe, ma i problemi di navigazione spesso richiedono molto di piu del normale. In tale caso hai bisogno di un sistema di navigazione piu conservativo (come ritrarre gli spigoli un po per impedire i problemi fisici) o se il sistema usa dei punti di controllo, ridurne il raggio effettivo. Il secondo miglioramento potrebbe essere usare una forma semplice per rintracciare il cambio di movimento e considerare di pianificare una nuova strada se la velocità raggiunge zero in pochi secondi CHI È IL TUO NEMICO? www.youtube.com/watch?v=xOJp5hXzaQI Game: Oblivion, 2006. Sintomi 1 nemico PNG non risponde finchè attaccato. Il PNG reagisce al giocatore1 volta colpito con la spada, ma decide di colpire un altro PNG prima di affrontare il giocatore. Extra: Il PNG fa moonwalk in un muro nel caso precedente. Cause La mancanza di risposta e i problemi col percorso sono gli stessi del bugs bug #10. Il sistema d priorità (che sembra essere un problema) fa in modo che la IA tenga in conto solo l'attaccante + recente, e ignori il giocatore originale che ha attaccato Cure Il modo migliore è fare in modo che il PNG se la prenda principalmente col giocatore. Avere una simulazione in-game è carino, ma questo è un gioco dove i PNG devono tenere piu in considerazione le azioni del giocatore. Ad esempio: * Fai in modo che il PNG ignori altri attacchi se il giocatore è l'attuale bersaglio * Mantieni una coda di bersagli attivi multipli, e si assicuri di attaccare il giocatore prima di procedere. Quali di questi decidi di applicare dipende dalla progettazione, e da come deve essere concentrata sul giocatore la IA. Anche se i PNG non attaccano il giocatore, dovrebbero perlomeno riconoscerlo. CRYSIS SEMPRE + STUPIDO www.youtube.com/watch?v=9wykO-2OhOE Game: Crysis, 2007. Sintomi Il PNG nemico controlla la mitragliatrice, spara ripetutamente in direzione del giocatore nonostante non riesca a colpirlo. C'è 1 punto morto vicino al veicolo dove il PNG non puo puntare la mitragliatrice, ma la IA continua a sparare Cause Il problema è che il comportamento del nemico con la mitragliatrice rimane lo stesso in ogni caso quando il giocatore è d fronte, anche se il giocatore nn è colpito. Quando il PNG riceve danni tuttavia, scende dal mezzo come ci si aspetta. Cure Un altro caso speciale amplificato da youtube. Le riparazioni multiple sono semplici * Usa un controllo di linea di visuale semplice o un cono di fuoco per determinare se il giocatore può essere colpito. * Aggiungi un raggio minimo alla mitragliatrice in modo che il PNG scenda se il giocatore si avvicina troppo * Di al PNG di scendere se non ha fatto danno al giocatore per un certo periodo di tempo AFFOGARE SULLA TERRA www.youtube.com/watch?v=6dL570pc9qI Game: Halo, 2001. Sintomi Un nemico sta "nuotando" sul pavimento. Il nemico non risponde al fuoco del giocatore, ma solo alle esplosioni. Cause Potrebbe essere che è bloccato nella geometria e sta eseguendo un'animazione d caduta. La ragione dell essere bloccato potrebbe essere causata dalla collisione e/o esplosione che spinge il nemico nella geometria problematica. Cura Questo bug è difficile da sistemare con la simulazione della fisica, come molte altre cose legate alla collisione e fisica. Il fatto che il bug è riprodotto in versioni successive di Halo indica che è un problema grosso Si potrebbe fare in modo che il nemico sia parzialmente bloccato in questo stato, e il sistema di navigazione potrebbe trovare una posizione nei paraggi che non sia occupata, e mettere il nemico lentamente in quella posizione SCEMO E + SCEMO www.youtube.com/watch?v=KEO6Fg5goFI Game: Call of Duty 4, 2007. Sintomi PNG alleati e nemici continuano a spararsi da un metro di distanza, e continuano a mancarsi per via dell'albero. I proiettili di un PNG stanno colpendo l'albero, quelli dell'altro sembran sparire nel nulla Extra: entrambi i soldati artificiali non rispondono ai movimenti del giocatore. Cause 4 piccoli fattori (che non sarebbero un gran problema altrove) combinati assieme causano questo problema: 1. il comportamento "attacca nemico" continua ad eseguirsi al massimo della priorità fino alla morte del bersaglio, indipendentemente da cosa il giocatore stia facendo o quanto abbia successo il comportamento. 2. La linea di visuale usata per determinare se il PNG possa sparare a un altro non tiene traccia precisa dei proiettili (è il caso solito dei giochi moderni) 3. Non ci sono abbastanza variazioni di un comportamento per trovare una soluzione. 4.Nessun feedback fornito ai PNG quando i proiettili colpiscono un albero anzichè il bersaglio. Cura Qualsiasi soluzione tra le seguenti risolverebbe la cosa: * Diminuire il valore del comportamento "attacca il nemico" col tempo, mentre fallisce nell'obbiettivo, o lascia un limite di tempo prima che si scelga un altro comportamento * Introduci piu casualità nel comportamento di sparo mentre i PNG continuano a mirare lo stesso bersaglio. * Fai in modo che i PNG controllino la salute del nemico e il danno inflitto per stabilire se l'attuale comportamento raggiunge lo scopo prestabilito. * In momenti regolari prima o durante lo sparo, rintracciare il proiettile per controllare se il bersaglio possa essere colpito dall'esatta posizione dell'arma Il modo in cui risolverei il problema è avere una durata fissa delle azioni x attaccare il nemico, poi scegliere molte di queste in successione per garantire diversità di combattimento ed evitare i problemi singoli. MA NON HO FATTO NIENTE! www.youtube.com/watch?v=2IHvlU8QS5E Game: Oblivion, 2006. Sintomi Il giocatore tira una freccia nel soggiorno del PNG. Il PNG accusa il giocatore di furto Cause Le tipiche cause di un comportamento inappropriato in risposta a evento/stimolo sono: * 1 errore nella logica condizionale che attiva 1 comportamento. * Non c'è comportamento per questo evento, e viene usato uno di default Cura In questo caso, non c'è dubbio che la reazione "mi stai derubando!" è usata come default, quindi presumo che il problema sia con l'attivazione della logica per questo comportamento. Potrebbe essere un semplice scritto o un errore di copia incolla, ma avere una chiara eventualità per "il giocatore prende un oggetto che non gli appartiene" aiuterebbe ad attivare la risposta al furto Inoltre, potresti rimediare alla situazione con la reazione della IA "cosa stai facendo esattamente?"quando certe situazioni simili si verificano. DANZA OSCILLANTE www.youtube.com/watch?v=06qwYL68vu8 Game: Gears of War, 2006. Sintomi Il PNG nemico danza sul posto, oscillando avanti e indietro tra 2 posizioni. Il PNG inoltre non risponde alla presenza del giocatore Cause C sono molti casi dello stesso bug su youtube, e sembra che sia causato dal sistema di navigazione che cambia troppo spesso idea. Il computer corre da una posizione, e calcola un sentiero. Poi segue il sentiero, lo ricalcola e sceglie un'altra via La causa di questa oscillazione potrebbe essere il modo in cui i costi sono messi nell'ambiente. Una spiegazione alternativa è che il bot colpisce una scatola/raggio di attivazione quando si muove in una direzione, e quindi si comporta in un altro modo. Quando si esce dall'attivazione, riprende il comportamento originale Cure Presumendo ci sia un tracciato speciale in cui vie multiple portano al bersaglio, il modo facile di ridurre il problema è aggiungere un fattore "cool down" per cambiare destinazione meno spesso. Tipicamente non c'è bisogno di decidere un nuovo sentiero così spesso, semplicemente basta monitorare l'attuale percorso per problemi Se il problema è un'attivazione locale che genera 2 comportamenti in conflitto, un buffer d tempo simile si puo usare per ridurre l'oscillazione tra 2 scelte DON'T DRINK AND DRIVE www.youtube.com/watch?v=F7pjw8vs6Ug Game: Halo 3, 2007. Sintomi Un PNG sta guidando un mezzo e continua a schiantarsi su un campo d forza mentre cerca di passare oltre. Comunque, quando il giocatore esce dal suo veicolo, il bug si ferma Cause Il campo di forza non viene preso in considerazione dal veicolo. La IA non capisce che deve fare retromarcia in questo caso per uscire dai guai Cure Ecco 2 modi di risolvere la cosa: 1. Fai in modo che il computer tenga in considerazione i campi di forza dinamicamente quando fa ricerche di veicoli 2. Individua i fallimenti nel seguire il tracciato (usando 1 misuratore d progresso) e disattiva temporaneamente i collegamenti nella navigazione, per impedire i problemi di oggetti dinamici inaspettati. IL SESTO SCEMO www.youtube.com/watch?v=OOeL_cOWHa0 Game: Crysis, 2007. Sintomi Due PNG stanno avendo un dialogo programmato. Il giocatore ne uccide 1 col fucile da cecchino e l'altro PNG continua a chiacchierare come se nulla fosse successo Cause La radice del bug è l'interplay tra la situazione programmata che coinvolge + personaggi e la dinamica del comportamento del gioco che richiede di interagire col giocatore. In tale caso, dato che lo sparo del fucile da cecchino non è stato sentito dal PNG, l'attivazione è fallita e non ha interrotto il dialogo, dato che non ha tenuto in considerazione la morte dell'alleato Cura La soluzione deve assicurare che il sistema sensorio prenda in considerazione "l'entità morta" come suono, ad esempio. Altrimenti, il PNG vicino al punto del proiettile andrebbe informato della presenza del giocatore, o magari informato della posizione del giocatore (dopo il secondo sparo). Soprattutto, il comportamento del gruppo deve essere scritto per essere interrotto dal giocatore in qualsiasi momento - specialmente se sta avendo luogo in una partita aperta. LA SCATOLA DELLE MERAVIGLIE www.youtube.com/watch?v=sDzzAvzDTDo Game: Bioshock, 2007. Sintomi Quando si esamina una certa scatola, un nemico viene generato su richiesta nei paraggi. Anhche se il giocatore sta vedendo tutti i punti di accesso di quella zona. Cause Anche se il gioco sembra generare PNG fuori dalla visuale del giocatore, il problema è che lo script che genera i PNG non prende in considerazione la frequenza con cui esegue un'azione Non è tecnicamente un errore della IA, ma un problema di scripting. Ma, come spesso in questi casi, viene attribuito ai programmatori! Cure C'è una soluzione tecnica e una di scripting per alleviare il problema: * Aggiungere un contro allo script per impedire che spari + d una volta * Oltre a controllare la linea di visuale del giocatore nel punto di generazione, controlla se il giocatore sta vedendo direttamente tutti i punti di accesso della zona di generazione. Riassunto Generalmente, ci sono alcune cose da sapere riguardo i bug dell'intelligenza artificiale (IA) 1. Di per sè, molti bug non chiedono molto tempo per essere sistemati; molti in questa lista chiedono tra 1 ora e qualche giorno per essere isolati e sistemati. 2. Molti bug diventano rapidamente una decisione di design, sistemare i bug puo influenzare altri comportamenti del gioco stesso. A fine progetto la IA viene congelata per questo motivo Nel frattempo, se stai facendo un gioco tuo, ecco una lezione: * Passa del tempo a testare il gioco per capire le aspettative dei giocatori e soddisfale * Passa del tempo a migliorare la IA dei PNG in modo che i giocatori non trovino delle scappatoie come mostrato su Youtube!
Messaggio consigliato
Crea un account o accedi per commentare
Devi essere un utente registrato per poter lasciare un commento
Crea un account
Crea un nuovo account e registrati nella nostra comunità. È facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora