Come funziona l'intelligenza artificiale dei nemici in Doom Pt. 1
Ammettiamolo, l'IA mostruosa di Doom è primitiva. Cercano di avvicinarsi a te ed eseguire un attacco. Se gli spari, si feriscono e muoiono. Dietro il loro comportamento semplicistico c'è un sistema abbastanza elegante. Diamo un'occhiata a come funziona e vediamo anche alcune stranezze mentre ci siamo. Prima di tutto vediamo come vengono definiti i mostri del destino. Sono praticamente hardcoded nel motore sotto forma di una raccolta di dati. Ogni raccolta di dati contiene indici di diversi stati nemici: Lo stato di spawn in cui un nemico è inattivo. Lo stato di vista in cui un nemico sta inseguendo un bersaglio. Lo stato di dolore in cui il nemico riprodurrà l'animazione e il suono del dolore. Lo stato in mischia che dice cosa fare quando si esegue un attacco in mischia. Lo stato del missile che dice cosa fare quando si esegue un attacco a distanza.
Lo stato di morte che riprodurrà l'animazione e il suono della morte del nemico. Lo stato xdeath che riprodurrà l'animazione gibbing del nemico. E lo stato di aumento che riprodurrà l'animazione di un nemico che viene resuscitato. Prendiamo il Revenant come esempio. Il suo stato di spawn utilizza l'indice S_SKEL_STND. In questa vasta gamma di stati hard-coded, vai all'indice che abbiamo appena selezionato. Qui puoi vedere una raccolta di valori e funzioni. Esaminiamoli rapidamente tutti: SPR_SKEL è l'indice di base per lo sprite di Revenant. Lo zero successivo indica l'offset del frame. Questo stato deve durare per 10 tic. 1 tic dura 1/35 di secondo, quindi 10 tic equivalgono a circa 0,29 secondi. Questo deve chiamare la funzione A_Look. Ne parleremo più tardi. L'azione successiva deve essere S_SKEL_STND2, quindi la riga sottostante. Gli ultimi 2 valori non sono utilizzati, quindi sono sempre zero.
Quello che abbiamo appena descritto è stata la prima azione dello stato di spawn del Revenant. Consiste di 2 azioni in cui scorre tra 2 sprite facendolo camminare sul posto. Quando inizi un nuovo livello, i nemici vengono caricati e posizionati nelle loro posizioni designate. I nemici appena generati ottengono la loro salute, tipo, stato, ecc. Dalla raccolta di dati hardcoded che abbiamo visto in precedenza. Le posizioni e gli angoli si basano su come li ha posizionati il creatore della mappa. Una cosa interessante qui è il suo tempo di reazione. Il tempo di reazione inizia sempre alle 8, a meno che non si tratti di difficoltà da incubo. I nemici non attaccano mai quando il loro tempo di reazione è maggiore di zero, quindi ciò significa che i nemici in difficoltà incubo non esiteranno ad attaccarti quando si svegliano.
E anche questa parte è finita. Spero che vi sia piaciuto. Consigliatemi altri giochi da fare per questa serie, e lasciate 5 stelle e un commento. Ciao.