Déployez Unity Render Streaming sur des nœuds GPU ACK afin de diffuser un rendu 3D en temps réel vers les navigateurs, sans nécessiter de matériel GPU côté client.
Prérequis
Assurez-vous de disposer des éléments suivants :
Un cluster managé ACK doté d’un pool de nœuds GPU
kubectlconfiguré pour se connecter au clusterUnity Editor installé localement
Docker installé localement pour construire les images de conteneur
Environnement utilisé dans ce guide :
| Composant | Version / spécification |
|---|---|
| Cluster managé ACK | 1,22.3-aliyun.1 |
| Système d’exploitation du pool de nœuds | Alibaba Cloud Linux 2.1903 |
| Type d’instance | ecs.gn6v-c8g1.2xlarge |
| Docker Engine | 19.3.15 |
Étape 1 : Construire l’application Unity Render Streaming
Cette étape utilise Unity Editor 2021.3.2f1c1 pour Mac M1 Silicon.
Dans Unity Editor, ouvrez Package Manager depuis le menu en haut à gauche.
Recherchez
com.unity.renderstreaming@3.1.0-exp.2et cliquez sur Add.-
Cliquez sur Yes pour redémarrer le projet. Après le redémarrage, le package Unity Render Streaming apparaît dans la page Package Manager.

-
Dans la page Package Manager, faites défiler jusqu’à Samples et cliquez sur Import (1,19 Mo). Le dossier Assets est mis à jour après l’importation.

-
Ouvrez Build Settings depuis le menu en haut à gauche. Définissez les champs comme suit, puis cliquez sur Build et nommez la sortie mac-linux. Après la construction, le répertoire de sortie se présente ainsi :
Champ Valeur Platform Windows, Mac, Linux Target Platform Linux Scenes WebBrowserInput 
Téléchargez l’exemple de serveur web officiel depuis le menu en haut à gauche. Le serveur web gère la signalisation WebSocket entre les navigateurs et le flux WebRTC de l’application Unity. Votre application de rendu à distance est désormais complète, avec un exécutable Unity et un binaire de serveur web. D’autres options d’implémentation sont abordées dans About Unity Render Streaming.
Étape 2 : Conteneuriser et déployer l’application
Conteneuriser l’application Unity et le serveur web
Construisez l’image de l’application Unity. Suivez Bonnes pratiques pour les applications graphiques Linux pour les étapes de conteneurisation. Utilisez une image de base
unityci/editorcorrespondant à votre version de Unity Editor — les tags disponibles figurent sur unityci/editor sur Docker Hub. Ce guide utiliseubuntu-2021.3.2f1-mac-mono-1.0.1avec les packages supplémentaires suivants :vulkan-util,libc++1etlibc++abi1.-
Construisez l’image du serveur web. Utilisez le Dockerfile suivant :
FROM ubuntu:20.04 WORKDIR /run COPY webserver ./ CMD webserver -w
Déployer sur ACK
-
Créez un fichier nommé
unity-demo.yamlavec le contenu suivant :apiVersion: v1 kind: Pod metadata: name: unity-demo namespace: default spec: # The Linux web server sample binds WebSocket to 127.0.0.1 only. # Use host network mode so browsers can reach it through the node's EIP. hostNetwork: true nodeName: <your-gpu-node-name> containers: - image: <your-unity-image>:<tag> name: unity command: ["/run/mac-linux/mac-linux.x86_64"] securityContext: # privileged: true is required for the Unity process to access # the GPU device on the host. privileged: true - image: <your-webserver-image>:<tag> name: webserver ports: - containerPort: 80 protocol: TCP restartPolicy: AlwaysLes deux conteneurs partagent le namespace réseau du Pod. Unity se connecte au serveur web à l’adresse
127.0.0.1:80via WebSocket ; le serveur web accepte les connexions des navigateurs sur le port 80.Explication des champs clés :
hostNetwork: true— L’exemple de serveur web se lie uniquement à127.0.0.1. Le mode réseau hôte le rend accessible via l’adresse IP élastique (EIP) du nœud.privileged: true— Requis pour que le conteneur Unity accède au GPU hôte.nodeName— Épingle le Pod à un nœud GPU spécifique. Remplacez<your-gpu-node-name>par le nom de votre nœud.
-
Appliquez le manifeste :
kubectl apply -f unity-demo.yaml -
Vérifiez que le Pod est en cours d’exécution :
kubectl get pod unity-demoSortie attendue :
NAME READY STATUS RESTARTS AGE unity-demo 2/2 Running 0 30sSi le Pod n’est pas en cours d’exécution, consultez les journaux des conteneurs :
kubectl logs unity-demo -c unity kubectl logs unity-demo -c webserver
Étape 3 : Accéder au flux de rendu à distance
Chemin de connexion :
Browser -> EIP (port 80) -> web server (WebSocket signaling) -> Unity application (WebRTC stream)
Dans votre navigateur, accédez à EIP:80. Cliquez sur VideoPlayer Sample pour démarrer le flux.
La qualité du flux dépend de la stabilité du réseau.