Genvid SDK 1.23.0

Genvid MILE SDK 1.23.0へようこそ本リリースは、統合のために必要なすべての機能と安定性を備えています。ローカル環境での開発や限定されたクラウドでのデプロイに使用することができます。他のソフトウェアで提供されるような、プロダクション環境に向けて不足している機能もあります。プロダクション(本番)のデプロイをお考えの方は、support@genvidtech.com までご連絡ください。

私たちは、快適な製品展開のためにすべての機能を完成させるまで、定期的にリリースを行うことをお約束します。私たちは常に、リリース間のスムーズなアップグレードを保証し、可能な限りの後方互換性サポートを提供するよう努力しています。既知の問題と回避策の完全なリストは、弊社の Forum に掲載されています。何か問題がありましたら、ご連絡ください。

現在ご利用になれる機能

現在の機能の概要を紹介します。本リリースの新機能一覧は以下の 主な修正と変更 を参照してください。

  • Windows C++ API、C# ラッパー。
  • D3D11 または未処理フレームのビデオキャプチャ。
  • WASAPI オーディオキャプチャ。
  • ビデオエンコード (H264 + AAC)。
  • YouTube へのライブ動画配信。
  • 複数のインスタンスからの、複数の動画およびデータのストリーミング。
  • 任意の追加ゲームイベントおよび通知のライブ配信。
  • スケーラブル イベント メッセージ システム。
  • 埋め込み型 Web ページ用 Javascript SDK。
  • ビデオとゲームデータストリームの自動同期。
  • オーディオ/ビデオおよびデータの複数のソース (ベータ版)。
  • ライブ動画編集と基本コンポジション効果 (ベータ版)。
  • RTMP Ingest サーバー (ベータ版)。
  • Unity3D 統合 (ゲームと管理)。
  • Unreal Engine 統合 (ゲームと管理)。
  • サービス制御用 REST API (ベータ版)。
  • ローカル、リモートクラスタの管理用ツール、スクリプト。AWS 用サンプルスクリプト。
  • メトリクス フィード (ベータ版)。
  • 負荷テスト用ライブラリ。
  • 詳細な解説書。
  • 複数の統合サンプル。

主な修正と変更

新しい共有 Web サンプル

エンジン統合サンプルをリファクタリングして、単一の共有 Web サンプルを使用するようにしました。 エンジン統合サンプルをリファクタリングして、単一の共有 Web サンプルを使用するようにしました。この JavaScript の Web サンプルは、コードが非常に少なくて済むので、理解しやすく、デバッグも容易になります。詳細はアップグレードに関する注意事項 1.23.0 を参照してください。

Unreal と Unity 統合の変更

Genvid SDK を Unreal Engine や Unity に統合するための汎用コードを、 engine-integration 内の専用フォルダに移動しました。ゲームのアップグレードについては、アップグレードに関する注意事項 1.23.0 を参照してください。

その他変更点や修正点

  • [解説書] 参照セクションに Terraform モジュールセクション を追加。
  • [解説書] Genvid Toolbox を実行するための Python 仮想環境の作成と使用方法を追加しました。
  • [sdk, composed, gvencode] framesizesent メトリクスがカウンターからゲージに変わりました。
  • [sdk, gvencode] サイレントモードが有効な場合のオーディオ/ビデオとデータのオフセットの問題を修正しました。
  • [sdk] ゲームを終了して再起動した後、Twitch 上でストリームの再開に失敗する問題を修正しました。
  • [eventsd] eventsd の再開時時にクラッシュが発生し、イベントのサブスクリプションが失われる可能性がある問題を修正。
  • [eventsd] eventsd の再開時に、ストリームがフリーズする問題を修正。
  • [web-sdk] ゲームがストリームを閉じた後、Web クライアントに古いデータが存在していた問題を修正。
  • [web-sdk] スタンドアロンプレーヤーのバッファ遅延を修正。
  • [web-sdk] es5 バージョンのライブラリがクライアントに配信されるようになりました。
  • [web-sdk] NATS とイベントサービスの再接続の問題を修正。
  • [web-sdk] leafd の再接続の問題を修正。
  • [web-sdk] クロマキー コンポジションでゲーム データが消えないようになりました。
  • [web サンプル] Web サンプル にボリュームアイコンを追加。
  • [ツールボックス] genvid.toolbox.BaseToolROOTDIR オーディオディスカバリを改善。
  • [ツールボックス] シークレットが存在しない場合でも genvid-sdk show-config が適切に動作するようになりました。
  • [ツールボックス] upload-images-sdk が NATS-window パッケージを作成するようになりました。
  • [ツールボックス] グループアカウントを直接設定できる新しい Job API /jobs/jobID/settaskgroupcount を追加。
  • [ツールボックス] ジョブ テンプレートのレンダリング時のエラーメッセージを改善。
  • [ツールボックス] Genvid ツールボックスで Docker for Windows を使用しているときに、Python の依存性の問題を修正。
  • [ツールボックス] ツールボックスが、Azure Python API と Azure CLI 間の依存性の競合を回避するために、Azure CLI 呼び出しを使用するようになりました。
  • [ツールボックス] Azure コードベースにデバッグレベルのログを追加。
  • [genvid-ami] 設定コマンドに新しい --region を追加。セットアップコマンドに新しい引数 を追加。このオプションを使用して、ゲームインスタンスのデプロイに使用するリージョンを上書きすることができます。
  • [ゲームイメージ] Windows のゲームイメージの解説書へのショートカットを修正。
  • [openapi] OpenAPI 定義ファイルに /consultemplate エンドポイント定義を追加。
  • [bastion-ui] Terraform 変数エディタが Map 型の変数をサポートするようになりました。
  • [bastion-ui] Bastion-UI の Terraform ページで、Terraform が割り当てたリソースの数がステータスの横に表示されるようになりました。詳細は、 Terraform セクションを参照してください。
  • [bastion-ui, cluster-ui] 作成後、Cluster UI、Bastion UI のジョブ ID とリンクは編集できなくなりました。
  • [bastion-ui, cluster-ui] クラスタ名作成時のエラーメッセージを改善。
  • [gvencode] オーディオサイレンスを追加しようとしたときのメモリ割り当ての問題を修正。
  • [gvencode] オーディオ/ビデオストリームの安定性が向上。
  • [gvencode] 入力フォーマットと出力フォーマットが同一の場合の gvencode ブリッティング性能と画質を向上させました。
  • [gvencode] ローカルライブ配信でのワイプ対応を修正。
  • [gvencode] gvencode のデータディレクトリをローカルライブ配信用の正しいフォルダにポイントしました。
  • [terraform] Terraform モジュールのメインファイルの名前をすべて main.tf に変更し、Terraform スタンダードとの整合性を高めました。
  • [terraform] basic_cluster の規定に合わせて、 alb_ssl_cluster の名前を変更しました。詳細はアップグレードに関する注意事項 1.23.0 を参照してください。
  • [terraform] アベイラビリティゾーンごとに複数のサブネットを持つ VPC 上に minimal_alb_ssl クラスタを作成する方法が追加されました。使用可能なサブネットのリストが利用可能になりました (オプション)。
  • [composed] RTMSP 接続/再接続の改善。
  • [composed] ゲームの接続が切れたときに終了してしまい、オーディオ、ビデオストリームがすぐに回復しないの問題を修正。
  • [composed] ソースが切断されたときに、同時実行の問題により発生する SIGSEGV エラーを修正。
  • [rootd] 重いデータストリームを使用時の安定性が向上。
  • [rootd/eventsd] クラウドのメモリ制限を増やしました。
  • [commandd/webgateway] command サービスの名前を webgateway に変更。これは実行ファイルや Docker イメージにも適用されます。
  • [commandd/webgateway] サービスが webgateway の代わりに commandd として公開されるコマンド legacy-mode を有効にするための Consul キー設定を追加。
  • [webgateway] Webgateway サービスが /events エンドポイントを公開し、イベント・バッチの送信ができるようになりました。
  • [サンプル] プライマリソースを変更してもゲームデータが保持されなくなりました。
  • [studio] Studio でのオーディオのノイズを修正。
  • [studio] Studio では、ソース 1 の UI にソース 1 のオーディオの状態が反映されます。UI がグレーアウトしている場合、オーディオはありません。UI が起動していれば、オーディオを聞くことができます。
  • [studio] Terraform 設定の内部インスタンス数を調整し、Studio をサポートするようにしました。
  • [studio] 表示の問題を修正し、下部のウィジェットのサイズを変更できるようにしました。
  • [studio] ステータスパネルが 2 行を超えて表示される問題を修正。
  • [studio] オーディオのオーディオフォロー状態の ON/OFF をページ更新後も保持するようにしました。
  • [studio] シーンを切り替える際に、オーディオフォロービデオのオプションを保持するようにしました。
  • [studio] トランジションとビデオミキサーの値を変更した後、ユーザーがシーンを保存せずにページをリロードすると、その値はシーンの値に更新されます。
  • [studio] クラスタ設定で値を切り替えた後にデフォルトシーンを選択すると、オーディオミキサーがサイレントモードになる問題を修正した。
  • [studio] デフォルトでは、 Audio-Follow-Video オプションの値は false に設定されます。
  • [studio] Studio のトランジション中にゲームデータがフリーズする不具合を修正。
  • [studio] 設定でビデオミキサーオプションが選択されていない状態で新しいシーンを作成した場合でも、ビデオミキサーのプライマリソースが正しく読み込まれるようになりました。
  • [studio] ライブ配信方法を安定性の高い低遅延ストリームに更新しました。
  • [studio] Studio の起動時には常にシーンが選択されるようになりました。
  • [ingest] Ingest のストリームがソースの順番に依存しなくなりました。
  • [ingest] オーディオ/ビデオがストリーミングされていない場合の Ingest のパフォーマンスの問題を修正。
  • [ingest] カラーフォーマット (NV12, I420, I444, RGB)、カラースペース (601 または 709)、カラーレンジ (パーシャル、またはフル) の OBS ビデオ互換を改善。
  • [ue4-plugin] Genvid UE4 エディタの設定セクションで、オーディオの ON/OFF の状態が逆になっていたのを修正。
  • [ue4-plugin] Cluster-UI から変更が行われた場合に Genvid エディタタブが自動更新される問題を修正。
  • [unity] プラグインとサンプルのビルド時に使用する Unity のバージョンを指定できるようになりました。
  • [unity] Unity プラグインが最新版の Unity 2019 LTS に対応。
  • [unity] SubmitGameData が正常に動作しているにもかかわらず、エラーがログに記録されてしまう問題を修正。
  • [unity-plugin] Unity 2019.3+ での Genvid Window UI のいくつかの問題を修正。
  • [unity-plugin] Genvid Window タブが開いている状態で Genvid Bastion が停止しているときに Unity editor が処理落ちする問題を修正。
  • [unity-plugin] Reload settings が、Unity プラグインの設定変更を更新する際に、他の設定を選択しなくても更新できるようになりました。
  • [cube] Twitch 使用時に、Consul が設定キーを使用して leaf とWeb エンドポイントを設定します。
  • [twitch] parents オプションを追加して、Twitch API のサポートを新しいバージョンに更新。
  • [tick] 内部ワーカーのリソースが不足している場合の対処法を更新。詳細は、アップグレードに関する注意事項 1.23.0 を参照してください。
  • [loadtester] 負荷テスターのサンプルの大幅な書き換えが完了し、名前を loadtester に変更しました。詳細は、負荷テスターのセクションを参照してください。
  • [loadtester] load_test モジュールとテストインスタンスタイプを削除しました。パブリックインスタンスを使用してください。
  • [consul-template] consul-template をバージョン 0.24.1 に更新。

既知の問題

プロキシを使用している場合に Compose ウィンドウが使用できない。

Bastion の将来のバージョンには、異なるマシンからのアクセスを許可するリモートサーバーが追加されます。現行バージョンではこの機能を限定的にサポートしており、Bastion ホストがクラスタファイアウォールに守られている場合に (Amazon EC2 マシンなど)、問題が発生することがあります。

回避方法としては、マシンのローカル IP がクライアントマシンからアクセスできるように、Bastion マシンへの VPN 接続を行うことです。

Windows がスリープ状態から復帰後、アプリケーションが正常に動作しない。

Nomad は、それ自体も含み、スリープ中のジョブで問題が発生する場合があります。Nomad 側で修正される可能性は低いものの、プロダクション環境では発生しません。最善の回避方法としては、サービス実行中は Windows がスリープ状態にならないようにするか、 genvid-bastion reinstall でサービスを開始しなおすことです 。(genvid-bastion restart だけでは不十分です)。

gvencode で再スタートした後、YouTube のストリームが正しくリセットされない。

サービスが停止して、その直後に再スタートした場合、YouTube のライブ配信サービスは、同一ライブ配信セッションであると判断します。ほとんどの場合は、これで問題ありませんが、サービスと実際の視聴との間に長い遅延が発生するために、直前のセッションが表示されてしまう可能性があります。今後のバージョンでは、新しいストリームを適切にリクエストする方法を実装する予定です。今後のバージョンでは、新しいストリームを適切にリクエストする方法を実装する予定ですが、それまでは、YouTube ダッシュボードからストリームキーをリセットするか、サービスを再スタートする前に、しばらく (5 分程度) 時間を空けるようにしてください。

オーディオがマイクの音声やループを無限にキャプチャする。

WASAPI のオーディオ自動キャプチャモードを使用した時に、マシンのデフォルトのオーディオ-デバイスを通過するサウンドがすべてキャプチャされてしまいます。これには、システムアラートやマイク入力だけでなく、Web ブラウザも含まれます。ゲームを実行しているのと同じローカルマシンを使用してゲームストリームをテスト視聴すると、ゲームは自分自身のオーディオストリームを~10秒の遅延でキャプチャします。これが次第に音質が劣化する (ストリーミングされる度に圧縮されるため) エコーを生み出します。

オーディオを無効にするには、次の 2 つの方法があります。

  • 設定で settings.encode.input.silenttrue にする。 (デフォルト設定をする。)
  • raw オーディオキャプチャを使用する (Unity のデフォルト設定)。

Firefox でのスタンドアロンプレイヤーが動作しない。

読み込み可能なストリームを Firefox で有効にする必要があります。about:config URL で、 dom.streams.enabledjavascript.options.streams のプリファレンスを有効にする必要があります。

オートカットのチェックボックス設定はローカルにのみ保存されます。

Studio では、Scene Widget 内の自動カットチェックボックスの設定はローカルストレージにのみ保存されます。ブラウザのキャッシュがクリアされるとユーザーからの入力もクリアされます。また、Studio セッション終了時に自動カットが「オン」になっている場合は、Studio セッションを再び開始すると、デフォルトで「オフ」に戻ります。

Studio は、複数のウィンドウから同じコントロールの入力を受け取ることはできません。

Studio が、複数のブラウザウィンドウで開かれていて、異なるソースから 1 つのコントロールに入力を受信した場合、最後の値は最新のものに更新されるのではなく、異なる入力間でバウンスされます。たとえば、Audio Mixer Widget でユーザーが Master Gain のスライダを 20 db に変更し、別のユーザーが 0 db に変更した場合、スライダハンドルは 0 db に設定される代わりに 20 db と 0 db の間でバウンスします。この問題が解決されるまで、異なる ウィンドウから 1 つのコントロールへ入力することはお勧めできません。

Studio のシーン設定は、作成時に選択されていないと使用できません。

新しいシーンを作成する際には、保存時にすべてのオプションを確認しておくことをお勧めします。Studio で保存された設定がない状態でシーンが作成された場合、Source-1 のオーディオスライダとビデオミキサーは使用できなくなります。これは今後のリリースで修正される予定です。このは、今後のリリースで修正予定です。

Genmad SDK では、Nomad で実行されていないアプリケーションは 1 つのみサポートされます。

Genvid MILE SDK を使用したアプリケーションを Nomad を使用せずに起動した場合、デフォルトのセッション名が割り振られます。Unity エンジンや Unreal エンジンでアプリケーションをテストするときやアプリケーションを手動で起動するときに便利です。現在、環境変数 GENVID_SESSION_NAME をユニーク名に変更していない場合、Genvid MILE SDK は、この方法で起動した複数のアプリケーションをサポートできません。修正プログラムが Genvid SDK に統合されるまでは、Nomad を使用してアプリケーションを起動することで、この問題を回避することをお勧めします。

Twitch および YouTube の同期について

テストにおいて、Twitch と YouTube でのライブ配信時に同期の問題が発生することを確認しています。詳細と回避策については Twitch および YouTube を参照してください。

ログ定義の制約

値が stdout および stderr と異なる場合、ファイル名はスタック上でユニークである必要があります (2つのジョブが同じログファイル名を持つことはできません。例: default.out)。

Azure のレポートでは、要求されたインスタンスサイズが利用できない。

Azure では、ゲームマシン用の計算インスタンスタイプ Standard_NV6 を使用しています。一部のアカウントでは、このインスタンスタイプのプロモバージョンしか利用できません (Standard_NV6_Promo)。

Azure モジュールで Terraform のセットアップを行うと、The requested size for resource 『XXXX-game-1』 is currently not available in location 『XXXX』 というエラーが発生することがあります。

回避策としては、Terraform の設定ページで instance_game_typeStandard_NV6_Promo に変更し、コマンドページで Plan apply -> Apply を行ってみてください。

デフォルトのリージョンが利用できない場合の Genvid AMI 設定の制限。

AMI のデフォルトリージョンがない場合や、現在の Terraform 構成では動作しない場合は、 aws configure を実行して、アクティブな OU のデフォルトリージョンを動作するリージョンに更新することができます。

Twitch は、ローカルクラスタ上の SSL 認証済みサイトでホストする必要があります。

Twitch の新しい変更点は、埋め込まれた Twitch ストリームが SSL で認証されたサイトでホストされるようになったことです。ローカルクラスタはデフォルトでは SSL を提供していませんが、自分で SSL を実装することができます。

NTP の時間オフセットが大きいと、ストリームの再生ができなくなります。

回避策としてはゲーム機が自動的に時計を更新するように設定されていることを確認してください。AWS configuration section, for local configurations replace the AWS IP address with pool.ntp.org.

Python 3.5 では、Azure リソースグループの作成に失敗します

Python のバージョンが 3.5.x の場合、Azure リソースグループを自動的に作成することはできません。Python のバージョンが 3.5.x の場合、Azure リソースグループを自動的に作成することはできません。リソースグループを手動で作成するには、Azure ポータルにアクセスし、作成するリソースグループの名前に環境変数 AZURE_RESOURCE_GROUP を設定します。