Despliegue Unity Render Streaming en nodos GPU de ACK para transmitir renderizado 3D en tiempo real a navegadores sin necesidad de hardware GPU en el lado del cliente.
Requisitos previos
Asegúrese de contar con lo siguiente:
Un clúster administrado de ACK con un node pool de GPU
kubectlconfigurado para conectarse al clústerUnity Editor instalado localmente
Docker instalado localmente para compilar imágenes de contenedor
Entorno utilizado en esta guía:
|
Componente |
Versión / especificación |
|
Clúster administrado de ACK |
1.22.3-aliyun.1 |
|
Sistema operativo del node pool |
Alibaba Cloud Linux 2.1903 |
|
Tipo de instancia |
ecs.gn6v-c8g1.2xlarge |
|
Docker Engine |
19.3.15 |
Paso 1: Compilar la aplicación Unity Render Streaming
Este paso utiliza Unity Editor 2021.3.2f1c1 para Mac M1 Silicon.
En Unity Editor, abra Package Manager desde el menú superior izquierdo.
Busque
com.unity.renderstreaming@3.1.0-exp.2y haga clic en Add.-
Haga clic en Yes para reiniciar el proyecto. Después del reinicio, el paquete Unity Render Streaming aparece en la página de Package Manager.

-
En la página de Package Manager, desplácese hasta Samples y haga clic en Import (1.19 MB). La carpeta Assets se actualiza tras la importación.

-
Abra Build Settings desde el menú superior izquierdo. Configure los campos como se indica a continuación, luego haga clic en Build y asigne al resultado el nombre mac-linux. Tras la compilación, el directorio de salida tiene el siguiente aspecto:
Campo
Valor
Platform
Windows, Mac, Linux
Target Platform
Linux
Scenes
WebBrowserInput

Descargue el ejemplo oficial del servidor web desde el menú superior izquierdo. El servidor web gestiona la señalización WebSocket entre los navegadores y el flujo WebRTC de la aplicación Unity. Su aplicación de renderización remota queda completa con un ejecutable de Unity y un binario de servidor web. Otras opciones de implementación se describen en About Unity Render Streaming.
Paso 2: Contenerizar y desplegar la aplicación
Contenerizar la aplicación Unity y el servidor web
Compile la imagen de la aplicación Unity. Siga Linux graphics application best practices para los pasos de containerization. Utilice una imagen base
unityci/editorque coincida con su versión de Unity Editor; las etiquetas disponibles se encuentran en unityci/editor en Docker Hub. Esta guía utilizaubuntu-2021.3.2f1-mac-mono-1.0.1con paquetes adicionales:vulkan-util,libc++1ylibc++abi1.-
Compile la imagen del servidor web. Utilice el siguiente Dockerfile:
FROM ubuntu:20.04 WORKDIR /run COPY webserver ./ CMD webserver -w
Desplegar en ACK
-
Cree un archivo llamado
unity-demo.yamlcon el siguiente contenido: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: AlwaysAmbos contenedores comparten el namespace de red del Pod. Unity se conecta al servidor web en
127.0.0.1:80mediante WebSocket; el servidor web acepta conexiones de navegadores en el puerto 80.Explicación de los campos clave:
hostNetwork: true— El ejemplo del servidor web se vincula únicamente a127.0.0.1. El modo de red host permite acceder a él mediante la dirección IP elástica (EIP) del nodo.privileged: true— Obligatorio para que el contenedor de Unity acceda a la GPU del host.nodeName— Fija el Pod a un nodo GPU específico. Reemplace<your-gpu-node-name>con el nombre de su nodo.
-
Aplique el manifiesto:
kubectl apply -f unity-demo.yaml -
Compruebe que el Pod esté en ejecución:
kubectl get pod unity-demoSalida esperada:
NAME READY STATUS RESTARTS AGE unity-demo 2/2 Running 0 30sSi el Pod no se está ejecutando, revise los registros del contenedor:
kubectl logs unity-demo -c unity kubectl logs unity-demo -c webserver
Paso 3: Acceder al flujo de renderización remota
Ruta de conexión:
Browser -> EIP (port 80) -> web server (WebSocket signaling) -> Unity application (WebRTC stream)
En su navegador, vaya a EIP:80. Haga clic en VideoPlayer Sample para iniciar el streaming.
La calidad del streaming depende de la estabilidad de la red.