Jogos em foco: Criação e operação de jogos conectados com rede multijogador

Este é o oitavo blog da nossa série Games Focus , que destaca as principais iniciativas de desenvolvimento de produtos para o próximo ano e para os anos seguintes. Nesta edição, abordamos o status, os próximos planos de lançamento e a visão futura do Unity Multiplayer Networking.
Olá, meu nome é Kiki Saintonge e sou gerente de produto na equipe multijogador - aquela que se concentra em entregar o Netcode para GameObjects solução.
Estou na Unity há cerca de um ano, mas sou um desenvolvedor amador e indie da Unity desde 2013. Minha paixão são os jogos, especialmente os jogos inspiradores que vocês criam. Estou bastante animado para falar sobre nossas soluções para vários jogadores nesta postagem de hoje, especialmente porque muitos de vocês expressaram a necessidade e o desejo de ter uma solução mais completa e acessível para o desenvolvimento de vários jogadores. Estamos mais perto do que você imagina.

Vamos ser honestos: Criar jogos multijogador pode ser muito difícil, desde a concepção da mecânica até a implementação e os testes. É preciso levar em conta muitas coisas, como latência, perda de pacotes, gerenciamento de cenas de manipulação, o que deve ou não ser enviado pela rede, e muitas delas são difíceis de rastrear ou simular. Até mesmo nossas soluções de rede de terceiros precisam de ferramentas de terceiros (quarto?) apenas para ver o que está acontecendo.
A criação de um sistema de rede completo para seu jogo deve ser como o próprio jogo: único e refinado para se adequar à experiência do jogo.
Com isso em mente, queríamos criar uma solução de código de rede que fosse flexível o suficiente para acomodar todos os aspectos principais do seu jogo multijogador e que, ao mesmo tempo, facilitasse o uso de ferramentas ou serviços de terceiros, se necessário. Esse é o objetivo fundamental de nossas soluções de código de rede.

Também é importante ter em mente que, com o desenvolvimento multijogador, vêm os serviços e a escala, duas coisas em que você talvez não tenha pensado no contexto de um único jogador ou cooperativo. O Unity Gaming Services é nossa plataforma recém-lançada que inclui serviços de hospedagem de servidor de jogos (Multiplay), Matchmaker, Relay e Lobby. Ele foi projetado para oferecer a você todas as ferramentas necessárias para construir bases sólidas, criar experiências envolventes para os jogadores e impulsionar o crescimento do jogo, tudo no mesmo ecossistema integrado.

Anunciamos alguns lançamentos incríveis de soluções de netcode este ano. Nossa primeira versão principal do Netcode para GameObjects já está disponível em 2020 e 2021 LTS.
Essa solução de Netcode baseada em GameObject ajuda você a começar a criar jogos multijogador cooperativos em pequena escala. No entanto, se você criou sua experiência usando DOTS (Entidades), também temos o prazer de anunciar nossa solução Netcode for Entities que será apresentada no Tech Stream de 2022, que o ajudará a se preparar para uma experiência multijogador em grande escala. Aguarde nosso próximo post desta série para saber mais sobre esse lançamento.
Essas pilhas abrangem um amplo início básico para o desenvolvimento de vários jogadores. Juntos, eles constituem uma etapa de muitas outras para que você se familiarize com os jogos multijogador. Essas versões também se concentram especificamente em cenários críticos de rede, como a abstração de como se comunicar com servidores e clientes, o envio de dados de objetos pela rede e o tratamento de entradas.
Esta versão também oferece suporte a algumas ferramentas essenciais que permitem rastrear a perda de pacotes, o tamanho e a latência de objetos em rede. O Network Profiler é uma extensão do Profiler incorporado ao Editor, e o Runtime Network Stats Monitor (RNSM) é uma visualização personalizável e mais leve do "Profiler" dos estados da rede que pode ser executada em compilações autônomas para testes de jogo.
Você pode instalar essas ferramentas por meio do pacote com.unity.multiplayer.tools no Editor.
Todas as nossas pilhas de Netcode - sim, isso inclui Entidades - são construídas sobre nossa camada de Transporte. Essa camada é independente de código de rede e pode ser utilizada com qualquer solução.
O Unity Transport Protocol (ou UTP) amplia o protocolo de datagrama do usuário com suporte adicional para o Unity Relay e segurança extra usando o DTLS. Essa camada funciona no Windows, Mac, Linux, iOS, Android e em todos os principais consoles.
Também fornecemos alguns recursos de simulação de rede leve por meio das propriedades do Debug Simulator do nosso pacote de transporte. Isso permite que você acelere ou simule problemas de latência ou largura de banda ao testar no Editor.
Se você deseja obter acesso direto a essa biblioteca de rede de nível inferior, pode instalá-la diretamente por meio do pacote com.unity.transport.
Embora o Netcode para GameObjects seja relativamente novo, já existem jogos sendo criados com ele.

