すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Unity リモートレンダリングのベストプラクティス

最終更新日:Mar 06, 2026

この Topic では、Unity リモートレンダリングの使用方法について説明します。

背景情報

Unity Render Streaming は、高品質で複雑な 3D モデルをクラウドでレンダリングし、モバイルデバイスやブラウザに表示するための Unity のオープンソースソリューションです。Unity Render Streaming を使用して Unity アプリケーションをコンテナ化することで、クラウドでフレームをレンダリングし、リアルタイムでブラウザにストリーミングできます。これにより、クラウドゲーミングのシナリオが可能になります。Unity Render Streaming の詳細については、「UnityRenderStreaming」をご参照ください。

ステップ1:Unity Editor を使用した Unity Render Streaming アプリケーションの開発

この Topic では、Mac M1 Silicon 向けの Unity Editor バージョン 2021.3.2f1c1 を例として使用します。

  1. Unity Editor で、[Windows][Package Manager][+][Add package from git URL]
  2. com.unity.renderstreaming@3.1.0-exp.2 を検索します。[Add] をクリックします。
  3. 表示されたダイアログボックスで [Yes] をクリックして、プロジェクトを再起動します。
    再起動後、Unity Render Streaming パッケージがインポートされ、[Package Manager] ページで利用可能になります。Unity Render Streaming package
  4. [Package Manager] ページの [Samples] セクションで、[Import] をクリックして公式サンプルをインポートします。
    この Topic では、公式サンプルの samples (1.19 MB) をインポートします。インポート後、Assets フォルダが更新されます。Assets
  5. ページの左上隅で、[File] > [Build Settings] をクリックします。[Platform][Windows, Mac, Linux] に設定します。[Target Platform][Linux] に設定します。[Scenes][WebBrowserInput] に設定します。[Build]mac-linux
    ビルドが完了すると、ファイルディレクトリは次のように表示されます。Build
  6. ページの左上隅で、[Edit][Render Streaming][Download web app]
    Unity アプリケーションのビルドに加えて、ブラウザがレンダリングされたフレームにアクセスできるように、対応する Web サーバーもセットアップする必要があります。この Topic では公式サンプルを使用するため、公式の Web サーバーを直接ダウンロードできます。
    ダウンロード後、リモートレンダリングアプリケーションが完成します。これには、Unity の実行可能ファイルと Web サーバーアプリケーションが含まれます。Render Streaming の他の実装オプションについては、「Unity Render Streaming について」をご参照ください。

ステップ2:アプリケーションのコンテナ化とデプロイ

この実験では、次の環境を使用します。
  • クラスター:ACK マネージドクラスター、バージョン 1.22.3-aliyun.1。
  • ノードプールのオペレーティングシステム:Alibaba Cloud Linux 2.1903。
  • インスタンスタイプ:ecs.gn6v-c8g1.2xlarge。
  • Docker Engine:19.3.15。
  1. Unity アプリケーションとその Web サーバーをコンテナ化します。
    1. Unity アプリケーションをコンテナ化します。詳細な手順については、「Linux グラフィックスアプリケーションのベストプラクティス」をご参照ください。
      正しいベースイメージのバージョンを選択してください。利用可能なバージョンについては、「Editor」をご参照ください。この Topic では、ベースイメージとして ubuntu-2021.3.2f1-mac-mono-1.0.1 を使用し、vulkan-util、libc++1、libc++abi1 の依存パッケージをインストールします。
    2. Web サーバーをコンテナ化します。
      Web サーバーのコンテナ化は、Web アプリケーションの標準的なプラクティスに従います。以下は Dockerfile の例です。
      FROM ubuntu:20.04
      WORKDIR /run
      COPY webserver ./
      CMD webserver -w
  2. YAML ファイルを作成してデプロイします。
    1. unity-demo.yaml という名前のファイルを次の内容で作成します。
      Unity アプリケーションと Web サーバーのイメージをビルドした後、それらを ACK クラスターにデプロイします。「Linux グラフィックスアプリケーションのベストプラクティス」に基づいて、次の YAML の例をリファレンスとして YAML ファイルをカスタマイズしてください。
      apiVersion: v1
      kind: Pod
      metadata:
        name: unity-demo
        namespace: default
      spec:
        # Linux Web サーバーのサンプルは、WebSocket を 127.0.0.1 でのみ公開します。ブラウザが WebSocket 経由で接続できるようにするには、ホストネットワークモードを使用し、EIP を介してホストにアクセスします。
        hostNetwork: true
        nodeName: xxx
        containers:
        - image: xxx:xx
          name: unity
          command: ["/run/mac-linux/mac-linux.x86_64"]
          securityContext:
            privileged: true
        - image: xxx:xx
          name: webserver
          ports:
          - containerPort: 80
            protocol: TCP
        restartPolicy: Always
      両方のコンテナを 1 つの Pod に配置し、ネットワーク名前空間を共有します。Unity デモは、WebSocket を介して 127.0.0.1:80 で Web サーバーに接続します。Web サーバーは、ブラウザからの接続を受け入れるためにポート 80 を公開します。
    2. 次のコマンドを実行して Pod をデプロイします。
      kubectl apply -f unity-demo.yaml

ステップ3:サービスへのアクセスとリモートレンダリング結果の表示

ブラウザで、ホストの EIP:80 にアクセスします。[VideoPlayer Sample] をクリックします。結果は次のように表示されます。
説明 繰り返しテストした結果、リアルタイムパフォーマンスはネットワークに依存することがわかりました。ネットワークが安定している場合、カクつきはほとんど発生しません。