Я никогда не видел много ресурсов на эту тему, но лучший из найденных мной, вероятно, это:
Он дает представление о AI врагов, например:
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
}
}
При этом вы можете видеть, что вашим врагам, вероятно, понадобится конечный автомат для управления различными состояниями, в которых они могут находиться, и каждое состояние будет иметь свое собственное поведение для выполнения каждого хода, либо жестко закодированного во врага, либо управляемого данными с помощью сценариев язык.
Существует много различий даже между пошаговыми JRPG, поэтому не существует набора правил для всех из них. Например, вы можете выдать все команды вечеринки до того, как какая-либо из них произойдет, или они могут быть выполнены сразу после выбора. Порядок атаки может быть случайным, или чаще определяется по скорости.
Но, например, допустим, у вас есть чисто боевая система, в которой вы сначала выполняете все команды отрядов, а затем все действия происходят в конце хода. Вы можете подойти к этому как:
- Храните в списке все сущности (игроки + враги), участвующие в битве.
- Для каждого игрока в списке получить вход и сохранить его.
- Сортировать список объектов по атрибуту Speed.
- Для каждого объекта в списке, если это игрок, выполните сохраненное действие, в противном случае запустите скрипт AI для текущего состояния.
- Предварительно включите и повторите.
Battle Механика FAQ также имеет много полезной информации, в частности , об управлении временем в боях. Но, к сожалению, эта система (она же ATB или Active Time Battle) запатентована, поэтому вы не можете сделать ничего подобного.
РЕДАКТИРОВАТЬ Я также недавно нашел этот сайт, который предоставляет много технической информации о реализации FF7. К сожалению, разделы боевого модуля пока еще не написаны полностью.