以下、図面を参照しながら実施形態の説明を述べる。なお、以降、説明済みの要素と同一または類似の要素には同一または類似の符号を付し、重複する説明については基本的に省略する。例えば、複数の同一または類似の要素が存在する場合に、各要素を区別せずに説明するために共通の符号を用いることがあるし、各要素を区別して説明するために当該共通の符号に加えて枝番号を用いることもある。
なお、実施形態の説明では、リアルタイムコンテンツとしてライブ動画を仮定するが、リアルタイムコンテンツは動画とは異なる種類のコンテンツ(例えば、静止画、テキスト、など)であってもよい。また、ライブ動画とは、動画ソース(例えば、配信者端末)から動画配信サーバへのアップロードと、その配信とがリアルタイムに行われる動画全般を指しており、その題材は特に限定されない。具体的には、ライブ動画は、配信者による単なる撮影動画(例えば、自撮り動画、定点カメラの映像、ドライブレコーダーの映像、など)、配信者の実演(例えば、配信者による、歌唱、ダンスなどのパフォーマンス、ゲームプレイ、トーク、など)を撮影した動画、配信者が例えばゲームなどの対象について実況/解説を行う実況動画、配信者の分身であるアバターが存在する仮想空間の映像を仮想カメラにより撮影したVR(Virtual Reality)動画、などであり得る。
(第1の実施形態)
第1の実施形態に係る配信者端末および観客端末は、図1に例示されるライブ動画配信システムに組み込むことができる。このシステムは、実施形態に係る配信者端末100と、観客端末200と、動画配信サーバ300とを含む。動画配信サーバ300は、各種端末と例えばインターネットなどのネットワーク経由で接続されており、互いにデータを送受信し得る。また、動画配信サーバ300は、他の図示されないサーバ、例えばWebサーバ、コメントサーバ、などともネットワーク経由で接続され、互いにデータを送受信し得る。
配信者端末100、観客端末200および動画配信サーバ300は、以下に説明するように、ライブ動画配信サービスを授受するための基本的な機能を有する。
配信者端末100は、逐次、例えば配信者端末100に接続されたカメラ/マイクロフォンによって生成された映像/音声データをエンコードし、エンコード済み(マルチメディア)データを動画配信サーバ300へ送信(アップロード)する。
配信者端末100は、コンピュータなどの電子デバイス、例えば、PC(Personal Computer)、モバイル端末(例えば、タブレット、スマートフォン、ラップトップ、フィーチャーフォン、ポータブルゲーム機、など)、VR端末、AR(Augmented Reality)端末、ゲーム機、テレビ受像機(インターネットテレビを含む)、などであり得るが、これらに限られない。
動画配信サーバ300は、配信者端末100からエンコード済みデータを受信し、これに対して、例えば、再エンコード、HLS(HTTP (Hypertext Transfer Protocol) Live Streaming)形式への変換、などの加工を必要に応じて行う。動画配信サーバ300は、(加工後の)エンコード済みデータを配信者端末100および観客端末200へ配信する。すなわち、動画配信サーバ300は、ライブ動画を含むリアルタイムコンテンツを配信可能なサーバである。
観客端末200は、動画配信サーバ300からエンコード済みデータを受信し、これをデコードし、ライブ動画(音声を含む)を再生する。すなわち、観客端末200は、ライブ動画を含むリアルタイムコンテンツを再生可能な端末である。配信者端末100も、観客端末200と同様に、動画配信サーバ300からエンコード済みデータを受信し、これをデコードし、ライブ動画を再生し得る。或いは、配信者端末100は、動画配信サーバ300からエンコード済みデータを受信せず、自ら作成したライブ動画の映像データを再生してもよい。すなわち、配信者端末100は、ライブ動画を含むリアルタイムコンテンツのソースであるとともにこれを再生可能な端末であり得る。
なお、観客端末200は、逐次、図示されないコメントサーバからライブ動画に対して当該観客端末200の操作者もしくはその他の観客、または配信者によって投稿されたコメントデータを受信し、当該コメントデータの示すコメントをライブ動画に重畳して表示してもよい。コメントは、ライブ動画の表示領域の右端から左端に向かって移動するように所定時間に亘って表示されてよい。他方、観客端末200は、ユーザからのテキスト入力に基づいてライブ動画に投稿するコメントデータを生成し、コメントサーバへ送信し得る。これにより、配信者および観客は、ライブ動画の配信中であってもテキストベースでコミュニケーションを取ることが可能となる。
観客端末200は、配信者端末100と同様の電子デバイスであり得る。ただし、観客端末200は、映像/音声データを取り込んだり、これをエンコードしたりする能力は必要とされない。
そして、第1の実施形態に係る配信者端末100および観客端末200は、かかるライブ動画配信サービスを授受するための基本的な機能に加えて、当該ライブ動画の配信時に起動可能な(リアルタイム)ゲームをプレイする機能を有する。
このゲームは、配信者のみが起動できるものであってもよいし、課金などの条件付きまたは無条件で観客が起動できるものであってもよいし、図1のライブ動画配信システムの運営者が起動できるものであってもよい。
このゲームの具体的態様は、特に制限されないが、例えば「だるまさんがころんだ」のような、プレイヤー間の心理戦を題材としたゲームであり得る。具体的には、かかるゲームでは、プレイヤー、すなわち配信者および観客は、第1の役割と第2の役割とに分かれる。典型的には、配信者が第1の役割を担うが、配信者以外の観客が第1の役割を担ってもよい。かかるゲームにおいて、第1の役割のプレイヤーは、ゲーム状態の転換点となるタイミング、すなわちゲーム状態が遷移するタイミングをある程度自由に決定し、第2の役割のプレイヤーはかかるタイミングを予測してリスクを冒しながら行動し、勝利または高得点を目指す。なお、第1の役割のプレイヤーは、1人に限らず複数人であってもよい。また、ゲームは、「鬼ごっこ」のようなリアルタイムに状況が変わる遊びを題材としてもよい。
「だるまさんがころんだ」を例に取れば、だるま(鬼)が第1の役割に相当し、参加者が第2の役割に相当する。だるまは、「だるまさんがころんだ」のかけ声を唱えた後に振り向き、その時点で移動を止めていないキャラクタ(参加者役のプレイヤーのアバター)を捕まえることができる。捕まえられたキャラクタはゲームから脱落する。全てのキャラクタが脱落すれば、だるま役のプレイヤーの勝利である。故に、だるま役のプレイヤーは、「だるまさんがころんだ」のかけ声を唱える速さに変化を付けて、参加者役のプレイヤーの予想しないタイミングでだるまを振り向かせようと試みる。他方、参加者役のプレイヤーは、当該プレイヤーが操作するキャラクタが他のキャラクタよりも早くだるまに触れれば勝利となる。故に、参加者役のプレイヤーは、だるまが振り向くタイミングを予想して、だるまが振り向かないうちにキャラクタを最大限に移動させる。
かかるゲームにおいて、第1の役割のプレイヤーのUI(以降、単に第1のUIと称する)と、第2の役割のプレイヤーのUI(以降、単に第2のUIと称する)とは異なっていてもよい。例えば、第1のUIには、ゲーム状態の遷移の進行度を表示するGUI(Graphical User Interface)部品(ウィジェット)、例えばシークバー、などが含まれてもよい。また、このGUI部品は、ゲーム状態を遷移させるためのユーザ入力に対応する入力イベントを発生させてもよい。例えば、かかるユーザ入力は、第1の役割のプレイヤーがシークバーのスライダの位置を動かす操作を行った時に発生してもよい。これにより、第1の役割のプレイヤーは、ゲーム状態の遷移の進行の速さなどを直感的に操ることができる。他方、第2のUIには、第1のUIに比べて粗い精度でゲーム状態の遷移の進行度を視覚的に把握させるためのGUI部品、画像、テキスト、などが表示されてもよいし、かかるGUI部品などが全く表示されなくてもよい。
第1の実施形態では、第1の役割のプレイヤーの端末(配信者端末100または観客端末200)、および第2の役割のプレイヤーの端末は、それぞれ取得したユーザ入力を互いに動画配信サーバ300を介して送信し合う。そして、各端末は、自ら取得したユーザ入力と動画配信サーバ300を介して受信したユーザ入力とに基づいて、ゲーム処理を分散的に行う。すなわち、各端末は、各キャラクタの状態(例えば、現在位置または移動量、脱落者か否かを表すフラグ、など)を管理し、ゲーム状態の遷移を制御し、ゲーム状態に応じたゲーム画面をライブ動画の映像データに重畳して描画する。なお、ユーザ入力は、動画配信サーバ300に限らず他のサーバ、例えばゲームサーバを介してやり取りされてもよい。
なお、後述するように、第2の実施形態では、動画配信サーバ300が、各端末からユーザ入力を受信し、ゲーム処理を集中的に行う。すなわち、動画配信サーバ300は、各キャラクタの状態を管理し、ゲーム状態の遷移を制御し、ゲーム状態に応じたゲーム画面をライブ動画の映像データに重畳して再描画してこれを各端末へ送信する。なお、ここで説明したゲーム処理またはその一部は、動画配信サーバ300に限らず他のサーバ、例えばゲームサーバによって行われてもよい。
なお、図1において示される各装置の数は、例示に過ぎない。例えば、観客端末200の数は、時々刻々と変化するので、0となることがあり得るし、数百、数千となることもあり得る。また、図1のライブ動画配信システムは、複数のライブ動画を並列的に生放送することができるので、配信者端末100の数も複数となり得る。さらに、図1に示されないWebサーバ、コメントサーバなどがさらに設けられてもよい。
以下、図2乃至図5を用いて、第1の役割のプレイヤーの端末としての配信者端末100の構成について詳しく説明する。なお、以降の説明では、配信者が第1の役割のプレイヤーであることを前提としているが、観客が第1の役割のプレイヤーであってもよくかかる場合の端末の構成についても必要に応じて説明を加える。
配信者端末100は、コンピュータであって、例えば、入出力制御、通信制御、そしてゲーム処理を行うプロセッサを含む。ここで、プロセッサは、典型的にはCPU(Central Processing Unit)および/またはGPU(Graphics Processing Unit)であるが、マイコン、FPGA(Field Programmable Gate Array)、DSP(Digital Signal Processor)、またはその他の汎用または専用のプロセッサなどであってもよい。
また、配信者端末100は、かかる処理を実現するためにプロセッサによって実行されるプログラムおよび当該プロセッサによって使用されるデータ、例えばユーザ入力(イベントデータ)、映像データ、ゲームデータ、などを一時的に格納するメモリを含んでいる。メモリは、かかるプログラム/データが展開されるワークエリアを有するRAM(Random Access Memory)を含み得る。
なお、配信者端末100は、全てのデータをオンメモリの状態で扱ってもよいし、一部のデータが補助記憶装置に退避されていてもよい。補助記憶装置は、例えば、配信者端末100に内蔵または外付けされたHDD(Hard Disc Drive)、SSD(Solid State Drive)、フラッシュメモリなどであってもよいし、配信者端末100からアクセス可能なデータベースサーバであってもよい。
また、配信者端末100は、複数のコンピュータの組み合わせであってよい。例えば、配信者端末100の機能部、例えば図2に示される機能部が別個のコンピュータに分散して実装されてもよい。
次に、図2を用いて配信者端末100の構成例の説明を続ける。図2の配信者端末100は、通信I/F(インタフェース) 101と、入力装置102と、出力装置103と、受信データ取得部111と、デコーダ112と、映像データ記憶部113と、出力制御部114と、ユーザ入力取得部115と、送信制御部116と、遷移制御部117と、キャラクタ管理部118と、脱落者検出部119と、描画部120と、ゲームデータ記憶部121と、映像データ取得部122と、エンコーダ123とを含む。
通信I/F 101は、ネットワーク経由で、外部装置、例えば、動画配信サーバ300またはその他のサーバ、などと通信をするためのモジュールであり得る。例えば、通信I/F 101は、Wi−Fiモジュール、4Gモジュール、5Gモジュール、などの一部または全部を含み得る。通信I/F 101は、配信者端末100に内蔵されてもよいし、配信者端末100に外付けされてもよい。
通信I/F 101は、共通のライブ動画を再生する他の端末において取得された、ゲームに関するユーザ入力(イベントデータ)を動画配信サーバ300からネットワーク経由で受信し、これを受信データ取得部111へ送る。なお、図2の例では、観客は全て第2の役割のプレイヤーであるので、かかるユーザ入力は、典型的にはゲームにおいてキャラクタの移動を制御するためのものであり得る。また、通信I/F 101は、ライブ動画の映像データを動画配信サーバ300からネットワーク経由で受信し、これを受信データ取得部111へ送ってもよい。なお、前述のように、配信者端末100は、自ら作成したライブ動画の映像データを再生してもよい。この場合には、通信I/F 101は映像データを動画配信サーバ300から受信しない。代わりに、映像データ取得部122がエンコード前の映像データを映像データ記憶部113へ送るか、エンコーダ123がエンコード済みの映像データをデコーダ112へ送ることになる。
通信I/F 101は、ユーザ入力取得部115によって取得された、ゲームに関するユーザ入力(イベントデータ)を送信制御部116から受け取り、これを動画配信サーバ300へネットワーク経由で送信する。なお、図2の例では、配信者が第1の役割のプレイヤーであるので、かかるユーザ入力は、ゲームを第1のゲーム状態、例えばだるまが振り向いていない状態、から第2のゲーム状態、例えばだるまが振り向いた状態に遷移させるためのものであり得る。
さらに、通信I/F 101は、ライブ動画のエンコードされた映像データを送信制御部116から受け取り、これを動画配信サーバ300へネットワーク経由で送信する。なお、観客が第1の役割のプレイヤーである場合には、その観客端末の通信I/Fはかかる機能を必要としない。
入力装置102は、例えば、タッチスクリーン、キーボード、マウス、テンキー、マイクロフォン、カメラ、慣性センサ、などであり得る。入力装置102は、配信者端末100に内蔵されてもよいし、配信者端末100に外付けされてもよい。
入力装置102は、第1の役割のプレイヤーとしての配信者からゲームに関する操作、例えばタッチ、タップ、スワイプ、ドラグ、クリック、などを受け付け、これに応じたユーザ入力(イベントデータ)を発生する。そして、入力装置102は、このユーザ入力をユーザ入力取得部115へ送る。
また、例えば入力装置102としてのカメラは、配信者または他の被写体を撮影して映像データを生成する。そして、この入力装置102は、映像データを映像データ取得部122へ送る。かかる映像データは、特に限定されないが、例えば図3に示される配信者の自撮り映像であってもよい。なお、観客が第1の役割のプレイヤーである場合には、その観客端末の入力装置はかかる機能を必要としない。
出力装置103は、少なくともディスプレイを含み、このほかにスピーカ、バイブレータ、などを含んでもよい。出力装置103は、配信者端末100に内蔵されてもよいし、配信者端末100に外付けされてもよい。
出力装置103は、出力制御部114から映像データを受け取り、これを出力(表示)する。また、出力装置103は、出力制御部114から音声データを受け取ってこれを出力してもよい。
受信データ取得部111は、例えば前述のプロセッサに相当し得る。受信データ取得部111は、ライブ動画のエンコードされた映像データを通信I/F 101から取得し、これをデコーダ112へ送る。また、受信データ取得部111は、このライブ動画を再生する他の端末において取得された、ゲームに関するユーザ入力、例えば当該ゲームにおいてキャラクタの移動を制御するためのユーザ入力、を通信I/F 101から取得し、これをキャラクタ管理部118へ送る。
デコーダ112は、例えば前述のプロセッサまたは専用の回路に相当し得る。デコーダ112は、ライブ動画のエンコードされた映像データを受信データ取得部111から受け取る。デコーダ112は、エンコードされた映像データを適切なコーデックに従ってデコードして映像データを再生する。なお、デコーダ112は、ビデオデコーダに加えて音声デコーダを含んでいてもよい。デコーダ112は、再生した映像データを映像データ記憶部113に書き込む。
映像データ記憶部113は、例えば前述のメモリに相当し得る。映像データ記憶部113は、デコーダ112によって再生された、ライブ動画の映像データを保存する。ゲームの非プレイ時には、この映像データは、出力制御部114によって適時、すなわち当該映像データに対応する出力タイミングの到来前に、読み出される。他方、ゲームのプレイ時に、この映像データは、後述されるように、描画部120によってゲーム画面を重畳して更新される。そして、ゲーム画面が重畳された、ライブ動画の映像データは、出力制御部114によって適時に読み出される。
出力制御部114は、例えば前述のプロセッサに相当し得る。出力制御部114は、映像データ記憶部113に保存された映像データを適時に読み出し、これを出力装置103へ送る。
ユーザ入力取得部115は、例えば前述のプロセッサに相当し得る。ユーザ入力取得部115は、ゲームに関するユーザ入力、例えばゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力、を入力装置102から取得する。ユーザ入力取得部115は、このユーザ入力を送信制御部116および遷移制御部117へ送る。
送信制御部116は、例えば前述のプロセッサに相当し得る。送信制御部116は、ユーザ入力取得部115によって取得されたユーザ入力、例えばゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力、をユーザ入力取得部115から受け取り、これを通信I/F 101へ送る。
また、送信制御部116は、ライブ動画のエンコードされた映像データをエンコーダ123から受け取り、これを通信I/F 101へ送る。なお、観客が第1の役割のプレイヤーである場合には、その観客端末の送信制御部はかかる機能を必要としない。
遷移制御部117は、例えば前述のプロセッサに相当し得る。遷移制御部117は、ユーザ入力取得部115によって取得された、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を受け取る。遷移制御部117は、このユーザ入力の履歴に基づいて、ゲームの第1のゲーム状態から第2のゲーム状態への遷移を制御する。遷移制御部117は、ゲームが第2のゲーム状態へ遷移すると、これをキャラクタ管理部118および描画部120に通知する。なお、第1の役割のプレイヤーが複数人存在する場合には、当該プレイヤーの端末からも、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力が受信され得る。この場合には、かかるユーザ入力は、受信データ取得部111から遷移制御部117へ送られ得る。
具体的には、遷移制御部117は、このユーザ入力の履歴に基づいて、第1のゲーム状態から第2のゲーム状態への遷移の進行度を算出し、この進行度が予め定められた値に到達するとゲームを第2のゲーム状態へ遷移させてもよい。
例えば、遷移制御部117は、ユーザ入力のなされた位置、回数、強度、持続時間、などに依存して、進行度を単位時間毎に再計算し得る。ここで、単位時間は、ゲームのフレーム時間であってよい。ゲームのフレーム時間は、ライブ動画のフレーム時間と同一であってもよいし、異なっていてもよい。例えば、ゲームのフレームレートをライブ動画のフレームレートよりも低くすることで、プレイヤー間の同期を容易にするとともに、配信者端末100および観客端末200における処理負荷を軽減できる。
なお、遷移制御部117は、進行度が予め定められた値に到達してからゲームを第2のゲーム状態へ遷移させるまでの間にディレイを設けてもよい。このディレイは、例えば人間の反応時間、通信の遅延時間、などに基づいて定められ得る。
また、遷移制御部117は、この進行度を描画部120へ送り、描画部120が第1の役割のプレイヤーに進行度を視覚的に把握させるための描画を行ってもよい。この具体例については後述する。
キャラクタ管理部118は、例えば前述のプロセッサに相当し得る。キャラクタ管理部118は、ゲームに登場するキャラクタの状態を管理する。なお、キャラクタ管理部118は、配信者端末100が行うゲームの仕様次第では不要となり得る。
具体的には、キャラクタ管理部118は、受信データ取得部111から、ゲームにおいて各キャラクタの移動を制御するためのユーザ入力を受け取り、この履歴に基づいて当該キャラクタの現在位置または移動量を計算する。例えば、キャラクタ管理部118は、単位時間毎に各キャラクタの移動を制御するためのユーザ入力を受け取り、これに基づいて各キャラクタの移動の有無、または当該単位時間あたりの移動量を決定し、当該キャラクタの現在位置または移動量を更新し得る。キャラクタ管理部118は、描画対象となるキャラクタの状態を示すデータを描画部120へ送る。
また、キャラクタ管理部118は、遷移制御部117によりゲームが第2のゲーム状態へ遷移したことを通知されると、各キャラクタの移動を制御するためのユーザ入力を脱落者検出部119へ送る。そして、キャラクタ管理部118は、ゲームが第2のゲーム状態にある時に移動中であるキャラクタ、すなわち脱落者に該当するキャラクタを識別するデータ(例えば、識別子)を受け取る。キャラクタ管理部118は、受け取ったデータによって識別されるキャラクタの脱落者フラグを有効にする。キャラクタ管理部118は、脱落者フラグが有効であるキャラクタを描画対象から除外してもよいししなくてもよい。例えば、かかるキャラクタは、だるまの捕虜として描画されてもよい。
なお、キャラクタ管理部118は、描画対象となるキャラクタを例えばその総数が所定数(例えば20人)以下になるように選定してもよい。これにより、ゲームの参加者数が所定数を超えて増えたとしても、ゲーム画面の描画負荷の増加を抑制できる。
描画対象となるキャラクタの選定は、例えばターン毎に行われ得る。故に、ターンの切り替わり時に、ゲーム画面中に描画されるキャラクタが追加、削除または変更されてもよい。ここで、ターンとは、例えば、だるまがキャラクタに背を向け(この状態を第3のゲーム状態と呼ぶこともできる)、だるまがかけ声を新たに唱え(第1のゲーム状態)、だるまが振り向き(第2のゲーム状態)、だるまがまたキャラクタに背を向ける(第3のゲーム状態)までのゲームサイクルを意味する。なお、第3のゲーム状態は、第1のゲーム状態と区別されてもよいし区別されなくてもよい。1ターンでゲームが終了しなければ、複数ターンに亘ってゲームは継続することになる。キャラクタ管理部118は、描画対象となるキャラクタをランダムに選定してもよいし、だるまに近い位置に居るキャラクタを優先的に選択してもよい。
さらに、キャラクタ管理部118は、全てのキャラクタが脱落者として検出された場合には、キャラクタの敗北、またはだるまの勝利を表現する演出画像の描画を描画部120に命令してもよい。他方、キャラクタ管理部118は、いずれかのキャラクタが予め定められた位置に到達し場合に、キャラクタの勝利、またはだるまの敗北を表現する演出画像の描画を描画部120に命令してもよい。
脱落者検出部119は、例えば前述のプロセッサに相当し得る。なお、脱落者検出部119は、配信者端末100が行うゲームのルール次第では不要となり得る。脱落者検出部119は、ゲームが第2のゲーム状態に遷移すると、キャラクタ管理部118から各キャラクタの移動を制御するためのユーザ入力を受け取る。脱落者検出部119は、このユーザ入力に基づいて脱落者を検出し、脱落者に該当するキャラクタを識別するデータをキャラクタ管理部118に返す。脱落者検出部119は、例えば、ユーザ入力に基づいて決定される単位時間あたりの移動量が閾値(これは、0であってもよい)を超えたキャラクタを脱落者として検出し得る。
描画部120は、例えば前述のプロセッサに相当し得る。描画部120は、キャラクタ管理部118から描画対象となるキャラクタの状態を示すデータを受け取り、ゲームデータ記憶部121からゲームデータ、例えばキャラクタおよびだるまの素材データなど、を読み出す。描画部120は、単位時間毎に、映像データ記憶部113からリアルタイムコンテンツの映像データを読み出し、当該映像データに重畳してゲーム画面を描画する。
描画部120は、現在のゲーム状態に関わらず、ゲーム画面の一部として、第1の役割のプレイヤーのための種々のUIを描画し得る。例えば、描画部120は、遷移制御部117から受け取った進行度をスライダの位置によって表現するシークバーを描画してもよい。これにより、第1の役割のプレイヤーは、現在の進行度を視覚的に把握することができる。なお、このシークバーは、第1の役割のプレイヤーからスライダの位置を動かす操作に応じてゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を発生させるためにも利用され得る。或いは、描画部120はボタンを描画してもよく、このボタンが第1の役割のプレイヤーが当該ボタンを選択する操作(例えば、タッチ、タップ、クリック、スワイプ、など)に応じてゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を発生させるために利用されてもよい。なお、描画部120によって描画されたボタンの代わりに、入力装置102に含まれる物理ボタンがかかるユーザ入力を発生させるために利用されてもよい。
例えば、描画部120は、ゲームが第1のゲーム状態にある間は、描画対象のキャラクタのうち脱落者を除くキャラクタの描画位置を、当該キャラクタの現在位置(これは、このキャラクタの移動を制御する入力の履歴に依存して決まる)を示すデータに従って再描画する。
これにより、例えば図4に例示されるように、各キャラクタが対応するプレイヤーの操作に応じて移動するゲーム画面を演出することができる。図4のゲーム画面は、キャラクタおよびだるまの画像に加えて、第1の役割のプレイヤー用のUIとして、前述のシークバーを含む。これにより、第1の役割のプレイヤーは、現在の進行度を視覚的に把握することができる。また、このゲーム画面では、だるまが唱えるかけ声が記載されたテキスト表示部がシークバーと平行に配置されており、このテキストはスライダ位置を基準に左側と右側とで表示態様(例えばフォント、色など)が異なる。このテキストは、シークバー内の位置がかけ声のどの部分に対応するかを第1の役割のプレイヤーが把握するのに役立つ。他方、かかるシークバーおよびテキストは、ゲームの緊張感を保つために第2の役割のプレイヤーのUIからは省略されてよい。
また、図4のゲーム画面は、第1の役割のプレイヤーおよび第2の役割のプレイヤー共通のUIとして、だるまが唱えるかけ声のうち現在どの部分(文字または単語)を読み上げているかを示す吹き出しをさらに含む。これにより、第2の役割のプレイヤーも第1の役割のプレイヤーに比べて粗い精度ではあるものの、現在の進行度を視覚的に把握することができる。なお、吹き出しは一例に過ぎず、その他のテキストまたは画像に置き換えられてよいし、かけ声が音声で読みあげられてもよい。さらに、このゲーム画面は、キャラクタの目標地点となるゴールラインがキャラクタとだるまとの間に配置されている。これにより、第2の役割のプレイヤーがどこまで移動すれば勝利できるのかを理解できる。加えて、このゲーム画面は、ターン終了までの残り時間の表示部も含む。この残り時間が0になると、ターンが強制的に終了する(すなわち、ゲームが第1のゲーム状態から第3のゲーム状態に遷移する)。
さらに、図4のゲーム画面は、「フェイント」ボタンを含む。前述の第3のゲーム状態の間に、第1の役割のプレイヤーがこのボタンを選択する操作をすると、ゲームは第2のゲーム状態へ再遷移する。すなわち、移動中のキャラクタが脱落者に追加され得る。第2の役割のプレイヤーからすると、だるまが元の姿勢に復帰した後に、すぐに新たにかけ声を唱え始めるのか(第1のゲーム状態に遷移するのか)、それともフェイントを入れて振り向いてくるかが判らないので、リスクを取って移動すべきか否かの駆け引きを楽しむことができる。なお、第3のゲーム状態の間に、第1の役割のプレイヤーがシークバーをタップするなどの操作をすると、ゲームは第1のゲーム状態に遷移する。
そして、描画部120は、遷移制御部117によりゲームが第2のゲーム状態へ遷移したことを通知されると、例えば図5に例示されるように、だるまが振り向いた画像を含むゲーム画面を描画してもよい。また、描画部120は、描画対象のキャラクタのうち脱落者として検出されたキャラクタを、ゲーム画面から消去してもよいし、例えばだるまの捕虜として描画し続けてもよい。また、このゲーム画面では、前述のスライダはシークバーの終点(右端)に位置している。さらに、このゲーム画面では、かけ声の最後の文字である「だ」が読み上げられたことを示す吹き出しを含む。
さらに、描画部120は、キャラクタ管理部118からの命令に従って、前述のキャラクタの敗北、もしくはだるまの勝利を表現する演出画像、または前述のキャラクタの勝利、またはだるまの敗北を表現する演出画像を描画し得る。
ゲームデータ記憶部121は、例えば前述のメモリに相当し得る。ゲームデータ記憶部121は、ゲーム(アプリケーション)によって使用される種々のゲームデータを保存する。ゲームデータは、例えばゲーム画面の描画および出力音声を制御するために必要とされる素材データを含み得る。素材データは、例えば、キャラクタ、オブジェクト、背景、ビジュアルエフェクト(Visual Effect)などの画像データ、効果音(SE:Sound Effect)、BGM(Background Music)、キャラクターボイス(Character Voice)、などの音声データ、振動パターン、などであり得る。なお、後述される第2の実施形態では、配信者端末100および観客端末200は、ゲーム画面の描画/出力音声の制御を行わないので、素材データを保存しなくてもよい。ゲームデータは、ゲームの開始時にダウンロードされゲームデータ記憶部121に一時的に書き込まれてもよいし、ゲームのインストールまたはアップデート時にゲームデータ記憶部121に書き込まれ、または書き換えられ得る。ゲームデータは、描画部120によって読み出される。
映像データ取得部122は、例えば前述のプロセッサに相当し得る。ライブ動画の映像データを例えば入力装置102としてのカメラまたはその他の映像ソースから取得し、これをエンコーダ123へ送る。なお、観客が第1の役割のプレイヤーである場合には、その観客端末は映像データ取得部122に相当する機能部を必要としない。
エンコーダ123は、例えば前述のプロセッサまたは専用の回路に相当し得る。エンコーダ123は、ライブ動画の映像データを映像データ取得部122から受け取り、これを適切なコーデックに従ってエンコードする。そして、エンコーダ123は、ライブ動画のエンコードされた映像データを送信制御部116へ送る。なお、観客が第1の役割のプレイヤーである場合には、その観客端末はエンコーダ123に相当する機能部を必要としない。
次に、図6および図7を用いて、第2の役割のプレイヤーの端末としての観客端末200の構成について詳しく説明する。観客端末200は、コンピュータであって、配信者端末100と同様のハードウェア構成、例えばプロセッサおよびメモリ、を有し得る。また、観客端末200は、複数のコンピュータの組み合わせであってよい。例えば、観客端末200の機能部、例えば図6に示される機能部が別個のコンピュータに分散して実装されてもよい。
次に、図6を用いて観客端末200の構成例の説明を続ける。図6の観客端末200は、通信I/F 201と、入力装置202と、出力装置203と、受信データ取得部211と、デコーダ212と、映像データ記憶部213と、出力制御部214と、ユーザ入力取得部215と、送信制御部216と、遷移制御部217と、キャラクタ管理部218と、脱落者検出部219と、描画部220と、ゲームデータ記憶部221とを含む。
図6の出力装置203、デコーダ212、映像データ記憶部213、出力制御部214、脱落者検出部219およびゲームデータ記憶部221はそれぞれ、図2の出力装置103、デコーダ112、映像データ記憶部113、出力制御部114、脱落者検出部119およびゲームデータ記憶部121と同一または類似の構成であってよいので説明を省略する。
通信I/F 201は、前述の通信I/F 101と同様のハードウェアであり得る。通信I/F 201は、観客端末200に内蔵されてもよいし、観客端末200に外付けされてもよい。
通信I/F 201は、共通のライブ動画を再生する他の端末において取得された、ゲームに関するユーザ入力を動画配信サーバ300からネットワーク経由で受信し、これを受信データ取得部211へ送る。なお、かかるユーザ入力は、ゲームにおいてキャラクタの移動を制御するためのものと、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのものとであり得る。また、通信I/F 201は、ライブ動画の映像データを動画配信サーバ300からネットワーク経由で受信し、これを受信データ取得部211へ送る。
通信I/F 201は、ユーザ入力取得部215によって取得された、ゲームに関するユーザ入力を送信制御部216から受け取り、これを動画配信サーバ300へネットワーク経由で送信する。なお、図6の例では、観客端末200の操作者である観客は第2の役割のプレイヤーであるので、かかるユーザ入力は、当該観客に対応するキャラクタの移動を制御するためのものであり得る。
入力装置202は、前述の入力装置102と同様のハードウェアであり得る。入力装置202は、観客端末200に内蔵されてもよいし、観客端末200に外付けされてもよい。入力装置202は、第1の役割のプレイヤーとしての配信者からゲームに関する操作を受け付け、これに応じたユーザ入力を発生する。そして、入力装置202は、このユーザ入力をユーザ入力取得部215へ送る。
受信データ取得部211は、例えば前述のプロセッサに相当し得る。受信データ取得部211は、ライブ動画のエンコードされた映像データを通信I/F 201から取得し、これをデコーダ212へ送る。また、受信データ取得部211は、このライブ動画を再生する他の端末(第2の役割のプレイヤーの端末)において取得された、ゲームに関するユーザ入力、例えば当該ゲームにおいてキャラクタの移動を制御するためのユーザ入力、を通信I/F 201から取得し、これをキャラクタ管理部218へ送る。さらに、受信データ取得部211は、このライブ動画を再生する他の端末(第1の役割のプレイヤーの端末)において取得された、ゲームに関するユーザ入力、例えば当該ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力、を通信I/F 201から取得し、これを遷移制御部217へ送る。
ユーザ入力取得部215は、例えば前述のプロセッサに相当し得る。ユーザ入力取得部215は、ゲームに関するユーザ入力、例えば観客端末200の操作者に対応するキャラクタの移動を制御するためのユーザ入力、を入力装置202から取得する。ユーザ入力取得部215は、このユーザ入力を送信制御部216およびキャラクタ管理部218へ送る。
送信制御部216は、例えば前述のプロセッサに相当し得る。送信制御部216は、ユーザ入力取得部215によって取得されたユーザ入力、例えばゲームにおいてキャラクタの移動を制御するためのユーザ入力、をユーザ入力取得部215から受け取り、これを通信I/F 201へ送る。
遷移制御部217は、例えば前述のプロセッサに相当し得る。遷移制御部217は、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を受信データ取得部211から受け取る。遷移制御部217は、このユーザ入力の履歴に基づいて、ゲームの第1のゲーム状態から第2のゲーム状態への遷移を制御する。遷移制御部217は、ゲームが第2のゲーム状態へ遷移すると、これをキャラクタ管理部218および描画部220に通知する。かかるユーザ入力の履歴に基づいて遷移制御部217によって行われる処理は、前述の遷移制御部117と同一または類似であってよい。
キャラクタ管理部218は、例えば前述のプロセッサに相当し得る。キャラクタ管理部218は、ゲームに登場するキャラクタの状態を管理する。なお、キャラクタ管理部218は、観客端末200が行うゲームの仕様次第では不要となり得る。
具体的には、キャラクタ管理部218は、受信データ取得部211およびユーザ入力取得部215から、ゲームにおいて各キャラクタの移動を制御するためのユーザ入力を受け取り、この履歴に基づいて当該キャラクタの現在位置または移動量を計算する。ここで、キャラクタ管理部218によって行われる処理は、基本的に前述のキャラクタ管理部118と同一または類似であってよい。
ただし、オプションとして、キャラクタ管理部218は、観客端末200の操作者に対応するキャラクタを、当該キャラクタが脱落者として検出されない限りは描画対象のキャラクタとして選定するようにしてもよい。これにより、ゲームの参加者数が所定数を超えて増えたとしても、ゲーム画面の描画負荷の増加を抑制しつつ各プレイヤーは自らのキャラクタの現在位置を視認しながらゲームをプレイすることが可能となる。
描画部220は、例えば前述のプロセッサに相当し得る。描画部220は、キャラクタ管理部218から描画対象となるキャラクタの状態を示すデータを受け取り、ゲームデータ記憶部221からゲームデータ、例えばキャラクタおよびだるまの素材データなど、を読み出す。描画部220は、単位時間毎に、映像データ記憶部213からリアルタイムコンテンツの映像データを読み出し、当該映像データに重畳してゲーム画面を描画する。
描画部220は、現在のゲーム状態に関わらず、ゲーム画面の一部として、第2の役割のプレイヤーのための種々のUIを描画し得る。例えば、描画部220は、図7に例示されるように「進む」ボタンを描画してもよく、このボタンが第2の役割のプレイヤーが当該ボタンを選択する操作(例えば、タッチ、タップ、クリップ、など)に応じて当該プレイヤーに対応するキャラクタの移動を制御するためのユーザ入力を発生させるために利用されてもよい。なお、描画部220によって描画されたボタンの代わりに、入力装置202に含まれる物理ボタンがかかるユーザ入力を発生させるために利用されてもよい。
例えば、描画部220は、ゲームが第1のゲーム状態にある間は、描画対象のキャラクタのうち脱落者を除くキャラクタの描画位置を、当該キャラクタの現在位置を示すデータに従って再描画する。
これにより、例えば図7に例示されるように、各キャラクタが対応するプレイヤーの操作に応じて移動するゲーム画面を演出することができる。図7のゲーム画面は、図4および図5のゲーム画面とは異なり、第1の役割のプレイヤー向けのUI、例えば、シークバーおよびこれと平行に配置されたテキスト表示部、および「フェイント」ボタンを含まない。また、観客端末200の操作者に対応するキャラクタと他の参加者に対応するキャラクタとを容易に区別できるようにするために、両者の表示態様を異ならせている。他方、図7のゲーム画面では、図4および図5のゲーム画面と同様に、第1の役割のプレイヤーおよび第2の役割のプレイヤー共通のUI、例えば、吹き出しおよび残り時間の表示部を含む。
なお、観客は、ゲームに参加せずにゲームを視聴することもできる。かかる観客向けの観客端末200は、当該観客自身からのゲームに関するユーザ入力を扱う必要がないので、前述のユーザ入力取得部215および送信制御部216の機能の一部または全部を必要としない。
また、配信者は、第2の役割のプレイヤーとしてゲームに参加してもよい。かかる配信者向けの配信者端末100は、図2の機能部の一部を変形すればよい。例えば、受信データ取得部111は、第1の役割のプレイヤーの観客端末200から受信された、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を取得するので、これを遷移制御部117へ送ればよい。また、ユーザ入力取得部115は、配信者に対応するキャラクタの移動を制御するユーザ入力を取得するので、これをキャラクタ管理部118へ送ればよい。さらに、配信者は、ゲームに参加せずにゲームを視聴することもできる。かかる配信者向けの配信者端末100は、当該配信者自身からのゲームに関するユーザ入力を扱う必要がないので、前述のユーザ入力取得部115および送信制御部116の機能の一部または全部を必要としない。
次に、図8を用いて、第1の役割のプレイヤーの端末としての配信者端末100の動作を説明する。図8の動作は、ステップS401から開始する。
ステップS401において、キャラクタ管理部118および描画部120は、ターン開始処理を行う。具体的には、キャラクタ管理部118は、描画対象となるキャラクタを選定し、選定したキャラクタの状態を示すデータを描画部120へ送る。描画部120は、このデータに基づいてゲーム画面を描画する。ステップS401の後に、処理はステップS402へ進む。
ステップS402において、入力装置102およびユーザ入力取得部115は、例えばUIに含まれるシークバーへの操作に応じて、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力を取得し、送信制御部116および通信I/F 101はこれを動画配信サーバ300へ送信する。他方、通信I/F 101および受信データ取得部111は、他の端末(第2の役割のプレイヤーの端末)において取得されたユーザ入力を受信する(ステップS403)。
遷移制御部117は、ステップS402において取得されたユーザ入力に基づいて、第1のゲーム状態から第2のゲーム状態への進行度を算出する(ステップS404)。遷移制御部117は、ステップS404において算出した進行度に基づいて、ゲームを第2のゲーム状態へ遷移させるか否かを決定する(ステップS405)。ゲームを第2のゲーム状態へ遷移させる場合には処理はステップS411へ進み、そうでなければ処理はステップS406へ進む。
ステップS406において、キャラクタ管理部118はステップS403において受信したユーザ入力に基づいて各キャラクタの現在位置を更新し、いずれかのキャラクタがゲームをクリアしたか否か、例えば予め定められたゴールラインに到達したキャラクタが存在するか否か、を判定する。いずれかのキャラクタがゲームをクリアしたと判定された場合には処理はステップS409へ進み、そうでなければ処理はステップS407へ進む。
ステップS407において、描画部120は、各キャラクタの現在位置に応じたゲーム画面を描画する。そして、出力制御部114および出力装置103はステップS407において描画された1単位時間分のゲーム画面が重畳されたライブ動画の映像データを出力する(ステップS408)。ステップS408の後に、処理はステップS402に戻る。
ステップS409において、描画部120は、キャラクタの勝利、またはだるまの敗北を表現する演出画像を含むゲーム画面を描画する。そして、出力制御部114および出力装置103はステップS409において描画された1単位時間分のゲーム画面が重畳されたライブ動画の映像データを出力する(ステップS410)。ステップS410の後に、図8の動作は終了する。
ステップS411において、脱落者検出部119はステップS402において受信されたユーザ入力に基づいて脱落者を検出する。次に、キャラクタ管理部118は、ステップS411の結果、全てのキャラクタが脱落者として検出されたか否かを判定する(ステップS412)。全員が脱落したならば処理はステップS415へ進み、そうでなければ処理はステップS413へ進む。
ステップS413において、描画部120は、例えばだるまが振り向いた画像を含むゲーム画面を描画する。そして、出力制御部114および出力装置103はステップS413において描画された1単位時間分のゲーム画面が重畳されたライブ動画の映像データを出力する(ステップS414)。ステップS414の後に、処理はステップS401に戻る。
ステップS415において、描画部120は、キャラクタの敗北、またはだるまの処理を表現する演出画像を含むゲーム画面を描画する。そして、出力制御部114および出力装置103はステップS415において描画された1単位時間分のゲーム画面が重畳されたライブ動画の映像データを出力する(ステップS416)。ステップS416の後に、図8の動作は終了する。
次に、図9を用いて、第2の役割のプレイヤーの端末としての観客端末200の動作を説明する。なお、図9のステップS501、ステップS505、およびステップS507乃至ステップS516は、図8のステップS401、ステップS405、およびステップS407乃至ステップS416とそれぞれ同一または類似の処理であってよいので説明を省略する。
ステップS502において、入力装置202およびユーザ入力取得部215は、例えばUIに含まれる「進む」ボタンへの操作に応じて、この観客端末200の操作者に対応するキャラクタの移動を制御するためのユーザ入力を取得し、送信制御部216および通信I/F 201はこれを動画配信サーバ300へ送信する。他方、通信I/F 201および受信データ取得部211は、他の端末(第1の役割のプレイヤーの端末または第2の役割のプレイヤーの端末)において取得されたユーザ入力を受信する(ステップS503)。
遷移制御部217は、ステップS503において受信された、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力に基づいて、第1のゲーム状態から第2のゲーム状態への進行度を算出する(ステップS504)。
ステップS506において、キャラクタ管理部218は、ステップS502において取得したユーザ入力と、ステップS503において受信した、キャラクタの移動を制御するためのユーザ入力とに基づいて各キャラクタの現在位置を更新し、いずれかのキャラクタがゲームをクリアしたか否かを判定する。いずれかのキャラクタがゲームをクリアしたと判定された場合には処理はステップS509へ進み、そうでなければ処理はステップS507へ進む。
以上説明したように、第1の実施形態に係る端末は、リアルタイムコンテンツの配信時に起動可能なリアルタイムゲームに関するユーザ入力を取得し、当該リアルタイムコンテンツを再生中の他の端末へサーバを介して送信する。そして、各端末は、自ら取得したユーザ入力および/またはサーバを介して受信したユーザ入力に基づいて、ゲーム状態の遷移を制御し、ゲーム状態に応じたゲーム画面をリアルタイムコンテンツの映像データに重畳して描画する。故に、この端末によれば、リアルタイムコンテンツの配信者および視聴者が、当該リアルコンテンツと共に楽しむことのできるゲーム体験を提供することができる。
さらに、第1の役割のプレイヤーの端末は、当該プレイヤーのUIとして、ゲーム状態の遷移の進行度を表示するGUI部品、例えばシークバー、などを含み得る。これにより、第1の役割のプレイヤーは、ゲーム状態の遷移の進行の速さなどを直感的に操ることができる。
なお、本実施形態において、サーバは、ゲームのプレイヤーの端末から受信したユーザ入力を全てそのままプレイヤーおよび視聴者の端末へ送信することを前提に説明したが、これは一例に過ぎない。サーバは、受信したユーザ入力の一部をフィルタリング、例えば破棄、してから各端末へ送信してもよいし、受信したユーザ入力の一部または全部を要約してから各端末へ送信してもよい。ここで、要約とは、例えばサーバがあるキャラクタを単位距離移動させるユーザ入力を3回受信した場合に、これをあるキャラクタを3単位距離移動させる1つのユーザ入力に変換する処理、などであり得る。サーバは、かかるフィルタリングおよび/または要約を、定常的に行ってもよいし、対象となるゲームに関わるデータ通信量が閾値を超えている場合、などの条件付きで行ってもよい。
(第2の実施形態)
第2の実施形態では、動画配信サーバ300が、各端末からユーザ入力を受信し、ゲーム処理を集中的に行う。故に、配信者端末100および観客端末200は、ゲームに関するユーザ入力を取得し、動画配信サーバ300へ送信する以外の機能を必要としない。故に、配信者端末100から、図2の遷移制御部117、キャラクタ管理部118、脱落者検出部119、描画部120およびゲームデータ記憶部121は省略され得る。同様に、観客端末200から図6の遷移制御部217、キャラクタ管理部218、脱落者検出部219、描画部220およびゲームデータ記憶部221は省略され得る。
次に、図10を用いて、第2の実施形態に係る動画配信サーバ300の構成について詳しく説明する。
動画配信サーバ300は、コンピュータであって、配信者端末100および/または観客端末200と同様のハードウェア構成、例えばプロセッサおよびメモリ、を有し得る。また、動画配信サーバ300は、複数のコンピュータの組み合わせであってよい。例えば、動画配信サーバ300の機能部、例えば図10に示される機能部が別個のコンピュータに分散して実装されてもよい。
次に、図10を用いて動画配信サーバ300の構成例の説明を続ける。図10の動画配信サーバ300は、通信I/F 301と、受信データ取得部311と、デコーダ312と、映像データ記憶部313と、送信制御部316と、遷移制御部317と、キャラクタ管理部318と、脱落者検出部319と、描画部320と、ゲームデータ記憶部321と、エンコーダ323とを含む。
図10のデコーダ312、遷移制御部317、脱落者検出部319およびゲームデータ記憶部321は、それぞれ図6のデコーダ212、遷移制御部217、脱落者検出部219およびゲームデータ記憶部221と同一または類似の構成であってよいので説明を省略する。
通信I/F 301は、前述の通信I/F 101および/または通信I/F 201と同様のハードウェアであり得る。通信I/F 301は、動画配信サーバ300に内蔵されてもよいし、動画配信サーバ300に外付けされてもよい。
通信I/F 301は、共通のライブ動画を再生する各端末において取得された、ゲームに関するユーザ入力を動画配信サーバ300からネットワーク経由で受信し、これを受信データ取得部311へ送る。なお、かかるユーザ入力は、ゲームにおいてキャラクタの移動を制御するためのものと、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのものとであり得る。また、通信I/F 301は、ライブ動画の映像データを配信者端末100からネットワーク経由で受信し、これを受信データ取得部311へ送ってもよい。
通信I/F 301は、ライブ動画のエンコードされた映像データを送信制御部316から受け取り、これを当該ライブ動画を再生中の各端末へネットワーク経由で送信する。ゲームのプレイ時には、この映像データには描画部320によってゲーム画面が重畳されている。
受信データ取得部311は、例えば前述のプロセッサに相当し得る。受信データ取得部311は、ライブ動画のエンコードされた映像データを通信I/F 301から取得し、これをデコーダ312へ送る。また、受信データ取得部311は、このライブ動画を再生する各端末(第2の役割のプレイヤーの端末)において取得された、ゲームに関するユーザ入力、例えば当該ゲームにおいてキャラクタの移動を制御するためのユーザ入力、を通信I/F 301から取得し、これをキャラクタ管理部318へ送る。さらに、受信データ取得部311は、このライブ動画を再生する配信者端末100または観客端末200(第1の役割のプレイヤーの端末)において取得された、ゲームに関するユーザ入力、例えば当該ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力、を通信I/F 301から取得し、これを遷移制御部317へ送る。
映像データ記憶部313は、例えば前述のメモリに相当し得る。映像データ記憶部313は、デコーダ312によって再生された、ライブ動画の映像データを保存する。ゲームの非プレイ時には、この映像データは、エンコーダ323によって適時、すなわち当該映像データに対応する送信タイミングの到来前に、読み出される。他方、ゲームのプレイ時に、この映像データは、後述されるように、描画部320によってゲーム画面を重畳して更新される。そして、ゲーム画面が重畳された、ライブ動画の映像データは、エンコーダ323によって適時に読み出される。
送信制御部316は、ライブ動画のエンコードされた映像データをエンコーダ323から受け取り、これを通信I/F 301へ送る。前述のように、ゲームのプレイ時には、この映像データには描画部320によってゲーム画面が重畳されている。
キャラクタ管理部318は、例えば前述のプロセッサに相当し得る。キャラクタ管理部318は、ゲームに登場するキャラクタの状態を管理する。なお、キャラクタ管理部318は、観客端末200が行うゲームの仕様次第では不要となり得る。
具体的には、キャラクタ管理部318は、受信データ取得部311から、ゲームにおいて各キャラクタの移動を制御するためのユーザ入力を受け取り、この履歴に基づいて当該キャラクタの現在位置または移動量を計算する。ここで、キャラクタ管理部318によって行われる処理は、基本的に前述のキャラクタ管理部118またはキャラクタ管理部218と同一または類似であってよい。
描画部320は、例えば前述のプロセッサに相当し得る。描画部320は、キャラクタ管理部318から描画対象となるキャラクタの状態を示すデータを受け取り、ゲームデータ記憶部321からゲームデータ、例えばキャラクタおよびだるまの素材データなど、を読み出す。描画部320は、単位時間毎に、映像データ記憶部313からリアルタイムコンテンツの映像データを読み出し、当該映像データに重畳してゲーム画面を描画する。
なお、前述のように、第1の役割のプレイヤーと第2の役割のプレイヤーとでUIは異なり得る。故に、描画部320は、各プレイヤー共通のゲーム画面を描画し、プレイヤー間で異なるUI部分は各端末において描画されてもよい。或いは、動画配信サーバ300は、第1の役割のプレイヤー用の映像データと、第2の役割のプレイヤー用の映像データとを並列的に描画し、配信してもよい。
エンコーダ323は、例えば前述のプロセッサまたは専用の回路に相当し得る。エンコーダ323は、映像データ記憶部313に保存された映像データを適時に読み出し、これを適切なコーデックに従ってエンコードする。そして、エンコーダ323は、ライブ動画のエンコードされた映像データを送信制御部316へ送る。
次に、図11を用いて、動画配信サーバ300の動作を説明する。なお、図11のステップS605、ステップS607、ステップS609、ステップS611乃至ステップS613およびステップS615は、図8のステップS405、ステップS407、ステップS409、ステップS411乃至ステップS413およびステップS415とそれぞれ同一または類似の処理であってよいので説明を省略する。
図11の動作は、ステップS601から開始する。ステップS601において、キャラクタ管理部318および描画部320は、ターン開始処理を行う。ステップS601の後に、処理はステップS603へ進む。
ステップS603において、通信I/F 301および受信データ取得部311は、各端末において取得されたユーザ入力を受信する。
遷移制御部317は、ステップS603において受信された、ゲームを第1のゲーム状態から第2のゲーム状態に遷移させるためのユーザ入力に基づいて、第1のゲーム状態から第2のゲーム状態への進行度を算出する(ステップS604)。
ステップS606において、キャラクタ管理部318は、ステップS603において受信した、キャラクタの移動を制御するためのユーザ入力に基づいて各キャラクタの現在位置を更新し、いずれかのキャラクタがゲームをクリアしたか否かを判定する。いずれかのキャラクタがゲームをクリアしたと判定された場合には処理はステップS609へ進み、そうでなければ処理はステップS607へ進む。
ステップS608において、エンコーダ323は、ステップS607において描画されたゲーム画面が重畳されたライブ動画の映像データをエンコードし、送信制御部316および通信I/F 301はこれを各端末へ送信する。ステップS608の後に、処理はステップS603に戻る。
ステップS610において、エンコーダ323は、ステップS609において描画されたゲーム画面が重畳されたライブ動画の映像データをエンコードし、送信制御部316および通信I/F 301はこれを各端末へ送信する。ステップS610の後に、図11の動作は終了する。
ステップS614において、エンコーダ323は、ステップS613において描画されたゲーム画面が重畳されたライブ動画の映像データをエンコードし、送信制御部316および通信I/F 301はこれを各端末へ送信する。ステップS614の後に、処理はステップS601に戻る。
ステップS616において、エンコーダ323は、ステップS613において描画されたゲーム画面が重畳されたライブ動画の映像データをエンコードし、送信制御部316および通信I/F 301はこれを各端末へ送信する。ステップS616の後に、図11の動作は終了する。
以上説明したように、第2の実施形態に係るサーバは、リアルタイムコンテンツの配信時に起動可能なリアルタイムゲームに関するユーザ入力を当該ゲームの参加者の各端末から受信する。そして、このサーバは、受信したユーザ入力に基づいて、ゲーム状態の遷移を制御し、ゲーム状態に応じたゲーム画面をリアルタイムコンテンツの映像データに重畳して描画する。それから、このサーバは、ゲーム画面を重畳した、リアルタイムコンテンツの映像データを、当該リアルタイムコンテンツを再生中の各端末へ送信する。故に、このサーバによれば、リアルタイムコンテンツの配信者および視聴者が、当該リアルコンテンツと共に楽しむことのできるゲーム体験を提供することができる。
また、本実施形態において、サーバは必ずしも全てのゲーム処理を担当せずともよく、サーバおよび端末は必要に応じてゲーム処理を分担してもよい。具体的には、サーバは、ユーザ入力の処理、例えば、ゲーム状態の制御、キャラクタの状態の管理、脱落者の検出、その他の判定処理、など、を行い、描画に必要なデータを生成して端末に送信してもよい。そして、端末は、サーバから受信したデータに基づいて、残りの処理、例えば描画処理、を行ってもよい。この場合に、動画配信サーバ300は、遷移制御部317、キャラクタ管理部318、および脱落者検出部319を備える必要があるものの、描画部320を備えなくてもよい。他方、配信者端末100は、描画部120を備える必要があるものの、遷移制御部117、キャラクタ管理部118、および脱落者検出部119を備えなくてもよい。同様に、観客端末200は、描画部220を備える必要があるものの、遷移制御部217、キャラクタ管理部218、および脱落者検出部219を備えなくてもよい。
(変形例)
実施形態の説明では、ゲーム画面およびリアルタイムコンテンツが2D映像であることとした。しかしながら、これらは、3D映像であってもよい。例えば、VR、ARまたはMR(Mixed Reality)などの3次元空間に、2次元または3次元のゲーム画面が描画されてもよい。
また、実施形態の説明では、ライブ動画の配信時に実行されるリアルタイムゲームについて説明したが、ライブ動画以外のコンテンツ、例えば、予め作成され動画配信サーバに保存されている動画の映像データの再生時に、当該動画の観客がかかるゲームを実行できるようにしてもよい。
また、実施形態の説明では、ライブ動画の配信時に起動可能なリアルタイムゲームを主に説明した。しかしながら、例えば前述のシークバーなどの第1の役割のプレイヤーのUIは、リアルタイムコンテンツに付随する様々な対象の状態を直感的に操るためのユーザ入力を受け付ける汎用UIとしても応用可能である。
この場合に、端末または動画配信サーバは、かかるユーザ入力のなされる度に、その画面内位置、例えばスライダの位置、に基づいて、対象の状態を決定する状態制御部を備えていてもよい。この状態制御部は、例えばプロセッサに相当し得る。また、これらの端末または動画配信サーバにおいて、描画部は、決定された状態に応じて、対象を単位時間毎にリアルタイムコンテンツの映像データに重畳して再描画してもよい。
具体的には、リアルタイムコンテンツ、例えば仮想空間のライブ動画、に含まれる仮想オブジェクト、例えば、アバター、動物、ロボット、乗り物、などの状態、例えば、速度、加速度、姿勢、位置、などを制御するために、このUIが使用されてもよい。
また、リアルタイムコンテンツとともに再生可能なコンテンツ、例えば、ライブ動画において引用された他の非ライブ動画、などの状態、例えば、再生位置、再生速度、コマ送り位置、コマ送り速度、などを制御するためにこのUIが使用されてもよい。
なお、UIは、シークバーのような1次元の位置情報を扱うものに限られず、2次元以上の位置情報を扱うものであってもよい。例えば、ある2次元位置を指定するユーザ入力がなされた場合に、X座標に基づいて対象の速度を制御し、Y座標に基づいて対象の加速度を制御してもよい。
上述の実施形態は、本発明の概念の理解を助けるための具体例を示しているに過ぎず、本発明の範囲を限定することを意図されていない。実施形態は、本発明の要旨を逸脱しない範囲で、様々な構成要素の付加、削除または転換をすることができる。
上述の実施形態では、いくつかの機能部を説明したが、これらは各機能部の実装の一例に過ぎない。例えば、1つの装置に実装されると説明された複数の機能部が複数の別々の装置に亘って実装されることもあり得るし、逆に複数の別々の装置に亘って実装されると説明された機能部が1つの装置に実装されることもあり得る。
上記各実施形態において説明された種々の機能部は、回路を用いることで実現されてもよい。回路は、特定の機能を実現する専用回路であってもよいし、プロセッサのような汎用回路であってもよい。
上記各実施形態の処理の少なくとも一部は、例えば汎用のコンピュータに搭載されたプロセッサを基本ハードウェアとして用いることでも実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなどである。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。