1 min read

스팀의 게임 초대의 원리

몇몇 해외 게임 서버는 dedicate server을 이용하고 있다. 하지만 게임 초대시 NAT인 상태인 데도 불구하고 게임 초대가 되는거를 알수있다.

일반적인 유저면 초대가 되야지라고 생각하겠지만 방장이 NAT인 경우는 초대가 안되야 정상이다. 왜냐하면 라우터에서 외부에서 내부로 패킷이 들어올때 포트포워딩이나 DMZ가 안되어있는경우는 패킷이 들어올수 없기 때문이다.

이도 스팀이 인지를 해서 별도의 라이브러리를 제작하였는데 이는 공식 문서에서도 확인할수 있다.

The remainder of this document describes ISteamNetworking. To make connections from behind home NAT's, it uses the libjingle NAT-punching library or, if no direct connection can be made, through the Steam relay servers.

https://partner.steamgames.com/doc/features/multiplayer/networking

직역하자면 다음과 같다.

이는 libjingle라는 외부 라이브러리를 통해 NAT-Punching을 통해 이루어지고 그러지 않다면 스팀 외부의 릴레이서버를 통해 게임초대가 가능하게 된다는 것이다.

NAT-Punching이란 구글링해보면 아시겠지만 중계서버를 통해 서로의 라우터 테이블에 정보를 적는 행의이다. 이는 라우터에 따라 될수도 있고 안될수도 있다.