A maravilhosa equipe da Fika Productions, juntamente com a Team17, está trabalhando em um belo jogo desenhado à mão, Ship of Fools. É um jogo cooperativo multijogador em ritmo acelerado de persuasão náutica desenvolvido totalmente em Netcode para GameObjects.
Estamos constantemente procurando cobrir lacunas e desmistificar o que está acontecendo na rede com ferramentas multijogador.

O Modo de Jogo Multijogador seria um grande primeiro passo para tornar o desenvolvimento multijogador uma experiência de editor de primeira classe.
O objetivo dessa ferramenta multijogador é "simplesmente funcionar" quando você entra no modo de jogo. Ele oferece a mesma experiência que o fluxo de trabalho para um jogador, mas agora é possível ter até quatro clientes em execução na mesma sessão do Editor, cada um recebendo suas próprias informações de console e podendo ser diferenciado com um sistema de marcação baseado em rede.

O Network Simulator é outro recurso que gostaríamos de trazer da camada de transporte e expandir para uma ferramenta mais funcional, com uma interface de usuário que permite introduzir picos de atraso, definir taxas de ping, acionar conexões/desconexões à vontade e até mesmo personalizar determinados cenários de rede para serem executados durante os testes de jogo.
Estamos procurando integrar melhor nosso pacote Transport com o Burst, além de oferecer suporte a WebSockets.
Ter um servidor dedicado é o núcleo de muitos jogos multijogador, e isso traz a necessidade de um controle mais refinado sobre o tipo de servidor headless que você está criando.
Começamos a investigar o fluxo de trabalho do servidor dedicado. Isso começa com a oferta de mais controle e clareza sobre quais ativos você deseja ter em um servidor e quais não deseja. Essencialmente, você está selecionando o conteúdo que deseja nas compilações do servidor, o que economiza tempo e, potencialmente, largura de banda a longo prazo.
Deseja ver o status desses recursos e muito mais no Netcode for GameObjects? Confira nosso roteiro de rede multijogador para ver o que está incluído na versão 1.0 e o que está sendo desenvolvido para versões futuras. Você também pode conferir nossa recente sessão de Roadmap do Unite 2022 para obter uma visão geral do ecossistema Unity.
Criar jogos multijogador não é fácil, e é comum sentir-se sobrecarregado ao explorar o desenvolvimento de um jogo multijogador, mesmo com os documentos do SDK fornecidos.
Nosso objetivo é equipá-lo e apoiá-lo com as ferramentas para criar excelentes experiências de jogos multijogador para seus jogadores. Parte dessa promessa envolve fornecer não apenas a tecnologia de rede básica, mas também a documentação e os modelos educacionais, como o Boss Room, que você precisará para entender sua aplicação.
Há muitos recursos disponíveis atualmente que você pode usar para aprender mais sobre as soluções multijogador do Unity.

Sala do chefeé um projeto de amostra de jogo cooperativo de pequena escala criado com o Netcode for GameObjects. Ele foi projetado para ser usado em sua totalidade para ajudá-lo a explorar os conceitos e padrões por trás do fluxo de um jogo multijogador.

Também continuamos a desenvolver projetos internos para destacar novos recursos e as capacidades gerais do que é possível fazer com o Netcode for GameObjects.
Nosso último jogo é Galactic Kittensum jogo de tiro em 2D, multijogador, jogável, de código aberto e cooperativo.
Para começar, dê uma olhada nestas postagens de blog para saber mais sobre o pacote multijogador do Unity:
- Proporcione excelentes experiências multijogador com o Relay e o Lobby
- Entre na sala do chefe: nosso novo jogo de amostra multijogador
- Estado do comportamento perturbador em jogos multijogador
- Escolhendo o código de rede correto para seu jogo
Além de alguns recursos incríveis criados por nossa incrível comunidade:
Esperamos que você continue envolvido com a nossa série Games Focus, dando seu feedback. Publique suas perguntas e comentários sobre este blog no fórum multijogador ou neste tópico específico.
Visite nosso Productboard para obter detalhes completos sobre o roteiro. Você precisará fazer login com seu ID da Unity e aceitar o uso de cookies funcionais. Cada cartão desse quadro interativo é clicável, oferecendo mais detalhes sobre cada tópico e a opção de compartilhar seus comentários. Clique em um cartão, selecione o nível de importância do tópico para você, adicione seu ponto de vista e envie. Esse feedback é então encaminhado diretamente para as equipes de produtos adequadas.
O Netcode for GameObjects é uma solução de código de rede capaz, mas se você deseja criar algo muito maior - pense em galáxias ou MMOs multisservidores com milhares de jogadores ativos ao mesmo tempo - fique atento ao lançamento do nosso próximo blog da sériesérie Game Focusque será sobre como criar mundos maiores e ambientes mais ricos.
