GameStream Co-op

2021/01/20追記 残念ながらこちらのサポート頁でのアナウンスにある様に既にこのサービスは停止してしまっている。正確には何時からそうなっているのかは判らないが、もう現在のGeforce Experienceではメニューにも現れない。クライアント側での動作にはChrome アプリを利用していたのだが、2018年より段階的にこのサポートが停止される事がその理由。なおChrome アプリと言うのは拡張機能とは別物である(拡張機能は今後もサポートされる)。拡張機能の頁を開くと上段に表示されるのが拡張機能で下段がChrome アプリとなるが、既にChrome OSに対応する物だけしかサポートはされていない。(GEXPやChromeの昔のバージョンを用意すれば可能という話も有ったのだがこれは現実的では無い)。

しかし現在では代用品が用意されている為にサポートの終了は特に痛手とはなっていない。まずはこのGameStreamのプログラムを拡張して使おうというオープンソースのプロジェクトMoonlightがあり、こちらではクライアント側はMoonlihght自体のアプリケーションを使用するので上記のサポート停止の影響を受けない。ストリーミング性能のアップといった基本的な仕様の拡張の他に、SHIELD機能をインターネット対応にしたりも可能。ただしNvidiaのビデオカードを持っていないとならないのは変わらない。

そこで(性能は別として)ビデオカードを選ばない同様のアプリケーションとしてはParsecが有名で良く使われている。回線速度さえ許せば3人以上でのローカルCo-opのエミュレーションも可能など多機能である。ただかなりの多様な設定が可能なのが優れている所なのだが、それだけに初心者には難しいという面も持っている(現時点では日本語に非対応)。それと注意点として信頼出来るフレンド以外とはプレイしない方が無難である(設定によってはデスクトップが相手に見えてしまう。あるいはマウス操作がクライアント側で可能になっていると勝手に操作されてしまう恐れもあり)。

新しい物ではSteamのRemote Play Togetherが有りこれは有名だろう。Steamのゲームしか不可, 設定項目が簡素といった件はあるが、非常に手軽にプレイ出来るというのは大きな利点。


現在β版としてNvidiaよりテスト配布中のGameStream Co-opを体験してみたので書いてみる。これはローカルでのCo-opをオンライン上で実現してしまおうという技術である。

PCでのマルチプレイの形態としては、現在はインターネットに接続してのオンラインプレイが主流である。或いはLANという形態であり、マルチプレイ創生期におけるシリアル接続(シリアルコネクタで二台のPCを直結する)やモデム接続(電話回線を通じてモデムで二台のPCを接続する)は既に廃れてしまっている。そんな中でローカルでのマルチプレイという物も存在していた。これはPCではなくコンソールにおいてポピュラーだった形態で、そのコンソールではオンラインへの接続はPCよりも流行っていなかったものの、一方で複数のプレイヤーがゲーム機の前に揃うという状態が多いプレイ環境を持っていた。そこで2~4個のコントローラーを一つのゲーム機に接続して、同一のTV画面の中で複数人が一緒にプレイするというローカル環境でのマルチプレイが良く採用されていたのである。

しかしPCではこのローカルでのマルチプレイというのは流行らなかった。理由としては、複数のプレイヤーが同一の画面前に揃うという状態が少なく、同一フロアに居るなら互いのPCをLANやシリアルで接続してのプレイの方が採用された, コントローラーを複数台接続出来る様なインターフェースをデフォルトでは持っていなかった, 画面分割してプレイするにはTV画面に比べてPCモニターは小さくてそれに向かなかった、等が挙げられる。現代に至ってもその状況はあまり変わらず、FPS/TPSゲームにおいてはコンソール版では画面分割でのローカルマルチプレイ環境を持っているのに、同ゲームのPC版ではそれに対応していないというケースがほとんど。

だが近年になって徐々にではあるがローカルでのマルチプレイが可能なPCゲームが増えて来ている。まずインディーズ会社からの発売作品が劇的に増え、その中には2Dベースのゲームが数多く、こういった物にはオンラインでのシンクロは技術的に難しいのでマルチプレイはローカルオンリーという仕様が結構存在している。次にストリーミング技術や環境が進んだ結果として、大きなTV画面の前でPC本体からストリーミングされたゲームをプレイするという形態も出て来ており、そうなると複数人がモニターの前に揃うというケースが増加しているという影響。またはコンソールとのマルチプラットフォーム化がより進み、同一エンジンによる開発なのでコンソール版に搭載しているローカルマルチプレイの機能をそのままPC版にも搭載するという様なゲームも出て来ている。

GSC-14
Nvidiaが提供するその機能を実現する為の環境であるGeForce Experienceとは、同社が発売しているビデオカードに付属するコンパニオンアプリである。昔からビデオカードに付いている物としては、ゲームのプレイ時にそれをいろいろと調整したりするユーティリティが存在しているが、近年ではゲームの中身自体を調整するのでは無く、外部的に連動して動く機能が求められる様になって来ており、それ等を統合してまとめたインターフェースがこれになる。具体的にはプレイ画面の録画&動画作成機能, ストリーミングによるライブ配信, 自宅内TV画面や外出先PCへのリモートストリーミング等。 それに加えて現在β版に限定して試験的に導入されている新機能の中の一つがGameStream Co-opである。

ローカルでのCo-opとは一台のハードウェアで動作するゲームにて、そこから出力された単一の画面を見ながら行うCo-opの意味であり、その一つだけの画面を参加者全員で共有する形と、画面分割にて全員が参加する形態がある。一緒に並んで座って画面を見て遊ぶ事から、海外ではCouch Co-op(カウチ=ソファー)などとも呼ばれている。LAN(ローカルエリアネットワーク)にもローカルの文字が入るが、こちらは各人がそれぞれ一台のPCと自分用のモニター画面を使っており、また同一構内でのLAN接続なので全員が同一の部屋内に居る必要性も無く、ここで言うローカルCo-opとは全くの別物となる。

GameStream Co-opとは言わば「ソファーに並んで座って同一画面を見ている」状況を、離れた場所におけるオンライン接続において仮想的に作り出してしまうテクノロジーである。ホスト側のプレイヤーが起動しているゲームをクライアント側のプレイヤーに向けて1対1の接続状態でストリーミング配信し、その配信動画を見ながらクライアント側が行った操作をホスト側で受けて処理するという風にして実現される。

通常のストリーミング配信は多数の視聴者に向けて行われる為に、接続者全員に対して配信者のPCから直接データを送っていたのでは通信帯域が足りない。よって一旦配信管理サーバーへとデータを送り、視聴者はそこからデータを受け取るという形態になる。しかしこれだと中継を挟む事から実際のプレイと視聴画面には数秒間のラグが生じるのは避けられず、クライアント側でそのゲームを同時にプレイするというのは困難。そこでこのストリーミング配信を1対1の直結状態で行う事でラグを廃し、クライアント側からの入力遅延も発生しない様にデザインされている。

再度整理しておくが、GameStream Co-opとは“オンラインでのCo-opが不可能なローカルCo-op”をオンラインで実現する為の技術である。見方を変えれば、オンラインでのCo-opにも対応しているゲームにおいては不要であるとも言える。例えばSerious Sam(旧版)は画面分割でのローカルCo-opにも対応している珍しいFPSだが、同時にオンラインでのCo-opにも対応している。よって参加者が同ゲームを持っているなら普通にオンラインでCo-opをすれば良いだけの話である。しかしローカルでのCo-opにしか対応していないゲームでは、そのゲームを持っている同士でもオンラインにてプレイは出来ない。オンラインでのCo-opは不可だがLANならOKという物ならば、VPNで仮想的にネットワークを構築してやれば実現出来る可能性があるが、ローカルCo-opは一台のPCしか使わない形態なのでVPNでも無理である。なお一般的なデスクトップ画面での共同操作においてはリモートデスクトップを実現するアプリが幾つか存在しているが、これ等はゲームでの動作を考慮されておらず実用的になる様な物は現状存在しない様である。

GSC-12
ここでGameStream Co-opの特徴を挙げてみると

・ローカルでのCo-opにしか対応していないゲームをオンライン接続でCo-op出来る
・Co-opとあるが別にローカルオンリーの対戦ゲームでも同じである
・クライアント側のプレイヤーはそのゲームを持っている必要が無い
・クライアント側は配信動画を受け取るだけなので、PCのビデオカード性能等は低くてもOK
・ホスト&クライアント共にある程度以上の回線帯域と合わせて安定性も必要になる
・少なくとも1人はコントローラーを使用する必要がある仕様ならば、この形態でもそれは同条件となる
・直結なので2人プレイまで(3人以上でのプレイが可能な仕様でも)

