[일반지식] 비동기식 게임 콘텐츠 vs. 동기식(실시간) 게임 콘텐츠, 그리고 PVE vs. PVP(2016-06-05, ifunengine)

asked 2016-11-30 17:08:20 +0900

inkeun.kim gravatar image

이 문서에서는 게임에서의 비동기 콘텐츠와 실시간 콘텐츠에 대해서 설명하고, 각 경우의 예로서 PVE 와 실시간 PVP 에 대해서 간략하게 이야기 합니다. 그리고 다음 문서에서는 아이펀 엔진을 이용하여 이들 콘텐츠들을 어떻게 지원할 수 있는지를 시나리오별로 살펴보겠습니다. 1. 비동기식 게임 콘텐츠 VS. 동기식(실시간) 게임 콘텐츠

컴퓨터의 세상에서 둘 이상의 콤포넌트가 통신을 할 때, "둘이 계속해서 장단을 맞춰가며 하는 것" 을 "동기식 (synchronous)" 이라 하며, "둘이 각자 따로 놀다가 필요할 때 맞추는 것"을 "비동기식 (Asynchronous)" 라고 표현을 합니다. 이 개념은 컴퓨터 네트워크 영역 뿐만 아니라, 컴퓨터 아키텍처 영역에서 멀티 프로세서 등을 설명할 때 등장하는 일반적인 개념입니다.

이를 게임의 경우에 대입해보면, 게임 클라이언트와 게임 서버가 통신을 할 때, 둘이 계속 연결을 맺고 진행하는 콘텐츠를 동기식 콘텐츠, 둘이 필요할 때만 연결을 맺어도 되는 콘텐츠를 비동기식 콘텐츠라고 할 수 있습니다. (물론 비동기식 콘텐츠도 서버와 통신을 하는 그 순간만 떼서 볼 때, 서버에 요청을 보내고 서버가 응답을 하는 동안 블로킹 될 수 있는데, 이는 가끔만 연결을 해도 되는 비동기식 콘텐츠의 구현을 위해 통신을 하는 그 순간은 동기식으로 통신을 하는 것으로 생각할 수 있습니다. 이처럼 동기/비동기의 개념은 어떤 영역에서 설명되어지고 있는지에 따라 다양하게 사용될 수 있습니다)

비동기식 게임 콘텐츠는 주로 버튼을 누른다거나 하는 특정 동작에서만 서버와 통신을 하게 됩니다. 예를 들어, 게임을 시작할 때, 게임을 마칠 때, 친구에게 하트를 보낼 때, 친구의 진지를 방문할 때 등이며 이런 동작이 이루어지지 않을 때는 네트워크 연결이 완전히 끊겨 있어도 (휴대폰이라면 안테나 표시가 다 사라진다고 해도) 게임은 계속해서 플레이 됩니다. 따라서 대부분의 싱글 플레이 게임 들이 비동기 게임 콘텐츠에 해당하며, 여러 사용자가 같이 즐기는 게임이라고 해도 사용자들 간에 턴을 넘기고 턴이 몇분 이상의 긴 시간 동안 허용되는 경우 등도 비동기 게임 콘텐츠입니다. (한 때 유행했던 "내가 그린 기린 그림" 같은 앱의 경우 내가 그림을 그리고 상대방에게 맞춰보라고 보내게 되면 상대방에게 턴이 넘어가지만, 상대방은 자기가 원할 때 자기 턴을 끝낼 수 있었습니다.

그림1: 비동기 게임은 연결을 계속해서 유지 않고, 특정 동작을 할 때마다 새로 연결을 맺고 패킷을 전송한 뒤에 연결을 종료한다. 이렇게 연결을 유지하지 않는다는 특성 때문에 특정 동작을 하지 않을 때는 네트워크 연결이 완전히 종료되도 문제가되지 않았다. 그리고 이런 통신 타입에 특화된 HTTP 가 일반적으로 많이 사용되었다.

이런 비동기식 게임 콘텐츠는 "필요할 때만 연결을 맺는" 특성을 갖고 있는데, 이런 연결 패턴에 잘 맞는 것이 HTTP 방식이었습니다. 우리가 웹 페이지를 보다가 원하는 뉴스를 클릭했을 때 비로소 서버에 다음 페이지를 요청하는 것과 같은 패턴이라고 이해하시면 됩니다. 그때 사용된 방식이 HTTP 이며, 주소창에 http://www.ifunfactory.com 과 같이 쓰는 것도 "www.ifunfactory.com 이라는 서버에 연결하는데 HTTP 방식으로 연결해라" 라는 뜻입니다. 그러니 HTTP 방식은 우리가 브라우저를 쓸 때만 쓰이는 것이 아니라, 비동기 게임에서처럼 범용적으로 많이 쓰입니다. 그리고 HTTP 방식이 웹 사이트를 열 때 주로 쓰였기 때문에, 비동기 게임들이 HTTP 를 선택함에 따라 자연스럽게 이런 비동기용 게임의 서버 역시 자연스럽게 웹 서버 혹은 웹에서 파생된 기술들이 사용되었습니다.

동기식 게임 콘텐츠 (실시간 게임 콘텐츠) 는 계속해서 연결을 맺으면서 플레이하는 경우를 의미합니다. PC 온라인 게임에서의 모든 게임들이 이에 해당되었습니다. 과거 모바일 게임에서는 이런 경우가 많지 않았지만, 실시간 대전 혹은 실시간 레이드 등과 같이 "실시간 콘텐츠" 가 점차 일반화되고 있습니다. 비동기 게임에서 사용된 HTTP 는 "클라가 요청을 보내야만(!) 서버가 응답할 수 있다" 는 특성 때문에 ... (more)

edit retag flag offensive close merge delete