Je n'ai jamais vu beaucoup de ressources à ce sujet non plus, mais la meilleure que j'ai trouvée est probablement la:
Il donne un aperçu de l'IA des ennemis comme celle-ci:
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
}
}
Avec cela, vous pouvez voir que vos ennemis auront probablement besoin d'une machine à états pour gérer les différents états dans lesquels ils peuvent être, et chaque état aura son propre comportement pour exécuter chaque tour, soit codé en dur pour l'ennemi, soit piloté par les données par un script Langue.
Il y a beaucoup de variations, même entre les JRPG au tour par tour, il n'y a donc pas d'ensemble de règles pour chacun d'eux. Par exemple, vous pouvez émettre toutes les commandes du groupe avant qu'elles aient lieu, ou elles peuvent avoir lieu immédiatement après le choix. L'ordre d'attaque peut être aléatoire ou plus souvent déterminé par la statistique de vitesse.
Mais par exemple, supposons que vous ayez un système de combat au tour par tour, où vous émettez d'abord toutes les commandes de groupe, puis toutes les actions se déroulent à la fin du tour. Vous pouvez l'approcher comme:
- Stockez toutes les entités (joueurs + ennemis) participant à la bataille dans une liste.
- Pour chaque joueur de la liste, saisissez et stockez-le.
- Triez la liste d'entités par l'attribut Vitesse.
- Pour chaque entité de la liste, s'il s'agit d'un joueur, exécutez l'action stockée, sinon exécutez le script AI pour l'état actuel.
- Avancez le tour et répétez.
La FAQ Battle Mechanics contient également de nombreuses informations utiles, en particulier sur la gestion du temps dans les batailles. Mais malheureusement, ce système (alias ATB ou Active Time Battle) est breveté, vous ne pouvez donc rien faire de similaire.
EDIT J'ai également récemment trouvé ce site Web qui fournit de nombreuses informations techniques sur la mise en œuvre de FF7. Malheureusement, les sections du module de combat ne semblent pas encore entièrement écrites.