最中限オンライン2.0 妄想設計

  • Google App Engineはやめる
    • ソケット使えないから
  • 人間が操作するクライアントはFlash
    • AIRとかPyGameも検討したけど、インストールレスにしたい
  • プロトコルXMLベース
    • クライアントがFlashだったらそれが楽
    • C++とかでAI書く人もlibxmlくらい使えばいいんじゃないかと
      • 自分で使って作ってみて「これはやりづらい」と思ったらより自前パースが容易なプロトコルを用意してもOK。その際はサーバが違うポート番号で待ち受ければいい。
  • ターン開始時に、クライアントに通知(AI/Human区別なし)
  • 制限時間が設定されている場合、それまでに返答がなければ勝手にランダムに出す。
  • ルール違反(持っていないカードをだすなど)も基本的にランダムに出したことにする。
    • AIのバグで人間が途中まで進めたゲームを中断されると不快だから。
    • あ、でも純粋にAI同士の戦いの場合はその場で負けにしてもいいか。
  • チャット情報は人間には送らないと行けないが、AIには不要
    • もしくは「送っては行けない」?結託防止のために。
    • まぁとりあえず実害のあるAIが出てくるまでは規制を厳しくしない方が面白そうだ。
  • 急かせるメッセージ
    • 他のクライアントがカードをだしました、というメッセージは人間クライアントでは伏せたカードをだすために必要
    • 制限時間のない勝負で「AIが人間様を待たせないように、人間が出したらすぐに自分も出す」という設定もありかと。特にモンテカルロ系は時間をかければかけたほど強いから人間が悩んでいる間はAIも考えたい。
  • プロトコルを記述する標準的な方法はあるのだろうか。
  • とりあえず状態遷移図を書く。
        • -
  • <= AIを指定してゲーム開始要求 or
  • <= 人間の対戦者まち
  • <= 「人間の対戦者まち」の所に参加する
  • => 参加者が来た通知
  • <= ゲーム開始要求
  • => タイムアウト or
  • => A: ターン開始通知(with もろもろのステータス情報)
  • <= カードを出す
  • => (14回Aを繰り返す)
  • => ゲーム終了通知
        • -


参考文献