Nuovo nella creazione di AI - da dove iniziare? [chiuso]


58

Sono nuovo nella programmazione del gioco e sto provando a creare un gioco spaziale 2d top-down di base con 2 navi spaziali che si combattono. Sto bene con la nave spaziale controllata dall'utente, ma non ho idea di come iniziare a programmare un'intelligenza artificiale. Alcuni metodi / schemi sono migliori per questa situazione? Dove dovrei anche iniziare?


1
Ecco le mie diapositive sull'IA
Jari Komppa,

4
se dichiarazioni. molti di loro.
deceleratedcaviar

Risposte:



27

Se è la prima volta che sviluppi l'IA, non devi preoccuparti di cose come il modello di stato, la matematica comportamentale o persino ottenere un libro sull'argomento.

Puoi letteralmente cavartela con qualcosa del genere:

if( targetInRange == true )  
{
    FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
    MoveAwayFromBullet();
}
else
{
    WanderAroundAimlessly();
}

L'aspetto principale per ottenere l'IA corretta è pensare a quali comportamenti vuoi che il personaggio abbia e come questo possa essere realizzato realisticamente. Quindi, per un nemico di base dell'astronave, immagino che le possibili azioni che potrebbe compiere sarebbero:

  • Muoviti
  • Fuoco
  • Scappa

E quando potrebbero accadere queste azioni?

  • Muoviti - Nient'altro da fare
  • Fuoco: quando individuo un nemico
  • Scappa - Quando ho poca salute / Quando prendo fuoco / ecc

Dopo averlo fatto a causa del basso numero di "stati" in cui può trovarsi il tuo personaggio, puoi usare un'istruzione if semplice come quella sopra. Vorrei quindi raccomandare di guardare Comportamenti di guida in quanto questi sono comportamenti molto semplici da attuare e possono dare origine a movimenti davvero belli.

Maggiori informazioni sono disponibili qui: http://www.red3d.com/cwr/steer/
E consiglierei sicuramente il libro di Mat Buckland Programmazione AI per esempio , in particolare all'inizio.

Quando ti sentirai davvero a tuo agio con questi, suggerirei di esaminare i modelli di stato e strategia.

Il punto è iniziare in modo piccolo e semplice. Non preoccuparti di tutti questi termini che tutti continuano a lanciare attorno a FSM e modelli di progettazione e quant'altro. Progettare e costruire prima di tutto, quindi preoccuparsi di come migliorarlo utilizzando metodi o standard esistenti.

Spero che aiuti!


@Fuu Saluti per il compagno di modifica :)
Ray Dey,

9

Potresti voler consultare OpenSteer e la documentazione di Steering Behaviors che ne consegue. Il codice sorgente non è di livello principiante, ma i concetti alla base dovrebbero darti alcune buone idee.


Le persone usano opensteer nei giochi o è più per le simulazioni?
jle

Almeno sto cercando di usarlo in un gioco in fase di sviluppo. Finora funziona bene per me. Credo che l'autore ne abbia sviluppato gran parte mentre lavorava per il gruppo Playstation alla Sony - È probabile che sia riuscito a trasformarlo in alcuni giochi. MobyGames lo elenca sui titoli di coda di JohnMadden Football e di uno dei giochi Leisure Suit Larry.
AShelly,

FreeOrion sta usando OpenSteer nel suo motore di combattimento tattico.
Mike Strobel,

1
+1 Per citare opensteer. Se vuoi vedere alcuni grandi esempi di combinare comportamenti molto semplici insieme per formare qualcosa che sembra molto molto complesso e intricato. Controlla i comportamenti di guida! Google, "Boids" e guarda alcuni usi interessanti. Non è tranquillo quello che vuoi, ma ti mostrerà che dalla semplicità arriva la complessità
onedayitwillmake

9

Potresti voler esaminare il modello di progettazione della strategia . In sostanza, scrivi le stesse strategie di base su come si comporteranno le navi:

  • Avvicinati al bersaglio
  • Bersaglio d'attacco
  • Scappa dal bersaglio
  • Passa ai power-up
  • Usa potenziamenti

Quindi utilizzerai la logica (macchine a stati) per scegliere tra queste strategie. Ad esempio: se gli scudi delle navi sono scesi al di sotto del 50%, quindi scappare dal bersaglio e spostarsi verso potenziamenti / oggetti curativi e così via.


1
così ogni volta attraverso il ciclo di gioco, decide quale di queste "strategie" ha la priorità e quindi lo esegue?
jle

@jle Praticamente. Quindi ognuna delle tue strategie sarà suddivisa nelle proprie classi, mantenendo il tuo codice organizzato.
Bryan Denny il

7

