KR102464078B1 - 스패닝 트리를 사용한 셀 병합을 통한 리전 분할 - Google Patents

스패닝 트리를 사용한 셀 병합을 통한 리전 분할 Download PDF

Info

Publication number
KR102464078B1
KR102464078B1 KR1020227024024A KR20227024024A KR102464078B1 KR 102464078 B1 KR102464078 B1 KR 102464078B1 KR 1020227024024 A KR1020227024024 A KR 1020227024024A KR 20227024024 A KR20227024024 A KR 20227024024A KR 102464078 B1 KR102464078 B1 KR 102464078B1
Authority
KR
South Korea
Prior art keywords
graph
instructions
segment
adjacent
geographic area
Prior art date
Application number
KR1020227024024A
Other languages
English (en)
Other versions
KR20220110570A (ko
Inventor
캐서린 엘리자베스 라호르그
Original Assignee
나이앤틱, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 나이앤틱, 인크. filed Critical 나이앤틱, 인크.
Publication of KR20220110570A publication Critical patent/KR20220110570A/ko
Application granted granted Critical
Publication of KR102464078B1 publication Critical patent/KR102464078B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/216Input arrangements for video game devices characterised by their sensors, purposes or types using geographical information, e.g. location of the game device or player using GPS
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/531Server assignment
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/535Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for monitoring, e.g. of user parameters, terminal parameters, application parameters, network parameters
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/69Involving elements of the real world in the game world, e.g. measurement in live races, real video

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Environmental & Geological Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Remote Sensing (AREA)
  • Processing Or Creating Images (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)

Abstract

위치 기반 병렬 현실 게임은 가상 요소를 분산하고, 가상 경험을 배치하고, 게임 목표를 정의하는 방법을 결정하는데 리전들을 사용할 수 있다. 지리적 에어리어의 리전들을 결정하기 위해, 서버는 지리적 리전을 셀로 분할한다. 서버는 각 셀에 현실 세계 데이터를 할당하고 이 셀을 기초로 하여 노드 및 에지의 그래프를 구성한다. 각 노드는 셀에 대응하고 각 에지는 인접 셀에 대응하는 노드들을 연결한다. 서버는 현실 세계 데이터를 기초로 하여 그래프를 인접 세그먼트들로 분할한다. 서버는 인접 세그먼트를 기초로 하여 지리적 에어리어의 리전들을 정의하고 정의된 리전들을 데이터 저장소에 저장한다. 서버는 각 리전이 기준 세트를 충족할 때까지 리전들을 계층적으로 더 높은 차수의 리전으로 분할할 수 있다.

Description

스패닝 트리를 사용한 셀 병합을 통한 리전 분할
본 발명은 리전(region) 분할에 관한 것이며, 보다 구체적으로는 위치 기반 게임에서 사용하기 위한 상이한 리전들의 식별에 관한 것이다.
위치 기반 게임은 현실 세계를 그것의 지형으로 사용한다. 병렬 현실 게임(parallel reality game)은 현실 세계 지형과 평행한 가상 세계를 사용하는 일종의 위치 기반 게임이다. 병렬 가상 세계는 전체 현실 세계에 걸쳐 있을 수 있으며, 전세계 도처의 플레이어들은 현실 세계에서 탐색 및 액션을 수행함으로써 병렬 가상 세계에서 상호 작용하고 다양한 게임 목표를 수행할 수 있다. 유사한 위치에 있는 플레이어들이 서로 상호작용하는 것을 가능하게 하기 위해, 가상 세계(또는 가상 세계 내의 지리적 에어리어(area))는 리전으로 분할될 수 있으며, 각 리전은 상이한 가상 요소 및 게임 목표와 연관될 수 있다. 그러나, 게임 플레이는 가상 세계의 일부 리전에서 다른 리전보다 더 밀집되게 배치될 수 있다. 면적만을 기준으로 리전을 결정하면 리전들이 불균형해질 수 있으며, 일부 리전은 다른 리전보다 더 적은 게임 플레이를 커버하게 된다.
위치 기반 병렬 현실 게임에서, 플레이어는 스마트폰과 같은 위치 인식 클라이언트 장치와 함께 현실 세계를 이동함으로써 가상 세계를 탐색한다. 플레이어가 가상 세계를 탐색할 때, 가상 요소와 상호 작용하고 가상 경험에 참여할 수 있다. 이러한 가상 요소 및 가상 경험은 가상 세계 내의 전략적으로 배치된 리전들 내에 배치될 수 있다. 이 리전들은 인구 밀도 데이터, 플레이어 활동 히트맵, 관심 지점 위치 및 지형 데이터와 같이, 가상 세계에 매핑된 현실 세계의 위치에 대응하는 현실 세계 데이터를 고려함으로써 유사한 위치에 있는 플레이어들 간의 게임 플레이를 간소화(streamline)할 수 있다.
병렬 현실 게임에서 플레이어가 사용하는 많은 클라이언트 장치는 플레이어가 병렬 현실 게임을 플레이하고 병렬 현실 게임 내의 가상 요소와 상호 작용하면서 현실 세계 도처를 이동할 때 플레이어 위치 정보를 추적하는 측위 장치(positioning device)를 포함할 수 있다. 다양한 실시예에서, 클라이언트 장치는 플레이어 위치 정보를 병렬 현실 게임을 호스팅하는 서버에 전송한다. 게임 서버는 이러한 플레이어 위치 정보를 다른 현실 세계 데이터와 함께 사용하여 게임 플레이를 위해 가상 세계를 리전으로 분할하는 방법을 결정할 수 있다.
일 실시예에서, 게임 서버는 지리적 에어리어를 셀로 분할하고, 현실 세계 데이터를 각 셀에 할당하고, 에지 및 노드의 그래프를 구성함으로써 지리적 에어리어에 대한 리전을 결정한다. 게임 서버는 현실 세계 데이터에 기초하여 그래프를 인접 세그먼트(contiguous segment)로 분할하고, 이 인접 세그먼트에 기초하여 지리적 에어리어의 리전을 정의할 수 있다. 게임 서버는 이 리전들을 게임 데이터베이스와 같은 데이터 저장소에 저장하고, 시간이 지남에 따라 더 많은 현실 세계 데이터를 수신함에 따라 리전을 업데이트할 수 있다.
이러한 특징, 양태 및 이점은 및 다른 특징, 양태 및 이점은 아래의 설명 및 첨부된 청구범위를 참조하여 더 잘 이해될 수 있다. 첨부된 도면은 특정 실시예를 예시하고, 설명과 함께 다양한 원리를 설명하는 역할을 한다. 그러나, 도면이 제한적인 것으로 간주되어서는 안 된다. 오히려, 보호 범위는 청구 범위로부터 결정되어야 한다.
도 1은 일 실시예에 따른 위치 기반 게임을 운영하기에 적합한 네트워크 컴퓨팅 환경을 도시하는 블록도이다.
도 2는 일 실시예에 따른 도 1에 도시된 클라이언트 장치의 블록도이다.
도 3은 일 실시예에 따른 도 1에 도시된 게임 서버의 블록도이다.
도 4a 및 도 4b는 일 실시예에 따른, 지리적 리전 서브세트의 셀들을 노드 및 에지의 그래프로 변환하는 것을 보여준다.
도 5a 내지 도 5h는 일 실시예에 따른, 지리적 리전의 그래프를 인접 세그먼트로 분할하는 예를 도시한다.
도 6a 내지 도 6g는 일 실시예에 따른, 2차 그래프를 결정하기 위해 1차 그래프를 분할하는 예를 도시한다.
도 7은 일 실시예에 따른, 지리적 에어리어를 리전으로 분할하는 프로세스를 도시하는 흐름도이다.
도 8은 일 실시예에 따른, 도 1의 네트워크 컴퓨팅 환경에서 사용하기에 적합한 예시적인 컴퓨터를 도시하는 블록도이다.
여러 실시예가 참조되며, 그 예가 첨부 도면에 도시되어 있다. 실행 가능한 경우 유사한 기능을 나타내기 위해 유사한 부재번호가 도면에서 사용된다는 점에 유의해야 한다. 또한, 유사한 요소가 부재번호 다음에 오는 문자로 식별되는 경우, 아래의 설명에서 숫자만 언급하는 것은 모든 이러한 요소, 이러한 요소 중 임의의 하나의 요소 또는 이러한 요소들의 임의의 조합을 나타낼 수 있다. 당업자는 구조 및 방법의 대안의 실시예가 설명된 원리로부터 벗어나지 않고 채용될 수 있다는 것을 아래의 설명으로부터 쉽게 이해할 것이다.
(개요)
본 발명은 지리적 에어리어의 리전 결정에 관한 것이다. 다양한 실시예에서, 병렬 현실 게임은 현실 세계 위치에 매핑되어 있는 가상 세계에서 발생하며, 가상 세계(및 그에 따라 현실 세계)는 리전으로 분할된다. 병렬 현실 게임의 특징은 리전과 관련이 있을 수 있다. 예를 들어, 각 리전은 자체 채팅방을 가질 수 있으며, 게임 목표는 서로 다른 리전에 있는 플레이어들이 서로 경쟁하는 것을 포함할 수 있고(예컨대, 어떤 리전이 주어진 시간 기간 동안 가장 많은 포인트를 획득하는지 판정하고 승리한 리전 내의 플레이어들에게 보상을 제공하는 것) 그리고 리전 내에 존재하는 가상 요소는 상이할 수 있다(예컨대, 리전 내의 가상 요소의 유형은 도시/농촌, 고도, 물의 존재, 녹지 공간의 존재 등과 같은, 그 리전의 현실 세계 속성에 연결될 수 있다). 당업자들은 세계를 리전으로 분할하는 것에 전체적으로 또는 부분적으로 기초하여 결정될 수 있는 병렬 현실 게임의 다른 특징을 이해할 수 있을 것이다.
게임 서버는 현실 세계 지형의 적어도 일부와 평행한 지형을 갖는 가상 환경을 포함하는 플레이어 게임 에어리어를 갖는 위치 기반 병렬 현실 게임을 호스팅할 수 있다. 플레이어는 현실 세계 내의 대응하는 지리적 공간을 탐색함으로써 가상 세계내의 가상 공간을 탐색할 수 있다. 특히, 플레이어는 현실 세계에서 일 범위의 지리적 좌표를 탐색함으로써 가상 세계 내의 가상 공간을 형성하는 일 범위의 좌표를 탐색할 수 있다.
일 실시예에서, 병렬 현실 게임과 연관된 게임 서버는 가상 세계 내의 지리적 에어리어를 리전으로 분할할 수 있다. 게임 서버는 가상 세계 전체에 가상 요소 및/또는 가상 경험을 배포하기 위해 이러한 리전들을 사용할 수 있다. 지리적 에어리어에 대한 리전을 결정하기 위해, 게임 서버는 지리적 에어리어를 설명하는 현실 세계 데이터에 액세스할 수 있다. 현실 세계 데이터는 인구 밀도 데이터, 플레이어 밀도 데이터, 관심 지점 데이터 및 지형 데이터를 포함할 수 있다.
게임 서버는 지리적 에어리어를 지리적 에어리어의 일부를 나타내는 셀로 분할하고 그 셀에 현실 세계 데이터를 할당할 수 있다. 게임 서버는 셀 및 각각의 현실 세계 데이터를 사용하여 지리적 에어리어를 나타내는 노드 및 에지의 그래프를 구성한다. 각 노드는 셀에 대응하는 현실 세계 데이터의 서브세트를 나타내며 각 에지는 그 에지가 연결하는 셀들 간의 현실 세계 데이터의 차이를 나타낸다. 그래프 내의 노드 중 하나에서 시작하여, 게임 서버는 그래프의 최대 스패닝 트리(maximum spanning tree)를 생성함으로써 그래프의 인접 세그먼트를 생성할 수 있다. 게임 서버는 최대 스패닝 트리에서 서로 연결된 노드들을 한 세트의 기준을 집합적으로 충족시키는 노드 그룹으로 그룹화한다. 게임 서버는 모든 그래프가 인접 세그먼트로 분할될 때까지 그래프의 잔여 부분에 대해 새로운 인접 세그먼트를 생성할 수 있다. 게임 서버는 각각의 인접 세그먼트를 한 리전으로 정의할 수 있고, 또는 새로운 세트의 인접 세그먼트로 추가 분할하기 위해 그 인접 세그먼트에 대응하는 지리적 에어리어에 대한 새로운 그래프를 생성할 수 있다.
(예시적인 위치 기반 병렬 현실 게임 시스템)
본 발명의 예시적인 실시예에 따른 예시적인 컴퓨터 구현 위치 기반 게임 시스템이 설명된다. 본 발명은 병렬 현실 게임을 참조하여 논의된다. 병렬 현실 게임은 현실 세계에서의 플레이어 움직임 및 행동이 가상 세계에서의 행동에 영향을 미치고 그 반대의 경우도 성립하도록, 현실 세계 지형의 적어도 일부와 평행한 가상 세계 지형을 갖는 위치 기반 게임이다. 본 명세서에 제공된 개시 내용을 사용하여, 당업자는 본 발명의 주제가 다른 게임 시스템에 동일하게 적용 가능하다는 것을 이해해야 한다.
도 1은 일 실시예에 따라 구성된 예시적인 컴퓨터 구현 위치 기반 게임 시스템(100)을 도시한다. 위치 기반 게임 시스템(100)은 현실 세계와 평행한 지형을 갖는 가상 세계에서 복수의 플레이어의 상호작용을 제공한다. 특히, 현실 세계에서의 지리적 에어리어는 가상 세계 내의 대응하는 에어리어에 직접 연결되거나 매핑될 수 있다. 플레이어는 현실 세계 내에서 다양한 지리적 위치로 이동함으로써 가상 세계에서 이동할 수 있다. 예를 들어, 시스템(100)은 현실 세계에서 플레이어의 위치를 추적하고 현실 세계에서의 플레이어의 현재 위치에 기초하여 가상 세계에서의 플레이어의 위치를 업데이트할 수 있다. 예를 들어, 현실 세계에서의 좌표계(예컨대, 경도 및 위도)는 가상 세계에서의 좌표계(예컨대, x/y 좌표, 가상 경도 및 위도 등)에 매핑될 수 있다.
도 1에 도시된 실시예에서, 시스템(100)은 클라이언트-서버 아키텍처를 가지며, 여기서 게임 서버(110)는 네트워크(130)를 통해 하나 이상의 클라이언트 장치(120)와 통신한다. 도 1에 3개의 클라이언트 장치(120)가 도시되어 있지만, 임의의 개수의 클라이언트 장치(120)가 네트워크(130)를 통해 게임 서버(110)에 연결될 수 있다. 다른 실시예에서, 분산 위치 기반 게임 시스템(100)은 상이하거나 추가적인 요소를 포함한다. 또한, 이러한 기능들은 설명된 것과는 상이한 방식으로 요소들 간에 분산될 수 있다.
게임 서버(110)는 위치 기반 게임의 마스터 상태를 호스팅하고 플레이어의 클라이언트 장치(120)에 (예컨대, 게임 내의 다른 플레이어가 취한 행동, 현실 세계 조건의 변화, 게임 상태 또는 조건의 변화에 기초한) 게임 상태 업데이트를 제공한다. 게임 서버(110)는 위치 기반 게임에서 플레이어로부터의 입력을 수신하여 처리한다. 플레이어는 플레이어의 클라이언트 장치(120)가 플레이어의 입력과 함께 게임 서버(110)에 전송하는 사용자 이름 또는 플레이어 ID(예컨대, 고유 번호 또는 영숫자 문자열)에 의해 식별될 수 있다.
다양한 실시예에서, 게임 서버(110)는 현실 세계에서의 플레이어 위치를 나타내는 장치 위치 정보를 포함하는, 현실 세계 데이터의 스냅샷에 기초하여 병렬 현실 게임을 위한 리전들을 결정한다. 게임 서버(110)는 병렬 현실 게임의 지리적 리전을 셀(예컨대, S2-셀)로 분할하고 현실 세계 데이터를 각 셀에 할당한다. 게임 서버(110)는 셀 및 대응하는 현실 세계 데이터에 기초하여 노드 및 에지의 그래프를 생성한다. 게임 서버(110)는 하나의 노드를 선택하고, 한 세트의 연결된 노드들을 결정하고, 각 노드들은 그래프에서 에지에 의해 연결된다. 게임 서버(110)는 선택된 노드와 연결된 노드들의 세트를 함께 인접 세그먼트로 병합한다. 게임 서버(110)는 인접 세그먼트를 병렬 현실 게임을 위한 하나의 리전으로서 사용할 수 있고, 인접 세그먼트를 더 분할할 수도 있고, 또는 하나 이상의 기준을 충족하도록 인접 세그먼트를 조정할 수도 있다. 게임 서버(110)의 다양한 실시예가 도 3을 참조하여 아래에서 더 상세히 설명된다.
클라이언트 장치(120)는 플레이어가 게임 서버(110)와 상호작용할 수 있게 해주는 컴퓨팅 장치이다. 예를 들어, 클라이언트 장치(120)는 스마트폰, 휴대용 게임 장치, 태블릿, 개인 휴대 정보 단말기(PDA: Personal Digital Assistant), 셀룰러 전화, 내비게이션 시스템, 휴대용 GPS 시스템, 또는 다른 이러한 장치일 수 있다. 클라이언트 장치(120)는 플레이어가 가상 세계와 상호작용할 수 있게 해주는 소프트웨어(예컨대, 게임 애플리케이션 또는 앱)를 실행할 수 있다. 또한, 클라이언트 장치(120)는 채팅방을 위한 사용자 인터페이스를 제공하는 하드웨어, 소프트웨어, 또는 이 둘 모두를 포함할 수 있다. 사용자는 채팅방에 참여할 것을 선택하고 사용자 인터페이스를 통해 메시지를 보내고 받을 수 있다. 클라이언트 장치(120)의 다양한 실시예가 도 2를 참조하여 아래에서 더 상세히 설명된다.
네트워크(130)는 근거리 네트워크(예컨대, 인트라넷), 광역 네트워크(예컨대, 인터넷), 또는 이들의 몇몇 조합과 같은 임의의 유형의 통신 네트워크일 수 있다. 또한, 네트워크는 클라이언트 장치(120)와 게임 서버(110) 사이의 직접 연결을 포함할 수 있다. 일반적으로, 게임 서버(110)와 클라이언트 장치(120) 사이의 통신은 다양한 통신 프로토콜(예컨대, TCP/IP, HTTP, S1v1TP, FTP), 인코딩 또는 포맷(예컨대, HTML, JSON, XML) 및/또는 보호 체계(예컨대, VPN, 보안 HTTP, SSL)를 사용하고, 임의의 유형의 유선 및/또는 무선 연결을 사용하는 네트워크 인터페이스를 통해 수행될 수 있다.
도 2는 일 실시예에 따른 도 1에 도시된 클라이언트 장치(120)의 블록도이다. 게임 시스템(100)이 위치 기반 게임을 위한 것이기 때문에, 클라이언트 장치(120)는 바람직하게는 쉽게 휴대 가능한 또는 다른 방식으로 플레이어가 운반할 수 있는 스마트폰 또는 다른 휴대용 장치와 같은 휴대용 컴퓨팅 장치이다. 플레이어는 단순히 현실 세계에서 클라이언트 장치(120)를 휴대하거나 운반하는 것만으로 가상 세계와 상호작용할 수 있다. 클라이언트 장치(120)는 현실 세계에서 클라이언트 장치(120)의 위치를 모니터링하는 측위 장치(210)를 포함할 수 있다. 측위 장치(210)는 클라이언트 장치(120)의 위치를 모니터링하기 위한 임의의 장치 또는 회로일 수 있다. 예를 들어, 측위 장치(210)는 위성 항법 측위 시스템(예컨대, GPS 시스템, 갈릴레오 측위 시스템, 글로벌 항법 위성 시스템(GLONASS), 바이두(BeiDou) 위성 항법 및 측위 시스템), 관성 항법 시스템, 추측 항법 시스템(dead reckoning system)을 사용하여, IP 어드레스에 기반하여, 삼각측량 및/또는 셀룰러 타워 또는 와이파이(WiFi) 핫스팟에 대한 근접도, 및/또는 위치를 판정하기 위한 다른 적절한 기술을 사용함으로써, 실제 위치 또는 상대 위치를 판정할 수 있다.
플레이어가 현실 세계에서 클라이언트 장치(120)와 함께 이동할 때, 측위 장치(210)는 플레이어의 클라이언트 장치(120)의 위치를 추적하고 클라이언트 장치 위치 정보를 게임 모듈(220)에 제공한다. 게임 모듈(220)은 현실 세계에서의 플레이어의 클라이언트 장치(120)의 위치 좌표에 기초하여 가상 세계에서의 플레이어의 위치를 업데이트한다. 따라서, 게임 모듈(220)은 클라이언트 장치(120) 상의 가상 세계의 로컬 상태를 유지한다. 게임 모듈(220)은 네트워크(130)를 통해 게임 서버(110)에 플레이어 위치 정보를 제공하여 게임 서버(110)가 업데이트된 플레이어 위치를 갖도록 전체 게임 상태를 유지하게 하고, 게임 모듈(220)에 주기적 업데이트를 제공하여 로컬 게임 상태가 전체 게임 상태를 반영할 수 있도록 할 수 있다.
게임 모듈(220)은 사용자 인터페이스 모듈(230)과 가상 세계에 대한 정보를 통신한다. 클라이언트 장치(120)의 사용자 인터페이스 모듈(230)은 클라이언트 장치(120)의 사용자 인터페이스의 구성요소를 구성하고 표시한다. 사용자 인터페이스는 게임 모듈(220)로부터 수신된 가상 요소 및 가상 경험과 같은 가상 세계의 구성요소를 포함하는 가상 세계의 묘사(depiction)를 사용자에게 표시할 수 있다. 또한, 사용자 인터페이스 모듈(230)은 가상 세계 내의 채팅방 위치뿐만 아니라 채팅방 내의 사용자 간에 전송되는 메시지를 표시할 수 있다. 사용자는 클라이언트 장치(120)와 상호작용하여 가상 요소와 인게이징(engage)하거나, 가상 경험에 참여하거나, 채팅방에서 대화할 수 있다. 예를 들어, 사용자 인터페이스 모듈(230)은 관심 지점, 채팅방, 및 다른 가상 경험을 묘사하는 가상 세계의 뷰를 표시할 수 있다. 클라이언트 장치(120)의 사용자는 사용자 인터페이스를 통해 이러한 구성요소들과 상호작용하여 여러가지 행동 중에서도 특히, 작업을 완료하거나, 채팅방에 참여하거나, 레이드(raid)에 참여할 수 있다.
로컬 데이터 저장소(240)는 클라이언트 장치(120)에 의해 사용되는 데이터를 저장하도록 구성된 하나 이상의 컴퓨터 판독 가능 매체이다. 예를 들어, 로컬 데이터 저장소(240)는 측위 장치(210)에 의해 추적된 플레이어 위치 정보, 병렬 현실 게임의 현재 상태의 로컬 사본, 또는 임의의 다른 적절한 데이터를 저장할 수 있다. 로컬 데이터 저장소(240)가 단일 엔티티로 도시되지만, 데이터는 복수의 매체에 걸쳐 분할될 수 있다. 또한, 데이터는 다른 곳에(예컨대, 분산 데이터베이스에) 저장되고 네트워크(130)를 통해 원격으로 액세스될 수도 있다.
도 3은 위치 기반 병렬 현실 게임을 호스팅하기에 적합한 게임 서버(110)의 일 실시예를 도시한다. 도시된 실시예에서, 게임 서버(110)는 범용 게임 모듈(310), 로케이터 모듈(320), 리전 분할 모듈(330), 및 게임 데이터베이스(340)를 포함한다. 다른 실시예에서, 게임 서버(110)는 상이하거나 추가적인 요소를 포함한다. 또한, 이러한 기능들은 설명된 것과는 상이한 방식으로 요소들 간에 분산될 수 있다.
게임 서버(110)는 네트워크(130)를 통해 (예컨대, 원격 프로시저 호출(RPC)을 통해) 하나 이상의 클라이언트 장치(120)로부터 게임 데이터에 대한 요청을 수신하고 이러한 요청에 응답하도록 구성될 수 있다. 예를 들어, 게임 서버(110)는 게임 데이터를 하나 이상의 데이터 파일로 인코딩하고 그 데이터 파일을 클라이언트 장치(120)에 제공할 수 있다. 또한, 게임 서버(110)는 네트워크(130)를 통해 하나 이상의 클라이언트 장치(120)로부터 게임 데이터(예컨대, 플레이어 위치, 플레이어 동작, 플레이어 입력 등)를 수신하도록 구성될 수 있다. 예를 들어, 클라이언트 장치(120)는 게임 서버(110)에 주기적으로 플레이어 입력, 플레이어 위치 및 기타 업데이트를 전송하도록 구성될 수 있으며, 게임 서버(110)는 이를 게임에 대한 변경된 조건을 반영하기 위해 게임 데이터베이스(340) 내의 게임 데이터를 업데이트하는데 사용한다. 또한, 게임 서버(110)는 다른 플레이어 위치, 채팅방 위치, 가상 요소 위치와 같은 게임 데이터를 클라이언트 장치(120)에 전송할 수 있다.
범용 게임 모듈(310)은 플레이어에게 위치 기반 게임을 호스팅하고 위치 기반 게임의 현재 상태에 대한 권위 있는 소스 역할을 한다. 범용 게임 모듈(310)은 클라이언트 장치(120)로부터 게임 데이터(예컨대, 플레이어 입력, 플레이어 위치, 플레이어 동작, 플레이어 상태, 랜드마크 정보 등)를 수신하고, 수신한 게임 데이터를 위치 기반 게임의 모든 플레이어에 대한 전체 위치 기반 게임에 통합시킨다. 게임 데이터와 함께, 범용 게임 모듈(310)은 게임 모듈(220) 내의 로컬 게임 상태를 업데이트하기 위해 클라이언트 장치(120)에 전송될 수 있는 게임의 전체 게임 상태를 저장한다. 또한, 범용 게임 모듈(310)은 네트워크(130)를 통해 클라이언트 장치(120)로의 게임 데이터의 전달을 관리할 수 있다.
로케이터 모듈(320)은 범용 게임 모듈(310)의 일부일 수도 있고, 또는 그로부터 분리된 것일 수도 있다. 로케이터 모듈(320)은 현실 세계 행동과 관련된 데이터에 액세스하고, 그 데이터를 분석하고, 현실 세계 행동과 관련된 데이터에 기초하여 가상 세계 내의 가상 경험을 결정하도록 구성된다. 예를 들어, 로케이터 모듈(320)은 게임 데이터베이스(340)에 저장된 게임 데이터를 수정하여 현실 세계 행동과 연관된 데이터에 기초하여 가상 세계 내의 가상 경험을 배치할 수 있다. 예를 들어, 후원받은 가상 요소는 후원자의 상점, 레스토랑, 아울렛 등의 현실 세계 위치에 대응하는 가상 위치에 있을 수 있다. 플레이어가 구매하거나, 현실 세계 위치에서 사용 가능한 코드를 입력하거나, 또는 현실 세계 위치에서 지정된 기준을 충족하는 다른 행동을 수행하는 경우, 병렬 현실 게임 내에서 특별한 가상 경험이 플레이어에게 사용 가능하게 될 수 있다.
리전 분할 모듈(330)은 가상 세계 내의 리전들을 결정한다. 리전 분할 모듈(330)은 현실 세계 데이터에 기초하여 가상 세계 내의 지리적 에어리어를 리전들로 분할할 수 있다. 일부 실시예에서, 가상 세계의 지리적 에어리어는 전체 현실 세계에 대응할 수 있다. 다른 실시예에서, 지리적 에어리어는 리전 분할 모듈(330)에 의해 이전에 결정된 리전 또는 (예컨대, 링펜스(ringfence)를 사용하여) 오퍼레이터에 의해 식별된 리전과 같은, 현실 세계의 더 작은 부분에 대응한다.
리전 분할 모듈(330)은 지리적 에어리어를 그 지리적 에어리어의 일부를 커버하는 셀로 분할한다. 이러한 셀은 지리적 에어리어를 더 작은 지리적 에어리어로 분할하는 기하학적 형상이다. 셀의 크기는 공급자로부터의 입력을 통해 또는 지리적 에어리어의 크기에 기초하여 결정될 수 있다. 일부 실시예에서, 셀은 구형 에어리어를 분할하는 계층적 셀인 S2-셀이다.
리전 분할 모듈(330)은 게임 데이터베이스(340)로부터 지리적 에어리어에 대한 현실 세계 데이터에 액세스한다. 현실 세계 데이터는 인구 데이터, 플레이어 밀도 데이터, 관심 지점 데이터 및 지형 데이터를 포함할 수 있으며 지리적 에어리어 내의 위치에 대응한다. 현실 세계 데이터는 게임 데이터베이스(340)와 관련지어 더 설명된다.
리전 분할 모듈(330)은 현실 세계 데이터를 지리적 에어리어 내의 셀에 할당하고 셀에 기초하여 에지 및 노드의 그래프를 구성한다. 리전 분할 모듈(330)은 각 셀(예컨대, 셀의 지리적 중심)에 노드를 배치하고 현실 세계 데이터를 사용하여 각 노드에 가중치를 부여한다. 각 노드는 대응하는 셀의 인구 수인 노드 가중치 만큼 가중치 부여된다. 일부 실시예에서, 리전 분할 모듈(330)은 노드 가중치에 대해 상이하거나 추가적인 현실 세계 데이터를 사용할 수 있다. 예를 들어, 일 실시예에서, 노드 가중치는 인구 데이터, 플레이어 밀도 데이터, 지형 데이터, 및/또는 대응하는 셀에 대한 관심 지점의 수의 가중치 부여된 조합이다. 다른 실시예에서, 노드 가중치는 셀의 국가 또는 도시 레벨에 기초하여 셀당 사용자 참여 백분율의 추정치 만큼 다시 가중치 부여된 전체 인구 데이터를 포함할 수 있다. 리전 분할 모듈(330)은 인접한 셀의 노드를 에지와 연결하고 각 에지에 에지 가중치만큼 가중치 부여한다. 일 실시예에서, 에지 가중치는 그 에지가 연결하는 노드들의 노드 가중치의 차이이다. 대안으로서, 에지 가중치는 연결된 노드들의 인접한 셀들 각각에 할당된 현실 세계 데이터(예컨대, 플레이어 밀도 및 인구 밀도)의 상이한 요소 간의 차이의 가중치 부여된 조합일 수 있다. 리전 분할 모듈(330)에 의해 생성된 그래프의 구조는 도 4a 및 도 4b와 관련지어 추가로 설명된다.
리전 분할 모듈(330)은 지리적 에어리어의 그래프로부터 스패닝 트리(예컨대, 최대 스패닝 트리)를 구성한다. 최대 스패닝 트리는 최대 스패닝 트리 내의 모든 에지의 전체 에지 가중치가 최대화되도록 하는 그래프의 에지의 서브세트에 의해 연결된 그래프의 노드들을 포함한다. 또한, 최대 스패닝 트리는 노드 사이에 루프를 가지지 않으며, 최대 스패닝 트리 내의 에지 세트가 동일한 노드 쌍을 연결하는 2개의 상이한 경로를 생성할 때 발생한다. 하나의 포리스트(forest)인 그래프의 노드들로 시작하여, 리전 분할 모듈(330)은 최대 스패닝 트리를 구성하기 위해 포리스트 내의 노드들을 연결하기 위한 에지들을 추가한다.
일 실시예에서, 리전 분할 모듈(330)은 크루스칼 알고리즘(Kruskal's algorithm)을 사용하여 포레스트에 추가할 에지를 결정한다. 이 실시예에서, 리전 분할 모듈(330)은 포리스트 내의 노드들 사이에 루프를 형성하지 않는 가장 높은 가중치(즉, 인구의 차이)를 갖는 그래프의 에지를 결정하고 그 에지를 포리스트에 추가한다. 그 다음, 리전 분할 모듈(330)은 그래프에서 다음으로 가장 높은 가중치를 갖는 에지를 결정하고 그 에지가 루프를 형성하지 않으면 포리스트에 그 에지를 추가한다. 그래프가 루프를 형성하지 않는 다음으로 가장 높은 가중치의 에지를 복수개 포함하는 경우, 리전 분할 모듈(330)은 포리스트에 추가할 에지 중 하나를 무작위로 선택할 수 있다. 리전 분할 모듈(330)은 포리스트 내의 모든 노드가 연결되고 최대 스패닝 트리를 형성할 때까지 포리스트에 에지를 추가하는 것을 반복한다.
다른 실시예에서, 리전 분할 모듈(330)은 프림 알고리즘(Prim's algorithm)을 사용하여 포리스트에 추가할 에지를 결정한다. 이 실시예에서, 리전 분할 모듈(330)은 부모 노드로서 그래프 중 한 노드를 무작위로 선택한다. 다시 하나의 포리스트인 그래프의 노드들로 시작하여, 리전 분할 모듈(330)은 부모 노드에 연결된 어떤 에지가 루프를 형성하지 않는 가장 높은 가중치를 갖는지 판정하고 그 에지를 포리스트에 추가한다. 그 다음, 리전 분할 모듈(330)은 포리스트 내의 임의의 노드에 연결된 다음으로 높은 가중치를 갖는 에지를 판정하고 그것이 포리스트 내의 노드들 사이에 루프를 형성하지 않는다면, 그 에지를 포리스트에 추가한다. 리전 분할 모듈(330)은 포리스트 내의 모든 노드가 연결되어 최대 스패닝 트리를 형성할 때까지 포리스트에 에지를 추가하는 것을 반복한다. 다른 실시예에서, 리전 분할 모듈(330)은 스패닝 트리를 생성하기 위해 다른 알고리즘을 사용할 수도 있다.
일부 실시예에서, 리전 분할 모듈(330)은 최대 스패닝 트리를 구성하기 전에 현실 세계 데이터에 기초하여 그래프로부터 노드를 제거한다. 예를 들어, 리전 분할 모듈(330)은 지리적 에어리어의 어떤 셀이 그 지리적 에어리어의 대응하는 부분이 물로 덮여 있음을 나타내는 지형 데이터와 연관되어 있는지 판정하고 그래프에서 그 셀과 연관된 노드를 제거한다. 일부 실시예에서, 리전 분할 모듈(330)은 지리적 에어리어의 대응하는 부분에서 물의 임계 백분율과 연관된 노드만을 제거한다. 다른 실시예에서, 리전 분할 모듈(330)은 또한 산 또는 협곡과 같이 플레이어가 횡단하기 어려운 지형을 나타내는 지형 데이터와 관련된 노드를 제거한다. 그 다음, 리전 분할 모듈(330)은 잔여 그래프로부터의 노드들을 사용하여 최대 스패닝 트리를 구성하여, 물로 덮인 병렬 현실 게임에 대한 리전을 결정하는 것을 방지한다. 리전 분할 모듈(330)은 최대 스패닝 트리를 인접 세그먼트로 분할한다. 인접 세그먼트는 최대 스패닝 트리 내에서 연결된 노드들의 그룹이다. 각각의 인접 세그먼트는 인접 세그먼트의 노드의 셀에 의해 커버되는 지리적 에어리어의 부분에 대응한다. 리전 분할 모듈(330)은 최대 스패닝 트리가 세그먼트화될 인접 세그먼트의 수를 판정하고, 전체 인구 및 인접 세그먼트의 수에 기초하여 각 인접 세그먼트가 대응하는 최소 인구를 결정한다. 따라서, 각각의 인접 세그먼트는 인접 세그먼트의 노드들의 노드 가중치에 기초하는 최소 인구 수에 대응한다. 일부 실시예에서, 각각의 인접 세그먼트는 최소 수의 플레이어 또는 최소 수의 관심 지점을 포함하는 것과 같은 노드 가중치와 관련된 다른 기준을 충족한다. 다른 기준은 최소 리전 크기 또는 특정 지형 데이터에 대응하는 인접 세그먼트를 필요로 할 수 있다.
일 실시예에서, 인접 세그먼트를 형성하기 위해, 리전 분할 모듈(330)은 최대 스패닝 트리의 각각의 리프 노드(leaf node)를 선택한다. 리프 노드는 리프 노드의 부모 노드로 알려진, 최대 스패닝 트리 내의 다른 하나의 노드에만 연결된 최대 스패닝 트리 내의 노드이다. 리전 분할 모듈(330)은 각 리프 노드의 노드 가중치를 최소 인구 수(또는 다른 노드 가중치 관련 기준)와 비교한다. 리프 노드가 최소 인구 수보다 큰 노드 가중치를 갖는 경우, 리전 분할 모듈(330)은 최대 스패닝 트리로부터 리프 노드를 제거하여 인접 세그먼트를 형성한다. 그렇지 않다면, 리전 분할 모듈(330)은 최대 스패닝 트리에서 리프 노드를 그것의 부모 노드와 병합한다. 리프 노드를 그것의 부모 노드에 병합하기 위해, 리전 분할 모듈은 리프 노드의 노드 가중치와 부모 노드의 노드 가중치의 합인 노드 가중치를 갖는, 부모 노드를 대신하는 병합된 노드를 생성한다. 이 프로세스는 도 5a 내지 도 5h와 관련지어 더 설명된다. 리전 분할 모듈(330)은 임계 개수의 인접 세그먼트가 형성될 때까지 리프 노드의 노드 가중치를 최소 인구 수와 계속 비교하고, 리프 노드를 제거하거나 병합한다. 리전 분할 모듈(330)은 최대 스패닝 트리의 잔여 노드를 최종 인접 세그먼트로서 사용한다.
일부 실시예에서, 리전 분할 모듈(330)이 최대 스패닝 트리로부터 인접 세그먼트를 분할하기 위해 병합할 리프 노드가 부족한 경우, 리전 분할 모듈(330)은 잔여 그래프로부터 (즉, 인접 세그먼트의 제거된 노드가 없는) 새로운 최대 스패닝 트리를 생성하여 그로부터 인접 세그먼트를 분할한다. 잔여 최대 스패닝 트리의 그래프를 사용하여, 리전 분할 모듈(330)은 그래프의 각 에지에 다시 가중치를 부여한다. 일부 실시예에서, 리전 분할 모듈(330)은 그것의 이전 에지 가중치의 무작위 백분율인 에지 가중치로 각 에지에 다시 가중치를 부여한다. 리전 분할 모듈(330)은 다시 가중치 부여된 그래프를 사용하여 새로운 최대 스패닝 트리를 생성하고 새로운 최대 스패닝 트리로부터 인접 세그먼트를 분할한다.
리전 분할 모듈(330)은 인접 세그먼트를 조정하여 각각의 인접 세그먼트와 연관된 지리적 에어리어의 부분의 형상을 개선한다. 각각의 인접 세그먼트 쌍에 대해, 리전 분할 모듈(330)은 인접 세그먼트를 쌍으로 결합하여 새로운 그래프를 만들고, 가중치에 기초하여 그래프의 최대 스패닝 트리를 형성하고, 최대 스패닝 트리를 2개의 새로운 인접 세그먼트로 분할한다. 리전 분할 모듈(330)은 새로운 인접 세그먼트가 인접 세그먼트 쌍에 의해 커버되는 지리적 에어리어의 부분의 압축성(compactness)을 개선하는지 여부를 판정하기 위해 각각의 새로운 인접 세그먼트 및 각각의 인접 세그먼트 쌍의 압축 점수를 매긴다. 일부 실시예에서, 리전 분할 모듈(330)은 식 1을 사용하여 각각의 인접 세그먼트에 대한 압축 점수를 판정하며, 여기서 nsegment는 인접 세그먼트의 셀의 개수이고, nboundary는 인접 세그먼트 내부의 내부 경계를 생성하는 인접 세그먼트의 셀의 개수이다.
Figure 112022072670897-pct00001
다른 실시예에서, 리전 분할 모듈(330)은 식 2를 사용하여 각각의 인접 세그먼트에 대한 압축 점수를 판정하며, 여기서 R은 인접 세그먼트이고, Ω은 인접 세그먼트 내부의 내부 경계를 형성하는 인접 세그먼트 내의 셀 세트이고, wv는 인접 세그먼트 내의 각 노드의 노드 가중치이다.
Figure 112022072670897-pct00002
리전 분할 모듈(330)은 새로운 인접 세그먼트와 인접 세그먼트 쌍의 압축 점수를 비교한다. 새로운 인접 세그먼트가 인접 세그먼트 쌍 보다 더 높은 압축 점수를 갖는 경우, 리전 분할 모듈(330)은 인접 세그먼트 쌍을 새로운 인접 세그먼트로 대체한다. 일부 실시예에서, 리전 분할 모듈(330)은 새로운 인접 세그먼트 및 인접 세그먼트 쌍에 대한 평균 압축 점수를 판정하고 평균 압축 점수를 사용하여 인접 세그먼트 쌍을 유지할지 또는 대체할지 여부를 판정한다. 일부 실시예에서, 리전 분할 모듈(330)은 각각의 인접 세그먼트가 임계 압축 점수에 도달할 때까지 인접 세그먼트를 조정한다. 다른 실시예에서, 리전 분할 모듈(330)은 리전 분할 모듈(330)이 인접 세그먼트 중 어느 것도 교체하지 않고 각각의 인접 세그먼트 쌍에 대한 압축 점수를 계산할 때까지 인접 세그먼트를 조정한다.
리전 분할 모듈(330)은 한 세트의 제약조건을 충족하지 않는 인접한 인접 세그먼트들을 병합한다. 제약조건 세트는 각 인접 세그먼트와 관련된 최소 에어리어 및 최소 인구 수를 포함한다. 일부 실시예에서, 제약조건 세트는 인접 세그먼트와 관련된 지리적 에어리어의 부분과 관련된 관심 지점의 최소 개수 또는 지형 데이터에 기초한 인접 세그먼트와 관련된 횡단 가능한 에어리어의 최소 크기를 더 포함할 수 있다. 리전 분할 모듈(330)은 제약조건 세트를 충족하지 않는 인접 세그먼트를 식별하고 그 인접 세그먼트를 그것의 이웃한(즉, 그래프에서 인접 세그먼트를 둘러싸고 있는) 인접 세그먼트 각각과 병합한다. 리전 분할 모듈(330)은 병합된 인접 세그먼트를, 병합된 인접 세그먼트의 개수, 최소 에어리어 제약조건이 주어진 경우 병합된 인접 세그먼트의 지리적 에어리어의 부분에 대해 가능한 인접 세그먼트의 개수, 또는 최소 인구 제약조건이 주어진 경우 병합된 인접 세그먼트의 지리적 에어리어의 부분에 대해 가능한 인접 세그먼트의 개수 보다 하나 적은 인접 세그먼트를 갖는 새로운 세트의 인접 세그먼트로 재분할한다.
리전 분할 모듈(330)은 각각의 인접 세그먼트에 대응하는 지리적 리전을 결정하고, 각 지리적 리전을 병렬 현실 게임을 위한 리전으로 정의한다. 리전 분할 모듈(330)은 각각의 리전을 게임 데이터베이스(340)에 또는 일부 실시예에서 다른 데이터 저장소에 저장한다. 리전 분할 모듈(330)은 주어진 기간(예컨대, 일, 월, 년 등) 동안 그 리전을 사용할 수 있고 게임 서버(110)가 더 많은 현실 세계 데이터를 수신함에 따라 주기적으로 리전을 업데이트할 수 있다.
일부 실시예에서, 리전 분할 모듈(330)은 정의된 리전을 1차 리전의 세트로 취급하고 각각의 1차 리전에 대한 2차 리전의 세트를 결정한다. 각각의 1차 리전에 대해, 리전 분할 모듈(330)은 1차 리전을 1차 리전에 사용되는 셀보다 크기가 작은 2차 셀로 분할한다. 리전 분할 모듈(330)은 현실 세계 데이터를 셀에 할당하고, 노드 및 에지의 2차 그래프를 구성하고, 2차 그래프로부터 2차 최대 스패닝 트리를 생성한다. 리전 분할 모듈(330)은 인접 세그먼트의 개수만큼 더 작을 수 있는 더 작은 최소 인구를 사용하여 그래프를 2차 인접 세그먼트 세트로 분할하고, 2차 인접 세그먼트에 대응하는 지리적 리전을 2차 리전으로 정의하고 저장한다. 리전 분할 모듈(330)은 지리적 리전의 임계 비율(threshold portion)보다 적게 커버하는 것, 또는 임계 인구 수 미만에 대응하는 것과 같은, 기준 세트가 충족될 때까지 이전에 결정된 리전의 더 높은 차수의 리전을 결정하는 것을 반복할 수 있다. 일부 실시예에서, 리전 분할 모듈(330)은 기준 세트를 각각 충족하는 리전의 임계 개수를 달성할 때까지 병렬 현실 게임에 대한 리전을 상이한 차수로 정의할 수 있다. 예를 들어, 리전 분할 모듈(330)은 1차 리전 세트의 한 서브세트가 기준 세트를 충족한다고 판정할 수 있고, 오직 기준 세트를 충족하지 않는 1차 리전 세트의 리전들에 대해서만 2차 리전 세트를 결정할 수 있다. 리전 분할 모듈(330)은 모든 정의된 리전들이 기준 세트를 충족할 때까지 더 높은 차수의 리전 세트를 결정함으로써 지리적 에어리어를 계층적으로 계속 분할할 수 있다.
리전 분할 모듈(330)은 채팅방 또는 임의의 다른 적절한 게임 요소, 경험 또는 메카닉(mechanic)을 리전에 할당할 수 있다. 예를 들어, 일 실시예에서, 리전 분할 모듈(330)은 플레이어가 현재 위치하는 리전에 할당된 채팅방에 참가하거나, 또는 다른 리전으로 이동 시 다른 채팅방에 참가할 수 있도록 각 리전에 대한 채팅방을 생성한다. 다른 예에서, 리전 분할 모듈(330)은 리전 내의 플레이어들이 보상을 얻기 위해 서로 경쟁할 수 있도록 가상 경쟁을 각 리전에 할당한다. 다른 실시예에서, 리전 분할 모듈(330)은 주기적으로 (예컨대, 리전 내에서 모든 플레이어 또는 팀의 모든 플레이어가 획득한 점수를 합산함으로써) 각 리전에 대한 점수를 계산하고 대응하는 점수가 임계값을 초과하는 또는 하나 이상의 이웃한 리전의 점수를 초과하는 리전에 보상을 제공한다. 당업자들은 병렬 현실 게임에서 리전이 사용될 수 있는 다양한 방식을 이해할 것이다.
게임 데이터베이스(340)는 네트워크(130)를 통해 클라이언트 장치(120)에 서비스되거나 제공될, 위치 기반 게임에서 사용되는 게임 데이터를 저장하도록 구성된 하나 이상의 기계 판독 가능 매체를 포함한다. 게임 데이터베이스(340)에 저장된 게임 데이터는: (1) 위치 기반 게임 내의 가상 세계와 관련된 데이터(예컨대, 디스플레이 장치 상에 가상 세계를 렌더링하는데 사용되는 이미지 데이터, 가상 세계 내 위치의 지리적 좌표 등); (2) 위치 기반 게임의 플레이어와 관련된 데이터(예컨대, 플레이어 정보, 플레이어 경험 수준, 플레이어 통화, 플레이어 인벤토리, 가상 세계/현실 세계에서의 현재 플레이어 위치, 플레이어 에너지 수준, 플레이어 선호도, 팀 정보 등); (3) 게임 목표와 관련된 데이터(예컨대, 현재 게임 목표, 게임 목표 상태, 과거 게임 목표, 미래 게임 목표, 원하는 게임 목표 등과 관련된 데이터); (4) 가상 세계 내의 가상 요소 관련 데이터(예컨대, 가상 요소의 위치, 가상 요소의 유형, 가상 요소와 관련된 게임 목표, 가상 요소에 대한 대응하는 현실 세계 위치 정보, 가상 요소의 행동, 가상 요소의 관련성 등); (5) 현실 세계 개체, 랜드마크, 가상 세계 요소에 연결된 위치와 관련된 데이터(예컨대, 현실 세계 개체/랜드마크의 위치, 현실 세계 개체/랜드마크에 대한 설명, 현실 세계 개체에 연결된 가상 요소의 관련성 등); (6) 게임 상태(예컨대, 현재 플레이어 수, 게임 목표의 현재 상태, 플레이어 순위표 등); (7) 플레이어 행동/입력과 관련된 데이터(예컨대, 현재 플레이어 위치, 과거 플레이어 위치, 플레이어 이동, 플레이어 입력, 플레이어 질문, 플레이어 통신 등); (8) 가상 경험과 관련된 데이터(예컨대, 가상 경험의 위치, 가상 경험과 관련된 플레이어의 행동, 레이드와 같은 가상 이벤트 등); 및 (9) 위치 기반 게임을 구현하는 동안 사용되거나, 관련되거나, 또는 획득된 임의의 다른 데이터를 포함할 수 있다. 게임 데이터베이스(340)에 저장된 게임 데이터는 시스템 관리자에 의해 또는 네트워크(130)를 통해 플레이어로부터, 예컨대, 하나 이상의 클라이언트 장치(120)로부터 수신된 데이터에 의해 오프라인으로 또는 실시간으로 채워질 수 있다.
또한, 게임 데이터베이스(340)는 현실 세계 데이터를 저장할 수 있다. 현실 세계 데이터는 현실 세계에서 개인들의 종합적 위치를 설명하는 인구 밀도 데이터; 현실 세계에서 플레이어들의 종합적 위치를 설명하는 플레이어 밀도 데이터; 문화적 가치 또는 상업적 가치가 있는 위치와 관련된 플레이어 행동; 지리적 에어리어 내의 게임 액션의 분포를 설명하는 플레이어 히트 맵 데이터; 가상 세계 내의 가상 요소의 위치에 대응하는 현실 세계 위치를 설명하는 관심 지점 데이터; 큰 수역, 산, 및 협곡 등과 같은 다양한 지형 및 생태학적 조건의 위치를 설명하는 지형 데이터; 도로, 고속도로 및 수로의 위치를 제공하는 지도 데이터; 개별 플레이어의 현재 및 과거 위치; 위험 데이터; 날씨 데이터; 이벤트 캘린더 데이터; 플레이어에 대한 활동 데이터(예컨대, 이동 거리, 운동 시간(분) 등); 및 다른 적절한 데이터를 포함할 수 있다. 현실 세계 데이터는 임의의 적절한 소스로부터 수집 또는 회득될 수 있다. 예를 들어, 게임 데이터베이스(340)는 매핑 서비스에 의해 액세스되는 하나 이상의 지도 데이터베이스와 같은, 지도 정보를 저장하는 지도 데이터베이스에 연결되거나, 그것을 포함하거나, 그것의 일부일 수 있다. 다른 예로서, 게임 서버(110)는 인구 데이터, 위험 데이터, 날씨 데이터, 또는 이벤트 캘린더 데이터 등을 주기적으로 제공하는 하나 이상의 외부 데이터 소스 또는 서비스에 연결될 수 있다.
도 3에 도시된 모듈 이외의 다른 모듈이 게임 서버(110)와 함께 사용될 수 있다. 임의의 수의 모듈이 본 명세서에 설명된 서버측 기능을 수행하도록 프로그래밍되거나 또는 다른 방식으로 구성될 수 있다. 또한, 서버측의 다양한 구성요소들은 재배열될 수 있다. 다른 구성도 본 개시 내용에 비추어 명백할 수 있고, 본 개시 내용은 임의의 특정 구성으로 제한되도록 의도되지 않는다.
(리전 분할 예)
도 4a 및 도 4b는 일 실시예에 따른, 지리적 에어리어의 서브세트(400)의 셀(410)들을 노드(420) 및 에지(450)의 그래프로 변환하는 것을 도시한다. 지리적 에어리어의 하나의 서브세트만이 도 4a에 도시되어 있지만, 리전 분할 모듈(330)은 전체 지리적 에어리어를 각 셀이 지리적 에어리어의 일부를 커버하는 한 세트의 셀(410)로 분할한다. 리전 분할 모듈(330)은 지리적 에어리어의 각 셀(410)의 중앙에 노드(420)를 배치하고 게임 데이터베이스(340)로부터의 현실 세계 데이터를 사용하여 각 노드에 가중치를 부여한다. 이 실시예에서, 현실 세계 데이터는 각 셀(410) 내의 플레이어 위치를 설명하고, 각 노드 가중치(430)는 연관된 셀 내의 플레이어 위치(440)의 개수이다. 도 4b에 도시된 바와 같이, 리전 분할 모듈(330)은 지리적 에어리어에 대한 그래프를 생성하기 위해 지리적 에어리어 내의 각 노드(420)를 에지(450)로 연결한다. 리전 분할 모듈(330)은 이 실시예에서 노드 가중치(430) 간의 차이인 에지 가중치(460) 만큼 각 에지(450)에 가중치를 부여한다.
도 5a 내지 도 5h는 일 실시예에 따른, 지리적 에어리어의 그래프(600)를 인접 세그먼트로 분할하는 예를 도시한다. 리전 분할 모듈(330)은 도 5a에 도시된 바와 같이 그래프(500)를 생성하기 위해 한 세트의 노드(420) 및 에지(450)에 지리적 에어리어를 매핑한다. 각각의 노드는 대응하는 셀의 인구와 같은, 현실 세계 데이터를 기초로 하는 노드 가중치(430)와 연관되고, 그리고 각각의 에지(450)는 그 에지(450)가 연결하는 노드(420)들의 노드 가중치(430)의 차이인 에지 가중치(460)와 연관된다.
리전 분할 모듈(330)은 도 5b에 도시된 바와 같이 그래프(500)로부터 최대 스패닝 트리(510A)를 생성한다. 최대 스패닝 트리는 가장 높은 에지 가중치(460)를 갖는 에지(450)의 서브세트를 사용하여 그래프(500)의 모든 노드(420)를 연결한다. 리전 분할 모듈(330)은 다양한 방법을 사용하여 최대 스패닝 트리(510A)를 생성할 수 있으므로, 다른 실시예에서 리전 분할 모듈(330)은 동일한 그래프(500)로부터 최대 스패닝 트리(510A)의 상이한 버전을 생성할 수 있다.
그래프(500)로부터 분할할 인접 세그먼트들을 결정하기 위해, 리전 분할 모듈(330)은 도 5c에 도시된 최대 스패닝 트리(510B)의 리프 노드(520A) 각각을 분석한다. 각 리프 노드(520A)는 리프 노드(520A)의 부모 노드(530A)인 하나의 다른 노드에만 연결된다. 리전 분할 모듈(330)은 각 리프 노드(520A)의 노드 가중치(430)가 최소 인구 수와 같은, 노드 가중치 관련 기준보다 큰지 여부를 판정한다. 이 예에서, 리전 분할 모듈(330)은 노드 가중치 관련 기준에 대해 20의 최소 노드 가중치를 사용하고 있다.
최대 스패닝 트리(510A)의 리프 노드(520A) 중 어느 것도 노드 가중치 관련 기준을 충족하지 못하기 때문에, 리전 분할 모듈(330)은 각 리프 노드(520A)를 그것의 부모 노드(530A)로 병합하여, 도 5d에 도시된 바와 같은 새로운 최대 스패닝 트리(510C)를 야기한다. 최대 스패닝 트리(510C)는 새로운 세트의 리프 노드(520B) 및 부모 노드(530B)를 갖는다. 각각의 새로운 리프 노드(520B)는 이전의 대응하는 리프 노드(520A) 및 부모 노드(530A)의 노드 가중치(430)의 조합인 노드 가중치(430)를 갖는다. 각각의 이전 리프 노드(520A)는 병합된 노드(540A)로 표현되는데, 이는 그래프(500)의 일부를 커버하지만 최대 스패닝 트리(510C)에 대한 가중치에는 기여하지 않는다.
다시, 최대 스패닝 트리(510B)의 리프 노드(520B) 중 어느 것도 노드 가중치 관련 기준을 충족하지 않으므로, 리전 분할 모듈(330)은 각 리프 노드(520B)를 그것의 부모 노드(530B)로 병합하여, 도 5e에 도시된 새로운 세트의 리프 노드(520C) 및 부모 노드(530C)를 가지는 새로운 최대 스패닝 트리(510D)를 생성한다. 또한, 최대 스패닝 트리(510E)는 리프 노드(520)는 아니지만 하나 이상의 병합된 노드(540)에 연결된 노드(420)인 분기 노드(550)를 포함한다.
최대 스패닝 트리(510D)는 노드 가중치 관련 기준을 충족하는(즉, 20 초과의 노드 가중치를 가지는) 리프 노드(520C)를 포함하므로, 리전 분할 모듈(330)은 도 5f에 도시된 바와 같이 노드 가중치 관련 기준을 충족하는 리프 노드(520C)를 최대 스패닝 트리(510C)로부터 분리시킨다. 이러한 리프 노드(520C) 및 연결된 병합된 노드(540)는 2개의 인접 세그먼트(560)를 형성한다. 잔여 노드(420) 및 에지(450)는 새로운 리프 노드(520D) 및 부모 노드(530D)를 갖는 잔여 최대 스패닝 트리(510E)를 형성한다.
이 예에서, 리전 분할 모듈(330)은 최대 스패닝 트리(510E)를 인접 세그먼트(560)로 계속 분할하여, 임계 개수인 3개의 인접 세그먼트(560)에 도달한다. 도 5g에 도시된 바와 같이, 리전 분할 모듈(330)은 각각의 리프 노드(520D)를 그것의 부모 노드(530D)로 병합하여, 새로운 세트의 리프 노드(520E) 및 부모 노드(530E)를 갖는 새로운 최대 스패닝 트리(510F)를 생성한다. 최대 스패닝 트리(510F)는 노드 가중치 관련 기준을 충족하는 하나의 리프 노드(520E)를 가지므로, 리전 분할 모듈(330)은 해당 리프 노드(520E)를 분리시켜 도 5h에 도시된 새로운 인접 세그먼트(560C)를 생성한다. 리전 분할 모듈(330)이 임계 개수인 3개의 인접 세그먼트(560)에 도달하였기 때문에, 리전 분할 모듈(330)은 잔여 노드들을 최종 인접 세그먼트(560D)로 형성한다.
도 6a 내지 도 6g는 일 실시예에 따른, 2차 그래프를 결정하기 위해 1차 그래프를 분할하는 예를 도시한다. 지리적 에어리어를 커버하는 1차 리전에 대해, 리전 분할 모듈(330)은 도 6a에 도시된 바와 같이 1차 리전을 분할하는 셀에 대응하는 노드(420) 및 에지(450)의 1차 그래프(600)를 생성한다. 일부 실시예에서, 1차 리전은 전체 현실 세계에 걸쳐 있을 수 있고 1차 그래프를 생성하는데 사용되는 셀은 구형 1차 리전(즉, 지구)을 매핑할 수 있는 S2-셀일 수 있다.
리전 분할 모듈(330)은 1차 그래프(600)를 사용하여 도 6b에 도시된 1차 최대 스패닝 트리(610)를 생성한다. 최대 스패닝 트리(610)는 1차 그래프(600)의 모든 노드(420)를 포함하지만 1차 그래프(600)의 에지(450)의 서브세트만을 포함한다. 도 6c에 도시된 바와 같이, 리전 분할 모듈(330)은 1차 최대 스패닝 트리(610)를 인접 세그먼트(640)로 분할한다. 이 실시예에서는 4개의 인접 세그먼트만이 도시되지만, 다른 실시예에서 리전 분할 모듈(330)은 임계 개수에 기초하여 최대 스패닝 트리를 더 많거나 더 적은 인접 세그먼트로 분할할 수 있다.
도 6d에 도시된 바와 같이, 각각의 인접 세그먼트는 각각이 1차 리전(650)의 지리적 에어리어를 커버하는 1차 리전(650)의 1차 셀(660) 세트에 매핑된다. 리전 분할 모듈(330)은 각각의 인접 세그먼트(640)의 1차 셀(660)에 의해 커버되는 지리적 에어리어의 부분을 2차 리전(670)으로서 정의한다. 도 6e의 2차 리전(670)에 대해, 리전 분할 모듈(330)은 그들 각각이 1차 리전(650)의 임계 비율보다 적게 커버하는 것, 또는 1차 리전(650)의 인구의 임계 백분율 미만에 대응하는 것과 같은 기준 세트를 충족하는지 판정한다.
기준 세트를 충족하는 각각의 2차 리전(670)에 대해, 리전 분할 모듈(330)은 병렬 현실 게임을 위한 리전으로서 게임 데이터베이스(340)에 2차 리전을 저장할 수 있다. 그렇지 않으면, 리전 분할 모듈(330)은 도 6f에서 2차 리전(670A)으로 도시되어 있는 잔여 2차 리전(670) 각각을 2차 셀(680)로 분할할 수 있다. 리전 분할 모듈(330)은 도 6g에 도시된 바와 같이 노드(420) 및 에지(450)를 사용하는 2차 셀(680)에 기초하여 2차 리전(670A)에 대한 2차 그래프(690)를 생성한다. 리전 분할 모듈(330)은 각 리전이 기준 세트를 충족할 때까지 더 높은 차수의 리전들을 계층적으로 결정하는 이러한 프로세스를 계속할 수 있다.
도 7은 일 실시예에 따라 지리적 에어리어를 리전들로 분할하는 프로세스(700)를 도시하는 흐름도이다. 리전 분할 모듈(330)은 지리적 에어리어를 셀로 분할하고(710), 여기서 각각의 셀은 지리적 에어리어의 일 부분에 대응한다. 일부 실시예에서, 셀은 S2-셀이다. 리전 분할 모듈(330)은 게임 데이터베이스(340)에 액세스하여 현실 세계 데이터를 획득하고 현실 세계 데이터를 각 셀에 할당한다(720). 현실 세계 데이터는 셀에 대응하는 인구 밀도 데이터, 지리적 에어리어 내의 병렬 현실 게임의 플레이어들의 위치를 설명하는 플레이어 밀도 데이터, 지리적 에어리어 내의 물의 위치를 설명하는 지형 데이터, 및/또는 가상 세계 내의 가상 요소의 위치에 대응하는 현실 세계 위치를 설명하는 관심 지점 데이터를 포함할 수 있다.
리전 분할 모듈(330)은 지리적 에어리어의 셀에 기초하여 노드 및 에지를 포함하는 그래프를 구성한다(730). 각 노드는 하나의 셀에 대응하고 각 에지는 지리적 에어리어 내의 인접한 셀들에 대응하는 노드들을 연결한다. 리전 분할 모듈(330)은 현실 세계 데이터에 기초하여 그래프를 인접 세그먼트로 분할한다(740). 일부 실시예에서, 각각의 인접 세그먼트는 적어도 최소 수의 플레이어를 포함하는 리전 및/또는 적어도 최소 수의 관심 지점을 포함하는 리전에 대응한다. 다른 실시예에서, 그래프를 분할하는 동안, 리전 분할 모듈(330)은 인구 밀도 데이터로부터 인접 세그먼트 중 적어도 일부의 전체 인구를 판정한다.
리전 분할 모듈(330)은 그래프의 인접 세그먼트에 기초하여 지리적 에어리어의 리전을 정의한다(750). 일부 실시예에서, 리전을 정의할 때, 리전 분할 모듈(330)은 리전 내의 물에 대응하는 지리적 에어리어 부분을 제거한다. 다른 실시예에서, 리전을 정의할 때, 리전 분할 모듈(330)은 그래프 중 한 쌍의 인접 세그먼트를 병합하여 결합된(또는 병합된) 세그먼트를 만들고, 그 결합된 세그먼트를 재분할하여 한 쌍의 재분할된 세그먼트를 만든다. 재분할된 세그먼트가 하나 이상의 기준을 충족하는 경우, 리전 분할 모듈(330)은 재분할된 세그먼트를 유지하고 그 재분할된 세그먼트를 지리적 에어리어의 리전들을 정의하는데 사용한다. 리전 분할 모듈(330)은 리전들을 게임 데이터베이스(340)에 저장한다(760). 일부 실시예에서, 리전 분할 모듈(330)은 리전들을 게임 서버(110)와 연관된 다른 데이터 저장소에 저장한다.
일부 실시예에서, 도 7의 프로세스(700)는 반복된다. 이러한 실시예에서, 리전 분할 모듈(330)은 그래프를 1차 인접 세그먼트 세트로 분할한다. 각각의 1차 세그먼트에 대해, 리전 분할 모듈(330)은 1차 인접 세그먼트를 2차 인접 세그먼트 세트로 분할한다. 또한, 이러한 반복적 프로세스(700)는 리전 분할 모듈(330)을 사용하여 그래프로부터 제1 인접 세그먼트를 생성할 수 있다. 제1 인접 세그먼트를 생성하기 위해, 리전 분할 모듈(330)은 그래프 중 한 노드를 선택한다. 리전 분할 모듈(330)은 선택된 노드에 연결된 노드들을 선택된 노드에 반복적으로 병합한다. 각각의 반복 동안, 리전 분할 모듈(330)은 그래프 상의 에지에 의해 선택된 노드에 연결된 노드 세트를 판정하고, 그 노드 세트 중 하나의 노드를, 노드 세트를 선택된 노드에 연결하는 에지들의 에지 가중치에 기초하여, 선택된 노드에 병합한다. 리전 분할 모듈(330)은 리전 분할 모듈(330)이 제1 인접 세그먼트를 형성할 때까지 노드를 병합한다.
리전 분할 모듈(330)은 제1 인접 세그먼트가 하나 이상의 기준을 충족하는지 여부를 판정한다. 인접 세그먼트가 하나 이상의 기준을 충족하는 경우, 리전 분할 모듈(330)은 그래프로부터 제1 인접 세그먼트를 제거하고 잔여 그래프로부터 제2 인접 세그먼트를 생성한다. 일부 실시예에서, 인접 세그먼트가 하나 이상의 기준을 충족하지 않는 경우, 리전 분할 모듈(330)은 그래프의 에지들에 대한 새로운 에지 가중치를 생성하고 새로운 에지 가중치에 기초하여 제1 인접 세그먼트를 재생성한다.
도 8은 일 실시예에 따른, 도 1의 네트워크 컴퓨팅 환경에서 사용하기에 적합한 예시적인 컴퓨터를 도시하는 블록도이다. 구체적으로, 도 8은 컴퓨터 시스템(800)의 예시적인 형태의 기계의 도식적 표현을 도시한다. 컴퓨터 시스템(800)은 기계로 하여금 게임 서버(110) 또는 클라이언트 서버(120)의 컴포넌트(또는 모듈)와 연관된 것 및 설명된 것을 포함하는, 본 명세서에 설명된 임의의 하나 이상의 방법(또는 프로세스)을 수행하게 만드는 명령(824)(예컨대, 프로그램 코드 또는 소프트웨어)을 실행하기 위해 사용될 수 있다.
이 기계는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 스마트폰, 네트워크 라우터, 스위치 또는 브리지, 휴대폰 타워 또는 기계에 의해 수행될 액션을 규정하는 명령(824)(순차적 또는 비순차적)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계만이 도시되어 있지만, "기계"라는 용어는 임의의 개시된 방법을 수행하기 위해 명령(824)을 개별적으로 또는 공동으로 실행하는 임의의 기계 집합체를 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(800)은 하나 이상의 처리 장치(일반적으로 하나 이상의 프로세서(802))를 포함한다. 프로세서(802)는 예를 들어 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), 컨트롤러, 상태 머신, 하나 이상의 주문형 집적 회로(ASIC), 하나 이상의 무선 주파수 집적 회로(RFIC) 또는 이들의 임의의 조합이다. 프로세서(802)에 대한 임의의 언급은 단일 프로세서 또는 다중 프로세서를 나타낼 수 있다. 또한, 컴퓨터 시스템(800)은 메인 메모리(804)를 포함한다. 컴퓨터 시스템은 저장 장치(816)를 포함할 수 있다. 프로세서(802), 메모리(804), 및 저장 장치(816)는 버스(808)를 통해 통신한다.
또한, 컴퓨터 시스템(800)은 정적 메모리(806), 및 (예컨대, 플라즈마 디스플레이 패널(PDP), 액정 디스플레이(LCD) 또는 프로젝터를 구동하기 위한) 디스플레이 구동 장치(810)를 포함할 수 있다. 또한, 컴퓨터 시스템(800)은 영숫자 입력 장치(812)(예컨대, 키보드), 커서 제어 장치(814)(예컨대, 마우스, 트랙볼, 조이스틱, 모션 센서, 또는 기타 포인팅 도구), 신호 발생 장치(818)(예컨대, 스피커), 및 네트워크 인터페이스 장치(820)를 포함할 수 있으며, 이들 또한 버스(808)를 통해 통신하도록 구성된다.
저장 장치(816)는 본 명세서에 설명된 임의의 방법 또는 기능을 수행하기 위한 명령(824)(예컨대, 소프트웨어)을 저장할 수 있는 기계 판독 가능 매체(822)를 포함한다. 또한, 명령(824)은 컴퓨터 시스템(800)에 의한 실행 동안 메인 메모리(804) 내에 또는 프로세서(802) 내에(예컨대, 프로세서의 캐시 메모리 내에) 완전히 또는 부분적으로 상주할 수 있다. 또한, 메인 메모리(804) 및 프로세서(802)는 기계 판독 가능 매체를 구성한다. 명령(824)은 네트워크 인터페이스 장치(820)를 통해 네트워크(130) 상에서 전송 또는 수신될 수 있다.
기계 판독 가능 매체(822)가 예시적인 실시예에서 단일 매체인 것으로 나타나 있지만, "기계 판독 가능 매체"라는 용어는 명령(824)을 저장할 수 있는 단일 매체 또는 복수의 매체(예컨대, 중앙 집중형 또는 분산형 데이터베이스, 또는 관련 캐시 및 서버)를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 매체"라는 용어는 또한 기계에 의해 실행되고 기계로 하여금 본 명세서에 개시된 방법 또는 기능 중 임의의 하나 이상을 수행하게 만드는 명령(824)을 저장할 수 있는 임의의 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체 형태의 데이터 저장소를 포함하지만 이에 제한되는 것은 아니다.
본 발명이 특정 예시적인 실시예 및 그 방법과 관련지어 상세하게 설명되었지만, 당업자는 전술한 내용을 이해한 후 그러한 실시예에 대한 변경, 변형 및 등가물을 쉽게 만들어낼 수 있음을 이해할 것이다. 따라서, 본 개시내용의 범위는 제한이 아니라 예시에 의한 것이며, 본 개시내용은 당업자들이 용이하게 이해할 수 있는 본 발명에 대한 그러한 수정, 변형 또는 추가를 포함하는 것을 배제하지 않는다.
(추가 고려사항)
위 설명의 일부 부분은 알고리즘 프로세스 또는 오퍼레이션의 관점에서 실시예를 설명한다. 이러한 알고리즘적 설명 및 표현들은 일반적으로 컴퓨팅 기술 분야의 당업자들이 자신의 작업 내용을 다른 당업자에게 효과적으로 전달하기 위해 사용된다. 이러한 오퍼레이션은 기능적으로, 계산적으로 또는 논리적으로 설명되지만, 프로세서 또는 등가 전기 회로, 또는 마이크로코드 등에 의한 실행을 위한 명령을 포함하는 컴퓨터 프로그램에 의해 구현되는 것으로 이해된다. 또한, 일반성을 잃지 않고, 이러한 기능적 오퍼레이션들의 배열을 모듈로서 언급하는 것이 때때로 편리하다는 것은 입증되었다.
다양한 개념을 설명하기 위해 서버, 데이터베이스, 소프트웨어 애플리케이션 및 기타 컴퓨터 기반 시스템에 대한 언급 및 이러한 시스템에서 수행되는 액션 및 전송되는 정보가 제공된다. 해당 기술 분야의 당업자들은 컴퓨터 기반 시스템의 고유한 유연성이 구성요소들 간의 작업 및 기능의 매우 다양한 가능한 구성, 조합 및 분할을 가능하게 해준다는 것을 이해할 것이다. 예를 들어, 서버 프로세스는 단일 서버 또는 조합하여 작동하는 복수의 서버를 사용하여 구현될 수 있고, 데이터베이스 및 애플리케이션은 단일 시스템 상에 구현될 수도 있고 또는 복수의 시스템에 걸쳐 분산될 수 있으며, 분산된 컴포넌트들은 순차적으로 또는 병렬로 작동할 수 있다.
시스템 및 방법이 위치 정보와 같은 플레이어에 대한 개인 정보에 액세스하고 분석하는 상황에서, 플레이어는 프로그램 또는 피처가 정보를 수집하는지 여부를 통제할 기회를 제공받을 수 있다. 어떤 정보가 수집되고 그 정보가 어떻게 사용되는지에 대한 의미있는 통지가 플레이어에게 제공될 때까지 플레이어에 대한 개인 정보 또는 데이터는 수집되거나 사용되지 않는다. 이러한 정보는 플레이어가 언제든지 철회하거나 수정할 수 있는 동의를 제공하지 않는 한 수집되거나 사용되지 않는다. 따라서, 플레이어는 애플리케이션 또는 시스템이 플레이어에 대한 정보를 수집하고 사용하는 방법에 대한 통제권을 가질 수 있다. 또한, 특정 정보 또는 데이터는 그것이 저장되거나 사용되기 전에 익명화되도록 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 플레이어에 대한 개인 식별 정보를 확인할 수 없도록 플레이어의 신분정보가 처리될 수 있다.
본 명세서에 사용된, "하나의 실시예" 또는 "일 실시예"에 대한 임의의 언급은 그 실시예와 관련지어 설명된 특정 요소, 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 위치에서 "하나의 실시예에서"라는 문구가 나타나는 것이 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 이와 유사하게, 요소 또는 구성요소 앞에 "하나" 또는 "일"을 사용하는 것은 단지 편의를 위한 것일 뿐이다. 이러한 서술은 그것이 다른 의미라는 것이 명백하지 않는 한, 그 요소 또는 구성요소 중 하나 이상이 존재한다는 것을 의미하는 것으로 이해되어야 한다.
값이 "대략" 또는 "실질적으로"(또는 이들의 파생물)와 함께 설명되는 경우, 문맥에서 다른 의미가 명백하지 않는 한 이러한 값은 정확한 값의 +/- 10%로 해석되어야 한다. 예를 들어 "대략 10"은 "9 내지 11의 범위 이내"를 의미하는 것으로 이해해야 한다.
본 명세서에 사용된 바와 같이, 용어 "포함하다", "포함하는", "구비하다", "구비하는", "가지다", "갖는" 또는 이들의 임의의 다른 변형은 비배타적 포함(non-exclusive inclusion)을 커버하도록 의도된다. 예를 들어, 요소의 목록을 포함하는 프로세스, 방법, 물품 또는 장치는 반드시 그러한 요소로만 제한되지 않으며, 명시적으로 나열되지 않거나 그러한 프로세스, 방법, 물품 또는 장치에 고유하지 않은 다른 요소를 포함할 수도 있다. 또한, 달리 명시적으로 언급되지 않는 한, "또는"은 "포괄적 또는(inclusive or)"을 의미하고, "배타적 또는(exclusive or)"을 의미하지 않는다. 예를 들어 조건 A 또는 B는 A는 참이고(또는 존재하고) B는 거짓인(또는 존재하지 않는) 경우, A는 거짓이고(또는 존재하지 않고) B는 참인(또는 존재하는) 경우, 및 A와 B 모두 참인(또는 존재하는) 경우 중 임의의 것에 의해 충족된다.
본 명세서를 읽은 당업자들은 트랜잭션(transaction)을 처리하기 위해 애드혹 신경망(ad hoc neural network)을 사용하는 프로세스 및 시스템에 대한 추가의 대안적인 구조적 및 기능적 설계를 이해할 것이다. 따라서, 특정 실시예 및 적용예가 도시되고 설명되었지만, 설명된 본 발명은 개시된 정확한 구성 및 구성요소로 제한되지 않는다는 것을 이해해야 한다. 보호 범위는 아래의 청구항에 의해서만 제한되어야 한다.

Claims (20)

  1. 지리적 에어리어(area)를 리전(region)으로 분할하는 방법으로서,
    상기 지리적 에어리어를 셀로 분할하는 단계로서, 각 셀은 상기 지리적 에어리어의 일 부분에 대응하는 것인, 상기 지리적 에어리어를 셀로 분할하는 단계;
    현실 세계 데이터를 상기 셀에 할당하는 단계로서, 상기 셀에 대한 상기 현실 세계 데이터는 인구 밀도 데이터 및 상기 셀의 지리적 에어리어의 대응하는 부분의 속성의 플레이어 밀도 데이터 중 적어도 하나를 나타내고, 상기 플레이어 밀도 데이터는 상기 지리적 에어리어 내의 병렬 현실 게임의 플레이어들의 위치를 설명하는 것인, 상기 현실 세계 데이터를 상기 셀에 할당하는 단계;
    노드 및 에지를 포함하는 그래프를 구성하는 단계로서, 상기 노드는 상기 셀에 대응하고, 상기 에지는 인접한 셀에 대응하는 노드들을 연결하는 것인, 상기 그래프를 구성하는 단계;
    상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 단계로서, 상기 분할하는 단계는 인구 밀도 데이터로부터 상기 인접 세그먼트 중 적어도 일부의 전체 인구를 판정하는 단계; 및 하나 이상의 인접 세그먼트가 플레이어의 최소 수에 해당하는지 판정하는 단계; 중 적어도 하나 이상을 포함하는, 상기 그래프를 인접 세그먼트로 분할하는 단계;
    상기 그래프의 상기 인접 세그먼트를 기초로 하여 상기 지리적 에어리어의 리전들을 정의하는 단계; 및
    정의된 리전들을 데이터 저장소에 저장하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  2. 제1항에 있어서, 상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 단계는 반복적인 프로세스이며, 상기 반복적인 프로세스는:
    상기 그래프를 1차 인접 세그먼트 세트로 분할하는 단계; 및
    각각의 1차 인접 세그먼트에 대해, 상기 1차 인접 세그먼트를 2차 인접 세그먼트 세트로 분할하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  3. 제1항에 있어서, 상기 그래프의 상기 인접 세그먼트를 기초로 하여 상기 지리적 에어리어의 리전들을 정의하는 단계는:
    결합된 세그먼트를 획득하기 위해 상기 그래프의 한 쌍의 인접 세그먼트를 결합하는 단계;
    상기 결합된 세그먼트를 한 쌍의 재분할된 세그먼트로 재분할하는 단계; 및
    상기 재분할된 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 지리적 에어리어의 리전들을 정의하기 위해 상기 재분할된 세그먼트를 유지하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  4. 제1항에 있어서, 상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 단계는 반복 프로세스를 포함하고, 상기 반복 프로세스는:
    상기 그래프로부터 제1 인접 세그먼트를 생성하는 단계;
    상기 제1 인접 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 그래프로부터 상기 제1 인접 세그먼트를 제거하는 단계; 및
    잔여 그래프에서 제2 인접 세그먼트를 생성하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  5. 제4항에 있어서, 상기 그래프로부터 제1 인접 세그먼트를 생성하는 단계는:
    상기 그래프 중 하나의 노드를 선택하는 단계; 및
    선택된 노드에 연결된 노드들을 상기 선택된 노드로 반복적으로 병합하는 단계를 포함하며, 각각의 반복은:
    상기 선택된 노드에 연결된 노드 세트를 판정하는 단계로서, 상기 노드는 상기 그래프에서 에지에 의해 연결된 것인, 상기 선택된 노드에 연결된 노드 세트를 판정하는 단계; 및
    상기 노드 세트를 상기 선택된 노드에 연결하는 에지의 가중치에 기초하여 상기 노드 세트 중 하나의 노드를 상기 선택된 노드로 병합하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  6. 제5항에 있어서, 상기 에지는 상기 현실 세계 데이터에 의해 가중치 부여되며, 상기 그래프로부터 제1 인접 세그먼트를 생성하는 단계는, 상기 제1 인접 세그먼트가 하나 이상의 기준을 충족하지 않는 것에 응답하여:
    상기 그래프 내의 에지들에 대한 새로운 가중치를 생성하는 단계; 및
    상기 새로운 가중치를 기초로 하여 상기 제1 인접 세그먼트를 재생성하는 단계를 포함하는 것을 특징으로 하는 지리적 에어리어를 리전으로 분할하는 방법.
  7. 프로세서에 의해 실행 가능한 명령을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령은:
    지리적 에어리어를 셀로 분할하기 위한 명령으로서, 각각의 셀은 상기 지리적 에어리어의 일 부분에 대응하는 것인, 상기 지리적 에어리어를 셀로 분할하기 위한 명령;
    현실 세계 데이터를 상기 셀에 할당하기 위한 명령으로서, 상기 셀에 대한 상기 현실 세계 데이터는 상기 지리적 에어리어의 대응하는 부분의 속성을 나타내는 것인, 상기 현실 세계 데이터를 상기 셀에 할당하기 위한 명령;
    노드 및 에지를 포함하는 그래프를 구성하기 위한 명령으로서, 상기 노드는 상기 셀에 대응하고 상기 에지는 인접한 셀에 대응하는 노드들을 연결하는 것인, 상기 그래프를 구성하기 위한 명령;
    상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하기 위한 명령;
    상기 그래프를 인접 세그먼트로 분할하기 위한 명령은:
    상기 그래프를 1차 인접 세그먼트 세트로 분할하기 위한 명령; 및각각의 1차 인접 세그먼트에 대해 1차 인접 세그먼트를 2차 인접 세그먼트 세트로 분할하기 위한 명령을 포함하고,
    상기 그래프의 상기 인접 세그먼트를 기초로 하여 상기 지리적 에어리어의 리전들을 정의하기 위한 명령; 및
    상기 정의된 리전들을 데이터 저장소에 저장하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  8. 제7항에 있어서, 상기 현실 세계 데이터는 상기 셀에 대응하는 인구 밀도 데이터를 포함하고, 상기 그래프를 인접 세그먼트로 분할하기 위한 명령은 상기 인구 밀도 데이터로부터 상기 인접 세그먼트 중 적어도 일부의 전체 인구를 판정하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  9. 제7항에 있어서, 상기 현실 세계 데이터는 플레이어 밀도 데이터를 포함하고, 상기 플레이어 밀도 데이터는 상기 지리적 에어리어 내의 병렬 현실 게임의 플레이어들의 위치를 설명하고, 각각의 인접 세그먼트는 적어도 최소 수의 플레이어를 포함하는 리전에 대응하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  10. 제 7항에 있어서, 상기 현실 세계 데이터는 지형 데이터를 포함하고, 상기 지형 데이터는 상기 지리적 에어리어 내의 물의 위치를 설명하고, 상기 지리적 에어리어의 리전들을 정의하기 위한 명령은 상기 리전들로부터 물에 대응하는 상기 지리적 에어리어의 부분을 제거하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  11. 제7항에 있어서, 상기 현실 세계 데이터는 관심 지점 데이터를 포함하고, 상기 관심 지점 데이터는 가상 세계 내의 가상 요소의 위치에 대응하는 현실 세계 위치를 설명하고, 각각의 인접 세그먼트는 적어도 최소 수의 관심 지점을 포함하는 리전에 대응하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제7항에 있어서, 상기 지리적 에어리어의 리전들을 정의하기 위한 명령은:
    결합된 세그먼트를 획득하기 위해 상기 그래프의 한 쌍의 인접 세그먼트를 결합하기 위한 명령;
    상기 결합된 세그먼트를 한 쌍의 재분할된 세그먼트로 재분할하기 위한 명령; 및
    상기 재분할된 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 지리적 에어리어의 리전을 정의하기 위해 상기 재분할된 세그먼트를 유지하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제7항에 있어서, 상기 그래프를 1차 인접 세그먼트의 세트로 분할하기 위한 명령은;
    상기 그래프로부터 제1 인접 세그먼트를 생성하기 위한 명령;
    상기 제1 인접 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 그래프로부터 상기 제1 인접 세그먼트를 제거하기 위한 명령; 및
    잔여 그래프에서 제2 인접 세그먼트를 생성하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서, 상기 그래프로부터 제1 인접 세그먼트를 생성하기 위한 명령은;
    상기 그래프 중 하나의 노드를 선택하기 위한 명령; 및
    선택된 노드에 연결된 노드들을 상기 선택된 노드로 반복적으로 병합하기 위한 명령을 포함하고, 각각의 반복은:
    상기 선택된 노드에 연결된 노드 세트를 판정하는 단계로서, 상기 노드는 상기 그래프에서 에지에 의해 연결된 것인, 상기 선택된 노드에 연결된 노드 세트를 판정하는 단계; 및
    상기 노드 세트를 상기 선택된 노드에 연결하는 에지의 가중치를 기초로 하여 상기 노드 세트 중 하나의 노드를 상기 선택된 노드에 병합하는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서, 상기 에지는 상기 현실 세계 데이터에 의해 가중치가 부여되고, 상기 그래프로부터 제1 인접 세그먼트를 생성하기 위한 명령은;
    상기 제1 인접 세그먼트가 하나 이상의 기준을 충족하지 않는 것에 응답하여, 상기 그래프 내의 에지에 대한 새로운 가중치를 생성하기 위한 명령; 및
    상기 새로운 가중치를 기초로 하여 상기 제1 인접 세그먼트를 재생성하기 위한 명령을 더 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 프로세서에 의해 실행 가능하고 지리적 에어리어(area)를 리전(region)으로 분할하는 명령을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령은:
    상기 지리적 에어리어를 셀로 분할하는 단계로서, 각 셀은 상기 지리적 에어리어의 일 부분에 대응하는 것인, 상기 지리적 에어리어를 셀로 분할하는 명령;
    현실 세계 데이터를 상기 셀에 할당하는 명령으로서, 상기 셀에 대한 상기 현실 세계 데이터는 인구 밀도 데이터 및 상기 셀의 지리적 에어리어의 대응하는 부분의 속성의 플레이어 밀도 데이터 중 적어도 하나를 나타내고, 상기 플레이어 밀도 데이터는 상기 지리적 에어리어 내의 병렬 현실 게임의 플레이어들의 위치를 설명하는 것인, 상기 현실 세계 데이터를 상기 셀에 할당하는 명령;
    노드 및 에지를 포함하는 그래프를 구성하는 명령으로서, 상기 노드는 상기 셀에 대응하고, 상기 에지는 인접한 셀에 대응하는 노드들을 연결하는 것인, 상기 그래프를 구성하는 명령;
    상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 명령으로서, 상기 분할은 인구 밀도 데이터로부터 상기 인접 세그먼트 중 적어도 일부의 전체 인구를 판정하는 단계; 및 하나 이상의 인접 세그먼트가 플레이어의 최소 수에 해당하는지 판정하는 단계; 중 적어도 하나 이상을 포함하는, 상기 그래프를 인접 세그먼트로 분할하는 명령;
    상기 그래프의 상기 인접 세그먼트를 기초로 하여 상기 지리적 에어리어의 리전들을 정의하는 명령; 및
    정의된 리전들을 데이터 저장소에 저장하는 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제 16 항에 있어서, 상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 명령은:
    상기 그래프를 1차 인접 세그먼트 세트로 분할하는 명령; 및
    각각의 1차 인접 세그먼트에 대해, 상기 1차 인접 세그먼트를 2차 인접 세그먼트 세트로 분할하는 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제16항에 있어서, 상기 그래프의 상기 인접 세그먼트를 기초로 하여 상기 지리적 에어리어의 리전들을 정의하는 명령은:
    결합된 세그먼트를 획득하기 위해 상기 그래프의 한 쌍의 인접 세그먼트를 결합하는 명령;
    상기 결합된 세그먼트를 한 쌍의 재분할된 세그먼트로 재분할하는 명령; 및
    상기 재분할된 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 지리적 에어리어의 리전들을 정의하기 위해 상기 재분할된 세그먼트를 유지하는 명령; 을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제16항에 있어서, 상기 현실 세계 데이터를 기초로 하여 상기 그래프를 인접 세그먼트로 분할하는 명령은:
    상기 그래프로부터 제1 인접 세그먼트를 생성하는 명령;
    상기 제1 인접 세그먼트가 하나 이상의 기준을 충족하는 것에 응답하여, 상기 그래프로부터 상기 제1 인접 세그먼트를 제거하는 명령; 및
    잔여 그래프에서 제2 인접 세그먼트를 생성하는 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제19항에 있어서, 상기 그래프로부터 제1 인접 세그먼트를 생성하는 명령은:
    상기 그래프 중 하나의 노드를 선택하는 명령; 및
    선택된 노드에 연결된 노드들을 상기 선택된 노드로 반복적으로 병합하는 명령을 포함하며, 각각의 반복은:
    상기 선택된 노드에 연결된 노드 세트를 판정하는 단계로서, 상기 노드는 상기 그래프에서 에지에 의해 연결된 것인, 상기 선택된 노드에 연결된 노드 세트를 판정하는 단계; 및
    상기 노드 세트를 상기 선택된 노드에 연결하는 에지의 가중치에 기초하여 상기 노드 세트 중 하나의 노드를 상기 선택된 노드로 병합하는 단계; 를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020227024024A 2019-12-13 2020-12-03 스패닝 트리를 사용한 셀 병합을 통한 리전 분할 KR102464078B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/713,466 US11167207B2 (en) 2019-12-13 2019-12-13 Region division with cell merging using spanning tree
US16/713,466 2019-12-13
PCT/IB2020/061415 WO2021116840A1 (en) 2019-12-13 2020-12-03 Region division with cell merging using spanning tree

Publications (2)

Publication Number Publication Date
KR20220110570A KR20220110570A (ko) 2022-08-08
KR102464078B1 true KR102464078B1 (ko) 2022-11-07

Family

ID=76316541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227024024A KR102464078B1 (ko) 2019-12-13 2020-12-03 스패닝 트리를 사용한 셀 병합을 통한 리전 분할

Country Status (9)

Country Link
US (2) US11167207B2 (ko)
EP (1) EP4069386A4 (ko)
JP (1) JP7277671B2 (ko)
KR (1) KR102464078B1 (ko)
CN (1) CN115038502A (ko)
AU (1) AU2020403654B2 (ko)
CA (1) CA3163978C (ko)
TW (1) TWI776313B (ko)
WO (1) WO2021116840A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734477B2 (en) * 2018-03-08 2023-08-22 Concurrent Technologies Corporation Location-based VR topological extrusion apparatus
US11616699B2 (en) * 2020-07-27 2023-03-28 Charter Communications Operating, Llc Obtaining location metadata for network devices using augmented reality
CN113663331A (zh) * 2021-08-03 2021-11-19 网易(杭州)网络有限公司 标识生成方法、装置、非易失性存储介质及电子装置
US20230051775A1 (en) * 2021-08-10 2023-02-16 Siemens Industry Software Inc. Construction of environment views from selectively determined environment images
WO2023191141A1 (ko) * 2022-03-31 2023-10-05 주식회사 핏투게더 전자 장치 및 그 제어 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050246711A1 (en) 2004-04-08 2005-11-03 International Business Machines Corporation Method for distributing and geographically load balancing location aware communication device client-proxy applications
US20050267987A1 (en) 2004-03-25 2005-12-01 Aiseek Ltd Techniques for path finding and terrain analysis
US20150186389A1 (en) 2009-09-25 2015-07-02 Microsoft Technology Licensing, Llc Recommending Points of Interests in a Region

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139049A1 (en) 1996-08-22 2004-07-15 Wgrs Licensing Company, Llc Unified geographic database and method of creating, maintaining and using the same
CN1355495A (zh) 2000-11-27 2002-06-26 台湾维尔科技股份有限公司 多人互动网络游戏连线模式
US6574553B1 (en) * 2001-12-11 2003-06-03 Garmin Ltd. System and method for calculating a navigation route based on adjacent cartographic map databases
TWI234728B (en) 2003-12-15 2005-06-21 Inst Information Industry Method for dynamically space management
KR101583210B1 (ko) 2011-05-11 2016-01-07 지오노믹스 글로벌 게임즈 리미티드 지도 데이터를 처리, 저장 및 디스플레이하기 위한 시스템들 및 방법들
GB201117901D0 (en) 2011-10-18 2011-11-30 Tomtom Int Bv Map code: a public location encoding standard
US9782668B1 (en) * 2012-07-31 2017-10-10 Niantic, Inc. Placement of virtual elements in a virtual world associated with a location-based parallel reality game
US20140074553A1 (en) 2012-09-13 2014-03-13 Truecar, Inc. System and method for constructing spatially constrained industry-specific market areas
JP5634468B2 (ja) * 2012-09-28 2014-12-03 株式会社コナミデジタルエンタテインメント ゲーム制御装置、ゲーム制御方法、プログラム、ゲームシステム、情報処理装置
CN103257876B (zh) 2013-04-28 2016-04-13 福建天晴数码有限公司 C3游戏地图动态加载的方法
US10510095B2 (en) * 2014-06-30 2019-12-17 Samsung Electronics Co., Ltd. Searching based on a local density of entities
US9904932B2 (en) 2014-12-29 2018-02-27 Google Llc Analyzing semantic places and related data from a plurality of location data reports
JP6383336B2 (ja) * 2015-08-10 2018-08-29 日本電信電話株式会社 サーバ管理装置およびサーバ管理方法
US20180075694A1 (en) 2016-09-09 2018-03-15 Anthony Frolov System and method for providing location-based gaming experience
US20180357589A1 (en) * 2017-06-08 2018-12-13 Motorola Solutions, Inc. Systems and methods for determining geographical service areas with balanced workload
EP3646583A4 (en) * 2017-06-29 2021-07-14 Open Space Labs, Inc. AUTOMATED SPATIAL INDEXING OF IMAGES ON THE BASIS OF FLOOR PLAN FEATURES
KR102466940B1 (ko) * 2018-04-05 2022-11-14 한국전자통신연구원 로봇 주행용 위상 지도 생성 장치 및 방법
CN108921947B (zh) * 2018-07-23 2022-06-21 百度在线网络技术(北京)有限公司 生成电子地图的方法、装置、设备、存储介质以及采集实体
US10891319B2 (en) * 2019-03-15 2021-01-12 International Business Machines Corporation Easy clustering of graphs of nodes preserving node relationships

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050267987A1 (en) 2004-03-25 2005-12-01 Aiseek Ltd Techniques for path finding and terrain analysis
US20050246711A1 (en) 2004-04-08 2005-11-03 International Business Machines Corporation Method for distributing and geographically load balancing location aware communication device client-proxy applications
US20150186389A1 (en) 2009-09-25 2015-07-02 Microsoft Technology Licensing, Llc Recommending Points of Interests in a Region

Also Published As

Publication number Publication date
CA3163978C (en) 2023-09-12
US20210178252A1 (en) 2021-06-17
US11731038B2 (en) 2023-08-22
AU2020403654A1 (en) 2022-07-21
KR20220110570A (ko) 2022-08-08
EP4069386A4 (en) 2023-01-18
EP4069386A1 (en) 2022-10-12
TWI776313B (zh) 2022-09-01
JP2022551016A (ja) 2022-12-06
JP7277671B2 (ja) 2023-05-19
WO2021116840A1 (en) 2021-06-17
CA3163978A1 (en) 2021-06-17
US20220023753A1 (en) 2022-01-27
CN115038502A (zh) 2022-09-09
TW202130396A (zh) 2021-08-16
US11167207B2 (en) 2021-11-09
AU2020403654B2 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
KR102464078B1 (ko) 스패닝 트리를 사용한 셀 병합을 통한 리전 분할
US10486059B1 (en) Placement of virtual elements in a virtual world associated with a location-based parallel reality game
CN109478184A (zh) 识别、处理和显示数据点聚类
US20230173389A1 (en) Travel of Virtual Characters
KR20120027930A (ko) 유전자 알고리즘을 이용한 이동객체의 최적경로 생성 시스템
US20230310984A1 (en) Player density based region division for regional chat
JP2021037098A (ja) ビデオゲーム処理プログラム、及びビデオゲーム処理システム
EP3129112B1 (en) Device, game and methods therefore
JP2021037140A (ja) ビデオゲーム処理プログラム、及びビデオゲーム処理システム
US20150290535A1 (en) Device, game and methods therefor

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant