티스토리 뷰

온라인 게임과 스탠드얼론게임의 차이 - 상호성,공시성
 
온라인 게임과 보통의 다른 게임과 가장 큰 차이는 무엇일까? 그것은 상호성(interactivity) 또는 공시성(synchronicity)의 문제이다. 온라인 이전의 게임(일반적인 게임이라고 지칭하자)은 나와 컴퓨터와의 관계에서 모든것이 종결된다. 다인(multi)플레이의 경우는 H/W와 Player간의 통신의 채널이 많을 뿐으로 이것은 입력의 대역이 넓은 것을 의미할 뿐 본원적으로는 1인 Play와 다를 것이 없다.

다음의 그림을 예로 들어 보자.

그림에서 computer와 PlayerA/B 사이에는 각각의 인터페이스로 통신하고 있다. 그러나 그 결과에 있어선 양쪽이 동시에 인식하는 형태이고(오락실에서 2인 플레이를 한다고 생각해보자) 실상은 다음과 같다.

PlayerA와 B는 computer와 각각 소통하는 것이 아니라 사실은 하나의 단일한 결과를 내는 Computer에 2명이 동시에 정보를 보내고 받는 형태다.

이런 형태의 게임에선 진행과 결과가 모든 이에게 똑같이 보여지기 때문에 달리 시간과 진행에 신경을 쓸 필요가 없이 하드웨어나 통신(컨트롤 인터페이스)이 허락하는 범위에서 모든것이 표현이 가능해진다. 제작자는 연출에 H/W적인 한계만 염두해두고 있으면 그 어떤 표현이라도 가능한 것이다.
ex)大戰略series, SonSon, Quartet2, TMNT(Arcade, konami), SmashBrothers(GC), PowerStone(Sega)

그러나 온라인 게임에선 이런 H/W - Player간의 설정이 한 차원 더 발전하여 새로운 형태의 차원이 발생했다. 여기서공시성의 문제가 발생한다.

Client -Server간의 통신이 주가되는 온라인 게임의 형태, 사실 PlayerA와 B는 같은 Server에 접속하고 있는 것일뿐 두 사람간에는 아무런 소통이 없다. 문제는 일반적인 유저들은 C-S사이의 관계는 잘 이해하지 못하고 PlayerA-B간의 관계에 집중한다는 것이다. 실상은 서버에서 보내주는 각 Player들의 허상을 보고있는 것임을 인정하지 않은 채 말이다.

그림을 보면 Player와 H/W간의 1차적인 관계에서 P1-Clinet-Server인 2차적인 관계로 발전한 것을 알 수 있다. 그렇다면 생기는 문제는 과연? 그것은 바로 Client의 결과다. 앞서 설명한 일반적인 게임에선 게임의 보여지는 결과가 하나의 H/W로 보여지는 반면 이번의 상황에선 서로 다른 H/W(Client)가 동시에 같은 화면을 연출해야 하는 것이다.

온라인 게임에선 일부 보안성이 필요없는 계산을 제외하고는 서버가 대부분의 연산과 결과를 도출하여 Client에게 전달하고 Client는 이것을 받아 다시 사용자에게 적당히 연출하여 화면으로 뿌려주게 되는 형태로 게임이 구성되어 있으므로 서버와 Client간의 통신이 중요한 역할을 한다. 앞의 '일반적인 게임'은 근거리 통신망도 아닌 H/W(Computer)-H/W(Controller)간의 찰나적인 시간인것에 비해 온라인게임은 Server-Client간의 통신이 인터넷을 통해지는 시간오차가 발생하는 형태다. 그리고 H/W - H/W간의 무한대적인 통신속도는 곧 정량적으로도 막대한 통신량을 지원하는 것에 비해 아시다시피 인터넷은 수초간의 짧은시간에 전달하는 통신량이 작아야 하는 숙명을 지니고 있다. 온라인에선 이 상황을 다음과 같은 방법으로 해결(연출, 구현)했다.

1)서버는 각 상황에 대한 결과값을 대신하여 계산하고 그래픽/이펙트/사운드는 모두 클라이언트가 그 값을 받아 연출할 뿐이다
예)서버는 '때린다->200맞았다->맞은놈은 죽어라'라는 간단한 정보만 보내주고 클라이언트는 이것을 때리고/베고 쓰러트려서 '으악~'소리가 나는 상황을 연출한다.

