(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024107785
(43)【公開日】2024-08-09
(54)【発明の名称】映像送信システム
(51)【国際特許分類】
A63F 13/355 20140101AFI20240802BHJP
A63F 13/47 20140101ALI20240802BHJP
A63F 13/42 20140101ALI20240802BHJP
G06T 19/00 20110101ALI20240802BHJP
G06F 3/01 20060101ALI20240802BHJP
【FI】
A63F13/355
A63F13/47
A63F13/42
G06T19/00 A
G06F3/01 510
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023011888
(22)【出願日】2023-01-30
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100119677
【弁理士】
【氏名又は名称】岡田 賢治
(74)【代理人】
【識別番号】100160495
【弁理士】
【氏名又は名称】畑 雅明
(74)【代理人】
【識別番号】100115794
【弁理士】
【氏名又は名称】今下 勝博
(72)【発明者】
【氏名】福井 達也
(72)【発明者】
【氏名】藤原 稔久
(72)【発明者】
【氏名】小野 央也
(72)【発明者】
【氏名】成川 聖
(72)【発明者】
【氏名】藤橋 卓也
(72)【発明者】
【氏名】石岡 卓将
(72)【発明者】
【氏名】猿渡 俊介
(72)【発明者】
【氏名】渡邊 尚
【テーマコード(参考)】
5B050
5E555
【Fターム(参考)】
5B050AA10
5B050CA07
5B050CA08
5B050EA09
5B050EA27
5B050FA08
5E555AA68
5E555BA20
5E555BB20
5E555BC09
5E555DB57
5E555EA03
5E555EA20
5E555FA00
(57)【要約】
【課題】本開示は、サーバの映像生成処理負荷および伝送トラヒックの増大を防ぎ、特定のゲームに依存した処理の脱却を可能にすることを目的とする。
【解決手段】本開示のサーバ装置は、ユーザによる操作情報を蓄積し、蓄積された操作情報を用いて前記ユーザの操作を推定し、推定された前記ユーザの操作に対応する映像を生成し、生成された前記映像を前記ユーザに送信する。
【特許請求の範囲】
【請求項1】
ユーザによる操作情報を蓄積し、
蓄積された操作情報を用いて前記ユーザの操作を推定し、
推定された前記ユーザの操作に対応する複数の映像を逐次生成し、
生成された前記複数の映像を前記ユーザに送信する、
サーバ装置。
【請求項2】
前記推定において、前記ユーザの操作の発生確率を算出し、
前記発生確率の高い映像を複数生成する、
請求項1に記載のサーバ装置。
【請求項3】
前記推定において、前記操作情報に含まれる前記ユーザの操作を起点とする前記ユーザの操作の時系列分岐リストを作成し、
前記時系列分岐リストのうちの設定された最大分岐数の前記ユーザの操作に対応する映像を生成する、
請求項1に記載のサーバ装置。
【請求項4】
前記最大分岐数が、前記ユーザに送信する際に用いられる通信ネットワークで利用可能なスループット又は前記サーバ装置の計算資源に基づいて設定されている、
請求項3に記載のサーバ装置。
【請求項5】
前記送信の際に、前記時系列分岐リストにおける分岐パターンの発生確率に基づき、前記映像を送信するビットレートの制御を行う、
請求項3に記載のサーバ装置。
【請求項6】
請求項1から5のいずれかに記載のサーバ装置と、
ユーザによる操作情報を前記サーバ装置に送信し、前記サーバ装置から送信される映像をモニタに表示するクライアント装置と、
を備える映像送信システム。
【請求項7】
クライアント装置と通信ネットワークで接続されているサーバ装置が、
ユーザによる操作情報を蓄積し、
蓄積された操作情報を用いて前記ユーザの操作を推定し、
推定された前記ユーザの操作に対応する映像を生成し、
生成された前記映像を前記ユーザに送信する、
方法。
【請求項8】
クライアント装置と通信ネットワークで接続されているサーバ装置に、
ユーザによる操作情報を蓄積する手順、
蓄積された操作情報を用いて前記ユーザの操作を推定する手順、
推定された前記ユーザの操作に対応する映像を生成する手順、
生成された前記映像を前記ユーザに送信する手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、サーバからクライアントに映像を送信する技術に関する。
【背景技術】
【0002】
サーバ上で実行しているゲームを遠隔から遊ぶためのサービスを提供するために、ユーザの操作に応じて対応するゲーム映像を逐次伝送する映像送信システムが提案されている。このような映像送信システムは、クライアントがゲーム処理を必要としないため、処理能力の低い端末でも高精細なゲームを遊ぶことが可能である。しかし、映像伝送に起因するネットワーク遅延の増大が生じるため、ユーザの体感品質が低下する問題がある。
【0003】
この問題を解決するために、ユーザが取りうる全入力に対応するゲーム映像をすべて先読み生成し、事前に伝送するシステムが提案されている(例えば、非特許文献1)。非特許文献1のシステムは、先読みフレーム数を増やせば、理論上はゼロ遅延が達成可能である。しかし、取りうる入力数の先読みフレーム数乗分の先読み映像生成および伝送をしなければならない。このため、非特許文献1では、サーバの映像生成処理負荷および伝送トラヒックが爆発的に増大する問題がある。
【0004】
一方で、ユーザの入力を推定する技術が提案されている(例えば、非特許文献2)。非特許文献2の技術は、ユーザの入力を推定する精度が高い。しかし、特定のゲームに依存してしまうため、様々なゲームを楽しむクラウドゲームという仕組みに不向きであり、クラウドゲームのボトルネックである「サーバ負荷」と「ネットワーク容量」を想定できていない問題がある。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Anand Bhojan & Pan Wenren (2017). CloudHide: Towards Latency Hiding Techniques for Thin-client Cloud Gaming. 144-152. 10.1145/3126686.3126777
【非特許文献2】Zuin, GianluccaL., and Yuri P. A. Macedo. 2016. “Attempting to Discover Infinite Combos in Fighting Games Using Hidden Markov Models.” Brazilian Symposium on Games and Digital Entertainment, SBGAMES 0: 80-88.
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示は、サーバの映像生成処理負荷および伝送トラヒックの増大を防ぎ、特定のゲームに依存した処理の脱却を可能にすることを目的とする。
【課題を解決するための手段】
【0007】
本開示の映像送信システムは、クライアント装置におけるユーザの操作を逐次推定して、対応する映像をサーバ装置が事前伝送するシステムであり、本開示のサーバ装置と、ユーザによる操作情報を前記サーバ装置に送信し、前記サーバ装置から送信される映像をモニタに表示するクライアント装置と、を備える。
【0008】
本開示のサーバ装置及びクライアント装置は本開示の方法を実行する。本開示のプログラムは、本開示に係るサーバ装置に備わる各機能をコンピュータに実現させるためのプログラムであり、本開示に係るサーバ装置が実行する方法に備わる各手順をコンピュータに実行させるためのプログラムである。
【0009】
本開示のサーバ装置は、ユーザによる操作情報を蓄積し、蓄積された操作情報を用いて前記ユーザの操作を推定し、推定された前記ユーザの操作に対応する複数の映像を逐次生成し、生成された前記複数の映像を前記ユーザに送信する。
【0010】
本開示は、以上の構成を採用することによって、投機的映像送信における組み合わせ爆発によるサーバ装置の映像生成処理負荷および伝送トラヒックの増大を防ぎ、クラウドのボトルネックを意識した入力推定を可能にすることで、入力推定における特定のゲームに依存した処理の脱却を可能にする。
【0011】
本開示のサーバ装置は、前記推定において、前記ユーザの操作の発生確率を算出し、前記発生確率の高い映像を複数生成してもよい。
【0012】
また本開示のサーバ装置は、前記推定において、前記操作情報に含まれる前記ユーザの操作を起点とする前記ユーザの操作の時系列分岐リストを作成し、前記時系列分岐リストのうちの設定された最大分岐数の前記ユーザの操作に対応する映像を生成してもよい。
【0013】
ここで、前記最大分岐数が、前記ユーザに送信する際に用いられる通信ネットワークで利用可能なスループット又は前記サーバ装置の計算資源に基づいて設定されていてもよい。
【0014】
また、前記送信の際に、前記時系列分岐リストにおける分岐パターンの発生確率に基づき、前記映像を送信するビットレートの制御を行ってもよい。
【0015】
なお、上記各開示は、可能な限り組み合わせることができる。
【発明の効果】
【0016】
本開示によれば、本開示は、サーバの映像生成処理負荷および伝送トラヒックの増大を防ぎ、特定のゲームに依存した処理の脱却を可能にすることができる。
【図面の簡単な説明】
【0017】
【
図2】投機的映像送信システムにおけるゲーム映像の送信例を示す。
【
図3】ゲームサーバにおいて生成されるゲーム画面の一例を示す。
【
図4】ゲームサーバにおいて生成されるゲーム画面の一例を示す。
【
図6】本開示に係るゲームサーバの動作の一例を示す。
【
図7】N名のユーザの操作情報が蓄積されている操作ログDBの一例を示す。
【
図10】本実施形態のゲームサーバの動作の一例を示す。
【発明を実施するための形態】
【0018】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0019】
(投機的映像送信システム)
図1に、投機的映像送信システムの構成例を示す。投機的映像送信システムでは、クライアント10及びゲームサーバ20が任意の通信ネットワーク80で接続されているシステムであって、クライアント10の操作情報に応じたゲーム状態のゲーム映像を、クライアント10の操作の度にゲームサーバ20が送信する。
【0020】
クライアント10は、
ユーザが操作するコントローラ11と、
コントローラ11が操作されることによってコントローラ11から出力された操作情報を送信する操作入力部12と、
ゲームサーバ20からの映像データを受信する映像受信部13と、
受信した映像データを表示するモニタ14と、
を備える。
【0021】
ゲームサーバ20は、
クライアント10からの操作情報を受信する操作入力受信部21と、
操作入力受信部21の受信した操作情報に従い、ゲーム状態を更新するゲーム状態更新部22と、
更新されたゲーム状態に応じたゲーム映像を生成する投機的処理部23と、
ゲーム画面の映像データを送信する映像送信部24と、
を備える。
【0022】
(本開示の概要)
図2に、投機的映像送信システムにおけるゲーム映像の送信例を示す。本開示のゲームサーバ20は、時点t
0に送信された操作情報をクライアント10から受信すると、操作情報の後の任意の予め定められた時点t
3に生じうるゲーム状態のゲーム画面を生成可能な画像データを、時点t
3の前に、クライアント10に送信する。クライアント10は、時点t
3にコントローラ11が操作されると、事前に受信していた画像データを用いて、コントローラ11の操作に応じたゲーム画面を表示する。
【0023】
図3に、ゲームサーバ20において生成されるゲーム画面の一例を示す。例えば、コントローラ11に、Aボタン、Bボタン、上ボタン、・・・Rボタン、Lボタンが備わっており、Aボタンを押したときに複数のゲーム画面が生じ、Bボタンを押したときに複数のゲーム画面が生じうる。これらすべてを処理して映像伝送すると、通信ネットワーク80の遅延が増大する。
【0024】
そこで、本開示では、クラウドゲームにおける投機的映像送信において、ゲームサーバ20においてゲーム画面を生成する際に、ゲーム毎の過去の入力パターンから入力パターン推定を行い、入力候補数を減らした後に、ゲーム映像の投機的処理を行い、この処理によって得られた映像の送信を行う。
【0025】
例えば、
図4に示すように、過去の入力パターンに基づき、Bボタン、Rボタン、Lボタンは押されないことを推定する。これにより、Bボタン、Rボタン、Lボタンを押したときと、後に生成されるゲーム画面を省略し、クライアント10へ送信するゲーム画面数を減らすことができる。同様にして、Aボタンを押した後に生成されるゲーム画面についても、過去の入力パターンから入力パターン推定を行い、生成されるゲーム画面数を減らす。したがって、本開示は、処理スレッド数と映像データの伝送量を減らすことができる。
【0026】
入力候補数をどのくらい減らすかは任意であるが、通信ネットワーク80、ゲーム及びクライアント10の情報に基づいて定められていてもよい。例えば以下が例示できる。
・通信ネットワーク80で利用可能な最大トラヒック量に基づき最大分岐数を設定し、入力パターン推定を最大分岐数まで行うことで、入力候補数を減らす。
・ゲームサーバ20の計算資源など、ゲームサーバ20の処理可能な能力に基づき最大分岐数を設定し、入力パターン推定を最大分岐数まで行うことで、入力候補数を減らす。
・投機的映像送信を行う際に、分岐パターンの発生確率に基づきビットレート制御を行う。
【0027】
(第1の実施形態)
図5に、ゲームサーバ20の構成例を示す。本実施形態の映像送信システムは、
図1に示すゲーム状態更新部22に代えて、操作ログDB31、時系列分岐リスト32、将来入力推定部36を備える。
【0028】
ゲームサーバ20は本開示のサーバ装置として機能する。ゲームサーバ20はコンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0029】
操作入力受信部21は、ユーザによるコントローラ11の操作情報を操作ログDB31に貯めておく。操作ログDB31は、ゲームごとにコントローラ11の操作ログを格納する。なお、操作情報はコントローラ11の操作情報に限らず、ユーザによる任意の操作情報を含んでいてもよい。
時系列分岐リスト32は、操作ログDB31に溜まった操作情報から以下を取得する。
・実際に入力された入力パターン
・各入力パターンを起点とした分岐パターン
・各分岐パターンの発生確率
このように、ユーザが取りうる入力パターンを、発生確率を含めてリスト化する。本実施形態は、このリストを用いることで、全パターンの総当たりよりも映像データを減らす。
【0030】
将来入力推定部36は、分岐パターンのリストに基づいて将来入力されるコントローラ11の操作を推定し、発生確率を含めて投機的処理部23に渡す。
投機的処理部23は、選択した入力パターンを操作情報で受信した場合のゲーム映像の投機的処理を行う。
映像送信部24は、投機的処理を行って得られた映像データを送信する。
【0031】
図6に、ゲームサーバ20の動作の一例を示す。
S10.操作入力受信部21は、各ユーザからコントローラ11の操作情報を取得すると、操作情報を操作ログDB31に格納する。これにより、時系列の操作情報が操作ログDB31に蓄積される。
図7に、N名のユーザの操作情報が蓄積されている操作ログDB31の一例を示す。
【0032】
S20.時系列の操作情報から入力パターンをユニークに抽出する。これにより、発生しない入力パターンを削減することができる。
図8に入力パターンの抽出例を示す。
【0033】
S30.入力リストに列挙されている各入力パターンからの時系列の分岐をリスト化して抽出する。
図9に、時系列分岐リスト32の一例を示す。時系列分岐リスト32は、抽出された入力パターンごとに、後に入力された入力パターンの時系列分岐リストを作成する。例えば、Input[0]であれば、Transition[0][0]、Transition[0][1]、Transition[0][2]、Transition[0][3]のようにリスト化する。これにより、入力パターンごとの時系列分岐リストが作成でき、分岐パターンAA及びBBなどの処理する分岐パターンを限定することができる。
【0034】
ここで、入力リストに列挙されている各入力パターンからの発生確率を、分岐パターンごとに計測する。また各リストのリスト長を計測する。本実施形態では、最大のリスト長をαとする。
図9の例では、リスト長が4の例を示す。
【0035】
なお、
図9では分岐パターンが1度の分岐のみを示すが、分岐パターンに含まれる最大分岐数は予め定められた任意の数を採用することができる。またステップS10~S30の解析時には入力内容の解釈はしない。またログ解析はゲームタイトルに依存せず、操作情報のみで行う。また各ゲームにおいてゲームの状況に対応した複数の分岐パターンの生成を事前に行う。
【0036】
S41.投機的処理部23は、操作入力受信部21にInput[0]が入力された場合に、Transition[0][0]の投機的処理を行い、その後Transition[0][1]の投機的処理を行う。このように、本実施形態では、抽出された入力パターンごとに投機的処理を行う。
【0037】
本実施形態は、スレッド処理によるゲームの並列実行に適用可能である。例えば、時刻tのゲーム状態を起点として、t+1、t+2、...で発生し得るゲーム状態を複数生成するために、スレッド処理によるステップS10~S30、S41の並列実行を行って、生成した全てのゲーム映像をユーザに先送りしてもよい。
【0038】
(第2の実施形態)
ゲームサーバ20は、将来入力推定部36が将来入力を推定するために、リソース情報33、最大分岐数設定部34、最大分岐数テーブル35、を備えていてもよい。
リソース情報33は、通信ネットワーク80の最大リソースやゲームサーバ20の最大処理能力が記載されている。
最大分岐数設定部34は、リソース情報に基づき、時系列分岐リスト32における最大分岐数を設定する。
最大分岐数テーブル35は、時系列分岐リスト32における最大分岐数が記載されている。
【0039】
将来入力推定部36は、最大分岐数テーブルに35記載の最大分岐数分の入力パターン分、発生確率が高い方から選択する。最大分岐数は、通信ネットワーク80において利用できる最大リソースから映像のビットレートを除算して求めたり、ゲームサーバ20の全体処理能力から1投機処理あたりのクロック数を除算して求めたりできる。
【0040】
映像送信部24は、映像データ送信の際に、発生確率が高い方から高いビットレートで送信する。
【0041】
図10に、本実施形態のゲームサーバ20の動作の一例を示す。各投機的処理に1スレッドを割り当てる例を示す。本実施形態では、ステップS30の後に、ステップS31~S34を備え、ステップS41に代えてステップS42を備え、ステップS42の後にさらにステップS50を備える。
【0042】
S31.各リストのリスト長を計測し、各分岐系列のリスト長の最大値(α)と入力パターンの発生確率を取得する。
S32.リスト長の最大値αが(β-1)以下のとき、投機的実行を行うサブスレッドをα本に設定する。αを(β-1)と比較するのは、1本はメインスレッド用に必要になるためである。
S33.リスト長の最大値αが(β-1)より大きいとき、発生確率の高い分岐パターンを(β-1)個まで取得して分岐系列を更新する。これにより、各分岐系列内の分岐パターンがβ-1個になる。
S34.投機的実行を行うサブスレッドを(β-1)本に設定する。
S42.生成したリストに基づいた投機的処理を実行する。最大でβ−1枚のフレームがレンダリングされている。
S50.映像送信部24は、各出力を分岐パターンの発生確率に応じたビットレートでエンコードして送信する。許容トラヒック量に応じて、各分岐パターンの発生確率からビットレートを設定する。
【0043】
このように、ステップS32では、事前処理によって取得したリスト長αに従って、投機的処理を行うスレッド数を設定する。なお、システム要件に応じて発生確率を考慮したスレッド数の設定を行うことが可能である。
【0044】
また、ステップS34を実行することで、実時間軸上でゲームを実行するメインスレッドを基準として、事前に取得した分岐パターンに従ってサブスレッドのゲーム状態を先行させる。
ステップS42及びS50を実行し、各サブスレッドのゲーム状態に応じてゲーム画面を生成して、ユーザに送信する。ユーザは受信した複数のゲーム画面から、実際の操作に応じた画面を表示する。これにより、本実施形態は、トラヒック要件に応じて発生確率を考慮したビットレート制御を行うことが可能になる。
【0045】
(第3の実施形態)
ステップS10において操作入力受信部21の受信する操作情報はコントローラ11の仕様に応じて異なる。そこで、本実施形態では、変換テーブルを用いることで、操作情報を文字列に変換する。
【0046】
図11に、変換テーブルの一例を示す。コントローラ11のボタン数に応じて変換テーブルを設計して操作ログを取得する。例えば、アナログスティック(十字キーも含め)をしきい値で2値化する。本実施形態では、18種類の操作情報に対して2桁又は1桁を割り当てることで、コントローラ11においてどのような操作が行われたかを24桁の文字列で表す。
【0047】
ここで、コントローラ11の全ての入力を文字列として並べる。また同種のコントローラ11ごとに任意の並び及び長さの変換テーブルを用意する。また、設定したいしきい値の数に応じて桁数を増やすことで半入力などの繊細な操作にも対応可能である。
【0048】
このような変換テーブルを採用することで、ジャンル非依存のログ解析可能になる。
図7に示す入力パターンは、本実施形態の手法によって文字列化された操作情報である。
図7に示す例では、N名の操作情報に基づいた2フレーム分の入力パターンを示す。
【符号の説明】
【0049】
10:クライアント
11:コントローラ
12:操作入力部
13:映像受信部
14:モニタ
20:ゲームサーバ
21:操作入力受信部
22:ゲーム状態更新部
23:投機的処理部
24:映像送信部
31:操作ログDB
32:時系列分岐リスト
33:リソース情報
34:最大分岐数設定部
35:最大分岐数テーブル
36:将来入力推定部
80:通信ネットワーク