![]() | ![]() |
ジンガのRobert Zubek氏 | NPCの様々な動きを制御するAI |
『CityVille』はMAU(月間アクティブユーザー)が5000万人に迫る巨大なユーザー数を抱えたゲームであり、この巨大なスケールをカバーし得るものであり、かつアップデートが頻繁に行われるソーシャルゲームに適したスピード感に対応できるAIである必要がありました。一方、ソーシャルゲームは既存のウェブの文法で開発が行われるため、そのナレッジは広く社会に蓄積されている点は利点だったとのこと。
ネットワークゲームのAIを考えたとき、ターンベースのような動きがゆるやかなゲームと、アクションゲームやMMORPGなどでは求められるものが変わります。前者であればネットワークのレイテンシーは余り意識しないで済みますが、後者ではそうはいきません。『CityVille』では非同期的なネットワークプレイですから、前者のような考え方を採用し、プレイヤーの手元でNPCがきちんと動いていれば、サーバーサイドで多少齟齬があっても気にしないという方針を取りました。
今回紹介されたのは『CityVille』におけるNPCの動きについてのAIです。『CityVille』では幾つかの種類の建物を立てながら街を拡大していきますが、「ビジネス」と呼ばれる商店を立てると、街の住民がそこに訪れ、購買活動を行なってくれます。それによって収益を上げ、更に街の拡大に投資していきます。NPCの動きは大げさに言えば『CityVille』における経済を組み立てています。
NPCの動きは至ってシンプルです。
1.ビジネスに行く
まだビジネスを訪れていない時
少なくとも1つのビジネスがオープンされている時
2.ホテルに行く
既にビジネスに訪れていて、ホテルはまだの時
ホテルがアクティベートされている時
旅行者の場合は更に優先度が高い
3.家に帰る
マッチするものがない場合
![]() | ![]() |
住民はビジネスを目指し、観光客はホテルを目指す | シンプルで分かりやすいルール |
以上のようなルール(プロダクションルール)に沿ってNPCの動きが決定されています。ビジネスが一つでもオープン(建設済みで、グッズが供給された状態)されていれば住民は街に出て、その店を目指します。店には定員があるため、全ての店がそれを超えると住民は家に戻って街は静かな状態になります。
このAIは至ってシンプルであることから、処理負荷が軽く、ソーシャルゲーム特有の頻繁なアップデートにも耐えられます(これは特に重要視された部分だったようです)。何よりユーザーにとってもNPCがどう動き、それによってどうお金が獲得できるのか一目瞭然です。分かりやすいAIも『CityVille』の誰でも遊んで楽しいという部分を構成する一部なのです。