Posso suggerirti di acquistare il libro Intelligenza artificiale per giochi di Ian Millington - è eccellente! :) http://www.ai4g.com/

Il codice sorgente è su Github - licenza MIT.

Naturalmente, se non si utilizza C / C ++, questo potrebbe essere meno rilevante.

Ma davvero una fantastica introduzione al mondo della stupidità / intelligenza artificiale.

Le cose di cui avrai bisogno sono le macchine di governo e statali. Per i principianti.


2

Alcuni consigli pratici se scegli macchine statali: fai attenzione al megastate.

È allettante avere uno stato di "fuga" che gestisce l'impostazione di una posizione in cui fuggire, l'impostazione di un'alta velocità di destinazione, l'eliminazione di tutti gli obiettivi, ecc. È molto meglio invece avere molte macchine di stato, ognuna delle quali gestisce uno o pochi controlli della nave - ad es. macchina a stati che gestisce la selezione di una posizione target, una che gestisce pistole, ecc.

Questo può sembrare stupido, poiché dovresti aggiungere stati di fuga a ogni singola macchina, ma poiché sei limitato a una o due uscite, i tuoi stati finiscono per essere molto piccoli, quindi questo non dovrebbe essere un problema.

Inoltre, poiché ogni controllo è ora sotto controllo individuale, puoi finire per selezionare una posizione bersaglio in fuga mentre lo stato di attacco controlla le tue pistole. Puoi rompere un nemico pur conservando la potenza del motore a causa di una perdita di refrigerante. È possibile sterzare per evitare una collisione mentre si scarica ancora contromisure. Tutto ciò sarebbe impossibile con un'unica macchina a stati onnicomprensiva.


2

Behavioural Mathematics for Game AI

Aggiungendo questo libro all'elenco dei punti di partenza per l'apprendimento della programmazione AI. Con la sua attenzione sull'osservazione e l'implementazione del comportamento piuttosto che algoritmi di applicazione limitata, credo che sia adatto al compito.


1

Come creare l'intelligenza artificiale è una domanda complicata, poiché consiste di molte parti:

  • Scegli un'architettura / paradigma generale per la tua IA. Si basa su script? Userà la pianificazione? È un semplice FSM o preferisci i BT?
  • Quindi, si applicano questi paradigmi con un'implementazione / set di strumenti specifici.
  • Ora, ti rimangono scelte di progettazione del gioco, poiché devi pensare ai comportamenti che la tua architettura utilizzerà.

Altri poster hanno suggerito grandi libri e sono appassionato di AI4Games suggerito da Jacmoe, anche se è abbastanza generale in alcune parti (come molti libri, che è ovviamente comprensibile).

Naturalmente, ogni tipo di gioco ha le sue esigenze specifiche e i giochi arcade / sparatutto non hanno bisogno di architetture complesse per supportare un gameplay interessante. Le libs di sterzo semplici faranno il lavoro come base di quel comportamento, e quindi aggiungi dettagli per vari tipi di nemici (alcuni, sparano periodicamente, alcuni sparano predicendo il movimento del giocatore, alcuni girano per affrontare il nemico, altri possono coordinarsi i loro attacchi ecc.).

  • Penso che il modo migliore per conoscere la codifica dei giochi (AI) sia guardare bene il codice in esecuzione. Quindi, esplora ohloh.net e github e cerca i progetti FOSS esistenti!
  • Certo, puoi scegliere la parte difficile e giocare a un gioco esistente (ma semplice). Prova a decodificare il comportamento e pensa "Come lo progetterei?". Certo, i suggerimenti aiutano sempre, ed è probabilmente per questo che hai chiesto qui a gamedev.SE!
  • Qualcosa nel mezzo è troppo guardare i giochi sparatutto esistenti nei forum di GameMaker! Puoi trovare molti script semplici che faranno il trucco! ;)

1

Pensa a cosa fai quando giochi. Ponetevi alcune domande.

  • Di quali informazioni ho bisogno per essere in grado di prendere una decisione?
  • Quando reagisco ai cambiamenti?
  • Quali sono i miei obiettivi "a lungo termine" in questa particolare sessione di gioco?

Quindi, quello che faccio è avere l'IA guardare il campo di gioco e fare un elenco di possibili azioni o movimenti che l'IA potrebbe fare sulla base di tali domande. Classifica e metto in ordine queste mosse con un "fattore di intelligenza". Quindi, è semplice come scegliere ed eseguire un movimento / azione basato su una combinazione di casualità e qualsiasi livello di difficoltà il giocatore abbia scelto all'inizio del gioco.

Quindi, dopo 500 millisecondi, lo faccio di nuovo.

Non ha abilità di apprendimento o altro, ma con abbastanza modifiche può essere abbastanza convincente, il che conta davvero

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.