- Azure PlayFab Party 클라이언트 간 통신의 경우 타이틀은 PlayFab Party API를 사용하는 것이 권장됩니다. 이 API는 XBOX One 소프트웨어 개발 키트의 Secure Sockets와 유사한 기능을 제공합니다. 이러한 API는 또한 보안 통신, 통신 릴레이를 통한 NAT(네트워크 주소 변환) 트래버설, 음성 및 텍스트 채팅 기능을 제공합니다.
- DTLS(Datagram Transport Layer Security)
타이틀은 DTLS를 사용하여 패킷 페이로드를 암호화하도록 선택할 수도 있습니다. 타이틀은
OpenSSL또는BcryptAPI를 통해 이를 구현하거나, 그러한 구현을 캡슐화한 미들웨어를 사용할 수 있습니다. 콘텐츠에 관계없이 모든 통신은 타이틀 서비스를 통해 암호화 및 인증되어야 합니다. 이 솔루션의 요구 사항에 대한 자세한 내용은 Microsoft Game Development Kit 타이틀을 위한 보안 게임 통신을 참조하세요.
Microsoft Game Development Kit(GDK)와 XBOX One 소프트웨어 개발 키트 타이틀 버전 간 타이틀 통신
모든 XBOX 콘솔 하드웨어에 대해 GDK를 사용하는 것이 권장됩니다. 이를 통해 통합된 네트워크 구현을 사용할 수 있습니다. 특정 시나리오에서 타이틀은 XBOX One 소프트웨어 개발 키트와 GDK 타이틀 버전 간의 네트워크 통신을 지원하고 싶어할 수도 있습니다. 이 시나리오의 경우 XBOX One 소프트웨어 개발 키트 타이틀은 Secure Sockets API를 사용할 수 없습니다. GDK의 Azure PlayFab Party API와 네트워크 호환이 되지 않기 때문입니다. Secure Socket 기능 위에 구축된 XIM API에도 동일한 사항이 적용됩니다. XBOX One 소프트웨어 개발 키트 타이틀 버전에서 Secure Sockets 또는 XIM을 사용한 타이틀은 타이틀의 네트워크 스택을 Azure PlayFab Party 또는 DTLS 통신으로 업데이트해야 합니다. 모든 클라이언트 간 통신 솔루션으로 Azure PlayFab Party를 권장합니다. Azure PlayFab Party는 또한 음성 및 텍스트 채팅 기능을 단순화합니다. XBOX One 소프트웨어 개발 키트 타이틀 버전에서 전용 서버 또는 릴레이 서버를 사용하는 타이틀은 GDK 타이틀 버전과의 네트워크 통신을 활성화하기 위해 동일한 작업을 수행할 수 있습니다. 모든 통신 프로토콜은 항상 인증, 보안 처리되어야 하며 보안 모범 사례를 준수해야 합니다.네트워크 초기화
Microsoft Game Development Kit(GDK)에서 타이틀은 Game OS 시작 프로세스 중에 가능한 한 빨리 시작됩니다. 하드 드라이브에서 자산을 로드하기 시작하고 그래픽 스택을 초기화하기 시작할 수 있습니다. 이는 네트워크 서비스가 시작되기도 전에 코드가 실행되고 있음을 의미하며, 이로 인해 Win32 네트워크 API 사용이 안전하지 않은 기간이 발생합니다. 이 기간을 네트워크 초기화 기간이라고 정의하며, 이 기간이 지나면 네트워크가 초기화된 것으로 간주됩니다. 네트워크 초기화는 일반적으로 몇 초가 걸리며, 이는 코드에서 매우 눈에 띌 수 있습니다. XBOX One ERA 타이틀의 네트워크 초기화는WSAStartup 또는 bind와 같이 실시간에 안전한 네트워크 API를 암묵적이고 임의로 지연시키곤 했습니다. Microsoft Game Development Kit(GDK)에서 네트워크 초기화는 이제 Win32 네트워킹 또는 보안 API를 사용하기 위해 상호 작용해야 하는 명시적 개념입니다.
Microsoft Game Development Kit(GDK) 타이틀은 Winsock, WinHTTP, IP Helper, BCrypt, WinCrypt, Schannel 또는 기타 네트워킹 Win32 API의 어떤 네트워킹 API도 호출하기 전에 XNetworkingConnectivityHint::networkInitialized 부울이 true로 설정될 때까지 기다려야 합니다. 네트워크가 초기화되기 전에 이러한 API를 호출하면 임의의 프로세스 크래시를 포함한 불확정 동작이 발생합니다.
또한 동일한 개념이 모든 일시 중단/재개 주기에 적용됩니다. 일시 중단 시 Microsoft Game Development Kit(GDK) 타이틀은 모든 네트워크 및 보안 핸들을 닫아야 합니다. 그런 다음 Microsoft Game Development Kit(GDK) 타이틀은 네트워킹 관점에서 재개 핸들러를 초기 타이틀 시작과 동일하게 취급하고 다시 네트워크가 초기화되기를 기다려야 합니다.
네트워크 초기화를 기다리는 방법을 보여주는 코드 예제를 포함한 자세한 내용은 네트워크 초기화 및 연결성을 참조하세요.
포트 동작
XBOX One ERA 타이틀에서는 타이틀이 수행하는 모든 소켓 흐름을 네트워크 매니페스트에 미리 정의했습니다. Microsoft Game Development Kit(GDK)에서는 이제 매니페스트가 제거되었습니다. XBOX One 콘솔의 포트는 이제 Windows PC와 동일한 방식으로 작동합니다. 원하는 포트에서bind를 호출하면 해당 포트는 TCP(전송 제어 프로토콜)와 UDP(User Datagram Protocol) 모두에서 모든 아웃바운드 및 요청된 인바운드 트래픽을 허용합니다. 요청되지 않은 인바운드 UDP 및 TCP 트래픽은 차단됩니다. 이는 TCP P2P 네트워크 토폴로지가 더 이상 허용되지 않음을 의미합니다. Microsoft Game Development Kit(GDK) 타이틀은 게임 흐름에 UDP를 사용해야 합니다.
Microsoft Game Development Kit(GDK) 타이틀은 이제 선호 로컬 UDP 멀티플레이어 포트에 대한 직접 액세스도 갖습니다. 이 포트는 문제 해결과 사용자 구성에 의해 지원된다는 이유로 플랫폼이 피어와 서버에 제공할 수 있는 최상의 포트를 나타냅니다. 전반적인 연결 성공률을 향상시키기 위해 멀티플레이어 및 음성 트래픽이 이 포트를 사용하도록 조정할 것을 강력히 권장합니다.
포트 동작에 대한 자세한 내용은 XBOX 콘솔 포트 동작 및 선호 UDP 멀티플레이어 포트를 참조하세요.