2)서버는 프로그램정보를 간략화해서 가지고 뭉쳐서 처리한다. 게임상의 세계를 표현하기 위해 서버는 클라이언트가 가진 정보를 가지고 있어야 한다. 그러나 그것을 모두 가지고 클라이언트와 똑같이 처리한다면 단순한 계산에도 '계산 x 유저수'라고 하는 엄청난 현실에 부딪히게 된다. 그러므로 모든 처리를 Client와 1:1로 처리하기보다는 데이터를 좀더 간략화해서 처리한다.

자 종합할 때가 왔다. 스탠드 얼론 게임과 온라인 게임의 차이를 좀더 구체적으로 설명해보자. 다음의 구현목표(기획)에 대해 온라인과 스탠드얼론이 어떻게 처리되는지 확인해보자.

기획목표)플레이어A가 플레이어B를 [a]위치에서 만나 A가 B를 [b]위치로 집어던지는 연출
1)일반적인 게임
PlayerA, [a]위치로 이동 -> PlayerB가 있는가? -> PlayerA가B를 집어던지는 연출 -> PlayerB의 위치이동(b)로(이동중 PlayerB컨트롤 막힘)

2)온라인 게임
PlayerA관점)
PlayerA, [a]위치로 이동 -> 서버, PlayerA가 [a]위치로 이동하였음을 모든 클라이언트에게 알림 -> PlayerB를 던질 것을 서버에 요청 -> PlayerB가 [a]위치에 있는가? -> PlayerB의 움직임을 제한 -> PlayerB를 [b]로 강제이동 -> 서버, 모든 클라이언트에게 PlayerB가 [a]에서[b]로 날라갔음을 알림

PlayerB관점) <-- 원래 [a]위치에 있었다고 가정하자.
서버, PlayerA가 [a]위치로 이동하였음을 모든 클라이언트에게 알림 -> PlayerA가 [a]위치로 이동하는 것이 보임 -> 서버가 PlayerB의 위치를 검증 -> PlayerB의 움직임이 멈춤 -> 서버가 PlayerB의 위치를 강제보정 -> PlayerB 자신이 날라가는 것을 봄

한번에 보기에도 1)의 방법에 비해 2)의 부분이 더 까다롭게 보인다. 좀더 설명하자면 2)의 경우는 모든 계산에 대해 보는 결과가 다른 하드웨어 이기때문에 서버가 항상 모든 장면을 PlayerA, PlayerB,... 들에게 모두 전송해야 되는 문제가 있기 때문이며 이것을 PlayerA와 B간의 상호성(Interactivity)과 공시성(synchronicity)에 대한 문제로 볼 수 있는 것이다.

온라인 게임을 기획하는 사람은 모든 트리거, 액션, 계산, 연출에 있어 '~~을 어떻게 할 것인가'와 함께 '과연 그 장면이 다른 플레이어에겐 어떻게 보여지는가'를 고민하지 않으면 안된다. 초보 기획자(+온라인 유저)가 그리는 개발이 구현이 힘든 이유는 이런 과정을 잘 이해하지 못하고 결과를 중심으로 설계하기 때문이다. 물론 이런 내용이 기획자의 100%의 role은 아니지만 적어도 구현중심의 결과를 보고싶은 사람이라면 좀더 근원적으로 파고 들 필요가 있다.

다시한번 종합하면 온라인 게임 연출 기획의 要는 '나와 컴퓨터의 관계'가 아니라 '나와 컴퓨터의 관계가 다른 사람에게 어떻게 보여지는 가'의 한 차원 더 나아가는 기획이라는 것이다. 이 점에 있어서 온라인 기획자는 일반적인 콘솔이나 스탠드얼론 기획자와는 다른 '기술구현중심'의 사고를 할 수 있어야 하고 또 그 과정도 한 단계 업그레이드 되어야 한다.

나도 한때는...
 
------------------------------------------------------------------------------------
포스트에 글을 좀 쓸려고 하는데...막상 쓰자니 눈치도 좀 보이고..자꾸 퍼오는 글이
많아진다. -0- 나 스스로에게 죄송.

'Game Design Story' 카테고리의 다른 글

Animal Kingdom  (0) 2005.12.13
사자의 사냥  (0) 2005.12.12
집에서 온라인게임을 만든다?  (0) 2005.12.08
라프 코스터의 재미 이론  (0) 2005.12.08
게임 디자이너의 성향에 대한 반성  (0) 2005.12.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함