Non ho mai visto molte risorse su questo argomento, ma il migliore che ho trovato è probabilmente il:
Fornisce informazioni sull'IA dei nemici come questa:
AI: Setup
{
TempVar:TurnsUntilGrenade = 3
TempVar:GrenadeAmmo = 4
}
AI: Main
{
If (Stage == 0) Then
{
If (TempVar:TurnsUntilGrenade == 0) Then
{
If (TempVar:GrenadeAmmo > 0) Then
{
Choose Random Opponent with Lowest HP
Use Hand Grenade on Target
TempVar:GrenadeAmmo = TempVar:GrenadeAmmo - 1
TempVar:TurnsUntilGrenade = 3
} Else {
Choose Random Opponent with Lowest HP
Use <Machine Gun> on Target
}
} Else {
Choose Random Opponent
Use <Machine Gun> on Target
TempVar:TurnsUntilGrenade = TempVar:TurnsUntilGrenade - 1
}
} Else {
If (TempVar:GrenadeAmmo > 0) Then
{
Choose Random Opponent with Lowest HP
Use Hand Grenade on Target
TempVar:GrenadeAmmo = TempVar:GrenadeAmmo - 1
} Else {
Choose Random Opponent
Use <Machine Gun> on Target
}
}
}
AI: Counter - General
{
If (Grenade Combatant's HP <= 3 * [Grenade Combatant's Max HP / 4]) Then
{
Stage = 1
} Else {
Stage = 0
}
}
Con questo puoi vedere che i tuoi nemici avranno probabilmente bisogno di una macchina a stati per gestire i diversi stati in cui possono trovarsi, e ogni stato avrà il suo comportamento per eseguire ogni turno, sia codificato nel nemico, o guidato dai dati da uno script linguaggio.
Esistono molte variazioni anche tra i JRPG a turni, quindi non esiste un insieme di regole per tutti. Ad esempio, è possibile emettere tutti i comandi della parte prima che avvenga uno di essi, oppure possono aver luogo immediatamente dopo la scelta. L'ordine di attacco potrebbe essere casuale, o più spesso determinato dalla velocità.
Ad esempio, supponiamo che tu abbia un sistema di battaglia a turni puramente, in cui dai prima tutti i comandi del gruppo e poi tutte le azioni avvengono alla fine del turno. Potresti avvicinarti come:
- Memorizza tutte le entità (giocatori + nemici) che partecipano alla battaglia in un elenco.
- Per ogni giocatore nella lista ottenere input e memorizzarlo.
- Ordina l'elenco di entità in base all'attributo Velocità.
- Per ogni entità nell'elenco, se è un giocatore esegue l'azione memorizzata, altrimenti esegui lo script AI per lo stato corrente.
- Gira avanti e ripeti.
Le FAQ sulle meccaniche di battaglia contengono anche molte informazioni utili, in particolare sulla gestione del tempo nelle battaglie. Ma sfortunatamente questo sistema (alias ATB o Active Time Battle) è brevettato, quindi non puoi fare nulla di simile.
EDIT Recentemente ho anche trovato questo sito Web che fornisce molte informazioni tecniche sull'implementazione di FF7. Sfortunatamente le sezioni del modulo di battaglia non sembrano essere ancora completamente scritte.