티스토리 뷰

현재 시장에는 멀티플레이어 게임이 많이 출시 되어 있습니다. 


이번 포스트에서는 멀티플레이어 게임들( 온라인 / CO-OP / 등등.. )의 멀티플레이를 가능하게하는 구조를 


제가 생각한 방식으로 설명해보자 합니다. 


* 단순히 개발자의 입장에서 개인적인 생각을 쓴 것이기 때문에 모두 상용화되어 있는 기술이 아니거나, 틀리거나 다를 수 있으니 참고해주시기 바랍니다. (수정 / 추가 요청 댓글 환영입니다.)



1. P2P (Peer to Peer)


요즘은 흔하지 않지만 인디게임을 즐기시는 분들은 몇번 보셨을 방식입니다. 


P2P 방식은 온라인 게임처럼 중앙 서버를 거치는 것이 아니라, 이름대로 Peer와 Peer 사이의 독자적인 연결을 의미합니다.





주로 이 방식은 위의 그림에서 A 나 B가 하나의 가상의 호스트가 되고, 다른 쪽이 클라이언트가 되어 접속하는 형식으로 이루어 집니다.




<Steam의 게임 'Starbound' 에서 서버에 접속할 때 IP주소 입력창>



P2P 방식은 위와 같이 (정확히 위의 게임은 1:1 P2P방식은 아닙니다) 서버의 IP 주소와 포트번호를 알아야 서버에 접속할 수 있습니다. 


게임 제작사에서 포트번호를 일정하게 정해두는 경우도 있지만, 포트번호를 자유롭게 정하게 두는 곳도 있습니다.




2. Server & Client



대부분의 온라인게임들이 채택하고 있는 방식입니다.


중앙 서버를 두고, 다수의 플레이어들이 중앙서버에 접속하여 서버에 접속한 플레이어들끼리 상호작용할 수 있습니다.





여기서 서버는 2가지로 나뉠 수 있는데, 아래와 같습니다.


1. 대규모의 온라인 게임의 경우, 개발사/배급사에서 운영하는 중앙서버


2. 위의 Starbound 예시처럼 플레이어가 서버 프로그램을 실행하고, 직접 서버를 운영하여 1:多의 P2P방식을 채택하는 경우



2번의 경우는 위에서 사진을 보면 알 수 있듯이, 아이피주소와 포트번호를 알아야 서버로 접속이 가능합니다.



사실, 1번의 경우도 마찬가지입니다. 서버에는 아이피 주소와 포트번호가 있고, 그 서버에 접속해야 합니다. 


하지만 온라인 게임은 아이피 주소와 포트번호를 플레이어에게 요구하지 않습니다.



<던전앤 파이터 채널 접속창>

<사진 출처 : http://cafe.naver.com/ohwow/486531>



온라인 게임은 위와 같이 채널/서버/방으로 접속하는 방식을 채택하고 있습니다. 


이러한 방식은 채널/서버/방에 각각 아이피 주소나 포트번호를 다르게 할당해놓고 채널 접속 버튼을 누르면 

할당된 아이피/포트로 접속하게 됩니다.



최근엔 배틀그라운드와 같은 또 다른 구현 방식도 생겨났습니다. 


이런 구현 방식은 본 게시글에 추가하거나 새로운 포스팅으로 작성할 예정입니다.


(수정 / 추가 요청 댓글 환영입니다.)

댓글