Implante o Unity Render Streaming em nós GPU do ACK para transmitir renderização 3D em tempo real para navegadores, sem necessidade de hardware GPU no lado do cliente.
Pré-requisitos
Verifique se você possui:
Um cluster gerenciado ACK com um pool de nós GPU
O
kubectlconfigurado para se conectar ao clusterO Unity Editor instalado localmente
O Docker instalado localmente para criar imagens de contêiner
Ambiente utilizado neste guia:
|
Componente |
Versão / especificação |
|
Cluster gerenciado ACK |
1.22.3-aliyun.1 |
|
Sistema operacional do pool de nós |
Alibaba Cloud Linux 2.1903 |
|
Tipo de instância |
ecs.gn6v-c8g1.2xlarge |
|
Docker Engine |
19.3.15 |
Etapa 1: Criar a aplicação Unity Render Streaming
Esta etapa utiliza o Unity Editor 2021.3.2f1c1 para Mac M1 Silicon.
No Unity Editor, abra o Package Manager no menu superior esquerdo.
Pesquise por
com.unity.renderstreaming@3.1.0-exp.2e clique em Add.-
Clique em Yes para reiniciar o projeto. Após a reinicialização, o pacote Unity Render Streaming aparece na página do Package Manager.

-
Na página do Package Manager, role até Samples e clique em Import (1,19 MB). A pasta Assets é atualizada após a importação.

-
Abra as Build Settings no menu superior esquerdo. Defina os campos conforme abaixo, clique em Build e nomeie a saída como mac-linux. Após a compilação, o diretório de saída terá a seguinte aparência:
Campo
Valor
Platform
Windows, Mac, Linux
Target Platform
Linux
Scenes
WebBrowserInput

Baixe o exemplo oficial de servidor web no menu superior esquerdo. Esse servidor gerencia a sinalização WebSocket entre os navegadores e o stream WebRTC da aplicação Unity. Sua aplicação de renderização remota está pronta, composta por um executável Unity e um binário de servidor web. Outras opções de implementação estão descritas em Sobre o Unity Render Streaming.
Etapa 2: Containerizar e implantar a aplicação
Containerizar a aplicação Unity e o servidor web
Crie a imagem da aplicação Unity. Siga as Melhores práticas para aplicações gráficas Linux para obter as etapas de containerização. Utilize uma imagem base
unityci/editorcompatível com sua versão do Unity Editor — as tags disponíveis encontram-se em unityci/editor no Docker Hub. Este guia usa a tagubuntu-2021.3.2f1-mac-mono-1.0.1com pacotes adicionais:vulkan-util,libc++1elibc++abi1.-
Crie a imagem do servidor web. Use o seguinte Dockerfile:
FROM ubuntu:20.04 WORKDIR /run COPY webserver ./ CMD webserver -w
Implantar no ACK
-
Crie um arquivo chamado
unity-demo.yamlcom o seguinte conteúdo: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 os contêineres compartilham o namespace de rede do Pod. O Unity se conecta ao servidor web em
127.0.0.1:80via WebSocket; o servidor web aceita conexões do navegador na porta 80.Explicação dos campos principais:
hostNetwork: true— O exemplo de servidor web vincula-se apenas a127.0.0.1. O modo de rede do host torna o serviço acessível por meio do endereço IP elástico (EIP) do nó.privileged: true— Necessário para que o contêiner do Unity acesse a GPU do host.nodeName— Fixa o Pod em um nó GPU específico. Substitua<your-gpu-node-name>pelo nome do seu nó.
-
Aplique o manifesto:
kubectl apply -f unity-demo.yaml -
Verifique se o Pod está em execução:
kubectl get pod unity-demoSaída esperada:
NAME READY STATUS RESTARTS AGE unity-demo 2/2 Running 0 30sCaso o Pod não esteja em execução, verifique os logs dos contêineres:
kubectl logs unity-demo -c unity kubectl logs unity-demo -c webserver
Etapa 3: Acessar o stream de renderização remota
Caminho de conexão:
Browser -> EIP (port 80) -> web server (WebSocket signaling) -> Unity application (WebRTC stream)
No navegador, acesse EIP:80. Clique em VideoPlayer Sample para iniciar o stream.
A qualidade do stream depende da estabilidade da rede.