ターンベースのエンジンをどのように構成すれば、プレーヤー/ AIと観察に柔軟性を持たせることができますか?


7

ゲームメーカーの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)間の柔軟性を可能にするために、どのように状態を分割する必要がありますか?

また、おそらく私が正しい軌道に乗っていれば、数百行のコードを置く前に、少し安心が必要です...



うん、私はそれらを見た。どこにも行きませんでした。もう1つはイベントを使用した解決策でしたが、ここで取り上げた問題には実際には対応していませんでした。
12

2
あなたは「今、私はすでにこのセットアップでいくつかの問題を見ることができます」と言ったので、あなたが直面している問題は何ですか?カメラビューを設定できませんか?アニメーションを実行できませんか?または何?
ジェイク

問題はカメラ操作またはターンコントローラの実装ですか?
user64742 2017年

回答:


2

プレーヤーから「カメラ」を切り離す必要があります。たぶん、GMLには制限があるかもしれませんが、私はそれについて話す経験がありません。カメラの位置と設定を1人のプレーヤーにロックする必要がある理由はありません。通常、ゲームは1つの世界と複数のカメラで構成され、複数のカメラが同じ画面で複数のプレーヤーにレンダリングされる場合や、「セキュリティカメラ」ビュー、またはテクスチャビューにレンダリングされる場合があります。単一のカメラビューからフレームをレンダリングするプロセス単一のスクリーンスペース領域にプレイヤーを関連付ける必要はまったくありません。


1

人間のプレイヤーもいますが、視界内にあれば、移動中のAIユニットの中心にカメラを置くことができます。それ以外の場合は、移動ユニットとは独立して、マウス/キーボードでカメラを制御できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.