본 발명은 상기 설명한 종래의 기술적 과제를 해결하기 위한 것으로서, 사용자의 네트워크 부하를 낮출 수 있으면서 낮은 관리 부하로도 관심 영역을 보다 유연하게 정의할 수 있고 분산 서버로도 확장할 수 있는 대규모 사용자 온라인 게임 서버에서의 셀 기반 관심 영역 및 역관심 영역의 관리 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 셀 기반 관심 영역의 관리 방법은 복수의 게임 서버에 의해 관리되는 각각의 존이 사용자 및 게임 객체에서 발생하는 이벤트를 전달하기 위한 기본 단위인 다수의 셀을 포함하며 상기 각 셀은 인접한 셀의 리스트를 관심 영역으로서 구비하고 있는 게임 서버에서의 셀 기반 관심 영역의 관리 방법으로서, (a) 사용자가 셀을 변경하여 이동하면, 이동한 셀의 새로운 관심 영역을 계산하고 새로 관심 영역에 추가된 셀을 계산하는 단계; (b) 상기 추가된 셀이 외부셀이고, 상기 추가된 셀을 관리하는 서버와 연결이 없을 경우에는 상기 이동한 사용자와 상기 추가된 셀의 관리 서버를 서로 연결시키는 단계; (c) 상기 추가된 셀에 포함된 데이터들을 사용자에게 전송하는 단계; (d) 사용자가 이동한 셀의 관심 영역에서 제외된 셀을 계산하고, 상기 제외된 셀에 포함된 데이터가 관심 영역에서 제외되었음을 알리는 메시지를 사용자에게 전송하는 단계; 및, (e) 상기 제외된 셀이 외부셀이고, 상기 제외된 셀을 관리하는 서버가 관리하는 셀이 이동한 셀의 관심 영역에 속하는 셀 중에 더 이상 없을 경우에는, 상기 사용자와 상기 제외된 셀을 관리하는 서버와의 접속을 종료시키는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 목적을 달성하기 위한 본 발명의 셀 기반 역관심 영역의 관리 방법은 복수의 게임 서버에 의해 관리되는 각각의 존이 사용자 및 게임 객체에서 발생하는 이벤트를 전달하기 위한 기본 단위인 다수의 셀을 포함하며, 인접한 셀이 임의의 한 셀을 역관심 영역으로서 구비하고 있는 게임 서버에서의 셀 기반 역관심 영역의 관리 방법으로서, (a) 사용자가 셀을 변경하여 이동하면, 사용자가 이동한 셀의 역관심 영역을 계산하는 단계; (b) 새로 역관심 영역에 추가된 셀을 계산하고, 상기 추가된 셀에 포함되어 있는 사용자에게 이동한 사용자 데이터를 전송하는 단계; (c) 사용자의 셀간 이동에 의해 상기 역관심 영역에서 제외된 셀을 계산하는 단계; 및, (d) 상기 제외된 셀에 포함된 사용자에게 이동한 사용자가 관심 영역에서 제외되었음을 알리는 메시지를 전송하는 단계를 포함하는 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세하게 설명한다.
도 1에는 본 발명이 적용되는 게임 월드의 존 분할 및 존 내의 셀 할당을 설명하기 위한 도면이 도시되어 있다. 도 1에 도시된 바와 같이, 본 발명에서는 하나의 게임 월드가 다수의 게임 서버에 의해 분할되어 관리된다. 하나의 게임 서버가 관리하는 영역은 "존(zone)"으로 불리워지며, 하나의 존(10)은 다시 게임 이벤트 전달 범위를 관리하기 위하여 다수의 셀(cell)로 나누어진다. 각 셀은 사용자 및 각종 게임 객체에서 발생하는 이벤트의 전달 범위에 있어서의 기본 단위가 된다. 셀 중에서 다른 게임 서버에 의해 관리되는 셀은 외부셀이라 정의한다.
도 2는 상기 도 1의 임의의 셀의 관심 영역을 설명하기 위한 도면으로서, 게임에서 발생하는 각종 이벤트를 전달할 때, 이와 같은 셀을 이용함으로써 이벤트 및 데이터의 전달 범위를 제한하는 것이 가능하다. 각 셀에 속한 사용자는 정해진 셀들에서 발생한 이벤트들만을 수신할 수 있으며, 이러한 정해진 셀을 관심 영역(AOI : area of interest)이라 한다. 각 셀에는 상기 관심 영역을 셀의 리스트로서 구비되어 있다. 도 2에 도시된 임의의 셀의 관심 영역에서는 "X"로 표시된 셀에 인접한 8개의 셀이 관심 영역으로 미리 설정되어 있으며, 이 8개의 셀에서 발생하는 이벤트들은 상기 임의의 셀에서도 수신될 수 있다. 또한, 상기 인접한 8개의 셀 외에 멀리 떨어진 하나의 셀이 관심 영역에 포함되도록 하여 해당 셀에서 발생하는 이벤트를 상기 임의의 셀에서 수신하는 것도 가능하다. 관심 영역을 정의 하는 방법은 게임 컨텐츠마다 다르지만, 본 발명에서는 관심 영역을 임의의 셀에 인접하는 셀의 집합으로서 정의하고 있으므로, 원하는 셀을 자유롭게 관심 영역으로 정의할 수 있다.
도 3은 상기 도 1의 임의의 셀의 역관심 영역을 설명하기 위한 도면이다. 즉, 도 2에서 정의한 관심 영역을 실행시에 빠르게 처리하기 위한 자료구조로서 역관심 영역을 정의하고 있다. 게임 서버가 실제 게임을 서비스하기 전에, 게임 서버 프로그램은 각 셀의 관심 영역으로부터 각 셀의 역관심 영역을 미리 계산하여 그 리스트를 가지고 있으면서 실행시에 사용함으로써 게임 서버의 효율을 높일 수 있다. 즉, 게임 서버의 실행 전에 게임 서버는 각 셀에 대해 해당 셀을 관심 영역으로 갖는 셀의 집합을 계산하여 리스트를 가지고 있는다. 도 3에서, "X"로 표시된 셀의 주변 셀들이 "X"로 표시된 셀을 관심 영역으로서 가지고 있고, 멀리 떨어진 다른 두 개의 셀도 "X"로 표시된 셀을 관심 영역으로서 가지고 있다. 상기 "X"로 표시된 셀은 역관심 영역으로서 도 3에 표시된 10개의 셀들을 가지고 있다.
게임 서버의 실행시에는, 도 3의 "X"로 표시된 셀에서 발생한 게임 이벤트들이 그 셀을 관심 영역으로 가지고 있는 셀들에 포함된 사용자들에게 전달되어야 한다. 게임 서버는 이미 이 셀의 집합을 역관심 영역으로서 계산하여 가지고 있으므로, 셀에서 발생한 이벤트를 역관심 영역 집합으로 계산해 둔 셀들에게 추가적인 계산없이 전달할 수 있다.
도 5에는 사용자가 셀의 경계를 넘어갈 때 본 발명의 실시예에 따른 관심 영역 관리 방법의 처리 흐름이 도시되어 있다.
사용자가 셀의 경계를 넘어갔을 때는 사용자의 관심 영역이 변하기 때문에, 새로운 관심 영역에 포함된 셀의 데이터를 사용자에게 전달해 주어야 하는 한편, 관심 영역에서 제외된 셀들의 게임 데이터들은 더 이상 사용자에게 수신되지 않기 때문에 이를 사용자에게 알려주어야 한다.
도 5에 도시된 바와 같이, 사용자가 셀을 변경하여 이동하면, 서버는 새로운 관심 영역을 계산하고(S10), 새로 관심 영역에 추가된 셀(A)을 계산한다(S11). 사용자가 게임 데이터를 받는 영역은 사용자가 포함된 셀의 관심 영역에 속하는 셀이기 때문에, 서버는 사용자가 이전에 속한 셀의 관심 영역의 집합을 구하고, 새로 이동한 셀의 관심 영역의 집합을 구하여, 후자에서 전자를 빼면 사용자의 셀간 이동으로 인해 관심 영역에 새롭게 추가된 셀(A)들이 계산될 수 있고, 전자에서 후자를 빼면 사용자의 셀간 이동으로 인해 관심 영역에서 제외된 셀(B)들이 계산될 수 있다.
다음으로, 상기 단계(S11)에서 구해진 새로 관심 영역에 추가된 셀(A)이 외부셀인지 판단하고(S12), 상기 셀(A)이 외부셀인 경우에는 상기 사용자와 상기 셀(A)을 관리하는 서버와 연결이 있는지 판단한다(S13). 상기 단계(S13)에서 상기 셀(A)을 관리하는 서버와 연결이 없는 것으로 판단되면, 상기 사용자를 상기 추가된 셀(A)을 관리하는 서버와 연결시킨다(S14). 상기 각 단계(S12, S13, S14)가 수행된 후, 사용자의 셀간 이동에 의해 새롭게 추가된 상기 셀(A)에 포함된 데이터들을 사용자 즉, 플레이어에게 전송한다(S15).
다음으로, 위에서 설명된 바와 같은 방식으로 사용자의 셀간 이동에 의해 관 심 영역에서 제외된 셀(B)이 계산된다(S16). 그리고, 상기 제외된 셀(B)에 포함된 데이터가 관심 영역에서 제외되었음을 알리는 메시지를 사용자에게 전송한다(S17).
다음으로, 상기 제외된 셀(B)이 외부셀인지 판단하고(S18), 외부셀인 것으로 판단되면, 관심 영역 안에 상기 제외된 셀(B)을 관리하는 서버에 의해 관리되는 셀이 더 이상 없는지 판단한다(S19). 상기 단계(S19)에서 상기 제외된 셀(B)을 관리하는 서버에 의해 관리되는 셀이 관심 영역 안에 더 없을 경우에는, 상기 사용자와 상기 제외된 셀(B)을 관리하는 서버와의 접속을 종료시킨다(S20).
도 6에는 본 발명의 실시예에 따른 역관심 영역 관리 방법의 처리 흐름이 도시되어 있다. 사용자가 셀간 이동을 할 경우에는 셀에 포함된 다른 사용자들에게 이 이벤트를 전달하여야 하며, 도 6은 이러한 과정을 나타내고 있다.
게임서버는 사용자가 이전에 속하는 셀의 역관심 영역을 구하고, 사용자가 새롭게 이동한 셀의 역관심 영역을 구한다. 후자에서 전자를 빼면, 사용자가 관심영역에 새롭게 추가된 셀(A)의 리스트가 계산되고, 전자에서 후자를 빼면, 사용자가 역관심 영역에서 제외된 셀(B)의 리스트가 계산될 수 있다.
도 6에 도시된 바와 같이, 사용자가 셀을 변경하여 이동하면, 게임 서버는 사용자가 이동한 셀의 역관심 영역을 계산한다(S30). 다음으로, 위에서 설명한 방식으로 새로 역관심 영역에 추가된 셀(A)을 계산하고(S31), 상기 추가된 셀(A)에 포함되어 있는 사용자에게 이동한 사용자 데이터를 전송한다(S32). 그 다음으로, 위에서 설명한 방식으로 상기 역관심 영역에서 제외된 셀(B)을 계산하고(S33), 상기 제외된 셀(B)에 포함된 사용자에게 이동한 사용자가 관심 영역에서 제외되었음 을 알리는 메시지를 전송한다(S34).
본 발명에서는 사용자의 서버간 이동을 자연스럽게 처리하기 위하여 경계셀(Boundary Cell)을 사용한다. 상기 경계셀은 도 1에 도시되어 있으며, 관심 영역에 속하는 셀들 중에서 다른 서버가 관리하는 셀이 포함된 셀들로 정의된다. 또한, 자신의 서버에 속하지 않는 셀들은 외부셀이라고 정의된다. 본 발명에서는 경계셀에 포함된 사용자는 자신이 포함된 서버와 연결을 맺고 있으며, 경계셀이 이웃한 서버로도 연결을 맺게 된다. 이 과정은 사용자가 이동하여 셀이 바뀔 때 일어나며, 도 5에 그 처리 흐름이 도시되어 있다. 이 때, 경계셀은 이웃한 서버의 입장에서는 외부 셀이 되며, 설명된 바와 같이 경계셀을 관리하는 서버에 연결되므로, 서버는 외부 셀에 포함된 사용자 정보를 가지고 있게 된다. 상기 경계셀에서 일어나는 게임 이벤트들도 서버의 구분 없이 해당 셀의 역관심 영역에 포함된 셀들에게 전달된다. 이 때, 경계셀의 역관심영역은 도 4와 같이 이웃한 서버의 경계셀도 포함하게 된다. 앞에서 설명한 게임 이벤트의 전달, 셀간 이동으로 인한 관심영역에 추가 또는 제외됨을 알리는 메시지의 전달 역시 서버 구분없이 같은 방법으로 전달된다.
사용자가 서버의 경계를 넘어 다른 서버로 이동하는 경우의 이벤트 처리는 앞에서 설명한 관심 영역과 역관심 영역을 관리하는 방법에 동일하게 적용된다. 외부셀의 처리가 일반 셀의 처리와 동일하므로, 포함된 서버의 구분 없이, 게임서버는 관심 영역과 역관심 영역을 사용하여 각각의 차집합으로부터 관심 영역 추가 또는 제외를 알리는 메시지를 전달할 수 있다. 사용자가 발생시키는 이벤트는 사 용자가 포함된 셀을 관리하는 서버에서 처리되며, 사용자에게 전달되는 이벤트는 서버의 구분 없이 역관심 영역에 포함된 셀의 범위로 전달되면, 경계셀이 아닌 일반 셀에서의 처리와 동일한 방식으로 처리된다. 단, 역관심영역에 속한 셀들이 여러 개의 서버들에 속해 있을 경우 각 셀에서 발생된 이벤트는 해당 소속 서버로부터 전송받게 된다.