最中限2.0ドキュメント下書き

(括弧内)で書くのはユーザは知らなくてもいいこと。

  • Googleアカウントでログインをする
  • [your home]を見る
    • (UserPrefを読み出そうとする→存在しない)
    • (UserPrefとデフォルトのPlayerが1個生成される)
  • 名前を変更できる。変更しないとメアドが晒されているので変えることをおすすめする。
  • Googleアカウント1個に対してUserが1個、Playerが任意個対応する。これは「戦略を変えたので別途スコアの統計を取りたい」だとか「Botを作ったからそれは生身の自分とわけて統計したい」とかのニーズを満たすためのもの。
    • 人間が操作するのであれ、APIを叩いてコンピュータが操作するのであれ、能動的に動くならtypeは"active" (詳細後述)
    • passiveは後で説明するpassiveタイプのAIを作るときに使う
  • start gameを押すとゲーム開始画面になる。これは対人戦可能なネットゲームでよく見る「ルームを作成した」状態。このURLはパーマリンクになっているから他人に教えられる
    • □教えてもらった他人がログインしていなかったときはログインしてもらわないといけないね。明日修正する。
  • 自分や他人をjoinさせるか、passive AIをadd playerして3人そろえる
  • 自分の名前の隣のseatってリンクを押して着席する
    • □自分以外のところに座れないようにする
  • 手札カードをクリックしてプレイする
    • AIがバグっていてちゃんと手を出してくれなかったときには下のinvokeでもう一度手を出すように要求できる
    • □ ラウンド終了時に真ん中以外の人がカードを裏向けるのを実装していない
    • □ 今までに出されたカードの履歴が出た方がいいよね、明日作る
  • 15枚のカードを出し終わるとFinished Gameって表示に変わってそれ以上カードを出せなくなる
    • □ 誰が勝ったとか表示するようにする
    • □ 終了したゲームの一覧をどこかに出す
    • □ 進行中のゲームの公開情報を表示する

自分のUserPrefを削除して試そうと思って管理画面にいったらid:amachangがすでにログインしていた。素早い。

passive AI

  • ?query=availableのリクエストが来たら、利用可能なら"OK"を返す
  • ?query=playのリクエストが来たら0〜51の数値を返す
    • hand=1,2,3って形で手札の情報が渡される数字が小さいほど弱い。0がクラブの1
    • played=4,5,6.7,8,9.10,11,12という形で「今までに出されたカード」の情報が渡される。ピリオドで区切ってカンマ区切りのリスト3つにする。0番目が自分。
    • seat_idは座席ごとにユニークなID。たとえば同じゲームに同じAIが参加していたとしても、seat_idは別々。何かリクエストをまたいで共有したい情報があればこれをキーに使うといい。
  • 実例
  • "OK"とか"15"という文字列を返すようにする。
    • 前後の空白改行文字を取り除いた後空白改行文字で分割して0番目の要素を取るようになっているので、改行を挟んでデバッグ出力とかしても大丈夫

active AI

いろんなAPIがあって、一通りプレイできる。明日書く。