アリスの最初のビデオゲーム、またはゲームコントローラとしての音声アシスタント





職場では、 アリス役立つスキルを身に付けており、暇なときに自宅の環境で音声アシスタントを使って友達と遊ぶことを試みました。 1人または2人のプレーヤー向けのテキストゲームの開発については既に説明しましたが、今回は会社全体のビデオゲームを作成した経験を共有します。



ゲームのルール



既存のゲームをAliceに移植したくなかったので、Aliceの音声認識機能を使用したオリジナルのゲームを思いつきました。



多くの画像が画面上に異なる色の円や正方形で表示されます。 プレーヤーのタスクは、同じ背景のオブジェクトのペアを検出し、形容詞+名詞のフレーズを作成することです。 さらに、形容詞は円形のオブジェクトから形成され、名詞は正方形のオブジェクトから形成されなければなりません。 したがって、ゲームの名前-「ラウンドスクエア」。



フレーズを呼び出したプレーヤーはポイントを獲得します。 勝者は、ラウンド(2分)中に10ポイントまたは最も多くのポイントを獲得した人です。 ゲームプレイは短いビデオで表示されます。





ルールを決定しました-テクニックに進みます。



コントローラー



競技場を表示するには、ゲームのウェブサイトを開く大型テレビを使用します。 テレビにインターネット接続がない場合は、コンピューターの画像をテレビに表示したり、モニターで再生したりできます。



ゲームの視覚部分はJavaScriptで記述されています。 すべてのオブジェクト:競技場とHUD-長方形、テキスト、画像を描くためのCanvas 2D APIメソッドを使用して作成されます。 50ミリ秒ごとに、画面が更新されます。 Base64形式でエンコードされた画像を含むすべてのコードは、単一のHTMLファイルに集中しています。



ここで、プレーヤーフレーズを受け入れるインターフェイスを実装する必要があります。 幸いなことに、音声認識のタスクは音声アシスタントによって解決されます。 Yandexは、Aliceの音声アプリケーション(スキル)のユーザーと開発者にこのようなサービスを無料で提供しています。



音声アシスタントを演奏するスキルを追加します。 これで、各プレーヤーは自分の電話またはスマートスピーカーで音声アプリケーションを有効にし、マイクを介してサイトにレプリカを送信できます。





バックエンド



ユーザーのレプリカを特定のゲームパーティに関連付けることは残ります。 そのためにはサーバーが必要です。バッチごとに番号が生成され、HTMLページでサーバーに登録されてユーザーに表示されます。 ユーザーはこの番号をボイスアシスタントに呼び出し、ボイスアシスタントはサーバーのWebフックを介して対応するゲームに新しいプレーヤーを登録します。 後続のユーザーレプリカは、WebSocketを介してゲームに転送されます。



Webソケットを作成し、切断されたときに再接続するためのクライアントコードは次のようになります。

function start(websocketServerLocation){ ws = new WebSocket(websocketServerLocation); ws.onopen = function(){ gameN = game.id; }; ws.onclose = function(){ gameN = "--"; start(HOST); }; wsSend({"gameId": game.id}); } start(HOST);
      
      





サーバーに接続すると、クライアントはゲーム番号を送信します。 以下は、接続を確立し、受け入れられた番号でゲーム制御を開始するサーバーコードです。



 const wss = new SocketServer({ server }); wss.on('connection', (ws) => { ws.on('close', () => { remConn(ws.gameId); }); ws.on('message', msg => { const data = JSON.parse(msg); if (data.gameId) { ws.gameId = data.gameId.toString(); addGame(ws); } }); });
      
      





同時に、同じサーバーがブラウザにページを提供し、AliceのWebフックに応答できます。



 var server = express().use(bodyParser.json()).use('*', (req, res) => { if (req.body && req.body.request) { //   toAnswer  - res.json({ version: req.body.version, session: req.body.session, response: toAnswer, }); } else { // -   res.sendFile(INDEX); } }).listen(PORT);
      
      





おわりに



その結果、同社のオリジナルビデオゲームが完成しました。 2018年11月28日にアリス公開され 、この音声アシスタントで初めて知ったビデオゲームになりました。



ちなみに、アリスとGoogleアシスタントが登場する前から、人々はゲーム音声制御のファンを感じていました。 マイクとスピーカーを備えたデバイスの普及により、音声技術の開発のおかげで、音声アシスタントは新しいユーザーエクスペリエンスを提供するゲームコントローラーになりつつあります。



All Articles