Recursos Virtuais na Unreal Engine 5.1: sincronização de dados curta e rápida.

5 de dezembro de 2022
O recente lançamento da Unreal Engine 5.1 traz uma novidade para oferecer sincronizações de dados curtas e rápidas: os Recursos Virtuais.

Atualmente em Beta, os Recursos Virtuais proporcionam uma maneira de separar os dados estruturados dos dados em massa, permitindo que desenvolvedores sincronizem somente o necessário dos sistemas de controle do código-fonte, como o Perforce. Isso resulta em espaços de trabalho menores e sincronizações mais velozes para os desenvolvedores que não precisam de acesso aos dados por completo.

Nesta publicação, a gerente de produto sênior, Grace Yen, e o desenvolvedor-chefe de recursos virtuais, Paul Chipchase, ambos da equipe da Unreal Engine, explicam sobre os Recursos Virtuais para que você avalie se eles seriam uma boa adição a seu projeto.

Quais problemas os Recursos Virtuais resolvem?

Ao longo das últimas gerações de desenvolvimento de jogos, notamos um padrão interessante relacionado ao tamanho de projetos. Além dos projetos estarem cada vez maiores (fizemos pesquisas com alguns de nossos licenciados para verificar essa informação), muitos desenvolvedores estão seguindo para um modelo de Jogos como serviços (GaaS, do inglês "Games as a Service"), com atualizações contínuas ao longo de vários anos.

Também vimos equipes melhorando a maneira como as atualizações são entregues. Algumas equipes preferem "transmissões de recursos" para evitar que recursos de ponta afetem o resto da equipe até a versão ser estabilizada e esteja pronta para lançamento.

Nós observamos alguns membros de equipe trabalhando entre linhas de lançamento de seus produtos (para auxiliar serviços on-line), além de modelos com fluxos de trabalho de desenvolvedores "principais" e "avançados".

Isso apresenta outro desafio: os membros ficam quase sem espaço em seus SSDs e, para liberar espaço e continuar seus trabalhos atuais, precisam optar por remover a sincronização de um fluxo de trabalho que provavelmente precisariam.

Antes da pandemia, diversos estúdios (incluindo o nosso) enfrentavam dificuldades em relação às sincronizações. Nós implementamos soluções como os servidores Performance Edge para tentar entregar aos usuários um ponto de acesso mais rápido. No entanto, quando fomos obrigados a trabalhar de casa em 2020, começamos a perceber as dificuldades, como membros da equipe não possuírem uma boa conexão à internet ou terem oscilações de velocidade.

Reunir as melhores equipes às vezes requer que você reúna membros de diversos lugares, e essa dinâmica veio para ficar.  Mesmo em um cenário híbrido em que os membros da equipe passam tempo em dois lugares, podemos ter o problema de precisar sincronizar múltiplas vezes para hardwares separados por local.

Com tecnologias poderosas, como o Nanite, o sistema de geometria virtualizada da UE5 criado para fornecer alta contagem de objetos e detalhes, esperamos que a escala de projetos cresça ainda mais no futuro.
Em resumo, as pessoas estão perdendo muito tempo e espaço sincronizando, pois:
  • Os projetos estão ficando maiores
  • Os jogos estão mais duradouros e, assim, mais conteúdo está sendo adicionado a eles

O problema está aumentando pois:
  • As equipes podem precisar sincronizar múltiplos fluxos de trabalho, como recursos de lançamentos ou o gerenciamento de serviços on-line
  • Hardwares físicos (como SSDs) estão ficando mais caros e demorados de se obter
  • Equipes maiores podem dificultar a eficiência do trabalho
  • Funcionários híbridos e remotos enfrentam dificuldades para sincronizar projetos
  • Equipes que utilizam o Nanite estão obtendo maior fidelidade visual, mas também gerando mais dados


Qual é a abordagem da Epic com os Recursos Virtuais?

Nossa solução para os Recursos Virtuais está na ideia de que você só precisa sincronizar os dados necessários, e que qualquer dado adicional que precise depois seja de fácil acesso.

É uma mudança na forma como as equipes estavam contornando o problema. Equipes (inclusive a nossa) se tornaram eficientes em educar desenvolvedores a sincronizar seus projetos durante a noite, minimizando a inatividade. Os Recursos Virtuais não vão impactar isso. Eles oferecem um método mais rápido e eficiente para sincronizar dados para todos, especialmente em situações em que as equipes não conseguem planejar com antecedência e aparece um problema urgente em um fluxo de trabalho que também não está atualizado.

