Ich habe gerade angefangen, eine rundenbasierte Strategie-Engine in der GML-Sprache von GameMaker zu entwickeln ... Und ich war gut unterwegs, bis es an der Zeit war, den Turn-Zyklus zu handhaben und zu bestimmen, wer welchen Spieler steuert und wie man mit der Kamera umgeht und was auf dem Bildschirm angezeigt wird.
Hier ist ein Überblick über den Hauptschalter, der gerade in meiner Hauptspielschleife stattfindet:
switch (GameState)
{
case BEGIN_TURN:
// Start of turn operations/routines
break;
case MID_TURN:
switch (PControlledBy[Turn])
{
case HUMAN:
switch (MidTurnState)
{
case MT_SELECT:
// No units selected, 'idle' UI state
break;
case MT_MOVE:
// Unit selected and attempting to move
break;
case MT_ATTACK:
break;
}
break;
case COMPUTER:
// AI ROUTINES GO HERE
break;
case OBSERVER:
// OBSERVER ROUTINES GO HERE
break;
}
break;
case END_TURN:
// End of turn routines/operations, and move Turn to next player
break;
}
Jetzt sehe ich bereits einige Probleme mit diesem Setup ... Aber ich habe keine Ahnung, wie ich es richtig machen soll. Turn ist eine globale Variable, die speichert, welcher Spieler an der Reihe ist, und die Zustände BEGIN_TURN und END_TURN sind für mich vollkommen sinnvoll ... Aber der Zustand MID_TURN verwirrt mich wegen der Dinge, die ich hier passieren möchte:
- Wenn es Spieler gibt, die von Menschen kontrolliert werden, möchte ich, dass die KI hier ihrerseits an der Reihe ist, aber ich möchte, dass die Kamera der KI folgt, während sie Bewegungen in der Sicht des menschlichen Spielers ausführt.
- Wenn es keine von Menschen kontrollierten Spieler gibt, würde ich gerne zwei oder mehr KIs beobachten können, die auf der Karte mit gottähnlicher "Beobachter" -Vision kämpfen.
Im Grunde frage ich mich also, ob es Ressourcen für die Strukturierung einer rundenbasierten Strategie-Engine gibt. Ich habe viel über Pathfinding und KI geschrieben, und diese sind alle großartig ... Aber wenn es um den Umgang mit der Turn-Struktur und den Spielzuständen geht, habe ich Probleme, überhaupt Ressourcen zu finden. Wie sollten die Zustände aufgeteilt werden, um Flexibilität zwischen den Spielern und den Controllern (MENSCH, COMPUTER, BEOBACHTER) zu ermöglichen?
Wenn ich auf dem richtigen Weg bin, brauche ich vielleicht nur eine Bestätigung, bevor ich noch ein paar hundert Codezeilen ablege ...