さあ、Alexaで遊べるゲームを開発しましょう。さて、コーディングに入る前に、音声という文脈でスコープを決め、ゲームのアイデアを練り上げるのに役立つ原則をいくつか紹介しましょう。これから紹介する原則は、一般的なゲーム開発にも当てはまる場合があるかもしれません。ただし、ほとんどはAlexa Skills Kitを使った音声操作用ゲーム開発に特化した内容であり、Amazon Alexa音声デザインガイドに記載された音声デザインのベストプラクティスに従う必要があります。
楽しいゲームにするのは当たり前ですね。 でももう少し我慢して読んでください。Alexa向けのゲームインターフェースは非常に特殊です。主に身体の2つの部分を使います。つまり、ゲームからのコミュニケーションを受け取る聴覚と、ゲームに対して話しかける声です。また、Alexaは本来ターンベースで対話を行います。つまり、ユーザーからの入力がすべて処理されてスキルのバックエンドに送られてから、応答が行われます。このため、Alexaのこうした対話形式がゲームの流れを妨げないようなしくみを選ぶことが重要です。
こうした制約を理解したうえで開発されたゲームスキルの好例が、Yes Sireです。英国のAlexaスキルストアで、星4.8、レビュー435件を獲得したこのスキルは、単純でも、コアとなる部分が対話形式と矛盾しない限り、大きな効果を上げられることを証明しています。(秀逸な)説明から引用すると、「あなたは中世の領主です。増え続ける難しい選択に迫られています。正しい選択をして、できるだけ長い間権力を維持してください。」とあります。ゲームは楽しくても、かなり難しい場合もあります。ですが、しくみは単純です。決断を迫られたら「はい」か「いいえ」を選べばよいのです。すべての決断は、王国で手に入るリソースやプレイヤーの社会的立場に連鎖的に影響を及ぼします。
もう1つの例は、OpearloのGuess My Nameです。こちらは英国アマゾンで、星4.3/5と93件のレビューを獲得しています。スキルが有名な人物のクイズをランダムに出題するので、プレイヤーはわかったらすぐに名前を答えます。このゲームはグループプレイなので、おもしろいしくみが考案されました。スキルは続けていくつものヒントをだすのですが、そのヒントがだんだん易しくなっていきます。カウントダウンのようなイメージです。時間を競うゲームのため、Alexaがどのキャラクターについて出題しているかがわかったらすぐに「アレクサ、もしかしてバラク・オバマ?」などのように叫ぶ必要があります。 フォーカスグループの観察では、自然とメンバーが互いに相談し合って、正解を当てようとすることがわかりました。ゲームがヒントのたびにユーザーのインプットを求めるプロンプトを出していたとしたら、音声認識の問題を引き起こす可能性があったでしょう。
人気のゲームを作るのに、Yes Sireやトリビア問題に答えるTrivia Heroのような人気のゲームスキルを真似る必要はありません。Trivia Heroの開発者は、誤った応答であっても音声モデルに追加できるようにするために、工夫をしたのですが、それはまた後ほど紹介します。
前述のとおり、Alexaゲームの大半で使われる主な感覚器官は耳です。耳で聴くためのコンテンツを常に作り続けてきた業界と言えば、ラジオがあります。ラジオ業界には100年を超える歴史があります。ラジオ業界から学んでください。 お気に入りのラジオ局を聴き、聴覚エクスペリエンスを強化するために追加されたコマーシャルや音響効果を、注意して聴いてみましょう。
録音するか、録音しないかを検討する
オーディオデザインを決定する際、Alexaの音声(読み上げ機能エンジンなど)を使うか、それともカスタムオーディオを録音してスキルの各応答に使うかを決めます。 あるいは、間をとって、ほかの合成音声(Amazon Pollyなど)を使い、ゲームの一部にのみ録音したカスタムオーディオを使うことも考えられます。
すべてをカスタムオーディオにすると、ゲームに独自の「特徴」を与えたり、声の抑揚、発音、強調を完全にコントロールたりすることもできます。適切に導入すれば、自然な音声でユーザーをゲームの世界に引き込むことができます。読み上げ音声ではここまではできません。そのすばらしい例がRuneScape Quests - One Piercing Noteです。ただし、あらかじめ録音した人間の声を使ったゲームデザインの欠点は、再録音かオーディオファイルの編集をしない限り、一度録音した音声を変更できないという点です。特にプロの声優を使った場合は非常にコストがかかるため、継続的に新しいコンテンツを更新することが難しくなります。
読み上げ機能はプロの声優ほど自然ではありませんが、いくつかメリットもあります。まず1つ目は、テキストを変更するだけで、コンテンツを動的に、すぐに生成できる点です。ゲーム設定によっては、人間の声よりコンピューター合成音声のほうが適している場合もあります。たとえば、宇宙のゲームで、Alexaに宇宙船の乗組員やAIの副操縦士の役を割り当てる場合などです。
SSMLを活用する
Alexaは比較的高い精度で、テキストや句読点を読み取って、コンテンツの読み上げ方を判断できます。ただし、SSML(音声合成マークアップ言語)と呼ばれる標準マークアップ言語を使えば、Alexaの読み上げエンジンがテキストを解釈する方法を自在に制御できることを忘れないでください。テキスト応答をこれらのマークアップタグで囲むと、Alexaにテキストの「読み方」を指示することができます。たとえば、以下のようなことが可能です。
すばらしいゲームの実装は、Alexa認定チームがスキルの公開を認めたら終わりではありません。繰り返しプレイしたくなるゲームスキルや定期的に更新されるコンテンツには、プレイヤーが自然に戻ってきたくなる魅力があります。では、どうすればユーザーに戻ってきてもらえるかのヒントを紹介します。
昔、メダルオブオナーの マルチプレイヤーのアライドアサルトリロード(かなり言いにくいタイトルですが)のデモ版をやっていたことを思い出します。デモでは2つのマップしか提供されませんでしたが、1か月延々とプレイしました。マルチプレイヤー型だったおかげで、ST1 Noxという限定スナイパークランの一員にもなれたのです。このゲームの面白さは、別の人のプレイを予測できなかったところです。だからこそ、限定デモ版でも延々と遊べたのです。シングルプレイヤー型だったら、1時間で止めていたかもしれません。
最初のヒントで上述した制約を念頭に置いて、プレイヤー同士のエクスペリエンスをつなぎ、「他の人が次に何をするかわからない」という重要なリプレイ要素を活用します。
リモート型のマルチプレイヤーゲーム
スコアボードを使うのが最も単純な方法です。高いスコアをトラッキングし、ほかの人と比較した成績をプレイヤーに伝えます。EVE Onlineのように、プレイヤーの判断で相互接続したときにだけマルチプレイが可能なゲームにすることもできます。
注意すべき点が1つあります。 Alexaエクスペリエンスはターンベースだということです。つまり、ユーザーはAlexaがユーザーの入力を処理してスキルに送信し、応答を返すまで待つ必要があります。このため、ほぼリアルタイムの対話で進めるゲームにはしないでください。代わりに、それほど時間に依存しない非同期の対話を選びます。たとえば、戦略ゲームを開発する場合、各プレイヤーは、夜中の1時にゲーム内の時間が進むまでに、自分のターンを完了するのに丸1日かけることもできるのです。
ローカル型のマルチプレイヤーゲーム
ユーザーが、自宅と車の2か所でAlexa搭載デバイスを使っているという状況を念頭に置いてください。これら2つの状況に共通する点は何でしょうか? 他にも複数の人が存在するかもしれないという点です。 通常、それは友人や家族です。こうした状況は、いろいろな人が参加して楽しめるソーシャルゲームに最適です。その好例が、Would You Ratherです(星4.6/5を獲得しています)。このスキルは、Alexa搭載デバイスが使われるコンテキストを完璧に理解し、それを活かしたゲームとなっています。ゲームは単純ですが、プレイヤーや愛好ユーザーの間で、議論が長期間活発に交わされるようになっています。
こうした理由から、なるべくローカル型のマルチプレイヤーに対応可能なエクスペリエンスにすることをお勧めします。マルチプレイヤーの状態が1つのゲームインスタンスに限定されるため、バックエンドのアーキテクチャを簡易化できます。たとえば、Trivia Heroのようなクイズゲーム(星4.5/5を獲得)では、20人のローカルプレイヤーに対応しています。
また、Echo Button(日本未対応)に対応することも検討します。これは、Alexa搭載デバイスとペアリングして使うプログラム可能なAlexa Gadgetの1つです。Echo Buttonは発光し、ボタンを押すことでさまざまなプレイエクスペリエンスを作り出すことができます。サンプルコードを確認してみてください。ただし、ボタンによって新たな切り口からゲームを楽しめるようになりますが、こうしたデバイスを持っていない可能性も考慮してスキルを開発する必要があります。
ユーザーはストーリーを聞くのが大好きです。One Piercing NoteやThe Magic Doorといったストーリーベースのゲームスキルであろうと方法は問いません。マルチモーダルのディスプレイを使用しているかどうかにかかわらず、すべてのAlexaスキルは音声ファーストである必要があります。つまり、言葉がメインのインターフェースになるということです。中には画面を持たないことは不利だと考える人もいます。ですが私は逆に、それこそが最高解像度のグラフィックスプロセッサを持っているのと同じことだと考えています。つまり、想像力を利用するのです。
ディテールや登場人物の生い立ちに時間を割き、何よりすばらしい文章を書くことで、ユーザーをゲームの世界に引き込みます。目で読むのではなく、耳で聞くということを常に意識して書きます。書いているときに頭の中ではすばらしく思えた文章が、声に出して読んでみるとそれほどでもないこともあります。ストーリーの長短に関係なく、すべての対話を実際にやってみて、実際にテスターを使ってテストしてからゲームに取り込むようにしてください。
子どもでもプレイしやすいゲームを検討する
ヒント4のローカルマルチプレイヤーのセクションを思い出してください。Alexa搭載デバイスの周りにはほかの家族もいるかもしれません。そして一番ファンになってくれるのは、デバイスを買った本人ではなく、子どもたちかもしれません。私もその1人ですが、気難しい大人に比べて、子どもたちにはたくましい想像力があります。学習スピードも速く、不完全なものに対してもより寛容です。ゲームを開発するときに、子どもにもプレイしやすいゲーム、あるいは完全に子ども向けのゲームにするなら、後悔することはないでしょう。 スパイダーマンの伯父さんが言っていたように、「大いなる力には大いなる責任が伴う」のです。聞く人のことを考慮し、前向きなメッセージを追加するようにします。また子どもにとってはすべての瞬間が学びであることを忘れないでください。
ここまで述べてきたベストプラクティスに従えば、確実に魅力的なAlexaゲームスキルを作ることができます。そしてユーザーはスキルを使い込むほど、スムーズな音声エクスペリエンスを期待するようになります。ここからは、スキルがユーザーの高い利用負荷に対応できるよう、追加のヒントをいくつか紹介します。
音声モデルを更新する
信頼できる音声モデル作成につながる作業を侮ってはいけません。スキルへのトラフィックが増えると、予想外の現象が発生したという報告が急激に増える可能性があります。認定申請前には、ベータテスト機能を活用し、あらゆる種類のバグや誤った発話を検出する作業を行います。
スキルの公開後も、継続的にモニタリングして誤った発話が追加されていないか、適切に処理されているかを検出するようにします。匿名化されたユーザーインテント履歴を確認し、継続的にスキルの改善を行います。
最初のヒントで述べたように、Labworks.ioのTrivia Heroは自由回答形式のトリビアゲームです。このため、間違った答えであっても正しく理解して、ユーザーに対して正確に返答できたことを確認する必要がありました。一般に、ユーザー発話の信頼度が高いことも、コンテキストに応じた応答を返しやすくなる要因となります。たとえば、次のような対話です。Alexa: 「イギリスの首都はどこでしょう?」 → ユーザー: 「リバプール」 → Alexa: 「リバプールもイギリスの都市ですが、首都はロンドンです。」
バックエンドに拡張性を持たせる
推奨のAWS Lambdaバックエンドではなくカスタムサーバーを利用する場合は、1秒当たりに大量のトランザクションを処理できるよう拡張性を持たせておいてください。複数の国でゲームを公開する場合は、1日に少なくとも数十万のユニークユーザーが利用する可能性もあります。AWS Lambdaを利用する場合は、無料利用枠の制限を確認し、AWSプロモーションクレジットにサインアップするようにしてください。
データベースのストレステストを実施する
サーバーと同様、データベースもボトルネックになることがあります。任意のデータベースでストレステストを行います。負荷に耐えられない場合は拡張するか、Amazon DynamoDBなど拡張性の高いデータベースの使用を検討します。
Alexa開発者コンソールのレポートタブでは、インテントに基づいた本格的なユーザーのパス分析(英語ブログ)といった、高度な分析を行えます。これにより、ユーザーの典型的なスキル内フローの概要を把握し、離脱や操作のつまずきの確率が高い部分(ヘルプインテントにつながる箇所など)を特定することができます。
モニタリングの必要な項目の1つに、どのアトリビュート(スロット)がよりユーザーに選ばれているかという点があります。たとえば、ゲームでキャラクターの種類として好きな動物を選ばせる場合、どの動物が選ばれるかを記録することでユーザーの好み、追加すべき動物の種類、特別コンテンツを用意する価値のある人気の動物といった傾向を把握できます。 たとえば、ドイツのスキル開発会社169labsでは、Slackを使って処理されないスロット値を把握しています。ユーザーがバックエンドで処理されない値をリクエストすると、スキルはSlackにメッセージをポストし、すぐにチームにアラートが送られます。これに似たしくみを組み込むことで、ユーザーが特定の値(ユニコーンなど)をリクエストし始めた場合に、開発者はユニコーンを優先的にゲームに追加できます。
※このブログは、Best Practices for Building Voice-First Games for Alexaの日本語版です。