실시간 전략 시뮬레이션 게임에서의 효율적인 동기화 기법※
김혜영, 임영종
홍익대학교 게임학부 게임소프트웨어전공 [email protected], [email protected]
A Scheme for Efficient Synchronization on Real Time Strategy Games
Hye-Young Kim, Young-Jong Im
Major in Game Software, School of Games, Hongik University
요 약
실시간 전략 시뮬레이션(Real-Time Strategy, RTS)에서는 게임 유저가 내리는 명령이 빠른 시간 안에 게임에 반영되어야 하며, 그 명령은 여러 객체에게 전달될 수도 있으며, 게임에 참여 한 모든 게임 유저가 같은 진행상황을 유지하며 게임이 진행되어야한다. 그러나 네트워크 기반 게임에서 다른 게임 유저에게 그 명령을 전달하기까지는 일정시간이 소요되며, 짧은 시간 안에 많은 명령에 대한 동기화는 실시간 전략 시뮬레이션 게임서버의 중요한 요소가 된다.
따라서 본 논문에서는 실시간 전략 시뮬레이션 게임에서의 효율적인 동기화를 위한 이벤트 잠금 기법을 기반으로 한 새로운 기법을 제안하고, 이를 적용한 전략 시뮬레이션 게임서버 및 클라이언트를 구현하였으며, 여러 클라이언트들과의 게임 실행을 통한 테스트를 통해 제안 기 법의 효용성과 신뢰성을 보였다.
ABSTRACT
The command that game users give should be reflected to the game immediately and should be transferred to several objects at once. Also, all game users who participate in game should keep the same progress situation in Real-Time Strategy game. But it takes a certain amount of time to get the command pass to other users, and it is important issue that many commands are synchronized in a short amount of time on server of RTS game.
Therefore we propose a scheme for an efficient synchronization based on event locking method on RTS game in this paper. We design and implement the gaming server applying to our proposed scheme. Also, we show efficiency of our proposed scheme by performance analysis in this paper.
Keyword : Real-Time Strategy Game, RTS, game server, event locking method, game user, message, packet
접수일자 : 2010년 4월 26일 일차수정 : 2010년 05월 31일 심사완료 : 2010년 06월 11일 교신저자(Corresponding Author) : 김혜영
※ “이 논문은 2010학년도 홍익대학교 학술진흥비에 의하여 지원되었음”
1. 서 론
컴퓨터 하드웨어 사양의 고급화로 고성능의 처 리가 가능해짐에 따라 고도의 그래픽, 물리엔진, 그리고 인공지능 분야에서도 처리 할 수 있는 범 주가 늘어나고 있으며, 이에 더하여 고속 네트워크 의 급속한 발전과 인터넷의 확산, 그리고 멀티미디 어화가 가능해지면서 여러 명의 유저들이 동시에 게임을 진행 할 수 있도록 하는 다중 사용자용 멀 티미디어 게임에 대한 요구가 급증하고 있다[1].
이러한 온라인 게임의 한 장르인 실시간 전략 시 뮬레이션 (Real-Time Strategy, RTS)은 턴제 전 략 게임과 구분되는 전략게임의 한 장르이며, 실시 간 컨트롤을 기반으로 진행하는 전투 액션과, 자원 채취와 기지 건설 및 기술 개발 요소로 이루어지 게 된다. 실시간 전략 시뮬레이션에서는 게임플레 이어가 내리는 명령이 빠른 시간 안에 게임에 반 영되어야 하며, 그 명령은 여러 객체에게 전달될 수 있으므로, 게임에 참여한 모든 게임플레이어가 같은 진행상황을 유지하며 게임이 진행되어야하는 데, 네트워크 기반 게임에서 다른 게임플레이어에 게 그 명령을 전달하기까지는 일정시간이 소요됨으 로, 짧은 시간 안에 많은 명령에 대한 동기화는 실 시간 전략 시뮬레이션 게임서버의 중요한 요소가 된다[2].
따라서 본 논문에서는 실시간 전략 시뮬레이션 게임에서의 효율적인 동기화를 위한 이벤트 잠금 기법을 기반으로 한 새로운 기법을 제안하고, 이를 적용한 전략 시뮬레이션 게임서버 및 클라이언트를 구현하였으며, 여러 클라이언트들과의 게임 실행을 통한 테스트를 통해 제안 기법의 효용성과 신뢰성 을 보였다.
본 논문의 구성은 다음과 같다. 뒷장에서는 전략 시뮬레이션의 특징 및 동기화 기법에 대한 관련 연구를 보이고, 3장에서는 효율적인 실시간 전략 시뮬레이션 게임 엔진을 위해 제안하는 배경 및 기법을 자세히 설명하고 4장에서 제안 한 기법을 적용한 실시간 전력 시뮬레이션 게임 서버 및 클
라이언트의 의 설계 및 구현에 대해 나열하고, 5장 에서는 제안 기법을 적용하여 구현한 실시간 전략 시뮬레이션 게임과 기존의 온라인 게임서버의 성능 분석을 통해 제안 기법의 효용성을 보였다. 마지막 부분은 향후 연구방향 및 결론으로 구성하였다.
2. 관련연구
다른 게임 장르와 비교하여, 실시간 전략 시뮬레 이션 게임이 갖는 특징은 다음과 같다.
가. 게임유저가 내리는 명령은 빠른 시간 안에 게임에 반영되어야 한다.
[그림 1] StarCraft의 게임화면
실시간 전략 시뮬레이션에서는 게임유저가 명령 을 내렸을 때 게임유저는 해당되는 명령이 즉각적 으로 게임에 반영되어야 게임유저는 불편함을 느끼 지 않고 게임을 즐길 수 있다. 하지만 네트워크 게 임은 정확하게 명령을 내린 시점에 게임에 명령을 반영하고, 다른 유저들에게까지 결과를 전달하기까 지는 일정 시간이 소요가 된다. 비록 게임유저가 느낄 수 없을 만큼의 시간이지만, 동기화를 고려하 여 다른 유저들과 결과가 똑같아야 하므로, 게임유 저의 컴퓨터에 즉시 명령을 반영하는 것은 불가능 하다. 블리자드의 Starcraft를 봐도 알 수 있듯이, 네트워크 게임을 진행해보면 게임유저가 명령을 내
[그림 2] 서버의 시퀀스 다이어그램 리고 그 결과 값이 게임에 반영되기까지 일정 시
간이 걸리는데[3], 이러한 부분을 게임유저가 거의 느낄 수 없게 하기위해, 유닛이나 건물에 명령은 즉각 실행되지 않지만, 게임의 결과에 영향을 미치 지 않는 애니메이션의 변화와 같은 시각적인 효과 는 바로 나타난다.
나. 명령은 한 번에 여러 객체에게 전달될 수 있다.
[그림 1]의 StarCraft에서와 같이 실시간 전략 시뮬레이션에서는 개체들을 다룰 때 하나의 개체만 가지고 다루지는 않고, 여러 개의 개체들에게 명령 을 내린다. [그림 1]에서의 각 개체마다 일일이 정 보를 MMORPG처럼 서버에서 모두 관리를 한다 면, 짧은 시간 안에 수많은 명령이 내려지는 실시 간 전략 시뮬레이션에서는 서버의 부하가 매우 커 질 것이고, 그에 따라서 패킷의 이동양도 많아지고 네트워크의 부하도 매우 심해질 것이다. 이러한 경 우, 게임 유저마다 약간씩 다른 게임의 상황이 진
행될 가능성이 있는데, 다른 유저의 게임 상황을 보고 판단하는 것이 중요한 실시간 전략 시뮬레이 션에서는 상당히 큰 문제점이 될 것이다[4]. 따라 서 실시간 전략 시뮬레이션에서는 각 유저들의 클 라이언트마다 이런 정보 값을 갖고 있고, 각 개체 들의 위치, 상태정보 등이 패킷으로 전달되는 것이 아니라 게임유저가 내린 명령만이 패킷으로 전달되 고 게임에 반영은 각 클라이언트마다 독립적으로 실행하는 것이다. 그리고 인공지능도 각 클라이언 트마다 각각 실행하는 것이 된다. 전략 시뮬레이션 게임에서 사용되는 프로토콜들은 게임유저의 명령 밖에 없기 때문에 많지 않다[5].
다. 게임에 참여한 유저들은 모두 같은 진행상황 을 갖고 있어야 한다.
인공지능이 각 클라이언트에서 실행되고, 유저의 명령만 패킷으로 전달되어서 모든 유저마다 같은 시점에 같은 명령이 실행되게 하려면 클라이언트의
[그림 3] 서버의 클래스 다이어그램 게임 흐름은 고정프레임으로 진행되어야 한다[6].
게임 상에서의 동기화를 위해서 주기적으로 게 임 상태의 스냅샷을 저장하는 기법을 사용하기도 한다[7]. 이것은 많은 메모리 공간을 차지하기 때 문에 스냅샷을 이용하지 않고 게임 상태를 여러 상태로 유지하는 방법을 제안하기도 한다[8]. 각각 의 복사본은 모든 이벤트를 도착순으로 처리하고 복사본들 간에는 현재 시뮬레이션 시간과 비교해서 서로 다른 지연을 갖는다. 하지만 메시지를 도착순 으로 처리함으로써 메시지들의 도착순이 메시지의 발생순과 다를 경우에는 롤백이 발생하는 단점이 있다. 이러한 문제점들을 해결하고자 본 논문에서 는 이벤트 잠금 기법을 적용한 동기화 기법을 제 안한다.
3. 제안기법
3.1 실시간 전략 시뮬레이션의 서버 모듈
실시간 전략 시뮬레이션의 대표적인 모델로는 배틀넷 서버가 있다. 실시간 전략 시뮬레이션에서
는 로그인 후 로비로 접속하고, 게임 방을 생성하 거나 게임 방에 접속을 하게 되고, 배틀넷 서버는 유저들에게 게임을 진행시켜주는 역할을 하게 된 다. 게임 서버는 TCP/IP 프로토콜 상에서 IOCP 입출력 모델을 사용하고, 유저의 로그인과 게임 방 접속까지 담당한다. 게임 방에서 게임이 시작되고 나면 서버의 부하를 줄이고, 빠른 반응속도를 갖기 위해서 각 클라이언트들은 UDP P2P로 패킷을 주 고받으면서 게임을 진행하게 된다. 이 때 게임 방 의 방장은 게임의 호스트 역할을 갖고 게임이 진 행될 때 모든 클라이언트로부터 패킷을 받아서 다 른 클라이언트로 브로드캐스팅 하는 역할을 갖는 다. [그림 2]는 서버의 시퀀스 다이어그램을 나타 낸다. SessionManager에서는 동시에 많은 클라이 언트의 접속요청을 처리하기 위해 미리 각각 Session들에 대해서 AcceptEx ( ) 함수를 호출해 준다. GameIocp에서는 서버의 Listen소켓을 추가 시켜준 뒤, 유저들의 접속과 게임 방 생성, 게임 방 입장과 같은 패킷 처리를 해주고, UDP로 돌아 가는 UDPIocp는 UDP P2P로 연결을 시켜주기 위 해서 서버에서 보이는 주소와, 클라이언트가 갖는 로컬 주소를 게임방의 방장에게 전송시켜주기 위해
서 존재한다. 종료는 초기화의 반대 순서로 해준다.
[그림 3]에서는 전략 시뮬레이션 게임 서버의 클래 스 다이어그램을 요약해서 나타낸 것이다.
3.2 실시간 전략 시뮬레이션의 클라이언트 모듈
클라이언트의 네트워크 모듈은 EventSelect 입 출력 모델을 사용해서 간단히 구현하고, 게임에서 가장 핵심적인 동기화를 맞춰주기 위해서 이벤트 잠금 기법을 사용한다. 이를 위해서는 일단 클라이 언트의 게임흐름은 고정프레임으로 진행되어야 한 다. 또한 게임에서의 패킷은 UDP로 전송이 되므 로 이 UDP패킷을 손실되지 않게 전송하기 위해서 하나의 쓰레드가 필요하다[9]. 만약 A와 B라는 유 저 두 명이 있다고 가정했을 때, A가 B로 패킷을 전송했을 때, B에서 패킷을 받았다는 응답메시지가 올 때까지 중복된 패킷을 계속 보내고, 응답메시지 가 온다면 B에게 보낼 다음 패킷을 전송해주는 일 을 한다. 이 쓰레드를 위해서 각 클라이언트에서는 패킷을 보낼 때 하나의 송신 큐에 패킷을 저장해 놓아야 할 것이다.
3.2.1 명령 처리가 없을 때
[그림 4] 게임이 진행되는 과정-메시지가 없을 때
[그림 4] 안의 맨 위와 맨 아래는 각 유저를 나 타내는 것이고, 가운데는 호스트로서 각 클라이언 트에게서 패킷을 받고 브로드캐스트를 해주는 호스 트역할을 하며, 하나의 게임방에서는 특정 클라이 언트가 된다. 세로 선들은 한 칸이 게임 흐름에서 고정프레임의 단위를 나타내는 것이다. 지금부터는 이 고정프레임의 단위를 하나의 턴으로 정한다. 이 클라이언트들이 같은 턴을 진행시키려면 다른 클라 이언트들도 해당 턴이 끝나야 비로소 모두 각자 다음 턴을 진행하며, 이를 인증하기 위해서 이벤트 잠금 기법을 사용한다. 게임에 참여한 유저들로부 터 아무 명령이 없을 때의 상황을 [그림 4]에서 보 였다. 각 클라이언트는 해당 턴이 끝나게 되면 하 나의 빈 패킷을 브로드 캐스팅한다. 이 빈 패킷은 현재 자신의 턴이 모두 진행되었음을 알리는 메시 지이고, 각 클라이언트는 게임에 참가한 모든 클라 이언트에게서 이 빈 메시지가 왔을 때 비로소 다 음 턴으로 진행을 할 것이다. 만약 하나의 유저로 부터 아무 메시지가 전송되지 않았을 때는 그 유 저로부터 패킷이 올 때까지 게임을 진행시키지 않 고 계속 대기할 것이다. 그래야 각 클라이언트는 서로 동시에 같은 턴을 진행하면서 동기화가 이루 어질 것이다. 같은 빈 메시지 패킷을 살펴보면 [그 림 5]와 같은 구조로 되어있다.
[그림 5] 빈 메시지 패킷
[그림 6] 게임이 진행되는 과정-특정 명령 발생 시
3.2.2 특정 턴에 명령이 내려졌을 때
[그림 6]에서와 같이 게임을 하는 유저가 특정 턴에서 어떠한 명령을 내리면, 현재의 턴이 끝나게 될 때 호스트에게 그 명령을 전송하고, 호스트는 받은 패킷을 바로 모든 클라이언트들에게 브로드 캐스팅한다. 각 클라이언트에서 각 턴에서 명령이 있을 때와 없을 때를 검사하는 부분은 각 턴이 시 작하는 부분에서 실행되어야 한다. 또한 이 브로드 캐스팅은 한 턴 안에 끝나야 하고, 패킷을 받은 클 라이언트들은 해당 명령을 가지고 있다가 다음 턴 이 시작되면 실행해준다. 따라서 특정 턴에서 내린 명령은 두 턴 뒤에서야 해당 명령이 실행될 것이다.
모든 클라이언트가 각 턴에서 해당 턴에서 실행 되어야 하는 명령을 정확히 실행하게 되며, 각 턴 안에서 턴이 시작되고 난 후 명령이 내려진 시점 까지의 상대적인 시간도 계산하여 패킷 정보 안에 들어가야 한다. 만약 같은 턴에서 여러 명의 유저 가 동시에 명령을 전송한다면, 그 턴에서의 상대적 인 시간을 비교하여 빠른 명령부터 순차적으로 처 리를 해줘야 하기 때문이다. 만약 상대적인 시간마 저 똑같은 명령이 전송된다면, 그럴 때는 모든 클 라이언트가 똑같은 순서로 처리하게끔 게임에서 방 법이 정해져 있어야 할 것이다.(예를 들면 플레이 어의 인덱스 순으로 처리를 하는 방법이 있다.) 이 렇게 된다면 현재 진행하는 턴은 이전까지 받아둔 패킷의 정보로 진행을 하게 되고, 결국 게임에서
유저가 내리는 명령은 일정시간의 지연시간을 두고 실행을 하게 된다. 만약 이벤트의 지연이 없다면, 명령을 내린 클라이언트에서와 다른 클라이언트가 해당 명령을 내리는 시간차가 발생하기 때문에 완 벽한 동기화는 될 수가 없다. 바로 이것이 이벤트 잠금 기법의 핵심요소인 지연시간이다. 지연시간은 (한 턴의 시간 * 2)의 시간을 가지고, 한 턴의 시 간을 줄일수록 지연시간은 줄어들게 된다.
4. 성능평가
본 논문에서 제안한 동기화 기법을 사용하여 떨 어진 LAN 환경에서 Windows XP운영체제가 설 치된 클라이언트PC 4대와 서버PC 1대를 이용해서 성능평가를 수행했다.
4.1 서버 실행
[그림 7]은 게임을 시작한 후 서버가 실행되는 모습이다. 그림에서 보면 0번부터 2번 플레이어가 계속 패킷을 주고받고 있으며, 메시지가 없을 때의 빈 패킷, 그 외 이동패킷, 공격이동 패킷이 전달되 는 것을 볼 수 있고, 또한 제안 기법을 위해 세 플 레이어에게 모두 전송된 후에야 또 게임 유저에게 전송되는 반복되는 모습을 볼 수 있다.
[그림 7] 서버가 실행되는 모습
4.2 클라이언트 실행
4.2.1 제안기법 적용 시 클라이언트 실행
[그림 8] 제안 기법 적용 시 클라이언트 화면
[그림 8]은 제안 기법을 적용하고, 같은 게임 내 에서 각기 다른 세 개의 클라이언트의 화면의 모 습이다. 전투를 실행한 뒤의 모습인데, 동기화가
정확하게 이루어져서 세 개의 클라이언트가 모두 같은 전투 후 화면을 보여주고 있는 것을 볼 수 있다.
4.2.2 제안 기법 미적용 시 클라이언트 실행
[그림 9] 제안 기법 미적용 시 클라이언트 화면
[그림 9]에는 제안 기법을 미적용하고, 같은 게 임 내에서 각기 다른 세 개의 클라이언트의 화면
의 모습이다. 각 클라이언트가 명령 패킷이 오자마 자 클라이언트에서 바로 처리를 하기 때문에 동기 화가 이루어지지가 않아서 동일한 전투를 실행해도 결과가 다른 것을 볼 수 있다. 예를 들어 지금 명 령을 내린 클라이언트의 턴이 임의의 A턴이라고 하자. 동기화가 되려면 그 명령은 모든 클라이언트 에서 A턴에 실행이 되어야 할 것이다. 하지만 제 안 기법을 적용하지 않아서 이벤트가 지연되지 않 고 즉각 실행된다면 명령을 내린 클라이언트는 A 턴에서 실행되겠지만, 경우에 따라서 다른 클라이 언트에서는 네트워크 지연시간 때문에 A턴의 다음 턴에서 실행될 가능성이 있기 때문이다. 그렇기 때 문에 동일한 전투를 실행해도 결과는 매번 다를 가능성이 있는 것이다.
4.2.3 제안 기법 적용 시 클라이언트 로그 비교
[그림 10] 제안 기법 적용 시 클라이언트 로그 비교
[그림 10]에서는 제안 기법의 확인을 위해서 세 개의 클라이언트에서 각 명령 이벤트에 따른 로그 를 확인해보았다.
각 도형으로 나타낸 숫자는 패킷이 도착하거나, 클라이언트에서 명령이 실행될 고정프레임의 번호 를 나타낸 것이다. 로그를 보면 각 클라이언트마다 패킷이 도착하는 프레임은 다르지만 다음 줄에서 볼 수 있듯이 실행되는 프레임은 세 클라이언트마 다 같은 것을 볼 수 있다.
4.2.4 제안 기법 미적용 시 클라이언트 로그 비교
[그림 11] 제안 기법 미적용 시 클라이언트 로그 비교
[그림 11]에서는 제안기법을 적용하지 않은 상태 로 클라이언트들을 실행했을 때의 클라이언트의 로 그를 나타낸 것이다. 각 도형으로 표시된 부분을 살펴보면 각각 패킷이 도착한 시간이 다르지만 동 기화를 해주지 않고 명령을 바로 실행하기 때문에 각 클라이언트마다 명령을 실행하는 프레임의 번호 가 제각각인 것을 살펴볼 수 있다.
4.3 동기화 시간 비교
4.3.1 클라이언트 개수에 따른 동기화 시간
[그림 12] 시간에 따른 클라이언트 개수별 메시지 처리 시간
서버에서 하나의 이벤트 패킷을 받아서 모든 클 라이언트에게 넘겨줄 때까지의 시간을 클라이언트 의 개수별로 그래프로 나타내 보았다. [그림 12]에 서와 같이 클라이언트의 개수에 따라, 각 클라이언 트 개수 별로 하나의 이벤트를 처리하는 시간의 최대값과 최소값을 비교해보면 50ms가 넘지 않는 다. 또한 각 클라이언트 개수별로 평균값은 대체적 으로 클라이언트 개수에 관계없이 비슷하다. 15ms 에서 30ms의 값을 많이 보여주는데, 이유는 서버 측에서 메시지 잠금 기법을 사용하면 지연시간이 있어서 서버가 각각 클라이언트들과 패킷을 주고받 는 시간이 밀리지 않고 충분하기 때문에 서버는 클라이언트 개수의 증가에 따른 네트워크 부하의 증가 없이 원활한 패킷 전송을 할 수 있다.
4.3.2 메시지 증가에 따른 동기화 시간
[그림 13] 메시지를 증가시켰을 때 시간에 따른 메시지 처리 시간
클라이언트는 세 개로 고정을 시켜놓고 실제 게 임에서처럼 메시지를 증가시켜 보았다. 그리고 4.3.1에서처럼 서버에서 하나의 명령 메시지를 처 리하는 시간을 측정해 [그림 13]의 결과를 얻었다.
[그림 12]의 그래프와 비교해 보면 하나의 명령을 처리하는 시간이 그리 큰 차이가 나지 않았다. 메 시지가 아무리 증가한다 하더라도 한 번의 고정프 레임에서 처리하는 명령은 한 개이고, 명령이 없다 하더라도 고정프레임에서 한 번의 빈 메시지 패킷 이 전송되기 때문에 결국 각 고정프레임 당 전송 되는 패킷은 한 개로 동일하다. [그림 12]와 시간 이 약간 차이나는 것은 명령이 늘어나서 클라이언 트에서 처리하는 로직이 추가되어서 이런 결과가 나온 것이다. 즉 명령이 아무리 늘어나도 서버에 걸리는 부하는 명령이 없을 때와 별 차이가 없다.
5. 결론 및 향후 연구과제
본 논문에서는 실시간 전략 시뮬레이션 게임 에서의 효율적인 동기화를 위한 이벤트 잠금 기법 을 기반으로 한 새로운 기법을 제안하고, 이를 적 용한 전략 시뮬레이션 게임서버 및 클라이언트를 구현하였다. 성능분석에서 보인바와 같이 본 논문
에서의 제안기법은 클라이언트 개수의 증가와 메시 지 증가에 따른 네트워크 부하가 증가하지 않고 원활한 패킷 전송을 수행할 수 있음을 보였다.
그러나 본 논문에서 제안하는 지연시간은 게임 유저의 네트워크 상황과 게임 유저의 수 등의 많 은 변수에 따라 다른 값을 가질 수 있다. 따라서 향후 연구에서는 온라인상의 게임서버에 접속하는 세션에 대한 정확한 예측을 위한 분석모델을 설계 하고 연구에서는 다양한 변수들을 고려하여 수학적 접근에 의한 모델링을 통해 실시간 전략 시뮬레이 션 게임을 위한 최적의 지연시간을 제안함으로써 더욱 효율적이고 신뢰성 있는 실시간 전략 시뮬레 이션 게임 서버 엔진에 대해 연구하고자 한다.
참고문헌
[1] 이상원 김혜영, “게임엔진에서의 효율적인 메시 지 관리 기법”, 한국게임학회논문지, 제 8권 제 2호, 2008년 5월
[2] 김혜영, 함대현, “온라인 게임서버를 위한 객체 폴링기법에 관한 연구”, 한국게임학회논문지, 제 9권 제6호, 2009년 12월
[3] Yang Yu, Ahu Li, Larry Shi, Ethan Yi-Chiun Chen, and Hua Xu, “Cross-Layer Optimization for State Update in Mobilt Gaming”, IEEE Transaction on Multimedia, vol. 10, No.5, August 2008
[4] Nicholas Bonneau, Merouane Debbah, Eitan Altman, and Are Hojrungnes, “Non-Atomic Games for Multi-User System”, IEEE Journal on Selected Areas in Communications, Vol.
26, No.7, September 2008
[5] Santiag Ontanon, Kinshuk Misha, Neha Sugandhl, and Ashwin Ram, "Case-Based Planing and Excution for Real-Time Strategy Games", Proceeding of International Conference on Case-Based Reasoning (ICCBR) 2007 [6] 김상철, “다중 사용자용 온라인 게임에서의 이
중 시간간격을 이용한 상태 동기화”, 한국정보 처리학회논문지, 2005
[7] M.Mauve, "How to keep a dead man from shooting." the 7th International Workshop on
Interactive Distributed Multimedia System, October 2000.
[8] Eric, Burton, et. Al, "An Efficient Systronization Mechanism for Mirrored Game Architecture,"
ACM NetGames 2002, Pp.67-73
[9] 한동훈, “온라인 게임 서버 프로그래밍”, 정보 문화사, 2007
김 혜 영 (Hye-Young Kim)
2005년 2월 고려대학교 컴퓨터학과 이학박사 2005년 3월-2006년 8월 Wright State Uni. Post-Doc.
2007년 3월-현재 홍익대학교 게임학부 게임소프트웨어 전공 조교수
관심분야 : 모바일 게임, 온라인 게임서버, 게임엔진
임 영 종 (Young-Jong Lim)
2004년 3월-현재 홍익대학교 게임학부 게임소프트웨어 전공 재학 중
관심분야 : 온라인 게임서버