Nós avaliamos nossos arquivos de pacote (.umap/.uasset) e vimos uma grande oportunidade de reduzir a quantidade de dados que precisavam ser sincronizados. Muitas vezes, os usuários só precisam de informações parciais de um recurso para poder apresentá-lo de forma significativa no editor. No caso de texturas, por exemplo, talvez você precise de uma miniatura e de propriedades de edição, como coordenadas e escala. Mas os dados em massa de um objeto em UTexture são os dados originais de um pixel bruto, algo que você não precisa de imediato. Baseado nisso, nós dividimos esses recursos em duas partes nos bastidores:
  • Os "dados estruturados" permanecem onde seus recursos estão, em seu controle do código-fonte. Eles contêm tudo que um editor necessita para carregar e representar o recurso
  • Os "dados brutos" são a porção que você provavelmente não precisa, e são separados em uma outra área no controle do código-fonte
Um dos nossos princípios ao desenvolver os Recursos Virtuais é manter o fluxo de trabalho dos nossos usuários. Os membros da equipe devem conseguir sincronizar e trabalhar da mesma forma, porém mais rapidamente. Ao dividir, deixando os metadados do recurso-base no local original da fonte, os usuários conseguem sincronizar os dados exatamente como antes. A ferramenta se encarrega de carregar os dados brutos de uma nova fonte, se necessário. Para fazer isso acontecer, você precisar trabalhar com seu administrador do controle do código-fonte para preparar um local separado com as mesmas permissões de acesso do controle do código-fonte original.

Em resumo:
  • Nós dividimos os recursos para que a parte bruta seja armazenada em outro local do controle do código-fonte
  • Os usuários continuam trabalhando como antes, mas sincronizando em partes de metadados de recursos-base menores.
  • No caso raro de um usuário precisar de recursos brutos que ele não tenha, ele pode pegá-lo quando quiser
 

Como posso implementar os Recursos Virtuais?

Esse recurso está atualmente em Beta, o que significa que ele está estável para testes, mas ainda pode sofrer alterações. Use-o com cautela na produção de projetos. Gostaríamos de destacar, no entanto, que ele está robusto o bastante para ser usado na produção de Fortnite a partir da Temporada 22.

Nós temos alguns modos para auxiliar as equipes a utilizar os Recursos Virtuais:
Dependendo do tamanho do projeto e do seu cronograma de produção, talvez você queira usar abordagens diferentes. Por exemplo:
  • Se você estiver começando um novo projeto, recomendamos ativar os Recursos Virtuais imediatamente.
  • Se você possuir um projeto em andamento, talvez seja melhor evitar os Recursos Virtuais em áreas de jogo ou em recursos que estão passando por muitas iterações. No entanto, você pode utilizá-los em recursos maiores que não foram ajustados há um bom tempo.
  • Ou você pode simplesmente ordenar seus recursos principais por tamanho e virtualizar esses recursos como objetivos fáceis de realizar.

Ressalvas a serem consideradas:
  • Sabemos que a possibilidade de trabalhar off-line é um recurso necessário, mesmo que não tenha sido implementado por enquanto. Ele está no topo da lista e planejado para a versão 5.2. Isso significa que, se houver usuários que estão trabalhando off-line (em um avião, por exemplo), os Recursos Virtuais não funcionarão para eles corretamente. Em dado momento pode não ser possível obter os dados brutos, caso queiram editar algo. O programa não deve apresentar problemas técnicos graves, mas o usuário precisará se reconectar para obter esses dados.
  • Há uma divisão de seus dados primários. Mesmo não sendo um problema durante a produção, isso deve ser considerado caso você planeje enviar os dados de conteúdo do seu jogo para fora de sua infraestrutura existente. Nesse caso, você pode utilizar a UnrealVirtualizationTool para "revigorar" seus recursos virtualizados de volta à forma original (ao armazenar novamente dados brutos no pacote de arquivos).
  • Essa implementação só funciona corretamente se os seus usuários tiverem acesso a dados compartilhados com velocidades de conexão razoáveis. Caso contrário, o usuário notará problemas e será melhor remover o tempo de sincronização e espaço antes de começar. Confira mais informações sobre isso na próxima seção.
  • Atualmente, só temos suporte para o controle do código-fonte do Perforce.
  • Esta tecnologia ainda está em Beta. Embora já em uso e em constante desenvolvimento, não há previsões para quando os Recursos Virtuais serão finalizados, nem como essa novidade será suportada no futuro.
 

Os Recursos Virtuais são uma boa escolha para meu projeto?