中ではクライアント側はそのゲームを持っている必要が無いというのは大きい。単にホストがプレイしている配信動画を視ているという形態なので、それを視るブラウザさえあれば良いという仕様である。

実際の使い方としても厳密な意味でのCo-opに限られていない。メニュー上では現段階では3つの機能に分割されており、一つ目の[プレーをご覧ください]は単なる1対1での配信。ただし高画質が実現可能であり、ラグも無いのでプレイしながらのズレの無いボイスチャットも行える。使用するゲームはローカルCo-op対応に限らず何でもOKであり、フレンドに宣伝したいゲームをプレイしてみせるといった使い方が考えられる。

二つ目の[自分としてプレーする]は、クライアント側に操作を渡してプレイして貰うという機能。1人でプレイする形なので、これもまた使用ゲームは何でも良い事になる。これは自分では難しくてクリア出来ない場所をフレンドにやって貰うとか、プレイのコツを指導して貰うといった使い方が提示されている。或いは自分が持っていないゲームを体験するのに、それを持っているフレンドにホストになって配信を依頼するといったやり方も出来る。

最後の[一緒にプレーする]がローカルCo-opの選択肢。これは単一画面を使う為に、通常のオンラインCo-opをそのゲームを持っていないクライアントとプレイしたりは出来ないので念の為。ただどういう風に使うのかとなるとアレだが、KB操作とコントローラー操作を同時に受け付けられるゲームならば、シングルプレイにてクライアント側と別の入力デバイスを操作する事で2人での共同操作が可能なるようにも思えるのだがそれは未検証である。

実際の動作画面に関しては以下の紹介動画を見るのが解り易い。1分過ぎ辺りからGameStream Co-opの紹介が始まっている。

GameStream Co-opを含めたβ版の解説頁はこちら(英語)。ここにはストリーミング可能なゲームの必要条件や、メジャーなゲームについては互換性の検証リストも掲示されている。その中では最重要事項として以下を挙げておく(現時点での仕様であり最終的な決定事項ではない)。

・DirectX 9以上のレンダリングを使用している必要あり
・OpenGLを使用しているゲームは不可
・排他的フルスクリーンが必要

DX8以前のゲームは使用出来ない為に、かなり昔の作品は少なくとも現時点では不可となる。それとDX9以上が必要という件はDirect3Dを使用している必要があるのか、DirectX Graphics(旧DirectDrawを含む)を使った完全な2DゲームでもOKなのかは不明。

OpenGLはウインドズ上でのFPS/TPSの世界ではしばらくマイナーになっていたAPIだが、近年ではWindows, Mac, Linux対応のマルチプラットフォームが増加しており、そうなるとDXはウインドウズ専用なのでMac, LinuxではOpenGLでの描画となる。よってウインドウズでもOpenGLというゲームは増加傾向にあるが、これを用いているゲームは使用出来ない。

最後の排他的フルスクリーンとは、完全に画面を独占した状態の全画面描画の事である。つまりバックグラウンドにてデスクトップを描画していない状態を指す。実はゲームの中には設定にてフルスクリーンを選択してもそれは排他的フルスクリーンではなく、ボーダーレス(枠無し)ウインドウでの全画面表示を使っている物が有る(双方の利点&欠点は長くなるので割愛)。その様なボーダーレスウインドウでの全画面描画モードはGameStream Co-opでは使用出来ない。当然通常のウインドウモードも不可である。

ホスト側はGeForce GTX 650(ノートはGTX 660M)以上のビデオカード, Intel i3-2100 3.1GHz, 4GB以上のメインメモリとハードウェア的な必要環境は特に高くは無い。クライアント側も同じ条件だが、ストリーミングを受信するだけなのでこちらはビデオカードには特に設定無し。回線速度はホスト側がアップロード7Mbps以上、クライアント側はダウンロードが同じく7Mbps以上が必要である。

受信側の形態は現時点ではGoogle Chromeブラウザのみが対応
。ホスト側が送ってきたURLアドレスを貼り付けて配信動画を受信する形になる。解像度は720P, 30FPS固定(フルスクリーン化は可能)。

