忍者ブログ
ゲームを作ったり、ゲームを遊びまくったりしている せっき~の生き様。   まずは目次をご覧ください
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2010年9月2日 にあった、CEDECの講演についての記事です。


「サカつく」のサッカー試合AIシステム


サカつく」とは?

→ ”プロサッカークラブをつくろう”シリーズ (サッカークラブ運営SLG)

→ サッカーのリアルタイムシミュレーター
→ プレイヤーは、フォーメーションなど 間接的に指示するのみ
  (選手個々の動きに関与する事はできない)


-------------------------------------------------------------

●サカつく に求められるAI?


・シミュレーターとしての納得感

 強いチームは、勝率が良い
 サッカーらしいスコアになる (1対10 とかならない)


・映像としての面白さ

 サッカーの中継のような ドキドキハラハラ感、カメラワーク


「結果を見る」モードがある

 試合を飛ばして、試合結果だけを見る事が出来る
→ 「試合モード」と試合結果が変わってはいけない

 

-------------------------------------------------------------

●今までの 「サカつく」試合システムの変遷


1. 完全オーサリング方式
  (オーサリング ・・・ 前もって作ったムービー みたいなイメージ)

 オーサリング済のシーンを 試合場面に応じて たくさん用意
結果に応じて、それを再生する

→ ダイジェストのような試合進行


利点: クオリティーの高い試合シーン
     人間らしい一連の動き    (そのような動きを作っているから)
     複数人が絡むモーション表現
     カメラワークも狙って作れる (オーサリングを再生するだけなので)
     AIが 試合の見栄えに影響しない

欠点: 同じシーンばかり再生される
     展開が読めてしまう

   → シチュエーションの増加 で対応
   →→ 作業コスト かなり大 (いつか破たんしてしまう・・・)

 


2. 完全リアルタイム方式

 アクションサッカーゲーム と同じアプローチ
一人一人の選手が独立した動き


利点: 自由度の高さ
     局面は無限
     先の読めない展開

欠点: 各パラメーター → 物理挙動 → 結果 なので、バランス調整が極めて困難
     処理負荷 大
     「結果を見る」モードの結果同期が大変

 


3. 折衷方式


上記2つの良いところ取りをしよう

1.の 見栄えの良さ、見栄えに影響しないAI
2.の 自由さ

これを活かしたい

 

-------------------------------------------------------------

●折衷方式 について

サカつくDS で採用


ハードウェアの処理能力の制約
・・・ 全員を賢く動かすことができない

→ どうせなら 球際だけでも うつくしく

 

球際だけ オーサリング方式

ボール保持者最小限の選手” だけに限った小さなシーンを オーサリング

それ以外の選手は、適当に動いてもらう

 

・小さなシーン

スローイング → ドリブルで敵を抜き → パスを行い → ヘディングシュート

上記は、今までのシリーズでは 一つのオーサリングであったが

”スローイング” ”ドリブルで敵を抜き” ”パス” ”ヘディングシュート”
と、4つの小さなシーン とする事にした

 


・プレイセット

同一局面、同一プレーで分岐しえるシーンのセット


例) 目の前に敵が ドリブルで抜く → うまく抜いた!    (成功)
                         抜いたし、相手は転倒 (大成功)
                         ボールを取られた   (失敗)

と言うように、起 となる一つのシーンと  結果となる複数のシーン
それをワンセットにした物

→ 結果は 大成功成功失敗大失敗 の4種類を用意する


評価式 によって、どの結果になるか? を判定する

 


・プレイセット 選択AI

ボール保持者 が、取りえる プレイセット をリスト化

例) 「選手Aへショートパス」「選手Bへロングパス」「前へトラップ」「後ろへトラップ


そして、各プレイセットに 評価点を設定

評価点を重みとした ルーレット方式 で、決定


例)

選手Aへショートパス:  50点
選手Bへロングパス:  20点
前へトラップ:       15点
後ろへトラップ:      20点

→ 選手Aへのショートパス が一番実行される確率が高い サカつく











・プレイセット結果判定

プレイセット固有の判定式から、確率パラメータを計算
(確率パラメーター = オフェンスのパラメータ と ディフェンスのパラメータで いろいろ計算したりする)

レーティング表により、成功結果の確率を得る

サカつく


 

 


・試合ヒストリー構造体

再生するプレイセット 、 その結果
プレイセットをどこ(座標)で再生するか?
プレイセットをいつ再生するか?
プレイセットに含まれない選手がどうしているか? (簡単なAIが どこへ移動するか? など指示する)


これらを 一つの構造体にまとめる

= 試合ヒストリー構造体


試合は、この 大量の”試合ヒストリー構造体”を再生する事で 実現する

 

-------------------------------------------------------------

●問題 克服された?

・シーン制作工数

オーサリングは敵味方の2人   (旧では、全選手)
分岐数は、1シーンに対し4つ   (旧では、大量)

→ かなりの改善 (旧と比べ、10分の1)

 

・結果のバランス調整

パラメーターによる プレイセットの成否判定 の調整のみで済むため
かなりやりやすい

(蹴った時のボールの動きなどの 物理挙動に振り回されずに済む)

 

・デバッグ・調整の利点

ヒストリのメリット
→ 全てがヒストリに書かれている

→→ バグの再現性向上

→→ ログの分量 減量
  毎フレーム 試合ログを書かなくて良いので (1シーンごとで良い)
  バグが起きた時の追いかけ が かなり やりやすい

→→ 超高速で試合ができる (シーンを再生しなければ 1瞬で試合が経過する)
  その結果、何度も何度も対戦させて 統計データとりやすい

 

・総合して

          オーサリング  リアルタイム  折衷案
見た目     ◎         △        ○
多様性     ×         ◎        ○
結果コントロール  ◎        ×         ○
工程数     ×         ○         ○
レスポンス   ×         ◎        △
処理速度    ◎        △         ○


前2手法は 飛びぬけて良い所もあるけど、弱点がある
折衷案は、飛びぬけて良い所は無いが、全体的に良い感じ

 

サカつく においては、この折衷案が 最適解であったのでは無いか?

 

 


-------------------------------------------------------------

●質疑応答

・選手の個性は どう表現したか?

プレイセット 選択の際に、どれを選びやすいか? で実現している

(ドリブルを選びたがる、パスを選びやすい)
 


拍手[1回]

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
プロフィール
HN:
せっき~
性別:
男性
職業:
ゲームプログラマ
自己紹介:
古いパソゲー、ボードゲーム、カードゲームを熱狂的に遊んでいます。


ついったー
http://twitter.com/seki_seki_seki

連絡先は
sekisekiseki(あっと)gmail.com
最新コメント
[06/24 www.linux.ca]
[06/23 linux.org]
[06/23 blackmarket-matches.com]
[06/23 Ucuz Davetiye]
[06/22 ロレックス デイトナ 8pダイヤ]
カウンター
ついったー

Copyright © [ せっき~のゲーム屋さん ] All rights reserved.
Special Template : 忍者ブログ de テンプレート and ブログアクセスアップ
Special Thanks : 忍者ブログ
Commercial message : [PR]