Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mizchi/b103bcbd953080703c0f8e3a0a692667 to your computer and use it in GitHub Desktop.
Save mizchi/b103bcbd953080703c0f8e3a0a692667 to your computer and use it in GitHub Desktop.

これは Google Stadia みての気持ち。Twitter みてるとなぜクラウドゲーミングが難しいか前提を理解してない人が多かったので。

注意: 雑です。

こうだから不可能だ、という話ではなく、これらの諸問題を倒してきたとしたら Google すごいなと思うし、倒してないとしたらまた一つクラウドゲーミングの夢やぶれたねという話で、今の所期待値が前者 30% 後者 70% ぐらい。

基本知識: 要求 FPS

フレームパーセカンド、一秒間にディスプレイが何回更新されるか。

  • アクションゲームの要求: 60fps(16ms)
    • これ以上遅延すると人間が遅延を意識する
    • スマホだとスワイプ操作に画面が追従してくるかどうか
  • 非アクションゲームの要求: 30fps(32ms)
    • シミュレーションゲームなどがこの数値
    • 最近の例外だとフレームレートより描画量を優先したブラッドボーンが 30pfs だった
  • VR の要求: 90fps-144fps: 11ms-7ms
    • 視線追従で酔いづらくするために低遅延要求

物理制約による遅延

  • ディスプレイの描画遅延: 4ms~15ms
    • STG で真空管ディスプレイ使う人がいるのはこの遅延を嫌うため
  • 日本国内で光の遅延 5~30ms
    • 最寄りにデータセンターがあるかで大きく変わる
  • 光速度: google.co.jp の ping: 6~20fps
    • あくまで ping であって大きなデータを転送するとより遅くなる
    • 現実には google 側の転送ではなく 4K を受ける回線がネックになりそう

現実的には 20~100ms の遅延になるのでは

なぜフレームレートが必要なのか

「人間が意識しないほどのフレームレートが必要なのか?」という意見を見かけたが、遅延は「無意識な」ストレスとして現れる。例えば 3D ゲームのカメラの酔いが発生しやすくなる。

そんな高いレスポンスタイム俺には必要ない、と思っている人も、ちょっと遊んでみたら「なんか違う…」という感想を持つと思う。具体的には、爽快感がないとか、手元の入力がうまく伝わってる感がないとか、そういう感じ。画面に起こるフィードバックを画面をみて確認するのではなく、無意識に予測するようになる。

自分は Steam の ローカル wifi のストリーミングで Mac から Windows につないでみたりしたが、まともにやれたのはノベルゲームのみで、反射神経を要求しない戦略シミュレーションゲームの Civilization 6 ですらかなりのストレスを感じた。

デモでアサシンクリード 2 が使われていたが、あのゲームは動き出しがもっさりしているので、誤魔化しやすい気はする。

とくに、酔いが喫緊の課題である VR で、クラウドで要求に応えるには技術が発達すればどうにかなるという代物ではなく、「この宇宙の光速度では不可能」と思っている。

既存のゲームは遅延をどう扱っていたのか

プレイヤーの座標の更新はサーバーへの同期を取らずに行っている。それが事後報告的にサーバーで更新される。

自分以外のプレーヤーの情報は、数フレーム前の世界、もしくは行動履歴から予測された世界を見ている。自分の画面でヒットすれば、それはヒットしたことになる。シューティングで遮蔽物に隠れたはずなのにラグプレーヤーに撃ち抜かれたりするのはそのため。

サーバーにキー入力が到達することなく座標を更新できるのは計算資源を手元にもっているからで、クラウドゲーミングは手元に一切のコンピューティング資源がないので、1RTT(ラウンドトリップタイム)かけてキー入力が到達しそのフィードバックを得なければ、カメラが更新できない。

なんらか予測技術を使うとこれを倒せる可能性はあるが…。

なんらかの予測技術

キー入力パターンを予測して次の 1 フレームを事前に送りつけておく、という荒業がある。ある種の投機的実行。

現代のコントローラーの入力はアナログパッドがあり、分岐パターンが膨大なので、かなり難しいと予想される。また、仮に実現できたとしても、データの転送量がさらに跳ね上がる。

また、ゲーム側にも投擲的な予測に対応する処理が必要で、実装に対するソフトウェア的な縛りも大きい。

No Cheat?

ディープラーニングのおかげで画像認識技術が発展してるので、画像認識してドライバ握って制御するようになるだけだと思われる。 ゲームがクラウドにいくのと同様、画像認識の精度を向上させるのにクラウドのTPUクラスターなどを使うようになるのではないか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment