Genvid MILE SDK 1.34.0

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

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

現在ご利用になれる機能

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

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

主な修正と変更

HashiCorp (ハシコープ)スタックのアップグレードしました。

HashiCorp (ハシコープ)スタックを最新のバージョンにアップグレードしました。詳細は、アップグレードに関する注意事項を参照してください。

  • [Terraform] Terraform は 0.14.7 から 1.1.5 へアップグレードしました。
  • [consul] Consul を v1.9.3 から v1.11.2 にアップグレードしました。
  • [nomad] Nomad を v0.12.1 から v1.2.4 にアップグレードしました。
  • [Vault] Vault を v1.2.4 から v1.9.3 にアップグレードしました。
  • [hashi-ui] Hashi UI を v1.0.0 から v1.3.8 にアップグレードしました。。

AWSのデフォルトインスタンスをアップグレードしました。

  • [aws] AWSインスタンスのEBSドライブで、デフォルトではなく gp3 のボリュームタイプを使用するように改善しました。
  • [aws] AWS T2 インスタンスをデフォルトでT3にアップグレードしました。
  • [aws] デフォルトゲームインスタンスのタイプを g4dn.xlarge から g5.xlarge へアップグレードしました。
  • [aws] T2やg4dnの代わりにT3インスタンスタイプを使用することで、AMIのビルドを改善しました。

その他変更点や修正点

  • [documentation] 間違ったバージョンの consul-template を参照していた文章を修正しました。

  • [toolbox] 一部のPython APIが戻った後も、一部のファイルハンドルが開かれたままになる問題を修正しました。

  • [toolbox] 一部の環境変数が不適切に設定されている場合に、Consulに接続できない問題を修正しました。詳細は、アップグレードに関する注意事項を参照してください。

  • [toolbox] ConsulTemplateTool.load_config_template を呼び出した後に、スクリプトの環境が変わってしまう問題を修正しました。

  • [toolbox] genvid.toolbox.SDK.setup() メソッドを update_images() コードを使用して改善しました。

  • [toolbox] genvid-ami delete を実行したときに生成される出力から、値の低いデバッグログを削除しました。

  • [ツールボックス] genvid.toolbox.RolesPathNotFoundError がプリントアウトされる際に、欠陥のあるパスを正しく報告しない問題を修正しました。

  • [ツールボックス] 環境変数 GENVID_DOCKER_API_TIMEOUT でタイムアウトパラメータを設定することにより genvid.toolbox.DockerTool を改善しました。

  • [toolbox] ディスクから定義を再読み込みする前に、bastion上の以前のジョブをクリアすることで、 genvid-bastion reinstall を改善しました。これにより、アップグレードのパスより簡潔になりました。

  • [toolbox] アップグレード処理中にローカルクラスタを更新することを追加し、アップグレード手順の信頼性を向上させました。

  • [aws,azure] ドキュメントにある無効なリンクを修正しました。

  • VMイメージ設定時のショートカット

  • [terraform] Genvid MILE SDK モジュールにおいて、全てのセンシティブな変数と出力をセンシティブとして明確にしました。

  • [bins] セットアップジョブの代わりに binsd ジョブを SDK 設定と一緒にインストールすることで、bins を改善しました。

  • [cluster-api] リモートクラスター設定時に cluster-apiROOTDIR/cloud-services フォルダーではなく static/vault-assets フォルダーを使用していた問題を修正しました。

  • [sdk] シーンが停止した時にunity editor がクラッシュする問題を修正しました。

  • [composed] ソースの使用可能性を検証することにより、不意の切断時のコンポジションのレンダリングが改善されました。

  • [gvencode] ソースの切断や再接続時にゲームデータのクロッピングの結果が期待通りにならない問題を修正しました。

  • [gvencode] クラウドクラスターでスタンドアロンモードを使用すると、音声や映像がフリーズする問題を修正しました。

  • [gvencode] トランジションが適用された時に GVEncode がクラッシュする問題を修正。

  • [studio] オーディオとビデオのユニークIDを保存できるように、Studioクライアントを更新しました。

  • [studio] オーディオの設定を変更した時やシーンを切り替えた時に、オーディオの自動追従設定がトグルする問題を修正しました。

  • [ingest] 配信が存在しないのに、Ingest サンプルが繰り返し接続しようとする問題を修正しました。

  • [nats] nats-server を 2.2.6 から 2.7.2 へアップグレードしました。

  • [nats] server-0 だけでなく、任意の server クラスノードを使用することで NATS ブートストラップの設定を改善しました。

  • [nats] NATS をセットアップジョブからクラスタジョブに移動することで可視性を改善しました。

    NATSは、Cluster UIのジョブリストに表示され、他の設定可能なジョブと同様に開始および停止されます。

  • [rootd,leafd] rootD もしくは leafD で発生しうるメモリリークを修正しました。

  • [web-sdk] リーフが変更された時に、Twitchの setStreamInfo 関数が呼び出されない問題を修正しました。

  • [twitch extension] クラウドデプロイメントにおいて、環境変数(SSL と ENDPOINT)の重複によりWebジョブが開始されない問題を修正しました。

  • [twitch extension] 最新の Twitch Extension Policies update で CSP の問題を回避するために、エンドポイントの設定に関する説明を追加しました。

  • [twitch extension] PiP (Picture-in-Picture) 使用時に、オーバーレイがフリーズしたり消えたりする問題を修正しました。

  • [samples] レジストリでパスを探す前に環境変数 MSBUILD が設定されているかをチェックすることにより、サンプルスクリプトを改善しました。

  • [ue4 cube sample] ドキュメント内の Cube Sample でサポートされている UE4 を最新バージョンに更新しました。

  • [loadtester] loadtester のクラウドジョブテンプレートが、誤って force_pull に設定されていたのを true に修正しました。

  • [ue4 plugin] IWYU (Include-What-You-Use) モデルを使用するプロジェクトで発生するコンパイルエラーを修正しました。

  • [ue4プラグイン] デバッグモードでUE4プロジェクトをビルドする際にクラッシュする問題を修正しました。

  • [ue4プラグイン、Unityプラグイン、SDK] エディターでシーンが停止した時に、SDKが全てのリソースを適切に破棄しない問題を修正しました。

既知の問題

Nomadを使用して起動しない場合、Genvid MILE SDK を統合したアプリケーションは、一度に1つだけ実行できます。

Genvid MILE SDK を使用したアプリケーションを Nomad を使用せずに起動した場合、デフォルトのセッション名が割り振られます。Unity エンジンや Unreal エンジンでアプリケーションをテストするときや、アプリケーションを手動で起動するときに便利です。

現在、環境変数 GENVID_SESSION_NAME をユニーク名に変更していない場合、Genvid MILE SDK は、この方法で起動した複数のアプリケーションをサポートできません。Nomad を使用してアプリケーションを起動することで、この問題を回避することもできます。

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

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

Azure モジュールで Terraform のセットアップを行うと、エラーが発生することがあります。

The requested size for resource 'XXXX-game-1' is currently not available in location 'XXXX'

回避策:

  1. Terraform の設定ページに移動します。
  2. instance_game_typeStandard_NV6_Promo に変更します。
  3. Commands ページに移動します。
  4. Plan apply -> Apply を再度実行します。

スタンドアロンプレーヤーでの iOS デバイスへのストリーミングは現在、機能していません。

スタンドアロンプレーヤーでの iOS デバイス (iPhones と iPads) へのストリーミングは現在、機能していません。この問題は、今後のリリースで修正予定です。

Azure でアベイラビリティゾーンを変更する際には、リソースを破壊して再構築する必要があります。

Azure で AZ を変更する際に、パブリック IP が仮想マシンから切り離されていないため、パブリック IP の削除に失敗することがありました。これは、Terraform プロバイダのバグです。詳しくは、Hashicorp Github の issue をご覧ください。

回避策としては、問題のあるパブリック IP を Azure ポータルの仮想マシンから手動で切り離します。

genvid-sdk upload-images-sdk コマンドが、Azure Cloud 上での Docker イメージのアップロードに失敗します。

一部の Docker イメージは、サイズが大きいため、 genvid-sdk upload-images-sdk コマンドを使用して Azure Cloud にアップロードできません。(SSL エラーと Max retries exceeded のメッセージが表示されます)。

回避策:

  1. Azure UI を開きます。
  2. イメージを手動でアップロードします。
  3. もう一度 genvid-sdk upload-images-sdk を起動します。

既存の AWS クラスタでサブドメインを更新する際に、サブドメイン NS レコードを手動で削除する必要があります。

basic_cluster_alb_ssl または minimal_cluster_alb_ssl を使用して AWS クラスタを作成する場合、ドメインとサブドメインが提供されます。既存クラスタのサブドメインを更新する場合、以前のサブドメインの route53 の NS レコードをメインドメインから手作業で削除する必要があります。これは Terraform 内での NS レコードの処理のためです。

AWS を使用しているクラスタ basic_cluster_alb_ssl のサブネットを削除できません。

basic_cluster_alb_sslsubnet_cidr_block_size を変更したり、AZ の数を減らしたり、既存の AZ を並べ替えたりすると、クラスタはサブネットを削除しようとして止まってしまいます。

設定を再適用しても、問題は解決しません。

回避策として、クラスタを削除して再作成してください。

Bastion クラスタの設定ページのモーダルウィンドウが閉じない。

クラスタの Bastion 設定 ページで、クリックしても、カスタムタグの Properties モーダルウィンドウが閉じない。

回避策としては、もう一度 Properties をクリックしてモーダルウィンドウを閉じてください。

Studio UIが反応しなくなる。

ビンやNATSのサービスが不健全になった場合、Studio UIが応答しなくなる。

回避策としては、ビンとNATSジョブが健全な状態に戻ったら、Studioジョブを再起動します

制限事項

誤った順序で設定をロードすると、値が上書きされることがあります。

クラウド上で SSL を使用している場合でも、ローカルクラスタで SSL を使用している場合でも、Web サンプルを読み込む前に youtube.sample.hcl を読み込むと、Web サンプルは web.hcl ファイルから embed_ssl に関連付けられた値を上書きします。

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

大きな NTP 時間オフセットが発生した場合、ストリームの再生が停止する可能性があります。回避策としては、ゲーム機が自動的に時計を更新するように設定されていることを確認してください。ローカル設定では、AWS IP アドレスを pool.ntp.org に置き換えてください。

詳細については、 AWS 設定セクション を参照してください。

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

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

この問題が解決されるまで、複数の Studio ウィンドウから 1 つのコントロールへ入力することはお勧めできません。

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

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

SDK はフレームレートを 1.0 以下に固定します。

問題を回避するためにストリームのフレームレートを 1.0 に下げました。フレームレートが 1.0 以下の場合は、SDK が 1.0 FPS に固定します。

Azure リソースグループ名のデフォルト値が長すぎる場合がある。

変数 resource_group_name に値が設定されていない場合、 {bastionid}-{clustername} の組み合わせで設定されます。そのため、Azure リソースグループ名が最大文字数である 64 文字よりも長くなってしまう場合があります。

この問題を避けるために、変数 resource_group_name には必ず 64 文字以下の値を指定してください。

Azure での命名についての詳細は Azure Github を参照してください。

AWS クラスタサブネットの競合エラー

AWS クラスタの subnet_cidr_block_size を減らして AZ 数を増やすことを同時に行うと、サブネットの競合エラーが発生します。

この問題が発生した場合、設定を適用しなおしてください。

クラスタの更新時に、Azure ディスクに新しいタグが追加されない。

新しいタグを Azure クラスタに適用する際、ディスクを所有する仮想マシンインスタンスが apply プロセス中に再作成されない限り、 disk にタグは適用されません。

回避策としては、クラスタを削除して再作成することで問題が解決します。

クラスタ名は 64 文字までです。

クラスタ名は、Windows のファイルシステムの制限により、64 文字に制限されています。ファイルディレクトリの最大文字数には、システムのユーザー名やクラスタ名などが影響します。

技術的には 64 文字以上にすることは可能ですが、結果は予測できないものになります。