Não há uma resposta definitiva se os Recursos Virtuais servirão para você, por haver diversos fatores diferentes envolvidos. Mas as perguntas abaixo podem te ajudar a decidir se eles são uma solução viável para você tentar. Também é importante ressaltar que a virtualização não é um processo sem retorno. Você sempre terá a oportunidade de revigorar qualquer (ou todos) os dados virtualizados se desejar.
  • Sua equipe está tendo problemas com espaço em disco, ou você acha que o aumento dos seus dados no futuro causará tais problemas?
  • Os membros da equipe precisam muitas vezes sincronizar mais de uma versão de seu projeto, criando muito conteúdo entre as versões?
  • Os membros de sua equipe possuem acesso a um bom Cache de Dados Derivados (CDD) compartilhado?
    • Essa também é uma pergunta controversa. Se a maioria dos membros da equipe tiver acesso a um CDD compartilhado, mas houver alguns membros com problemas, você pode usar os Recursos Virtuais no projeto e permitir que certos membros da equipe fiquem de fora. Eles vão "desvirtualizar" recursos no check-in, mas você pode executar scripts para captar essas ocorrências e consertá-las automaticamente — ao custo de agitar ainda mais o controle do código-fonte.
 

Dicas de como potencializar os benefícios dos Recursos Virtuais

  • Nós recomendamos que você procure usar o check-in da Unreal Editor para fluxos de trabalho. Ao seguir esse caminho, há garantias que os recursos ainda estejam virtualizados na hora do check-in. Embora haja ferramentas fornecidas no Perforce que conferem recursos virtualizados, sempre há uma chance de um usuário deixar passar e até pular essa etapa.
 

Recursos Virtuais em ação

Assim como vários recursos que lançamos na Unreal Engine, nós mesmos gostamos de testar o produto primeiro; de "provar nossa própria receita", por assim dizer. Além de liberar os Recursos Virtuais em projetos de amostra ou internos, nós também introduzimos esse recurso ao Fortnite. Os números abaixo fornecem exemplos ilustrativos para dar uma ideia das economias em espaço e tempo que vimos no Fortnite. Sua experiência pode variar dependendo do tipo de recursos em seu jogo. Por exemplo, nós os testamos em Valley of the Ancient (que não representa um jogo real de forma alguma) e, devido ao uso extensivo de malhas Nanite, economizamos até 50x.

No Fortnite, isso foi o que calculamos:

Olhando para o futuro

Na Unreal Engine 5.1, os Recursos Virtuais:
  • Funcionam com o Perforce
  • Possuem suporte para recursos de textura e áudio
  • Fornecem diferentes métodos de ativação (por tipo de recurso, caminho de pacote ou todos)
  • Possuem dados brutos referenciados por uma mistura de conteúdos de recursos

Nós temos muito mais novidades planejadas para os Recursos Virtuais, incluindo:
  • Modo de Trabalho Off-line (para sincronizar os dados com antecedência)
  • Suporte para mais tipos de recursos (como malha estática, incluindo Nanite)
  • Suporte para outras soluções de controle do código-fonte

E por enquanto é isso. Esperamos que tenha achado esta publicação útil. Se quiser saber mais sobre os Recursos Virtuais, confira a documentação.

    Obtenha a Unreal Engine hoje!

    Obtenha a ferramenta de criação mais aberta e avançada do mundo.
    Com diversos recursos e acesso a códigos-fonte inclusos, a Unreal Engine vem totalmente carregada e pronta para usar.
    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024
    Notícias
    6 de fevereiro

    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024

    Interiores de fantasia, minas de cristal estilizadas, uma viagem de volta aos anos 90 e muito mais. Chegaram os ativos 3D gratuitos de fevereiro da Loja da Unreal Engine!
    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024
    Notícias

    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024

    Interiores de fantasia, minas de cristal estilizadas, uma viagem de volta aos anos 90 e muito mais. Chegaram os ativos 3D gratuitos de fevereiro da Loja da Unreal Engine!
    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto
    Notícias
    5 de fevereiro

    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto

    Cafeterias retrô, interiores rústicos, cidades com baixa contagem de polígonos, PNJs personalizáveis: a promoção de fevereiro na Loja tem algo para todos. Compre agora para obter os itens selecionados do mês pela metade do preço.
    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto
    Notícias

    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto

    Cafeterias retrô, interiores rústicos, cidades com baixa contagem de polígonos, PNJs personalizáveis: a promoção de fevereiro na Loja tem algo para todos. Compre agora para obter os itens selecionados do mês pela metade do preço.