なお気になる方も居ると思うので書いておくと、ホスト側のデスクトップ状態が配信される事は無い。フルスクリーン状態が切れると自動的に接続にポーズが掛かる仕様となっている。と言うか、排他的な全画面表示でないと配信不可能という仕様はこれに影響されての設定とも想像される。ボーダーレスのフルスクリーンの様にバックグラウンドにてデスクトップの画面状態を保持しているケースだと、事故やハッキングによってその中身が送られてしまう危険性が否定出来ないのでそうしているという意味。

GSC-13 
実際の使い方は簡単である。第一にGeforce Experienceは基本設定からベータ版の更新プログラムを受信するにチェックを入れておく。これで自動的にベータ版をインストールしてくれる。或いは「更新プログラムの確認」押下でも良い。ただしこれを書いている時点での最新ドライバが自動的にも更新プログラムの確認押下でもダウンロード出来なかったという経緯もあり(バグの様だ)、ベータ版ダウンロード用の頁にて新しい物がないかを確認しておいた方が良いだろう。

使用前にはShareのドロップダウンメニューから機能を有効にしておく。これでゲーム起動時にロゴが自動的に表示される。これが対応ゲームかどうかの見分けに一応使えるようだが、表示されなくても使用可能なゲームもあるので絶対では無い。

ゲーム画面上ではALT+Zキーでオーバーレイ画面が表示される。ここでストリームをクリックして招待URLをコピー。対象相手のメールアドレスに送信する事も出来る。URLを何等かのメッセージアプリで送るならば画面を切り替え(オーバーレイを閉じないと操作が出来ないケースもあり)、CTRL+Vで招待URLをペーストしてやり送信。注意点として相手のアクセスを受ける段階においては、必ずホスト側はゲームを全画面表示にして待機しておかないとならない。

なおこのオーバーレイ画面では各種設定も行える。GameStream Co-opではボイスチャット機能も持っておりデフォルトではオン。別のボイスチャットを使用している際には声が二重になるのでアイコンをクリックして切っておく。

クライアント側は招待URLを受信したらそれをChromeに貼り付けてアクセス。単にクリックするとデフォルトのブラウザで開かれ、Chrome以外ならばその旨のエラーメッセージが出る。当然Chromeは最新バージョンにしておく事。初回のみGeForce Experience Stream ClientがChromeの拡張機能にインストールされる。後は成功すれば配信画面が表示されるので、ホスト側が操作可能にしてくれれば画面へのアクセスが可能になる。なおこちらもデフォルトでボイスチャット機能はオンなので、不要ならばアイコンクリックで切っておく。

GSC-11
動作検証の方だが、フレンド2人と試した限りではなかなか成功しないという結果に終わっている。成功しないとはクライアント側にて配信動画画面が表示されないという状態。接続エラーとか、既に配信が終了していると言ったメッセージが出てしまう。GEのバージョンは2.11.2.67を使用。

ホスト クライアント 結果
UnKnownさん(Win10) Z.O.Eさん(Win10) 全て失敗
青龍(Win7) Z.O.Eさん(Win10) 最初のGauntletだけ成功。以降は全て失敗。
UnKnownさん(Win10) 青龍(Win7) Trine 3のCo-opに成功。Half-Life 2とThe Forestの画面シェアに成功。失敗無し。
青龍(Win7) UnKnownさん(Win10) 全て失敗

成功例は少ないが、接続に成功したケースではほぼラグは無く、実際に一緒に居る様なレベルでローカルのCo-opが擬似的に楽しめるというのは確かな様である。ただし格闘ゲームの対戦モードの様に非常にシビアなレベルでの入力レスポンスが求められるゲームでも問題が無いのかは判らない。

掲示板などを見ると、やはり多いのは接続のトラブルとなる。他だとサウンドが全く送られてこないという障害でこれは私も体験した。アップデートは頻繁だが問題も発生しているらしく、最新版にした途端に調子が悪くなって、旧版をインストールし直すと治るというケースも良くある模様。この辺はまだ過渡期の様だ。

