우리는 네트워크를 배워봤다.
또한 네트워크 지식을 알고 있다.
하지만 우리는 그 지식이 도움은 되겠지만
직접적으로 게임에서 일어나는 통신에 대해서 40% 정도 밖에 도움이 되지 않는다.
그것은 뭐 때문일까?
온라인 게임을 만들 때
고도의 기술력이 필요하다고 생각할 수 있다.
하지만 이미 우리가 배웠던 것으로도 충분히 구현할 수 있다고 한다.
하지만 앞서 말했듯이 왜 우리가 배웠던 것은 40% 정도밖에 도움되지 않는 것일까?
기본적인 통신은 정보를 보내고, 받고, 그 정보를 반영하면 된다.
즉, 게임에서 일어나는 통신은 간단하다.
다만 중요한 것은
언제 보내며, 어느 빈도로 보낼 것이며, 뭘 어떻게 보낼 것인가.. 라는 구체적인 문제가 생긴다.
떄문에 우리가 아무리 네트워크 지식이 뛰어나더라도
게임에 대한 네트워크 도메인 지식이 없으면 어려워지는 것이다.
예를 들어 오프라인 게임을 만들다가 리더가 갑자기
온라인 게임으로 바꾸자.
어차피 통신기능만 추가하면 되는 것 아냐?
라고 했을 때
아예 모든 것을 뒤집어 엎어야 하는 이유 중 하나기도 하다.
그래픽이며, 렌더링이며, 구현방식 하나하나 오프라인을 전제로 짰지만
통신을 해야하는 순간부터 고려해야할 것이 많아진다고 하는데
이렇게 바꾸는 것은 거의 불가능에 가깝다.
다시 말해서 어떤 하나의 통신 방법이 모든 게임에 쓰일 수 없다는 것이다.
반대로 하나의 게임도 모든 통신 방법이 적절하지도 않다.
단순히 예로 들어서
"키 입력 동기"라는 것이 있다.
적은 인원 사이에서는 적합한 방법으로 채택되는 방법이다.
이 구조는 접속된 사람 전원의 프레임에서 키 입력 정보를 송수신하고 동기화하는 방식이다.
이 통신 방법을 실시간 액션, MMORPG에 적용한다고 생각해보자.
Massive Multiplayer Online Role Playing Game 은 말 그대로 정말 많은 사람이 같이 이용하는 게임이다.
즉, 모든 사람의 키 입력이 끝날 때까지 자신의 캐릭터를 조종할 수 없게 된다.
응???
그럼 게임이 돌아가나..?
맞다. 절대 안돌아간다.
통신하는 모든 Terminal에서 모두 같은 프레임을 처리한다는 보장이 없기 때문이다.
통신환경이 좋지 않은 하나의 단말 때문에 모든 유저가 해당 유저의 처리를 기다리면서 대기해야하는 것이다.
이걸로 모든 통신 방법이 모든 게임에 맞지 않다는 것을 깨달았다.
온라인게임을 염두해두더라도 구조를 한 번에 바꾸는 것은 무척 힘든 일임을 알게 되었다.
통신의 속도도 정말 중요하다.
특히 격투게임, AOS게임, RTS게임 그냥 거의 유튜브에 프로게이머 반응속도라 치는 모든 게임이 통신의 속도와 관계있다.
Latency, 지연시간이라고 들어봤나?
이것이 게임에 정말 중요해지는데
이런 지연시간은 통신환경에 따라 다르지만 x ms부터 xxxms까지 스펙트럼이 넓다.
대부분 10ms 지연시간을 가지고 있어 반응속도에 문제가 되지 않는 정도다.
요즘 게임 대부분은 60프레임 이상을 지원하고 있어서 16.6 ms마다 프레임이 갱신되므로
해당 이하의 지연시간을 요구한다.
하지만 또한 지연시간만 짧다고 해서 게임이 잘 돌아가는 것은 아니다.
지연시간이 짧아도 통신데이터를 송수신하는 환경에서 통신 처리와 게임의 프레임 처리를 동기화하지 않아서
상대방과 다른 프레임에서 처리될 수도 있다.
이렇듯이 엄청나게 고려해야 할 사항들이 많다.
즉, 반드시 정보를 송신한 쪽과 수신한 쪽의 같은 프레임에서 처리되지 않는다는 것을
전제로 각각의 단말에서 처리하도록 만들어야 한다.
결국 요약하자면
게임에서의 네트워크에서는
지연시간과 같이 소프트웨어 기술적으로 해결할 수 없는 문제가 있다는 것을 전제로
또한 최악의 상황을 생각을 해보고 게임을 설계해야한다.
'Game Development, 게임개발 > 게임네트워크' 카테고리의 다른 글
Client - side Prection, 클라이언트 단 예측 (0) | 2022.05.02 |
---|---|
멀티플레이 게임과 네트워크 지연 (1) | 2022.04.29 |
Socket으로 통신 라이브러리 만들기 (0) | 2021.10.02 |
TCP,UDP 소켓프로그래밍, C# - 소켓 생성부터 종료까지 (0) | 2021.09.28 |
온라인 게임에서 TCP 보다 UDP를 사용하는 이유 (0) | 2021.09.28 |