Ich habe auch noch nie viele Ressourcen zu diesem Thema gesehen, aber die beste, die ich gefunden habe, ist wahrscheinlich die:
Es bietet einen Einblick in die KI des Feindes wie folgt:
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
}
}
Auf diese Weise können Sie sehen, dass Ihre Feinde wahrscheinlich eine Zustandsmaschine benötigen, um die verschiedenen Zustände zu verwalten, in denen sie sich befinden können, und dass jeder Zustand sein eigenes Verhalten hat, um jede Runde auszuführen, entweder fest in den Feind codiert oder datengesteuert durch ein Skript Sprache.
Selbst zwischen rundenbasierten JRPGs gibt es viele Unterschiede, daher gibt es für nicht alle Regeln. Sie können beispielsweise alle Gruppenbefehle ausgeben , bevor sie ausgeführt werden, oder sie können unmittelbar nach der Auswahl ausgeführt werden. Die Angriffsreihenfolge kann zufällig sein oder häufiger durch die Geschwindigkeitsstatistik bestimmt werden.
Nehmen wir zum Beispiel an, Sie haben ein rein rundenbasiertes Kampfsystem, in dem Sie zuerst alle Gruppenbefehle ausgeben und dann die gesamte Aktion am Ende des Zuges ausführen. Sie könnten es so angehen:
- Speichern Sie alle am Kampf teilnehmenden Entitäten (Spieler + Feinde) in einer Liste.
- Holen Sie sich für jeden Spieler in der Liste Eingaben und speichern Sie diese.
- Sortieren Sie die Entitätsliste nach dem Attribut Geschwindigkeit.
- Wenn für jedes Objekt in der Liste ein Spieler die gespeicherte Aktion ausführt, führen Sie andernfalls das AI-Skript für den aktuellen Status aus.
- Vorwärts drehen und wiederholen.
Die FAQ zur Kampfmechanik enthält auch viele nützliche Informationen, insbesondere zum Zeitmanagement in den Schlachten. Leider ist dieses System (auch bekannt als ATB oder Active Time Battle) patentiert, sodass Sie nichts Ähnliches machen können.
BEARBEITEN Ich habe kürzlich auch diese Website gefunden, die viele technische Informationen zur Implementierung von FF7 enthält. Leider scheinen die Abschnitte des Kampfmoduls noch nicht vollständig geschrieben zu sein.