実験範囲内での考察としては、私がクライアント側だと調子が良いので、他のホストとの組み合わせでどうなるのかを試したい所。私の送信失敗については、まず一度失敗するとその辺のデータが何か残っていてトラブルが連続しているという可能性がある。クライアント側のエラーメッセージにも「そのセッションは既に終了している」との類があり、これも過去のデータが送られ続けているのでは無いかという疑念を持っている。消す方法としてはクライアント側でChromeのキャッシュをクリアしたりは変化無しだったので、ホスト側でマシン再起動をしてみるとかしか無さそうだが、ただマシン再起動後に私が配信したGauntletが成功しているという事例もあり。いずれにしろ今後バージョンが上がったら試すなどいろいろとやっていくしか無いだろう。


それとは別にこのGameStream Co-opがプレイ可能なローカルCo-op搭載ゲームも調べているのだが、どうも想像していたより対応可能な物は現状では少そうである。インターフェイス自体が開けないとか、開くとゲームが最小化してしまうといった形で駄目な物の方が多かった。排他的なフルスクリーンを使用していないのか、もしくはOpenGLを採用しているという可能性が高い。だが掲示板でその件を訴えられて、排他的フルスクリーンについては「そういう理由なら選択可能にしよう」と返答しているデベロッパーも見受けられ、GameStream Co-opが一般化すれば同様の措置を採ってくれるゲームの増加には期待が出来そうである。

最後に実際に試された方には成否の結果情報などを是非頂きたいと思っている。

「GameStream Co-op」への5件のフィードバック

  1. この記事を読んで海外の友人とプレイした者です。
    幾つかSteamのゲームをプレイしましたが、問題なく動作しました。
    奇妙な現象を含めて経験したのでご報告いたします。

    Host私 Win7 GeForce 680GTX 
    クライアント友人 Win10 ノートPC(IntelHDGraphics)
    ・動作したゲーム
    Fallout NV・Saints row IV・ Metro 2033(Reduxではない旧版)
    全てのソフトで2人羽織状態でゲームが出来る事を確認しました。
    ・動作しなかったゲーム
    Hotline Miami
    ・ラグ
    流石に海外相手だと「ストリーム画面を操作しているような」ラグを感じるとの事です。
    動きの激しいFPSゲームや繊細なアクションゲームは難がありそうです。
    ・不思議な現象
    最初に、Streamが動作するゲーム(我々の場合はFallout NV)を起動して招待を送った後だと
    そのままではStreamの招待が送れなかったゲームにおいて招待が送れるようになる?
    Saints Row IVで発生しました。

    何にせよ、動作さえすればホスト-クライアント間の画面の遅延がほぼゼロなのは画期的ですね。
    VCしながら配信でゲームの紹介が出来るだけでも非常に楽しかったです。
    ご紹介記事ありがとうございました。

    1. 情報どうもです。ラグに関しては海外との通信では確かに問題があるかも知れません。この辺は通常のマルチプレイと一緒でPingがせいぜい100台前半程度でないと厳しいのかも。

      招待状態を維持出来れば非対応のゲームもストリーミング可能?という件は検証の余地がありそうです。ただこちらのテストにて送信不可の後に再度実行するとOKというゲームもあったので、確実にこれはダメだというゲームを対象にしてテストしないとハッキリしません。

  2. GEFORCE EXPERIENCE バージョン: 3.9.0.61を使用
    ALT+Zの画面にストリームという項目はなくなっていました

  3. 今試してみると3.9.1.61betaになってますが、ちゃんとストリームの項目は在ります。
    これが無いと意味がないので単なるエラーか何かだと思います。
    アップデート後に設定項目等が正常に表示されるまでに時間が掛かるというエラー報告あり。
    それとアップデートに失敗する事もあり、そのケースではEXPを一度アンインストールしてから
    再インストールという風にしないとなりません。

  4. gamestream coopで検索していたらこちらにたどり着きました。
    1年前の情報ですが、わかりやすくまとまっていてブログ主さんに感謝です。

    私の環境だと、サウンドがクライアントに届かない、コントローラーがホストしか使うことができない
    (クライアントはキーボードマウス操作)
    となってしまうようです。ですがラグがほぼないのはすごいですね。さらなるアップデートに期待です。

    >>ぴ さん
    私もストリームという項目なくてちょっと詰まりましたので、もしもお役に立てば・・

    3.1.9.1.61 BETAを使用してます。
    設定 全般 説明の欄に「試験的機能を有効にします~」との文言があり、隣にチェックボックスが
    あります。
    ここにチェックを点けるとgeforce experienceがbetaとして更新され、ALT+Z画面にてストリーム項目が
    出現しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です