Fare un gioco AI 4 passabile


8

Sto programmando un gioco 4X piuttosto "semplice" (se un gioco 4X può essere semplice). È indipendente dal campo di applicazione e mi chiedo se c'è comunque modo di inventare un'intelligenza artificiale passabile senza che mi spenda mesi a codificarla.

Il gioco ha tre principali parti decisionali; spesa di punti di produzione, spesa di punti movimento e spesa di punti tecnologici (sostanzialmente ci sono 3 "valute" diverse, la valuta non spesa alla fine del turno non viene salvata)

  • Spendi punti di produzione
    • Aggiorna un pianeta (aumenta la sua tecnologia e produzione)
    • Costruisci navi (3 tipi)
  • Sposta le navi dai pianeti ai pianeti (costando Punti Movimento)
    • Sposta per attaccare
    • Sposta per fortificare
  • Tecnologia di ricerca (può parzialmente ricercare una tecnologia, ad esempio, come in Master of Orion)

Il piano per me in questo momento è un approccio di forza bruta. Ci sono fondamentalmente 4 ampie opzioni per il giocatore -

  1. Aggiorna il pianeta (i) alla sua produzione e produzione tecnologica

  2. Conquista il maggior numero di pianeti possibile

  3. Proteggi quanti più pianeti possibile

  4. Raggiungi una certa tecnologia il prima possibile

Per ogni decisione, passerò in rassegna le possibili opzioni e fornirò un punteggio; e poi l'IA sceglierà la decisione con il punteggio più alto. In questo momento non ho idea di come "mescolare le decisioni". Cioè, per esempio, l'IA desidera aggiornare e conquistare pianeti allo stesso tempo. Suppongo di poter avere un'altra logica che faccia un'ottimizzazione della forza bruta su una combinazione di quelle 4 decisioni ...

Almeno, questo è il mio piano se non riesco a pensare a qualcosa di meglio. Esiste un modo più veloce per creare un'IA passabile? Non ne ho bisogno di uno molto buono, per competere con Deep Blue o simili, solo qualcosa che ha l'illusione dell'intelligenza.

Questa è la prima volta che faccio un'intelligenza artificiale su questa scala, quindi non oso provare anche qualcosa di troppo grande. Finora ho esperienze con FSM, DFS, BFS e A *


2
Il modo corretto di affrontare questo problema è fare ricerche su di esso da soli. Implementa ciò che descrivi e vedi come funziona. Quindi miglioralo. Una volta che pensi di avere un buon algoritmo, implementa nuovamente l'IA per utilizzare la nuova struttura. Suggerirei di costruirlo in un linguaggio di scripting come Lua, per semplificare l'eliminazione del vecchio codice.
Nicol Bolas,

Per chiarire, potrei provare ad attuare ciò che ho in mente. Mi chiedo solo se ci sono altri modi per creare un'intelligenza artificiale oltre al min-maxing o al tradizionale metodo di "iterare e calcolare il punteggio migliore".
Extrakun,

Risposte:


4

Sembra che potresti provare Minimax a "mescolare" le tue decisioni. C'è stato un discorso al Game AI Conf dello scorso anno da parte dei programmatori dietro Green Corp, ed è quello che hanno usato per costruire la loro intelligenza artificiale. Ci è voluto molto tempo per farlo bene, ma hanno un risultato decente.


1

Se è abbastanza buono da suscitare interesse (e dovrete presumere che lo sarà, o è possibile chiuderlo subito), e supporta la rete, il miglior modo di agire per questo tipo di cose è:

  • costruito in multiplayer senza alcun AI
  • assicurarsi che tutti i dati inviati al cliente possano essere facilmente "compresi" da un'intelligenza artificiale
  • crea un'intelligenza artificiale molto semplice, che consente un qualche tipo di scripting o molte opzioni di configurazione
  • consentire ai giocatori di modificare gli script AI, associarli al gioco e far giocare l'IA tramite rete, come se fosse un vero giocatore

In questo modo, la parte difficile sarà consentire all'IA di essere copiata e utilizzata in questo modo, e "esternalizzerai" l'ottimizzazione effettiva dell'IA ai giocatori.

Questo non solo ti darà un'intelligenza artificiale molto migliore, ma aggiungerà anche molto valore al gioco stesso!

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.