ゲームメーカーのGML言語でターンベースの戦略エンジンを作成し始めたところです...ターンサイクルを処理するときまで、順調に進み、誰がどのプレイヤーを制御しているか、そしてカメラと画面に表示されるもの。
現在、メインゲームループで発生しているメインスイッチの概要は次のとおりです。
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;
}
さて、このセットアップにはすでにいくつかの問題が見られます...しかし、それを「正しく」するための方法がわかりません。ターンは、どのプレイヤーのターンであるかを格納するグローバル変数であり、BEGIN_TURNとEND_TURNの状態は私には完全に理にかなっています...しかし、ここで発生させたいことのために、MID_TURN状態は私を困惑させています。
- 人間によって制御されるプレイヤーがいる場合、AIがここで順番にそれを実行するようにしますが、カメラがAIに追従して人間のプレイヤーのビジョンを動かすことができるようにしたいです。
- 人間が操作するプレイヤーがいない場合、神のような「オブザーバー」のビジョンで、2つ以上のAIがマップ上で戦うのを見たいと思います。
それで、基本的に、ターンベースの戦略エンジンを構築する方法に関するリソースはあるのでしょうか。私はパスファインディングとAIについて多くの記述を見つけました、そしてそれらはすべて素晴らしいです...しかし、それがターン構造とゲームの状態を処理することになると、まったくリソースを見つけるのに苦労しています。プレーヤーとコントローラー(HUMAN、COMPUTER、OBSERVER)間の柔軟性を可能にするために、どのように状態を分割する必要がありますか?
また、おそらく私が正しい軌道に乗っていれば、数百行のコードを置く前に、少し安心が必要です...