Sto sviluppando un'IA di gioco di strategia (pensate a: Final Fantasy Tactics) e non riesco a trovare il design dell'IA. Il mio problema principale è determinare qual è la cosa ottimale da fare.
Prima di tutto lasciami descrivere la priorità di quale azione vorrei che l'AI intraprendesse:
Uccidi l'unità del giocatore più vicino
Soddisfa la direttiva principale (uccidi tutte le unità del giocatore, uccidi l'unità bersaglio, sopravvivi per x turni)
- Guarisci unità alleata / buffer di lancio
Ora l'IA può a sua volta fare quanto segue:
Sposta -> {Attacco / Abilità / Oggetto} (attacco o abilità o oggetto)
{Attacco / Abilità / Oggetto} -> Sposta
Avvicinarsi (se i bersagli non si trovano nel raggio)
- {Attacco / Abilità / Oggetto} (se la mossa non è disponibile)
Appunti
Le abilità hanno vari intervalli / effetti / costi / effetti. Ogni unità ai ha forse 5-10 abilità tra cui scegliere. L'intelligenza artificiale darà la priorità all'uccisione rispetto alla sicurezza, a meno che la sua direttiva non sopravviva per x turni. Inoltre non importa molto del costo dell'abilità. Mentre un giocatore potrebbe voler salvare un grande incantesimo per dopo, l'IA lo utilizzerà molto probabilmente al più presto.
Il movimento è su una griglia (esadecimale)
numero di unità del giocatore: 3-6
numero di unità ai: 3-7 o più. Probabilmente max 10.
AI e giocatore a turno controllano UNA unità, invece di tutti allo stesso tempo.
La piattaforma è Android (se il programma non risponde dopo un po 'di tempo, ci sarà un popup che dice Forza Esci o Aspetta - che sembra davvero male!).
Ora arrivano le domande:
La migliore abilità da usare sarebbe ovviamente quella che colpisce il maggior numero di bersagli per il maggior danno. Ma poiché ogni abilità ha range diversi, non saprò se sono nel range senza esplorare ogni possibile posto in cui posso spostarmi.
Una soluzione sarebbe quella di passare attraverso ogni possibile posizione in cui spostarsi, determinare l'attacco ottimale in quella posizione, il che mi dà un elenco di mosse ottimali per ogni posizione. Quindi scegli l' ottimale fuori dall'elenco ed eseguilo. Ma questo richiederà molto tempo CPU. C'è una soluzione migliore?
La mia idea attuale è quella di avvicinarmi il più vicino possibile al gruppo di persone più vicino e più grande e determinare l'attacco / abilità ottimale da lì. Penso che questo sarebbe molto meno lavoro per la CPU e consentirebbe comunque attacchi ad ampio raggio. È subottimale, ma l'IA sembrerà comunque "intelligente".
Altre note / domande:
- Sto pensando troppo / complicando troppo? Soluzione migliore?Sono aperto a tutti i tipi di suggerimenti
- Ho dato un'occhiata alla domanda sul lancio degli incantesimi , ma non tiene conto del movimento - quindi forse usa quell'algo per ogni possibile posizione di mossa? La risposta principale menzionava che non era eccezionale per le aree di effetto e i combattimenti di gruppo, quindi forse è necessario un ulteriore aggiustamento?
- Per favore , se menzioni un grafico / albero, fammi sapere sostanzialmente come usarlo. Ad esempio Nodo significa abilità, il livello corrisponde al danno, quindi cerca il nodo più profondo.