네트워크 (NetWork)
네트워크 게임 정의
네트워크 게임이란 물리적으로 떨어져 있는 다른 사용자와 통신망(LAN, 인터넷)을 이용해 서로 게임하는 것을 말한다.
네트워크 게임을 개발하려면 TCP/IP, UDP 같은 통신 프로토콜의 개념과 소켓 프로그래밍에 관한 지식뿐 아니라 서버와 네트워크에 관한 지식도 필요하다.
물론 단시간 내에 이런 지식과 경험을 쌓을 수 없을 정도로 방대하고 다양한 경우의 수가 있는 것이 바로 네트워크 게임 개발이다. 따라서 네트워크 게임을 개발해본 경험이 없는 대부분의 개발자가 쉽사리 접그하긴 어렵다.
이처럼 난이도가 높고 개발 실력이 있어야 하는 네트워크 게임을 유니티는 쉽게 개발할 수 있도록 고수준 API(High Level API)를 제공한다. 물론 쉽게 개발할 수 있다는 것이지 네트워크의 이론적 배경을 전혀 몰라도 된다는 것은 아니다.
네트워크 게임의 물리적 구조.
네트워크 게임의 물리적 구조에 따라 크게 두 가지로 나눌 수 있다.
1. P2P(Peer to Peer) 방식
2. 클라이언트 / 서버 방식
첫 번째 방식은 개인과 개인이 별도의 서버 없이 연결해 데이터를 송수신하는 구조를 말한다.
주로 메신저나 파일 공유 프로그램에서 사용하는 방식이다. 네트워크 상에 사용자가 직접 접속해 게임을 하며,
비교적 접속자 수가 적은 게임에 적용할 수 있다.
두 번째 방식은 별도의 게임 서버를 두고 여러 클라이언트(사용자)가 접속한 후 서로의 데이터를 게임 서버를 이용해 송수신하는 방식이다. 게임 서버의 역할은 접속한 사용자 간의 데이터를 릴레이 하고 게임 데이터를 데이터베이스에 저장하는 것이다.
대부분의 온라인 게임은 클라이언트/서버 방식으로 구현돼 있다.
네트워크 통신 프로토콜
프로토콜은 네트워크 상에서 데이터 통신을 하기 위한 일종의 규약이다.
다양한 프로토콜이 있지만, 게임에서 주로 TCP/IP, UDP 프로토콜을 사용한다.
정해진 프로토콜로 송수신하는 데이터의 단위를 패킷(Packet)이라 한다.
TCP/IP, UDP 프로토콜은 패킷 전송 방식과 관련해서 다음과 같은 차이점이 있다.
- TCP/IP
데이터의 유실 없이 100개를 보내면 상대편에서 100개를 받을 수 있게 정합성을 최우선으로 하는 통신 규약.
중간에 패킷이 유실됐을 때 다시 재전송 한다. 또한 패킷을 보내는 순서도 정확히 지켜 전송한다.
다만 속도가 UDP 프로토콜에 비해 상대적으로 느리다.
- UDP
TCP/IP와 달리 상대편이 받을 준비가 돼 있는지 확인하는 절차 없이 무조건 보내는 프로토콜.
매우 빠른 전송 속도를 보장한다. 또한 네트워크 상황에 따라 중간에 패킷이 유실된다.
패킷을 보내는 중간이 유실된다고 해도 재전송 절차가 없다. 또한 패킷의 순서도 보장할 수 없다.
중간에 패킷이 하나씩 유실돼도 크게 관계없는 환경에 주로 사용되며, FPS 게임처럼 액션의 비중이 크고 속도감 있는 게임에서는 주로 UDP 프로토콜을 사용한다.
'Unity3D > NetWork' 카테고리의 다른 글
서드파티 네트워크 게임 엔진. (0) | 2017.05.09 |
---|