- Azure PlayFab Party Para comunicação de cliente para cliente, recomendamos que os títulos usem as APIs do PlayFab Party. Elas fornecem funcionalidade semelhante à do Secure Sockets no XBOX One Software Development Kit. Essas APIs também fornecem comunicação segura, travessia de NAT (conversão de endereços de rede) por meio de retransmissões de comunicação e funcionalidade de chat de voz e de texto.
- Datagram Transport Layer Security (DTLS)
Os títulos também podem optar por criptografar os payloads de seus pacotes usando DTLS. Os títulos podem implementar isso por meio das APIs
OpenSSLouBcrypt, ou usar um middleware que encapsule essa implementação. Toda a comunicação, independentemente do conteúdo, deve ser criptografada e autenticada por meio dos serviços do título. Para obter mais detalhes sobre os requisitos dessa solução, consulte Comunicação segura de jogos para títulos do Microsoft Game Development Kit.
Comunicação entre as versões do título do Microsoft Game Development Kit (GDK) e do XBOX One Software Development Kit
Recomendamos que os títulos usem o GDK para todo o hardware de console XBOX. Isso permite o uso de uma implementação de rede unificada. Em determinados cenários, um título ainda pode querer dar suporte à comunicação de rede entre a versão do título do XBOX One Software Development Kit e a do GDK. Nesse cenário, os títulos do XBOX One Software Development Kit não podem usar as APIs do Secure Sockets, pois elas não são compatíveis em rede com as APIs do Azure PlayFab Party no GDK. O mesmo se aplica às APIs do XIM, que foram criadas com base na funcionalidade do Secure Socket. Os títulos que usavam Secure Sockets ou XIM na versão do título do XBOX One Software Development Kit devem atualizar a pilha de rede do título para comunicação via Azure PlayFab Party ou DTLS. Recomendamos o Azure PlayFab Party como solução para toda a comunicação de cliente para cliente. O Azure PlayFab Party também simplifica a funcionalidade de chat de voz e de texto. Os títulos que usam servidores dedicados ou servidores de retransmissão com a versão do título do XBOX One Software Development Kit podem fazer o mesmo para permitir a comunicação de rede com a versão do título do GDK. Todos os protocolos de comunicação devem sempre ser autenticados, protegidos e seguir as práticas recomendadas de segurança.Inicialização da rede
No Microsoft Game Development Kit (GDK), seu título é iniciado o mais cedo possível durante o processo de inicialização do Game OS. Você pode começar a carregar ativos do disco rígido e iniciar a inicialização da pilha de gráficos. Isso significa que seu código está sendo executado antes mesmo de os serviços de rede terem sido iniciados, o que leva a um período em que não é seguro usar as APIs de rede do Win32. Definimos esse período como o período de inicialização da rede, após o qual a rede é considerada inicializada. A inicialização da rede normalmente leva alguns segundos, o que pode ser bastante perceptível no seu código. A inicialização da rede em títulos ERA do XBOX One bloqueava de forma implícita e arbitrária APIs de rede que, de outra forma, seriam seguras para tempo real, comoWSAStartup ou bind. No Microsoft Game Development Kit (GDK), a inicialização da rede agora é um conceito explícito com o qual você deve interagir para usar quaisquer APIs de rede ou de segurança do Win32.
Os títulos do Microsoft Game Development Kit (GDK) devem aguardar até que o Booleano XNetworkingConnectivityHint::networkInitialized seja definido como true antes de chamar qualquer API de rede em Winsock, WinHTTP, IP Helper, BCrypt, WinCrypt, Schannel ou qualquer outra API de rede do Win32. Chamar qualquer uma dessas APIs antes de a rede ser inicializada resulta em comportamento indeterminado, incluindo falhas aleatórias do processo.
Além disso, esse mesmo conceito se aplica a todos os ciclos de suspensão/retomada. Na suspensão, os títulos do Microsoft Game Development Kit (GDK) devem fechar todos os identificadores de rede e de segurança. Em seguida, os títulos do Microsoft Game Development Kit (GDK) devem tratar o manipulador de retomada da mesma forma que a inicialização original do título, do ponto de vista da rede, e aguardar novamente até que a rede seja inicializada.
Para obter mais informações, incluindo exemplos de código que mostram como aguardar a inicialização da rede, consulte Inicialização e conectividade da rede.
Comportamento das portas
Nos títulos ERA do XBOX One, você predefinia no manifesto de rede cada fluxo de soquete executado pelo seu título. No Microsoft Game Development Kit (GDK), o manifesto foi removido. As portas nos consoles XBOX One agora se comportam da mesma forma que no PC com Windows: você chamabind em qualquer porta que desejar, e essa porta permite todo o tráfego de saída e o tráfego de entrada solicitado tanto em TCP (Transmission Control Protocol) quanto em UDP (User Datagram Protocol). O tráfego UDP e TCP de entrada não solicitado é bloqueado. Isso significa que as topologias de rede ponto a ponto TCP não são mais permitidas. Os títulos do Microsoft Game Development Kit (GDK) devem usar UDP para seus fluxos de jogo.
Os títulos do Microsoft Game Development Kit (GDK) agora também têm acesso direto à porta multijogador UDP local preferencial. Essa porta representa a melhor porta para seus pares e servidores que a plataforma tem a oferecer, pois conta com o suporte de solução de problemas e de configuração do usuário. É altamente recomendável que você ajuste seu tráfego multijogador e de voz para usar essa porta, a fim de melhorar suas taxas gerais de sucesso de conectividade.
Para obter mais detalhes sobre o comportamento das portas, consulte Comportamento das portas do console XBOX e Porta multijogador UDP preferencial.
