KR20220114076A - 예측 가능한 질의 응답 시간을 갖는 지리적 위치 데이터의 분할 저장 - Google Patents

예측 가능한 질의 응답 시간을 갖는 지리적 위치 데이터의 분할 저장 Download PDF

Info

Publication number
KR20220114076A
KR20220114076A KR1020227025220A KR20227025220A KR20220114076A KR 20220114076 A KR20220114076 A KR 20220114076A KR 1020227025220 A KR1020227025220 A KR 1020227025220A KR 20227025220 A KR20227025220 A KR 20227025220A KR 20220114076 A KR20220114076 A KR 20220114076A
Authority
KR
South Korea
Prior art keywords
database
geographic
shard
game
shards
Prior art date
Application number
KR1020227025220A
Other languages
English (en)
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 KR20220114076A publication Critical patent/KR20220114076A/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/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • 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
    • 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/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • 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
    • 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/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • 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/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/92Video game devices specially adapted to be hand-held while playing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

분할된 데이터베이스에 걸쳐 예측 가능한 질의 응답 시간을 제공하는 지리적 영역에서 임의의 개수의 아이템이 인덱싱될 수 있게 해주는 시스템이 개시된다. 지리적 영역에 대해 인덱싱된 아이템은 단일 샤드 상에 저장되고, 바람직하지 않은 질의 응답 시간을 나타내는 오버플로 조건이 충족되지 않는 한 해당 샤드에 추가 아이템이 추가된다. 오버플로 조건이 충족되면, 이 시스템은 예측 가능한 질의 응답 시간을 유지하기 위해 지리적 영역에 대해 인덱싱된 아이템의 저장을 하나 이상의 추가 샤드로 확장한다. 이 시스템은 하나 이상의 관련 샤드에 질의하는데 사용될 수 있는 지리적 영역에 대응하는 아이템을 저장하는데 사용되고 있는 샤드의 총 개수를 나타내는 샤드 카운트를 유지할 수 있다. 이 시스템은 분할된 데이터베이스의 데이터베이스 노드에 걸쳐 샤드들을 고르게 분배하기 위해 결정론적 해싱을 적용할 수 있다.

Description

예측 가능한 질의 응답 시간을 갖는 지리적 위치 데이터의 분할 저장
(관련 출원에 대한 상호 참조)
본 출원은 그 전체가 참조로서 통합된, 2019년 12월 20일에 출원된 미국 가출원 번호 제62/952,140호의 이익을 주장한다.
(발명의 분야)
본 발명은 데이터 저장에 관한 것이며, 보다 상세하게는 예측 가능한 질의 응답 시간(query response time)을 갖는 임의의 수의 지리적 위치 아이템의 분할 저장(sharded storage)에 관한 것이다.
현실 세계의 적어도 일 부분과 평행한 공유 가상 세계를 제공하는 병렬 현실 게임은 한 커뮤니티의 플레이어들을 끌어들일 수 있는 다양한 상호작용을 호스팅할 수 있다. 현실 세계의 적어도 일 부분과 평행한 지형을 갖는 가상 세계를 제공하는 것은 플레이어가 현실 세계를 탐색함으로써 가상 세계를 탐색할 수 있게 해준다. 가상 환경 내의 가상 요소를 현실 세계의 객체, 위치 및 현실 세계에서의 액션과 연결하는 것은 플레이어가 평소에는 무시했을 현실 세계 내의 특징부로 이동하게 만들고 그것을 주목하도록 장려할 수 있다. 가상 세계 내의 동일한 위치에 있는 가상 요소들을 현실 세계 내의 그들의 대응하는 현실 세계 객체 또는 위치로서 제공하는 것은 그 가상 요소가 현실 세계의 숨겨진 부분이라는 인상을 증가시킨다.
병렬 현실 게임을 플레이할 때, 플레이어의 클라이언트 장치는 일반적으로 플레이어 주변의 가상 요소에 대응하는 데이터를 수신한다. 가상 요소의 밀도 및 이용 가능한 정보의 양이 증가함에 따라, 게임 데이터베이스 내의 데이터 양도 증가한다. 종래의 데이터베이스 저장을 이용할 경우, 이것은 질의 응답 시간을 증가시킨다. 그러나, 병렬 현실 게임이 플레이어와 가상 세계 간의 실시간 상호작용을 위해 설계될 수 있으므로, 수용 가능한 응답 시간에 대한 상한이 존재한다. 따라서, 지리적 영역에 대해 저장된 데이터 양이 증가함에 따라, 예측 가능한 질의 응답 시간을 제공하는 효율적인 저장 접근법에 대한 필요성이 존재한다.
상기 및 기타 문제는 분할된 데이터베이스에 걸쳐 예측 가능한 질의 응답 시간을 제공하는 (예를 들어, S2 라이브러리와 같은 지리적 인덱싱 프레임워크(geographic indexing framework)를 사용하여) 지리적 영역에서 임의의 개수의 아이템이 인덱싱될 수 있게 하는 시스템 및 방법에 의해 해결될 수 있다. 다양한 실시예에서, 지리적 영역에 대해 인덱싱된 아이템들은 단일 샤드(shard)에 저장되고, 바람직하지 않은 질의 응답 시간을 나타내는 오버플로 조건(overflow condition)이 충족되지 않는 한(예를 들어, 질의 응답 시간이 원하는 임계값 미만으로 유지되는 한) 추가 아이템은 이 단일 샤드에 추가된다. 오버플로 조건이 충족되면, 이 시스템은 예측 가능한 질의 응답 시간을 유지하기 위해 지리적 영역에 대해 인덱싱된 아이템의 저장을 하나 이상의 샤드로 확장한다. 이 시스템은 하나 이상의 관련 샤드에 (예를 들어, 동시에) 질의하기 위해 사용될 수 있는, 지리적 영역에 대응하는 아이템을 저장하는데 사용되고 있는 샤드의 총 개수를 나타내는 샤드 카운트를 유지할 수 있다. 이 시스템은 가상 또는 물리적 데이터베이스 서버와 같은, 분할된 데이터베이스의 데이터베이스 노드에 걸쳐 샤드를 고르게 분배하기 위해 결정론적 해싱(deterministic hashing)을 적용할 수 있다. 데이터베이스의 클라이언트는 지리적 영역에 대한 아이템들이 저장되어 있는 모든 데이터베이스 노드의 목록을 저장하는 것이 아니라, 샤드 카운트에 기초하여 지리적 영역에 대응하는 각 샤드가 어떤 데이터베이스 노드에 저장되어 있는지 판정할 수 있다. 이것은 예를 들어 단일 샤드 또는 복수의 샤드에 동시에 질의할 때 예측 가능한 응답 시간을 제공하면서도 넓은 지리적 영역에 대한 많은 아이템의 저장을 가능하게 해준다.
일 실시예에서, 이 시스템은 지리적 위치를 나타내는 요청을 수신한다. 지리적 위치에 기초하여, 이 시스템은 지리적 영역을 식별한다. 이러한 지리적 영역에 기초하여, 이 시스템은 데이터베이스의 복수의 데이터베이스 샤드 중 하나의 데이터베이스 샤드를 식별하며, 여기서 복수의 데이터베이스 샤드는 지리적 영역에 대응한다. 이 시스템은 지리적 영역에 대응하는 지리적 위치 데이터에 대해 식별된 데이터베이스 샤드에 질의하고, 이 데이터베이스 샤드에 대한 질의는 예측 가능한 응답 시간을 갖는다. 질의 받은 지리적 위치 데이터에 기초하여, 이 시스템은 질의 결과를 처리한다. 이 시스템은 요청에 응답하여 질의 결과를 반환한다.
도 1은 일 실시예에 따른, 임의의 수의 지리적 위치의 아이템에 대한 게임 데이터가 예측 가능한 질의 응답 시간과 함께 저장될 수 있는 네트워크 컴퓨팅 환경의 블록도이다.
도 2는 일 실시예에 따른, 현실 세계와 평행한 지형을 갖는 가상 세계의 표현을 도시한다.
도 3은 일 실시예에 따른, 병렬 현실 게임의 예시적인 게임 인터페이스를 도시한다.
도 4는 일 실시예에 따른, 도 1에 도시된 게임 데이터베이스의 블록도이다.
도 5는 일 실시예에 따른, 예측 가능한 질의 시간을 갖는 임의의 수의 지리적 위치의 아이템에 대한 게임 데이터를 제공하는 방법의 흐름도이다.
도 6은 일 실시예에 따른, 도 1의 네트워크 컴퓨팅 환경에서 사용하기에 적합한 예시적인 컴퓨터를 도시하는 블록도이다.
게임 서버는 현실 세계 지형의 적어도 일 부분과 평행한 지형을 갖는 가상 세계를 포함하는 플레이어 게임 영역을 갖는 병렬 현실 게임을 호스팅할 수 있다. 플레이어는 현실 세계에서 일 범위의 지리적 좌표를 탐색함으로써 가상 세계에서 가상 공간을 정의하는 일 범위의 좌표를 탐색할 수 있다. 특히, 플레이어의 위치는 예를 들어 모바일 컴퓨팅 장치일 수 있는 플레이어의 클라이언트 장치와 연관된 측위 시스템(예컨대, GPS 시스템)을 사용하여 모니터링되거나 추적될 수 있다. 플레이어 위치 정보는 네트워크를 통해 병렬 현실 게임을 호스팅하는 게임 서버에 제공될 수 있으며 게임에 의해 가상 세계 내의 플레이어 위치를 업데이트하는데 사용될 수 있다. 그 결과, 플레이어가 그들의 클라이언트 장치와 함께 현실 세계에서 좌표 범위에서 계속 이동할 때, 게임 서버는 플레이어가 평행 가상 세계에서도 좌표 범위에서 계속 이동하도록 업데이트할 수 있다.
가상 세계는 현실 세계의 관심 지점과 연결된 하나 이상의 가상 요소를 포함할 수 있다. 예를 들어, 가상 세계는 현실 세계 내의 랜드마크, 박물관, 예술 작품, 도서관 또는 다른 관심 영역과 같은, 관심 지점과 관련된 다양한 가상 요소를 포함할 수 있다. 현실 세계의 관심 지점과 연결된 가상 요소는 가상 세계가 플레이어가 병렬 현실 게임을 플레이함으로써 상호작용할 수 있는 현실 세계의 숨겨진 차원이라는 환상을 제공할 수 있다. 예를 들어, 플레이어가 현실 세계에서 지리적 좌표를 탐색할 때, 플레이어는 평행 가상 세계에 제공된 가상 요소를 발견하고 그것과 상호작용할 수 있다. 다양한 게임 목표는 병렬 현실 게임의 일부인 이러한 가상 요소와 상호작용하도록 플레이어를 장려할 수 있다. 일부 실시예에서, 게임 서버는 현실 세계 관심 지점 주변의 병렬 현실 게임에서 가상 이벤트를 조율할 수 있다.
가상 세계는 현실 세계의 인접한 지리적 영역에 대응하는 부분(예를 들어, 셀)으로 분할될 수 있다. 다양한 실시예에서, 가상 세계의 이러한 부분은 지리적 인덱싱 프레임워크에 따라 정의된다. 예를 들어, 가상 세계의 이러한 부분은 S2 라이브러리에 따라 정의될 수 있으며, 이 S2 라이브러리는 3차원 객체인 지구를 다양한 입도 레벨(levels of granularity)의 2차원 셀의 세트로 분할하는 셀 계층 구조를 정의한다. 다른 경우에, 상이한 지리적 인덱싱 프레임워크가 사용될 수 있다. 가상 세계의 이러한 부분은 앞서 설명된 가상 요소와 관련된 정보와 같은, 저장을 위해 대응하는 지리적 영역과 관련된 다양한 지리적 위치 데이터를 인덱싱하는데 사용될 수 있다. 시간이 흐름에 따라, 새로운 가상 요소가 가상 세계에 추가될 수 있으며 가상 요소와 관련된 데이터의 양이 증가할 수 있다. 예를 들어, 가상 요소는 현실 세계 내의 관심 지점에 대응할 수 있고 (예컨대, 관심 지점의 소유자 또는 관리자의 의뢰에 따라, 크라우드소싱(crowdsourcing)을 통해, 또는 임의의 다른 적절한 기술을 사용하여) 시스템이 새로운 관심 지점을 학습함에 따라 새로운 가상 요소가 추가될 수 있다. 이와 유사하게, 가상 요소와 관련된 새로운 정보(예컨대, 새로운 사진, 비디오, 이력 정보 등)가 획득되면, 그것은 가상 요소와 함께 저장될 수 있다. 따라서, 가상 세계의 일 부분에 대응하는 데이터의 양은 시간이 지남에 따라 증가할 수 있다.
종래의 접근 방식을 사용하면, 데이터의 양이 증가함에 따라 해당 데이터를 식별하기 위한 질의 응답 시간도 증가한다. 그러나, 일관된 성능의 병렬 현실 게임을 제공하기 위해서는, 가상 세계의 임의의 주어진 부분에 대해 저장된 데이터의 양에 관계없이, 예측 가능한 질의 응답 시간을 제공하는 것이 바람직하다. 아래에서 더 자세히 설명되는 바와 같이, 다양한 실시예들은 바람직하지 않은 질의 응답 시간을 나타내는 오버플로 조건(overflow condition)에 따라 임의의 주어진 샤드에 저장되는 데이터의 양을 제한함으로써 예측 가능한 질의 응답 시간을 제공한다. 가상 세계의 주어진 부분에 대한 데이터를 포함하는 샤드 또는 샤드들을 식별하는데 사용될 수 있는 각 부분에 대한 샤드 카운트 값이 저장될 수 있다. 결정론적 해싱(deterministic hashing) 접근 방법이 가상 세계의 주어진 부분에 대한 데이터를 포함하는 샤드 또는 샤드들을 식별하는데 사용되며 샤드는 관련 데이터에 대해 (예컨대, 동시에) 질의를 받는다. 따라서, 이러한 샤드들 중 어떠한 샤드 내의 데이터 양도 임계값을 초과하지 않기 때문에, 가상 세계의 주어진 부분에 대해 저장된 데이터의 양에 관계없이, 질의 응답 시간은 예측 가능하다.
설명된 실시예가 병렬 현실 게임을 위한 지리적 위치 데이터에 액세스하는 것과 관련되지만, 당업자는 동일하거나 유사한 기술이 다른 목적을 위해 지리적 위치 데이터와 함께 사용될 수 있음을 이해할 것이다. 예를 들어, 지역 명소, 레스토랑, 박물관 및 기타 랜드마크에 대한 지리적 위치 정보가 포함된 관광 안내 애플리케이션은 예측 가능한 질의 응답 시간을 제공하도록 유사한 방식으로 분할(shard)될 수 있다.
예시적인 위치 기반 병렬 현실 게임 시스템
병렬 현실 게임은 현실 세계에서의 플레이어의 이동 및 액션이 가상 세계 내의 액션에 영향을 미치고 그 반대도 성립하도록 현실 세계 지형의 적어도 일 부분과 평행한 가상 세계 지형을 갖는 위치 기반 게임이다. 본 명세서에 제공된 개시 내용을 사용하여, 당업자는 설명된 주제가 사용자의 위치를 확인하는 것이 바람직한 다른 상황에 적용 가능하다는 것을 이해할 것이다. 또한, 컴퓨터 기반 시스템의 고유한 유연성으로 인해, 이 시스템의 구성요소들 간의 작업 및 기능의 매우 다양한 구성, 조합 및 분할이 가능하다. 예를 들어, 본 발명의 양태에 따른 시스템 및 방법들은 단일 컴퓨팅 장치를 사용하여 구현될 수도 있고 또는 (예를 들어, 컴퓨터 네트워크에 연결된) 복수의 컴퓨팅 장치들에 걸쳐 구현될 수도 있다.
도 1은 플레이어의 현실 세계 위치가 병렬 현실 게임 내에서의 활동에 기초하여 확인될 수 있는 네트워크 컴퓨팅 환경(100)의 일 실시예를 도시한다. 네트워크 컴퓨팅 환경(100)은 현실 세계와 평행한 지형을 갖는 가상 세계에서 플레이어들의 상호작용을 제공한다. 특히, 현실 세계 내의 지리적 영역은 가상 세계 내의 대응 영역에 직접 연결 또는 매핑될 수 있다. 플레이어는 현실 세계 내의 다양한 지리적 위치로 이동함으로써 가상 세계에서 이동할 수 있다. 예를 들어, 가상 세계 내의 플레이어의 위치를 업데이트하기 위해 현실 세계에서의 플레이어의 위치가 추적되고 사용될 수 있다. 일반적으로, 플레이어가 가상 세계와 상호작용할 수 있게 해주는 클라이언트 장치(120)의 위치를 찾고 플레이어가 동일한(또는 거의 동일한) 위치에 있다고 가정함으로써 현실 세계 내의 플레이어의 위치가 판정된다. 예를 들어, 다양한 실시예에서, 현실 세계에서의 플레이어의 위치가 가상 세계 내의 가상 요소의 가상 위치에 대응하는 현실 세계 위치의 임계 거리(예를 들어, 10미터, 20미터 등) 이내에 있는 경우, 플레이어는 가상 요소와 상호작용할 수 있다. 편의상, 다양한 실시예가 "플레이어의 위치"를 참조하여 설명되지만, 당업자는 이러한 참조가 플레이어의 클라이언트 장치(120)의 위치를 나타낼 수 있음을 이해할 것이다.
일 실시예에 따른, 병렬 현실 게임의 플레이어를 위한 게임 보드로서 역할할 수 있는 현실 세계(200)와 평행한 가상 세계(210)의 개념도를 도시하는 도 2를 참조한다. 도시된 바와 같이, 가상 세계(210)는 현실 세계(200)의 지형과 평행한 지형을 포함할 수 있다. 특히, 현실 세계(200) 내의 지리적 영역 또는 공간을 정의하는 좌표 범위는 가상 세계(210) 내의 가상 공간을 정의하는 대응하는 좌표 범위에 매핑된다. 현실 세계(200) 내의 좌표 범위는 마을, 이웃, 도시, 캠퍼스, 로케일(locale), 국가, 대륙, 전체 지구, 또는 다른 지리적 영역과 연관될 수 있다. 지리적 좌표 범위 내의 각각의 지리 좌표는 가상 세계 내의 가상 공간 내의 대응하는 좌표에 매핑된다.
가상 세계(210) 내의 플레이어의 위치는 현실 세계(200) 내의 플레이어의 위치에 대응한다. 예를 들어, 현실 세계(200)에서 위치(212)에 위치한 플레이어 A는 가상 세계(210) 내에 대응하는 위치(222)를 갖는다. 이와 유사하게, 현실 세계에서 위치(214)에 위치한 플레이어 B는 가상 세계 내에 대응하는 위치(224)를 갖는다. 플레이어가 현실 세계 내의 지리적 좌표 범위 내에서 이동할 때, 플레이어는 또한 가상 세계(210) 내의 가상 공간을 정의하는 좌표 범위 내에서도 이동한다. 특히, 플레이어가 현실 세계에서 지리적 좌표 범위를 탐색할 때 플레이어의 위치를 추적하기 위해 플레이어가 휴대하는 모바일 컴퓨팅 장치와 관련된 측위 시스템(예컨대, GPS 시스템)이 사용될 수 있다. 현실 세계(200)에서의 플레이어의 위치와 관련된 데이터는 가상 세계(210)에서 가상 공간을 정의하는 대응하는 좌표 범위에서 플레이어의 위치를 업데이트하는데 사용된다. 이러한 방식으로, 플레이어는 체크 인하거나 또는 현실 세계(200) 내의 특별한 분리된 위치에서 위치 정보를 주기적으로 업데이트할 필요 없이 현실 세계(200) 내의 대응하는 지리적 좌표 범위 사이를 단순히 이동함으로써 가상 세계(210) 내의 가상 공간을 정의하는 좌표 범위에서 연속 트랙을 탐색할 수 있다.
위치 기반 게임은 플레이어가 가상 세계 내의 다양한 가상 위치에 흩어져 있는 다양한 가상 요소 및/또는 가상 객체로 이동하고 및/또는 그것과 상호작용할 것을 요구하는 복수의 게임 목표를 포함할 수 있다. 플레이어는 현실 세계에서 가상 요소 또는 객체의 대응하는 위치로 이동함으로써 이러한 가상 위치로 이동할 수 있다. 예를 들어, 측위 시스템은 플레이어가 지속적으로 현실 세계를 탐색할 때, 플레이어가 또한 평행 가상 세계를 지속적으로 탐색하도록 플레이어의 위치를 지속적으로 추적할 수 있다. 그러면, 플레이어는 특정 위치에서 다양한 가상 요소 및/또는 객체와 상호작용하여 하나 이상의 게임 목표를 달성하거나 수행할 수 있다.
예를 들어, 게임 목표는 플레이어가 가상 세계(210) 내의 다양한 가상 위치에 위치한 가상 요소(230)를 캡처하거나 소유권을 주장하도록 요구할 수 있다. 이러한 가상 요소(230)는 현실 세계(200) 내의 랜드마크, 지리적 위치 또는 객체(240)에 연결될 수 있다. 현실 세계의 랜드마크 또는 객체(240)는 예술 작품, 기념물, 건물, 기업, 도서관, 박물관, 또는 다른 적절한 현실 세계의 랜드마크 또는 객체일 수 있다. 이러한 가상 요소(230)를 캡처하기 위해, 플레이어는 현실 세계에서 가상 요소(230)에 연결된 랜드마크 또는 지리적 위치(240)로 이동해야 하고 가상 세계(210) 내의 가상 요소(230)와 임의의 필요한 상호작용을 수행해야 한다. 예를 들어, 도 2의 플레이어 A는 특정 랜드마크(240)와 연결된 가상 요소(230)와 상호작용하거나 그것을 캡처하기 위해 현실 세계(200) 내의 랜드마크(240)로 이동해야 할 수 있다. 가상 요소(230)와의 상호작용은 사진 촬영 및/또는 가상 요소(230)와 연관된 랜드마크 또는 객체(240)에 대한 다른 정보를 확인, 획득 또는 캡처하는 것과 같은, 현실 세계에서의 액션을 요구할 수 있다. 일부 실시예에서, 가상 요소(230)와의 상호작용은 가상 세계(210)에서의 플레이어의 위치와 매칭하는 현실 세계(200)에서의 플레이어의 위치의 검증을 추가로 촉구할 수 있다.
게임 목표는 플레이어가 위치 기반 게임에서 플레이어에 의해 수집된 하나 이상의 가상 아이템을 사용할 것을 요구할 수 있다. 예를 들어, 플레이어는 게임 목표를 달성하는데 유용할 수 있는 가상 아이템(예를 들어, 무기, 생물체, 파워업, 또는 다른 아이템)을 찾기 위해 가상 세계(210)로 이동할 수 있다. 이러한 가상 아이템은 현실 세계(200) 내의 다양한 위치로 이동함으로써 또는 가상 세계(210) 또는 현실 세계(200)에서 다양한 액션을 완료함으로써 발견되거나 수집될 수 있다. 도 2에 도시된 예에서, 플레이어는 가상 아이템(232)을 사용하여 하나 이상의 가상 요소(230)를 캡처한다. 구체적으로, 플레이어는 가상 요소(230) 내에 또는 그 부근의 가상 세계(210) 내의 위치에 가상 아이템(232)을 배치할 수 있다. 이러한 방식으로 하나 이상의 가상 아이템(232)을 배치하는 것은 특정 플레이어 또는 특정 플레이어의 팀/진영에 대한 가상 요소(230)의 캡처를 초래할 수 있다.
하나의 특정 구현에서, 플레이어는 병렬 현실 게임의 일부로서 가상 에너지를 수집해야 할 수 있다. 도 2에 도시된 바와 같이, 가상 에너지(250)는 가상 세계(210) 내의 다양한 위치에 흩어져 있을 수 있다. 플레이어는 실제 세계(200)에서 가상 에너지(250)의 대응하는 위치로 이동함으로써 가상 에너지(250)를 수집할 수 있다. 이 가상 에너지(250)는 가상 아이템에 파워를 공급하기 위해 및/또는 게임 내의 다양한 게임 목표를 수행하기 위해 사용될 수 있다. 모든 가상 에너지(250)를 잃은 플레이어는 게임에서 연결 해제될 수 있다.
본 발명의 양태에 따르면, 병렬 현실 게임은 게임 내 모든 참가자가 동일한 가상 세계를 공유하는 대규모 다중 플레이어 위치 기반 게임일 수 있다. 플레이어들은 별개의 팀 또는 진영으로 나누어질 수 있으며 가상 요소의 소유권을 획득하거나 주장하는 것과 같은, 하나 이상의 게임 목표를 달성하기 위해 함께 협업할 수 있다. 이러한 방식으로, 병렬 현실 게임은 본질적으로 게임 내 플레이어들 간의 협력을 장려하는 소셜 게임일 수 있다. 상대 팀의 플레이어들은 병렬 현실 게임 중에 서로 맞서 작업할 수 있다(또는 때때로 상호 목표를 달성하기 위해 협력할 수도 있다). 플레이어는 가상 아이템을 사용하여 상대 팀의 플레이어를 공격하거나 진행을 방해할 수 있다. 몇몇 경우에, 플레이어는 병렬 현실 게임에서 협력 또는 상호작용하는 이벤트를 위해 현실 세계 위치에 모이도록 장려된다. 이러한 경우, 게임 서버는 플레이어가 정말 물리적으로 존재하고 스푸핑이 아님을 확인하려고 한다.
병렬 현실 게임은 병렬 현실 게임 내에서의 게임 플레이를 향상시키고 장려하기 위해 다양한 특징을 가질 수 있다. 예를 들어, 플레이어는 게임 전체에서 사용될 수 있는 (예컨대, 게임 내 아이템을 구매하기 위한) 가상 화폐 또는 다른 가상 보상을 축적할 수 있다. 플레이어는 하나 이상의 게임 목표를 달성하고 게임 내에서 경험을 얻으면서 다양한 레벨을 통해 발전할 수 있다. 일부 실시예에서, 플레이어는 게임에서 제공되는 하나 이상의 통신 인터페이스를 통해 서로 통신할 수 있다. 또한, 플레이어는 게임 내에서 게임 목표를 달성하는데 사용될 수 있는 향상된 "파워" 또는 가상 아이템을 얻을 수 있다. 본 명세서에 제공된 개시 내용을 사용하는, 당업자는 다양한 다른 게임 특징이 본 발명의 범위를 벗어나지 않고 병렬 현실 게임에 포함될 수 있음을 이해해야 한다.
도 3은 플레이어와 가상 세계(210) 사이의 인터페이스의 일부로서 클라이언트(120)의 디스플레이 상에 제공될 수 있는 게임 인터페이스(300)의 일 실시예를 도시한다. 게임 인터페이스(300)는 가상 세계(210), 및 가상 세계(210) 내의 플레이어 위치(222) 및 가상 요소(230), 가상 아이템(232) 및 가상 에너지(250)의 위치와 같은, 게임의 다양한 다른 양태들을 디스플레이하는데 사용될 수 있는 디스플레이 윈도우(310)를 포함한다. 또한, 사용자 인터페이스(300)는 게임 데이터 정보, 게임 통신, 플레이어 정보, 클라이언트 위치 검증 명령 및 게임과 관련된 기타 정보와 같은, 다른 정보를 디스플레이할 수 있다. 예를 들어, 사용자 인터페이스는 플레이어 이름, 경험 레벨 및 기타 정보와 같은, 플레이어 정보(315)를 디스플레이할 수 있다. 사용자 인터페이스(300)는 다양한 게임 설정 및 게임과 관련된 기타 정보에 액세스하기 위한 메뉴(320)를 포함할 수 있다. 또한, 사용자 인터페이스(300)는 게임 시스템과 플레이어 사이, 및 병렬 현실 게임의 한 명 이상의 플레이어들 사이의 통신을 가능하게 해주는 통신 인터페이스(330)를 포함할 수 있다.
본 발명의 양태에 따르면, 플레이어는 현실 세계에서 클라이언트 장치(120)를 단순히 휴대함으로써 병렬 현실 게임과 상호작용할 수 있다. 예를 들어, 플레이어는 단순히 스마트폰 상에서 병렬 현실 게임과 관련된 애플리케이션에 액세스하고 스마트폰과 함께 현실 세계에서 이동함으로써 게임을 플레이할 수 있다. 이와 관련하여, 플레이어가 위치 기반 게임을 플레이하기 위해 디스플레이 스크린 상에서 가상 세계의 시각적 표현을 계속해서 볼 필요는 없다. 결과적으로, 사용자 인터페이스(300)는 사용자가 게임과 상호작용할 수 있게 해주는 복수의 비시각적 요소를 포함할 수 있다. 예를 들어, 게임 인터페이스는 플레이어가 게임에서 가상 요소 또는 객체에 접근할 때 또는 병렬 현실 게임에서 중요한 이벤트가 발생할 때 플레이어에게 가청 알림을 제공할 수 있다. 플레이어는 오디오 컨트롤(340)을 통해 이러한 가청 알림을 제어할 수 있다. 가상 요소 또는 이벤트의 유형에 따라 다양한 유형의 가청 알림이 사용자에게 제공될 수 있다. 가상 요소 또는 객체에 대한 플레이어의 근접도에 따라 가청 알림의 빈도 또는 볼륨이 증가하거나 감소할 수 있다. 진동 알림 또는 기타 적절한 알림 또는 신호와 같은, 다른 비시각적 알림 및 신호가 사용자에게 제공될 수도 있다.
본 명세서에 제공된 개시내용을 사용하여, 당업자는 수많은 게임 인터페이스 구성 및 기본 기능이 본 개시내용에 비추어 명백할 것임을 이해할 것이다. 본 발명은 임의의 하나의 특정 구성으로 제한되도록 의도되지 않는다.
다시 도 1을 참조하면, 클라이언트(120)는 게임 시스템(100)과 인터페이스하기 위해 플레이어에 의해 사용될 수 있는 임의의 휴대용 컴퓨팅 장치일 수 있다. 예를 들어, 클라이언트(120)는 무선 장치, 개인 휴대 정보 단말기(PDA), 휴대용 게임기, 휴대폰, 스마트폰, 태블릿, 내비게이션 시스템, 휴대용 GPS 시스템, 웨어러블 컴퓨팅 장치, 하나 이상의 프로세서를 갖는 디스플레이, 또는 다른 그러한 장치일 수 있다. 요컨대, 클라이언트(120)는 플레이어가 게임 시스템(100)과 상호작용할 수 있게 해주는 임의의 컴퓨터 장치 또는 시스템일 수 있다.
클라이언트(120)는 하나 이상의 프로세서 및 하나 이상의 컴퓨터 판독 가능 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 프로세서로 하여금 오퍼레이션을 수행하게 만드는 명령을 저장할 수 있다. 클라이언트(120)는 디스플레이 스크린, 터치 스크린, 터치 패드, 데이터 입력 키, 스피커, 카메라 및/또는 음성 인식에 적합한 마이크로폰과 같은, 플레이어와 정보를 주고 받기 위한 다양한 입/출력 장치를 포함할 수 있다. 또한, 클라이언트(120)는 움직임 센서, 가속도계, 자이로스코프, 기타 관성 측정 장치(IMU), 기압계, 측위 시스템, 온도계, 광 센서 등을 포함하지만 이에 제한되지 않는, 클라이언트(120)로부터의 데이터를 기록하기 위한 다른 다양한 센서를 포함할 수 있다. 클라이언트(120)는 네트워크(130)를 통한 통신을 제공하기 위한 네트워크 인터페이스를 더 포함할 수 있다. 네트워크 인터페이스는 예를 들어 송신기, 수신기, 포트, 컨트롤러, 안테나, 또는 기타 적절한 구성요소를 포함하는, 하나 이상의 네트워크와 인터페이스하기 위한 임의의 적절한 구성요소를 포함할 수 있다.
네트워크 컴퓨팅 환경(100)이 위치 기반 게임을 제공하기 때문에, 클라이언트(120)는 스마트폰 또는 태블릿과 같은 플레이어가 쉽게 휴대하거나 다른 방식으로 운반할 수 있는 휴대용 컴퓨팅 장치인 것이 바람직하다. 도 1에 도시된 실시예에서, 각 클라이언트(120)는 게임 모듈(122) 및 측위 모듈(124)과 같은 소프트웨어 컴포넌트를 포함한다. 다른 실시예에서, 클라이언트(120)는 (클라이언트(120)의 구성요소이거나 또는 클라이언트(120) 외부에 있는) 디스플레이, 다양한 입력 장치(예를 들어, 터치스크린, 마우스, 스타일러스 등)와 같은 상이한 또는 추가적인 요소를 포함할 수 있다.
게임 모듈(122)은 병렬 현실 게임에 참여하기 위한 인터페이스를 플레이어에게 제공한다. 게임 서버(110)는 게임 서버(110)로부터 멀리 떨어진 위치에 있는 플레이어에게 로컬 버전의 게임을 제공하기 위해 클라이언트(120)에 있는 게임 모듈(122)이 사용하기 위한 게임 데이터를 네트워크(130)를 통해 클라이언트(120)에 전송한다. 서버(110)는 네트워크(130)를 통해 통신을 제공하기 위한 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스는, 예를 들어, 송신기, 수신기, 포트, 컨트롤러, 안테나, 또는 기타 적절한 구성요소를 포함하는, 하나 이상의 네트워크와 인터페이스하기 위한 임의의 적절한 구성요소를 포함할 수 있다.
클라이언트(120)에 의해 실행되는 게임 모듈(122)은 플레이어와 병렬 현실 게임 사이에 인터페이스를 제공한다. 게임 모듈(122)은 게임과 관련된 가상 세계를 디스플레이하고(예컨대, 가상 세계의 이미지를 렌더링하고), 사용자가 가상 세계에서 상호작용하여 다양한 게임 목표를 수행할 수 있게 해주는 사용자 인터페이스를 클라이언트(120)와 연관된 디스플레이 장치 상에 제공할 수 있다. 또한, 게임 모듈(122)은 플레이어에게 디스플레이 스크린을 볼 것을 요구하지 않고도 플레이어가 게임과 상호작용할 수 있게 해주는 다양한 다른 출력을 제어할 수 있다. 예를 들어, 게임 모듈(122)은 다양한 오디오, 진동, 또는 플레이어가 디스플레이 스크린을 보지 않고도 게임을 플레이할 수 있게 해주는 다른 알림을 제어할 수 있다. 게임 모듈(122)은 게임 서버(110)로부터 수신된 게임 데이터에 액세스하여 게임의 정확한 표현을 사용자에게 제공할 수 있다. 게임 모듈(122)은 플레이어 입력을 수신 및 처리하고 네트워크(130)를 통해 게임 서버(110)에 업데이트를 제공할 수 있다.
측위 모듈(124)은 클라이언트(120)의 위치를 모니터링하기 위한 임의의 장치 또는 회로일 수 있다. 예를 들어, 측위 모듈(124)은 위성 항법 측위 시스템(예를 들어, GPS 시스템, 갈릴레오 측위 시스템, 글로벌 항법 위성 시스템(GLONASS: Global Navigation satellite system), 바이두 위성 항법 및 측위 시스템(BeiDou Satellite Navigation and Positioning system)), 관성 항법 시스템(inertial navigation system), 추측 항법 시스템(dead reckoning system)을 사용함으로써, IP 주소를 기반으로 하여, 삼각측량 및/또는 셀룰러 타워 또는 와이파이(Wi-Fi) 핫스팟에 대한 근접성, 및/또는 위치를 판정하기 위한 기타 적절한 기술을 사용함으로써, 실제 또는 상대 위치를 판정할 수 있다. 측위 모듈(124)은 클라이언트(120) 위치를 정확하게 찾는데 도움이 될 수 있는 다양한 다른 센서들을 더 포함할 수 있다.
플레이어가 현실 세계에서 클라이언트(120)와 함께 이동할 때, 측위 모듈(124)은 플레이어의 위치를 추적하고 플레이어 위치 정보를 게임 모듈(122)에 제공한다. 게임 모듈(122)은 현실 세계에서의 플레이어의 실제 위치에 기초하여 게임과 연관된 가상 세계 내의 플레이어 위치를 업데이트한다. 따라서, 플레이어는 단순히 클라이언트(120)를 현실 세계에서 휴대하거나 운반함으로써 가상 세계와 상호작용할 수 있다. 특히, 가상 세계에서의 플레이어의 위치는 현실 세계에서의 플레이어의 위치에 대응할 수 있다. 게임 모듈(122)은 범용 게임 모듈(112)이 게임 전체에 걸쳐 모든 플레이어 위치의 추적을 유지하도록 네트워크(130)를 통해 게임 서버(110)에 플레이어 위치 정보를 제공할 수 있다. 플레이어와 관련된 위치 정보는, 플레이어의 위치 정보에 액세스해야 하고 그 위치 정보가 (예를 들어 가상 세계 내의 플레이어 위치를 업데이트하기 위해) 게임 환경에서 어떻게 사용되어야 하는지를 플레이어에게 통지한 후 권한이 부여된 경우에만, 활용된다는 것을 이해해야 한다. 또한, 플레이어와 관련된 임의의 위치 정보는 플레이어의 개인 정보를 보호하는 방식으로 저장 및 유지될 것이다.
네트워크 컴퓨팅 환경(100)은 클라이언트-서버 아키텍처를 사용하며, 여기서 게임 서버(110)는 클라이언트(120)의 플레이어에게 병렬 현실 게임을 제공하기 위해 네트워크(130)를 통해 하나 이상의 클라이언트(120)와 통신한다. 네트워크 컴퓨팅 환경(100)은 또한 스폰서/광고주 시스템 또는 비즈니스 시스템과 같은 다른 외부 시스템을 포함할 수 있다. 도 1에 하나의 클라이언트(120)만이 도시되어 있지만, 임의의 수의 클라이언트(120) 또는 다른 외부 시스템이 네트워크(130)를 통해 게임 서버(110)에 연결될 수 있다. 또한, 네트워크 컴퓨팅 환경(100)은 상이한 또는 추가적인 요소를 포함할 수 있고, 기능들은 아래에 설명한 것과는 상이한 방식으로 클라이언트(120)와 서버(110) 사이에 분배될 수 있다.
게임 서버(110)는 임의의 컴퓨팅 장치일 수 있고 하나 이상의 프로세서 및 하나 이상의 컴퓨터 판독 가능 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 프로세서로 하여금 오퍼레이션을 수행하게 만드는 명령을 저장할 수 있다. 게임 서버(110)는 게임 데이터베이스(115)를 포함할 수 있고, 또는 게임 데이터베이스(115)와 통신할 수 있다. 게임 데이터베이스(115)는 네트워크(130)를 통해 클라이언트(들)(120)에 서비스될 또는 제공될 병렬 현실 게임에서 사용되는 게임 데이터를 저장한다.
게임 데이터베이스(115)에 저장된 게임 데이터는 (1) 병렬 현실 게임 내의 가상 세계와 관련된 데이터(예컨대, 디스플레이 장치 상에 가상 세계를 렌더링하는데 사용되는 이미지 데이터, 가상 세계 내 위치의 지리적 좌표 등); (2) 병렬 현실 게임의 플레이어와 관련된 데이터(예컨대, 플레이어 정보, 플레이어 경험 레벨, 플레이어 통화, 가상 세계/현실 세계에서의 현재 플레이어 위치, 플레이어 에너지 레벨, 플레이어 선호도, 팀 정보, 진영 정보 등을 포함하지만 이에 제한되지는 않는 플레이어 프로필); (3) 게임 목표와 관련된 데이터(예컨대, 현재 게임 목표, 게임 목표의 상태, 과거 게임 목표, 미래 게임 목표, 원하는 게임 목표 등과 관련된 데이터); (4) 가상 세계 내의 가상 요소와 관련된 데이터(예컨대, 가상 요소의 위치, 가상 요소의 유형, 가상 요소와 관련된 게임 목표, 가상 요소에 대한 대응하는 실제 세계 위치 정보, 가상 요소의 동작, 가상 요소의 관련성 등); (5) 가상 세계 요소에 연결된 현실 세계 객체, 랜드마크, 위치와 관련된 데이터(예컨대, 현실 세계 객체/랜드마크의 위치, 현실 세계 객체/랜드마크에 대한 설명, 현실 세계 객체에 연결된 가상 요소의 관련성 등); (6) 게임 상태(예컨대, 현재 플레이어 수, 게임 목표의 현재 상태, 플레이어 순위표 등); (7) 플레이어 액션/입력과 관련된 데이터(예컨대, 현재 플레이어 위치, 과거 플레이어 위치, 플레이어 이동, 플레이어 입력, 플레이어 질문, 플레이어 통신 등); 및 (8) 병렬 현실 게임의 구현 동안 사용되거나, 관련되거나, 또는 획득된 임의의 다른 데이터를 포함할 수 있다. 게임 데이터베이스(115)에 저장된 게임 데이터는 오프라인으로 또는 실시간으로 시스템 관리자에 의해 그리고/또는 네트워크(130)를 통해 시스템(100)의 사용자/플레이어로부터, 예컨대, 하나 이상의 클라이언트(120)로부터 수신된 데이터에 의해 채워질 수 있다.
게임 서버(110)는 (예를 들어, 원격 프로시저 호출(RPC: remote procedure call)을 통해) 하나 이상의 클라이언트(120)로부터 게임 데이터에 대한 요청을 수신하고 네트워크(130)를 통해 이러한 요청에 응답하도록 구성될 수 있다. 예를 들어, 게임 서버(110)는 게임 데이터를 하나 이상의 데이터 파일로 인코딩하고 그 데이터 파일을 클라이언트(120)에 제공할 수 있다. 또한, 게임 서버(110)는 네트워크(130)를 통해 하나 이상의 클라이언트(120)로부터 게임 데이터(예를 들어, 플레이어 위치, 플레이어 액션, 플레이어 입력 등)를 수신하도록 구성될 수 있다. 예를 들어, 클라이언트(120)는 플레이어 입력 및 기타 업데이트를 게임 서버(110)로 주기적으로 전송하도록 구성될 수 있으며, 이는 게임 서버(110)가 게임에 대한 임의의 모든 변경된 상태를 반영하기 위해 게임 데이터베이스(115) 내의 게임 데이터를 업데이트하는데 사용된다.
도시된 실시예에서, 서버(110)는 범용 게임 모듈(112), 상업 게임 피처 모듈(114), 데이터 수집 모듈(116), 이벤트 모듈(118), 및 질의 모듈(119)을 포함한다. 게임 서버(110)는 원격 분산형 게임 데이터베이스(115)로부터의 게임 데이터에 액세스한다. 질의 모듈(119) 및 게임 데이터베이스(115)의 다양한 실시예는 도 4를 참조하여 아래에서 더 상세히 설명된다. 다른 실시예에서, 게임 서버(110)는 상이한 및/또는 추가적인 요소를 포함한다. 또한, 이러한 기능들은 설명된 것과 상이한 방식으로 요소들 간에 분산될 수 있다. 예를 들어, 게임 데이터베이스(115)는 게임 서버(110)에 통합될 수 있다.
범용 게임 모듈(112)은 모든 플레이어를 위한 병렬 현실 게임을 호스팅하고 모든 플레이어를 위한 병렬 현실 게임의 현재 상태에 대한 권위 있는 소스로서 역할한다. 범용 게임 모듈(112)은 클라이언트(120)로부터 게임 데이터(예를 들어, 플레이어 입력, 플레이어 위치, 플레이어 액션, 랜드마크 정보 등)를 수신하고 수신된 게임 데이터를 병렬 현실 게임의 모든 플레이어를 위한 전체 병렬 현실 게임에 통합한다. 또한, 범용 게임 모듈(112)은 네트워크(130)를 통해 클라이언트(120)로의 게임 데이터의 전달을 관리할 수 있다. 또한, 범용 게임 모듈(112)은 클라이언트(120)와 게임 서버(110) 사이의 연결을 보호하는 것, 다양한 클라이언트(120) 사이의 연결을 구축하는 것, 및 다양한 클라이언트(120)의 위치를 확인하는 것을 포함하지만, 이에 제한되지 않는, 클라이언트(120)의 보안 양태를 통제할 수 있다.
상업 게임 피처 모듈(114)은, 하나가 포함된 실시예에서, 범용 게임 모듈(112)의 일부일 수도 있고, 그것으로부터 분리될 수도 있다. 상업 게임 피처 모듈(114)은 현실 세계에서의 상업 활동과 연결된 병렬 현실 게임 내의 다양한 게임 특징의 포함을 관리할 수 있다. 예를 들어, 상업 게임 피처 모듈(114)은 병렬 현실 게임에서의 상업 활동과 연결된 게임 특징을 포함하기 위해 네트워크(130) 상으로 (네트워크 인터페이스를 통해) 후원자/광고주, 기업, 또는 다른 엔티티와 같은 외부 시스템으로부터 요청을 수신할 수 있다. 상업 게임 피처 모듈(114)은 병렬 현실 게임 내에 이러한 게임 특징을 포함시키도록 배열할 수 있다.
게임 서버(110)는 데이터 수집 모듈(116)을 더 포함할 수 있다. 데이터 수집 모듈(116)은, 하나가 포함된 실시예에서, 범용 게임 모듈(112)의 일부일 수도 있고, 또는 그것으로부터 분리될 수도 있다. 데이터 수집 모듈(116)은 현실 세계에서의 데이터 수집 활동과 연결된, 병렬 현실 게임 내의 다양한 게임 특징의 포함을 관리할 수 있다. 예를 들어, 데이터 수집 모듈(116)은 병렬 현실 게임에서의 데이터 수집 활동과 연결된 게임 특징을 포함하도록 게임 데이터베이스(115)에 저장된 게임 데이터를 수정할 수 있다. 또한, 데이터 수집 모듈(116)은 데이터 수집 활동에 따라 플레이어가 수집한 데이터를 분석 및 수집하고 그 데이터를 다양한 플랫폼에 의한 액세스를 위해 제공할 수 있다.
이벤트 모듈(118)은 병렬 현실 게임에서의 이벤트에 대한 플레이어 액세스를 관리한다. "이벤트"라는 용어가 편의상 사용되었지만, 이 용어가 특정 장소 또는 시간의 특정 이벤트를 지칭할 필요는 없음을 이해해야 한다. 오히려, 이것은 플레이어가 해당 콘텐츠에 액세스할 수 있는지 여부를 판정하기 위해 하나 이상의 액세스 기준이 사용되는 액세스 제어 게임 콘텐츠의 임의의 프로비전(provision)을 나타낼 수 있다. 이러한 콘텐츠는 액세스 제어가 거의 또는 전혀 없는 게임 콘텐츠를 포함하는 더 큰 병렬 현실 게임의 일부일 수 있고, 또는 독립형 액세스 제어 병렬 현실 게임일 수 있다.
질의 모듈(119)은 게임 데이터베이스(115) 상에서 질의를 구성 및 실행하고, 그 결과를 네트워크 컴퓨팅 환경(100)의 다른 구성요소(예를 들어, 병렬 현실 게임에서 사용하기 위한 클라이언트 장치(120)의 게임 모듈(122))에 제공한다. 도 4는 게임 데이터베이스(115)의 일 실시예를 도시한다. 도시된 실시예에서, 게임 데이터베이스(115)는 N개의 노드(410A-N)를 포함한다. 각각의 노드(410)는 다양한 물리적 머신 또는 다양한 가상 머신일 수 있다. 따라서, 노드(410)는 독립적으로 질의를 받을 수 있다. 지리적 영역을 나타내는 셀에 대응하는 샤드에 대한 지리적 위치 데이터가 노드(410)에 추가된 때, 질의 모듈(119)은 그 노드에 저장된 데이터의 질의에 대한 응답 시간을 나타내고, 샤드의 확장 질의에 의해, 바람직하지 않은 오버플로 조건에 대해 노드를 모니터링한다. 오버플로 조건은 노드에 저장된 데이터의 양, 노드에 저장된 아이템의 수, 노드 상의 질의들의 질의 응답 시간, 또는 노드에 저장된 데이터의 양을 나타내는 임의의 다른 적절한 파라미터, 및 이에 따라 예상되는 질의 응답 시간에 대한 제한일 수 있다. 오버플로 조건이 충족되면, 질의 모듈(119)은 셀에 대한 샤드 카운트를 증가시키고 상이한 노드(410) 상에서 그 셀에 대한 새로운 샤드를 시작한다. 따라서, 주어진 셀에 대한 데이터의 양이 증가함에 따라, 그 셀에 대응하는 지리적 위치 데이터가 저장되어 있는 노드(410)의 수는 동적으로 증가하지만, 임의의 하나의 노드 상의 데이터의 양은 질의 응답 시간이 예측 가능한 상태로 유지되도록 제한된다. 일부 실시예에서, 질의 모듈(119)은 그 셀과 연관된 샤드가 다른 노드로 확장되었음을 나타내는, 노드 상의 샤드와 연관된 플래그(예를 들어, 저장된 파라미터)를 설정한다. 예를 들어, 질의 모듈(119)은 셀에 대한 새로운 데이터를 저장할 때 그 셀과 연관된 하나 이상의 샤드에 대한 플래그가 설정되어 있는지 여부를 체크할 수 있다. 이 경우, 질의 모듈(119)이 특정 샤드에 대한 플래그가 설정되어 있다고 판정하면, 질의 모듈(119)은 그것이 플래그가 설정되지 않은 샤드를 식별할 때까지, 또는 그 셀에 대해 새로운 샤드가 생성될 때까지 다른 샤드 상에 데이터를 저장하려고 시도할 수 있다.
다시 도 1을 참조하면, 질의 모듈(119)은 클라이언트 장치(120)의 위치에 기초하여 클라이언트 장치(120)로부터 수신된 요청에 응답하여 지리적 위치 데이터에 대한 질의를 생성한다. 이 질의는 지리적 위치 데이터를 검색, 업데이트 또는 다른 방식으로 조작할 수 있다. 질의 모듈(119)은 요청된 지리적 위치 데이터를 포함하는 질의 응답과 같은, 질의 받은 지리적 위치 데이터의 처리에 기초하여 클라이언트 장치(120)에 질의 응답을 추가로 제공한다. 일 실시예에서, 질의 모듈(119)은 클라이언트(120)로부터 위치(예를 들어, 측위 모듈(124)에 의해 생성된 GPS 위치)를 수신하고, 예컨대, 그 위치를 포함하는 지리적 영역에 대응하는 가상 세계의 부분을 나타내는 셀에 대한 지리적 셀 인덱스를 질의함으로써, 그 위치에 기초하여 가상 세계의 하나 이상의 관심 부분을 식별한다. 예를 들어, S2 셀이 사용되는 경우, 질의 모듈은 클라이언트(120)가 위치해 있는 특정 레벨(예를 들어, 레벨 12)의 S2 셀, 적어도 일 부분이 해당 위치의 지정된 반경(예컨대, 2km) 내에 있는 특정 레벨(예컨대, 레벨 16)의 임의의 S2 셀, 완전히 지정된 반경 내에 있는 지정된 레벨의 임의의 S2 셀, 또는 임의의 다른 적절한 세트의 S2 셀(예컨대, 클라이언트의 현재 이동 방향을 설명하는 타원 내의 셀)을 식별할 수 있다.
각 S2 셀은 셀 ID를 갖는다. 질의 모듈(119)은 또한 셀에 대한 데이터를 포함하는 샤드의 수를 나타내는 샤드 넘버를 저장한다. 질의 모듈(119)은 셀에 대한 데이터를 포함하는 각각의 샤드에 대한 고유 키를 생성하기 위해 셀 ID 및 샤드 넘버를 사용한다. 고유 키 또는 키들은 0에서 샤드 넘버까지의 각 정수 값과 셀 ID를 결합하여 생성될 수 있다. 예를 들어, 셀 ID가 7686이고 샤드 넘버가 3인 경우, 7686-0, 7686-1, 7686-2와 같은 3개의 키가 생성될 수 있다. 접합(concatenation)과 같은, 고유 키를 생성하는 임의의 적절한 조합 방법이 사용될 수 있다.
질의 모듈(119)은 관련 데이터를 갖는 각각의 샤드가 분산 데이터베이스(115)의 어떤 노드에 위치하는지를 고유 키에 기초하여 판정한다. 일부 실시예에서, 질의 모듈(119)은 고유 키를 슬롯 넘버로 변환하기 위해 결정론적 해싱 기술을 적용한다. 예를 들어, 데이터베이스(115)는 최대 슬롯 수(예를 들어, 16565)를 가질 수 있고, 질의 모듈(119)은 슬롯 넘버를 생성하기 위해 최대 슬롯 수를 사용하여 고유 키에 모듈러 해싱 기술(modular hashing technique)을 적용할 수 있다(예를 들어, 고유 키 모듈로(modulo) 최대 슬롯 넘버). 다른 실시예에서, 고유 키를 슬롯 넘버로 변환하기 위해 다른 결정론적 해싱 기술이 사용될 수 있다.
질의 모듈(119)은 데이터베이스(115)의 어떤 노드(410)가 각각의 슬롯을 저장하는지를 나타내는 매핑을 저장한다. 이러한 매핑에 기초하여, 질의 모듈(119)은 셀 데이터에 대해 지시된 노드(410) 각각에 대한 동시 질의를 생성한다. 각각의 동시 질의는 예측 가능한 응답 시간을 가지며, 확장에 의해 전체 동시 질의는 예측 가능한 응답 시간을 갖고, 이는 앞서 설명한 질의 모듈(119)에 의한 오버플로 조건에 대한 모니터링에 기인한다. 각각의 동시 질의는 대응하는 노드(410)에 의해 저장된 샤드에 대한 지리적 위치 데이터를 반환한다. 질의 모듈(119)은 각각의 질의로부터의 결과를 종합하고(예를 들어, 접합하고) 그들을 요청하는 클라이언트(120)에 제공한다.
네트워크(130)는 근거리 네트워크(예를 들어, 인트라넷), 광역 네트워크(예를 들어, 인터넷), 또는 이들의 몇몇 조합과 같은 임의의 유형의 통신 네트워크일 수 있다. 또한, 네트워크는 클라이언트(120)와 게임 서버(110) 사이의 직접 연결을 포함할 수 있다. 일반적으로, 게임 서버(110)와 클라이언트(120) 사이의 통신은 다양한 통신 프로토콜(예를 들어, TCP/IP, HTTP, SMTP, FTP), 인코딩 또는 포맷(예컨대, HTML, XML, JSON) 및/또는 보호 스킴(예컨대, VPN, 보안 HTTP, SSL)을 사용하여, 임의의 유형의 유선 및/또는 무선 연결을 사용하는 네트워크 인터페이스를 통해 수행될 수 있다.
본 명세서에 논의된 기술은 서버, 데이터베이스, 소프트웨어 애플리케이션, 및 기타 컴퓨터 기반 시스템 뿐만 아니라 그러한 시스템으로/으로부터 전송된 정보 및 취해진 액션을 참조한다. 당업자는 컴퓨터 기반 시스템의 고유한 유연성으로 인해 구성요소들 사이에서 작업 및 기능의 매우 다양한 구성, 조합 및 분할이 가능하다는 것을 이해할 것이다. 예를 들어, 본 명세서에서 논의된 서버 프로세스는 단일 서버 또는 함께 작동하는 복수의 서버를 사용하여 구현될 수 있다. 달리 명시된 경우를 제외하면, 데이터베이스 및 애플리케이션은 단일 시스템 상에 구현될 수도 있고, 또는 복수의 시스템에 걸쳐 분산될 수도 있다. 이와 마찬가지로, 분산된 구성요소들은 순차적으로 또는 동시에 작동할 수 있다.
또한, 본 명세서에서 논의된 시스템 및 방법이 사용자에 대한 개인 정보에 액세스하고 그것을 분석하거나, 또는 위치 정보와 같은 개인 정보를 활용하는 상황에서, 사용자는 프로그램 또는 특징부가 정보를 수집하는지 여부를 제어하고 시스템 또는 기타 애플리케이션으로부터 콘텐츠를 수신할지 여부 및/또는 수신 방법을 제어할 기회를 제공받을 수 있다. 어떤 정보가 수집되고 그 정보가 어떻게 사용되는지에 대한 의미 있는 통지가 사용자에게 제공될 때까지 이러한 정보 또는 데이터는 수집되거나 사용되지 않는다. 이러한 정보는 사용자가 동의하지 않는 한 수집되거나 사용되지 않으며, 이 동의는 사용자에 의해 언제든지 철회되거나 수정될 수 있다. 따라서, 사용자는 사용자에 대한 정보가 수집되고 애플리케이션 또는 시스템에 의해 사용되는 방법에 대한 통제권을 가질 수 있다. 또한, 어떤 정보 또는 데이터는 그것이 저장 또는 사용되기 전에 개인 식별 가능 정보가 제거되도록 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자에 대한 개인 식별 가능 정보가 파악될 수 없도록 사용자의 식별정보를 처리할 수 있다.
예시적인 방법
도 5는 예측 가능한 질의 응답 시간을 갖는 임의의 수의 아이템을 포함하는 지리적 위치 데이터를 제공하기 위한 예시적인 방법(500)을 도시한다. 도 5의 단계들은 방법(500)을 수행하는 질의 모듈(119)의 관점에서 설명된다. 그러나, 일부 또는 모든 단계는 다른 엔티티 및/또는 구성요소에 의해 수행될 수 있다. 또한, 일부 실시예는 단계들을 동시에 수행할 수 있고, 또는 단계들을 상이한 순서로 수행할 수도 있고, 또는 상이한 단계를 수행할 수도 있다.
도 5에 도시된 실시예에서, 방법(500)은 질의 모듈(119)이 지리적 위치(예를 들어, 클라이언트(120)의 GPS 좌표)를 나타내는 요청을 수신하는 단계로 시작한다. 앞서 설명된 바와 같이, 이 요청은 지리적 위치 데이터를 검색, 업데이트 또는 다른 방식으로 수정하기 위한 요청과 같은, 다양한 데이터베이스 질의를 설명할 수 있다. 질의 모듈(119)은 지리적 위치에 기초하여 하나 이상의 지리적 영역을 식별한다(520). 예를 들어, 앞서 설명된 바와 같이, 지리적 영역은 이러한 위치로부터 사전 결정된 거리 내의 특정 레벨의 S2 셀일 수 있다.
질의 모듈(119)은 데이터베이스의 하나 이상의 데이터베이스 샤드를 식별하고(530), 여기서 하나 이상의 데이터베이스 샤드 각각은 하나 이상의 지리적 영역 중 각각의 지리적 영역에 대응한다. 앞서 설명된 바와 같이, 샤드는 결정론적 해싱 기술을 사용하여 식별될 수 있다. 질의 모듈(119)은 하나 이상의 지리적 영역에 대응하는 지리적 위치 데이터에 대해 식별된 샤드에 질의하며(540), 이 질의(540)는 예측 가능한 질의 응답 시간을 갖는다. 전술한 바와 같이, 식별된 데이터베이스 샤드가 복수의 데이터베이스 샤드를 포함하는 경우, 질의 모듈(119)은 복수의 샤드를 동시에 질의할 수 있다. 질의 모듈(119)은 질의 받은 지리적 위치 데이터를 사용하여 질의 결과를 처리하고(550) 수신된 요청에 대한 응답으로서 질의 결과를 반환한다(560). 예를 들어, 질의 모듈(119)이 동시에 복수의 샤드에 질의하는 경우, 질의 모듈(119)은 동시 질의 각각으로부터의 질의 결과(예를 들어, 각각의 샤드 각각으로부터 검색된 지리적 위치 정보)를 종합하여 전체 질의 결과를 만들고 수신된 요청에 대한 응답으로서 그 전체 질의 결과를 제공할 수 있다.
예시적인 컴퓨팅 시스템
도 6은 기계 판독 가능 매체로부터 명령을 판독하고 그들을 프로세서(또는 컨트롤러)에서 실행할 수 있는 예시적인 기계의 구성요소를 도시하는 블록도이다. 구체적으로, 도 6은 컴퓨터 시스템(600)의 예시적인 형태의 기계의 도식적 표현을 도시한다. 컴퓨터 시스템(600)은 기계로 하여금 본 명세서 설명된 임의의 방법(또는 프로세스)을 수행하게 만들기 위한 명령(624)(예를 들어, 프로그램 코드 또는 소프트웨어)을 실행하는데 사용될 수 있다. 이 기계는 독립형 장치로서 작동할 수 있고 또는 다른 연결된(예컨대, 네트워크로 연결된) 장치와 함께 설명된 기능들을 제공할 수 있다. 이 기계는 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트의 자격으로서 작동할 수 있고, 또는 피어 투 피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 작동할 수 있다.
이 기계는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 PC, 스마트폰, 네트워크 라우터, 또는 기계가 취해야 할 액션을 지정하는 명령(1024)(순차적 또는 비순차적)을 실행할 수 있는 임의의 다른 기계일 수 있다. 또한, 단일 머신만이 도시되어 있지만, "기계"이라는 용어는 본 명세서에서 논의된 임의의 하나 이상의 방법을 수행하기 위해 명령(624)을 개별적으로 또는 공동으로 실행하는 임의의 기계 집합체도 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(600)은 하나 이상의 처리 장치(일반적으로 하나 이상의 프로세서(602))를 포함한다. 프로세서(602)는 예를 들어 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), 컨트롤러, 상태 머신, 하나 이상의 주문형 집적 회로(ASIC:application specific integrated circuit), 하나 이상의 무선 주파수 집적 회로(RFIC: radio-frequency integrated circuit) 또는 이들의 임의의 조합이다. 본 명세서에서 프로세서(602)에 대한 임의의 참조는 단일 프로세서 또는 다중 프로세서를 나타낼 수 있다. 컴퓨터 시스템(600)은 또한 메인 메모리(604)를 포함한다. 컴퓨터 시스템은 저장 장치(616)를 포함할 수 있다. 프로세서(602), 메모리(604), 및 저장 장치(616)는 버스(608)를 통해 통신한다.
또한, 컴퓨터 시스템(600)은 정적 메모리(606), (예를 들어, 플라즈마 디스플레이 패널(PDP), 액정 디스플레이(LCD), 또는 프로젝터를 구동하기 위한) 디스플레이 드라이버(610)를 포함할 수 있다. 또한, 컴퓨터 시스템(600)은 버스(608)를 통해 통신하도록 구성된 영숫자 입력 장치(612)(예를 들어, 키보드), 커서 제어 장치(614)(예를 들어, 마우스, 트랙볼, 조이스틱, 모션 센서, 터치스크린, 또는 다른 포인팅 도구), 신호 발생 장치(618)(예를 들어, 스피커) 및 네트워크 인터페이스 장치(620)를 포함한다. 또한, 컴퓨터 시스템(600)은 마이크로폰, 카메라, 기압계, 자이로스코프, 가속도계 등과 같은 다른 입력 장치/센서를 포함할 수 있다.
저장 장치(616)는 본 명세서에 설명된 임의의 하나 이상의 방법 또는 기능을 구현하는 명령(624)(예를 들어, 소프트웨어)가 저장되어 있는 기계 판독 가능 매체(622)를 포함한다. 또한, 명령(624)은 컴퓨터 시스템(600), 메인 메모리(604) 및 프로세서(602)에 의해 실행되는 동안 메인 메모리(604) 내에 또는 프로세서(602) 내에(예를 들어, 프로세서의 캐시 메모리 내에) 완전히 또는 적어도 부분적으로 상주할 수 있고, 메인 메모리(604) 및 프로세서(602)는 또한 기계 판독 가능 매체를 구성한다. 명령(624)은 네트워크 인터페이스 장치(620)를 통해 네트워크(130)를 통해 전송 또는 수신될 수 있다.
기계 판독 가능 매체(622)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 매체"라는 용어는 명령(624)을 저장할 수 있는 단일 매체 또는 복수의 매체(예를 들어, 중앙 집중형 또는 분산형 데이터베이스, 또는 관련 캐시 및 서버)를 포함하는 것으로 간주되어야 한다. 또한, "기계 판독 가능 매체"라는 용어는 기계에 의해 실행되고 기계로 하여금 본 명세서에 개시된 임의의 하나 이상의 방법을 수행하게 만드는 명령(624)을 저장할 수 있는 임의의 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체 형태의 데이터 저장소를 포함하지만, 이에 제한되는 것은 아니다.
추가 고려사항
전술한 실시예의 설명은 예시의 목적으로 제공되었으며, 하나도 빠짐없이 철저하게 기술하거나 공개된 정확한 형태로 특허권을 제한하려는 의도가 아니다. 관련 기술분야의 당업자들은 상기 개시내용에 비추어 많은 수정 및 변형이 가능함을 이해할 수 있다.
본 설명의 일부는 정보에 대한 오퍼레이션의 알고리즘 및 기호 표현에 관하여 실시예를 설명한다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 당업자들이 그들의 작업의 내용을 다른 당업자에게 효과적으로 전달하기 위해 널리 사용된다. 이러한 오퍼레이션들은 기능적으로, 계산적으로 또는 논리적으로 설명되지만, 컴퓨터 프로그램 또는 등가의 전기 회로, 또는 마이크로코드 등에 의해 구현되는 것으로 이해된다. 또한, 이러한 오퍼레이션 배열을 모듈로서 언급하는 것이 일반성을 잃지 않으면서도 때때로 편리하다는 것이 입증되었다. 설명된 오퍼레이션 및 그것의 연관된 모듈은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 임의의 조합으로 구현될 수 있다.
본 명세서에 설명된 임의의 단계, 오퍼레이션 또는 프로세스는 단독으로 또는 다른 장치와 조합하여 하나 이상의 하드웨어 또는 소프트웨어 모듈을 통해 수행되거나 구현될 수 있다. 일 실시예에서, 소프트웨어 모듈은 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현되며, 이는 설명된 단계, 오퍼레이션 또는 프로세스 중 일부 또는 모두를 수행하기 위해 컴퓨터 프로세서에 의해 실행될 수 있다.
또한, 실시예들은 본 명세서의 오퍼레이션들을 수행하기 위한 장치와 관련될 수 있다. 이 장치는 필요한 목적을 위해 특별히 구성될 수 있고 및/또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨팅 장치를 포함할 수도 있다. 이러한 컴퓨터 프로그램은 컴퓨터 시스템 버스에 연결될 수 있는 비일시적 유형(tangible) 컴퓨터 판독 가능 저장 매체, 또는 전자 명령을 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있다. 더욱이, 본 명세서에서 언급된 임의의 컴퓨팅 시스템은 단일 프로세서를 포함할 수도 있고, 또는 향상된 컴퓨팅 능력을 위해 다중 프로세서 설계를 사용하는 아키텍처일 수도 있다.
또한, 실시예들은 본 명세서에 설명된 컴퓨팅 프로세스에 의해 만들어진 제품에 관한 것일 수 있다. 이러한 제품은 컴퓨팅 프로세스로부터 생성된 정보를 포함할 수 있으며, 여기서 정보는 비일시적 유형 컴퓨터 판독 가능 저장 매체 상에 저장되고 컴퓨터 프로그램 제품 또는 본 명세서에 설명된 다른 데이터 조합의 임의의 실시예를 포함할 수 있다.
본 명세서에 사용된 바와 같이, "일 실시예" 또는 "하나의 실시예"에 대한 임의의 언급은 그 실시예와 관련지어 설명된 특정 요소, 특징, 구조 또는 특징이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 본 명세서의 다양한 위치에서 "일 실시예에서"라는 문구의 출현이 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 이와 유사하게, 요소 또는 구성요소 앞에 "하나" 또는 "일"을 사용하는 것은 단지 편의를 위한 것이다. 이러한 설명은 그것이 다른 의미라는 것이 명백하지 않는 한 그 요소 또는 구성요소 중 하나 이상이 존재한다는 의미로 이해되어야 한다.
값이 "대략" 또는 "실질적으로"(또는 이들의 파생물)로 설명된 경우, 문맥에서 다른 의미가 명백하지 않는 한 이러한 값은 정확한 값의 +/- 10%로 해석되어야 한다. 예를 들어, "약 10"은 "9 내지 11의 범위 이내"를 의미하는 것으로 이해되어야 한다.
본 명세서에 사용된 바와 같이, 용어 "포함하다", "포함하는", "구비하다", "구비한", "가지다", "가지는" 또는 이들의 임의의 다른 변형은 비배타적인 포함을 의미하도록 의도된 것이다. 예를 들어, 요소의 목록을 포함하는 프로세스, 방법, 물품 또는 장치는 반드시 그러한 요소로만 제한되지 않으며, 명시적으로 나열되지 않거나 그러한 프로세스, 방법, 물품 또는 장치에 고유하지 않은 다른 요소를 포함할 수도 있다. 또한, 달리 명시적으로 언급되지 않는 한, "또는"은 "포괄적 또는(inclusive or)"을 의미하고, "배타적 또는(exclusive or)"을 의미하지 않는다. 예를 들어 조건 A 또는 B는 A는 참이고(또는 존재하고) B는 거짓인(또는 존재하지 않는) 경우, A는 거짓이고(또는 존재하지 않고) B는 참인(또는 존재하는) 경우, 및 A와 B 모두 참인(또는 존재하는) 경우 중 임의의 것에 의해 충족된다.
본 개시내용을 읽은 당업자들은 설명된 기술 및 접근 방법을 채용하는데 사용될 수 있는 또 다른 대안의 구조적 및 기능적 설계를 이해할 것이다. 따라서, 특정 실시예 및 적용예가 도시되고 설명되었지만, 설명된 본 발명은 개시된 정확한 구성 및 구성요소로 제한되지 않는다는 것을 이해해야 한다. 보호 범위는 아래의 청구항에 의해서만 제한되어야 한다.
마지막으로, 본 명세서에 사용된 언어는 주로 가독성 및 설명의 목적으로 선택되었으며, 특허권을 설명하거나 제한하기 위해 선택된 것은 아니다. 따라서, 특허권의 범위는 본 상세한 설명이 아니라 이에 기초하여 출원 시 발행한 임의의 청구범위에 의해 제한되는 것으로 의도된다. 따라서, 실시예들의 개시는 설명을 위한 것으로 아래의 청구범위에 기재된 특허권의 범위를 제한하도록 의도되지 않는다.

Claims (20)

  1. 지리적 위치 데이터를 검색하는 방법으로서,
    지리적 위치를 나타내는 요청을 수신하는 단계;
    상기 지리적 위치에 기초하여 지리적 영역을 식별하는 단계;
    데이터베이스의 복수의 데이터베이스 샤드 중 하나의 데이터베이스 샤드를 식별하는 단계로서, 상기 복수의 데이터베이스 샤드는 상기 지리적 영역에 대응하는 것인, 상기 하나의 데이터베이스 샤드를 식별하는 단계;
    상기 지리적 영역에 대응하는 지리적 위치 데이터에 대해 식별된 데이터베이스 샤드에 질의하는 단계로서, 상기 데이터베이스 샤드의 질의는 예측 가능한 응답 시간을 갖는 것인, 상기 질의하는 단계;
    질의 받은 지리적 위치 데이터에 기초하여 질의 결과를 처리하는 단계; 및
    상기 요청에 응답하여 상기 질의 결과를 반환하는 단계를 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  2. 제 1 항에 있어서, 상기 상기 질의하는 단계는:
    상기 지리적 영역에 대응하는 지리적 위치 데이터에 대해 동시에 상기 복수의 데이터베이스 샤드에 질의하는 단계를 더 포함하고, 상기 복수의 데이터베이스 샤드의 동시 질의는 상기 예측 가능한 응답 시간을 갖는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  3. 제 1 항에 있어서,
    오버플로 조건에 따라 상기 복수의 데이터베이스 샤드 중 하나의 데이터베이스 샤드 내에 저장된 지리적 위치 데이터를 평가하는 단계로서, 상기 오버플로 조건은 상기 데이터베이스 샤드의 질의에 대한 응답 시간이 바람직하지 않음을 나타내는 것인, 상기 지리적 위치 데이터를 평가하는 단계;
    상기 평가에 기초하여, 상기 데이터베이스 샤드 내에 저장된 상기 지리적 위치 데이터가 상기 오버플로 조건을 충족하는지 판정하는 단계;
    상기 오버플로 조건이 충족되었다는 판정에 응답하여, 상기 지리적 영역에 대응하는 상기 복수의 데이터베이스 샤드에 새로운 데이터베이스 샤드를 추가하는 단계; 및
    저장할 상기 지리적 영역과 관련된 추가의 지리적 위치 데이터를 수신한 것에 응답하여, 상기 추가의 지리적 위치 데이터를 상기 새로운 데이터베이스 샤드에 저장하는 단계를 더 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  4. 제 3 항에 있어서, 상기 오버플로 조건은 상기 데이터베이스 샤드 내에 저장된 지리적 위치 데이터의 임계 메모리 크기, 상기 데이터베이스 샤드 내에 저장된 데이터베이스 레코드의 임계 개수, 또는 상기 데이터베이스 샤드의 질의에 대한 임계 질의 응답 시간 중 하나 이상을 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  5. 제 3 항에 있어서,
    상기 지리적 위치 데이터가 상기 오버플로 조건을 충족한다는 판정에 응답하여, 상기 지리적 영역에 대응하는 데이터베이스 샤드의 수가 증가했음을 나타내는, 상기 데이터베이스 샤드와 연관된 플래그를 설정하는 단계를 더 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  6. 제 1 항에 있어서, 상기 요청은 상기 지리적 영역의 크기를 나타내는 셀 레벨을 포함하고, 상기 지리적 영역을 식별하는 단계는:
    상기 지리적 영역에 대응하는 지리적 셀에 대한 셀 레벨 및 상기 지리적 위치를 사용하여 지리적 셀 인덱스를 질의하는 단계를 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  7. 제 6 항에 있어서, 상기 지리적 셀은 셀 식별자 및 데이터베이스 샤드의 수와 연관되고, 상기 식별된 데이터베이스 샤드에 질의하는 단계는:
    상기 지리적 셀에 대한 셀 식별자 및 상기 지리적 셀과 연관된 데이터베이스 샤드의 수에 기초하여 상기 지리적 셀의 상기 데이터베이스 샤드에 대한 고유 키를 결정하는 단계;
    상기 고유 키에 대응하는 상기 데이터베이스 샤드를 저장하는 데이터베이스 노드를 판정하는 단계; 및
    상기 고유 키에 대응하는 상기 데이터베이스 샤드에 포함된 지리적 위치 데이터에 대해 상기 데이터베이스 노드에 질의하는 단계를 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  8. 제 7 항에 있어서, 상기 고유 키에 대응하는 상기 데이터베이스 샤드를 저장하는 데이터베이스 노드를 판정하는 단계는:
    상기 데이터베이스의 상기 고유 키와 최대 슬롯 수를 해시 함수에 적용하여 슬롯 넘버를 생성하는 단계; 및
    상기 슬롯 넘버와 연관된 데이터베이스 슬롯이 상기 데이터베이스 노드에 저장되어 있음을 나타내는 데이터베이스 매핑과 상기 슬롯 넘버를 비교하는 단계를 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  9. 제 1 항에 있어서, 상기 요청은 클라이언트 장치로부터 수신되고 상기 지리적 위치는 상기 클라이언트 장치의 지리적 위치에 대응하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  10. 제 1 항에 있어서, 상기 지리적 위치 데이터는 상기 지리적 영역 내의 위치들과 관련된 하나 이상의 가상 요소를 포함하는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  11. 제 10 항에 있어서, 상기 하나 이상의 가상 요소는 클라이언트 장치 상의 병렬 현실 게임 애플리케이션의 가상 세계와 연관되어 있는 것을 특징으로 하는 지리적 위치 데이터를 검색하는 방법.
  12. 컴퓨터 프로세서에 의해 실행될 때 프로세서로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 오퍼레이션은:
    지리적 위치를 나타내는 요청을 수신하는 단계;
    상기 지리적 위치에 기초하여 지리적 영역을 식별하는 단계;
    데이터베이스의 복수의 데이터베이스 샤드 중 하나의 데이터베이스 샤드를 식별하는 단계로서, 상기 복수의 데이터베이스 샤드는 상기 지리적 영역에 대응하는 것인, 상기 하나의 데이터베이스 샤드를 식별하는 단계;
    상기 지리적 영역에 대응하는 지리적 위치 데이터에 대해 식별된 데이터베이스 샤드에 질의하는 단계로서, 상기 데이터베이스 샤드의 질의는 예측 가능한 응답 시간을 갖는 것인, 상기 질의하는 단계;
    질의 받은 지리적 위치 데이터에 기초하여 질의 결과를 처리하는 단계; 및
    상기 요청에 응답하여 상기 질의 결과를 반환하는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제 12 항에 있어서, 상기 질의하는 단계는:
    상기 지리적 영역에 대응하는 지리적 위치 데이터에 대해 동시에 상기 복수의 데이터베이스 샤드에 질의하는 단계를 더 포함하고, 상기 복수의 데이터베이스 샤드의 동시 질의는 상기 예측 가능한 응답 시간을 갖는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제 12 항에 있어서, 상기 명령은:
    오버플로 조건에 따라 상기 복수의 데이터베이스 샤드 중 하나의 데이터베이스 샤드 내에 저장된 지리적 위치 데이터를 평가하는 단계로서, 상기 오버플로 조건은 상기 데이터베이스 샤드의 질의에 대한 응답 시간이 바람직하지 않음을 나타내는 것인, 상기 지리적 위치 데이터를 평가하는 단계;
    상기 평가에 기초하여, 상기 데이터베이스 샤드 내에 저장된 상기 지리적 위치 데이터가 상기 오버플로 조건을 충족하는지 판정하는 단계;
    상기 오버플로 조건이 충족되었다는 판정에 응답하여, 상기 지리적 영역에 대응하는 상기 복수의 데이터베이스 샤드에 새로운 데이터베이스 샤드를 추가하는 단계; 및
    저장할 상기 지리적 영역과 관련된 추가의 지리적 위치 데이터를 수신한 것에 응답하여, 상기 추가의 지리적 위치 데이터를 상기 새로운 데이터베이스 샤드에 저장하는 단계
    를 포함하는 오퍼레이션을 상기 프로세서로 하여금 더 수행하게 만드는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제 14 항에 있어서,
    상기 오버플로 조건은 상기 데이터베이스 샤드 내에 저장된 지리적 위치 데이터의 임계 메모리 크기, 상기 데이터베이스 샤드 내에 저장된 데이터베이스 레코드의 임계 개수, 또는 상기 데이터베이스 샤드의 질의에 대한 임계 질의 응답 시간 중 하나 이상을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제 14 항에 있어서, 상기 명령은:
    상기 지리적 위치 데이터가 상기 오버플로 조건을 충족한다는 판정에 응답하여, 상기 지리적 영역에 대응하는 데이터베이스 샤드의 수가 증가했음을 나타내는, 상기 데이터베이스 샤드와 연관된 플래그를 설정하는 단계
    를 포함하는 오퍼레이션을 상기 프로세서로 하여금 더 수행하게 만드는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제 12 항에 있어서, 상기 요청은 상기 지리적 영역의 크기를 나타내는 셀 레벨을 포함하고, 상기 지리적 영역을 식별하는 단계는:
    상기 지리적 영역에 대응하는 지리적 셀에 대한 셀 레벨 및 상기 지리적 위치를 사용하여 지리적 셀 인덱스를 질의하는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제 17 항에 있어서, 상기 지리적 셀은 셀 식별자 및 데이터베이스 샤드의 수와 연관되고, 상기 식별된 데이터베이스 샤드에 질의하는 단계는:
    상기 지리적 셀에 대한 셀 식별자 및 상기 지리적 셀과 연관된 데이터베이스 샤드의 수에 기초하여 상기 지리적 셀의 상기 데이터베이스 샤드에 대한 고유 키를 결정하는 단계;
    상기 고유 키에 대응하는 상기 데이터베이스 샤드를 저장하는 데이터베이스 노드를 판정하는 단계; 및
    상기 고유 키에 대응하는 상기 데이터베이스 샤드에 포함된 지리적 위치 데이터에 대해 상기 데이터베이스 노드에 질의하는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제 18 항에 있어서, 상기 고유 키에 대응하는 상기 데이터베이스 샤드를 저장하는 데이터베이스 노드를 판정하는 단계는:
    상기 데이터베이스의 상기 고유 키와 최대 슬롯 수를 해시 함수에 적용하여 슬롯 넘버를 생성하는 단계; 및
    상기 슬롯 넘버와 연관된 데이터베이스 슬롯이 상기 데이터베이스 노드에 저장되어 있음을 나타내는 데이터베이스 매핑과 상기 슬롯 넘버를 비교하는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제 12 항에 있어서, 상기 요청은 클라이언트 장치로부터 수신되고 상기 지리적 위치는 상기 클라이언트 장치의 지리적 위치에 대응하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227025220A 2019-12-20 2020-12-18 예측 가능한 질의 응답 시간을 갖는 지리적 위치 데이터의 분할 저장 KR20220114076A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962952140P 2019-12-20 2019-12-20
US62/952,140 2019-12-20
PCT/IB2020/062239 WO2021124287A1 (en) 2019-12-20 2020-12-18 Sharded storage of geolocated data with predictable query response times

Publications (1)

Publication Number Publication Date
KR20220114076A true KR20220114076A (ko) 2022-08-17

Family

ID=76438462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025220A KR20220114076A (ko) 2019-12-20 2020-12-18 예측 가능한 질의 응답 시간을 갖는 지리적 위치 데이터의 분할 저장

Country Status (9)

Country Link
US (2) US11687530B2 (ko)
EP (1) EP4076691A4 (ko)
JP (2) JP7458485B2 (ko)
KR (1) KR20220114076A (ko)
CN (1) CN115175747A (ko)
AU (1) AU2020407633A1 (ko)
CA (1) CA3165438A1 (ko)
TW (2) TWI813413B (ko)
WO (1) WO2021124287A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11504632B1 (en) * 2019-12-12 2022-11-22 Amazon Technologies, Inc. Dynamic adjustment of shard count for player matchmaking

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447757B1 (en) * 2009-08-27 2013-05-21 A9.Com, Inc. Latency reduction techniques for partitioned processing
US8850013B2 (en) 2010-05-10 2014-09-30 Jaron Waldman Server load balancing using geodata
US8458209B2 (en) * 2010-08-24 2013-06-04 International Business Machines Corporation Virtual world query response system
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8550909B2 (en) * 2011-06-10 2013-10-08 Microsoft Corporation Geographic data acquisition by user motivation
US9396275B2 (en) * 2011-09-15 2016-07-19 Hewlett Packard Enterprise Development Lp Geographically partitioned online search system
KR101438358B1 (ko) 2012-05-30 2014-11-03 모다정보통신 주식회사 M2m 오버레이 네트워크 제공 방법과 그를 위한 시스템, 서버 및 게이트웨이
US9128789B1 (en) * 2012-07-31 2015-09-08 Google Inc. Executing cross-cutting concerns for client-server remote procedure calls
US9274863B1 (en) * 2013-03-20 2016-03-01 Google Inc. Latency reduction in distributed computing systems
CN103220376B (zh) 2013-03-30 2014-07-16 清华大学 利用移动终端的位置数据来定位ip位置的方法
NZ755272A (en) 2013-11-27 2020-05-29 Magic Leap Inc Virtual and augmented reality systems and methods
CN105100150B (zh) 2014-05-13 2020-03-31 中兴通讯股份有限公司 一种云桌面迁移的方法、装置及分布式云桌面***
CN115359567A (zh) * 2014-06-14 2022-11-18 奇跃公司 用于产生虚拟和增强现实的方法和***
US9875272B1 (en) * 2015-06-23 2018-01-23 Google Inc. Method and system for designing a database system for high event rate, while maintaining predictable query performance
US10027748B2 (en) * 2015-07-10 2018-07-17 Facebook, Inc. Data replication in a tree based server architecture
US10331710B2 (en) 2015-10-01 2019-06-25 Microsoft Technology Licensing, Llc Partitioning of geographic data
CN114756341A (zh) * 2016-03-04 2022-07-15 谷歌有限责任公司 计算机处理的资源调配
US11496588B2 (en) * 2016-06-21 2022-11-08 Micro Focus Llc Clustering layers in multi-node clusters
CN106178506A (zh) * 2016-07-09 2016-12-07 杨跃龙 一种与地标对应的平行实境游戏互动点设置框架
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding

Also Published As

Publication number Publication date
TWI813413B (zh) 2023-08-21
CA3165438A1 (en) 2021-06-24
EP4076691A1 (en) 2022-10-26
TW202247009A (zh) 2022-12-01
JP2024088654A (ja) 2024-07-02
EP4076691A4 (en) 2023-06-14
TWI777334B (zh) 2022-09-11
US11687530B2 (en) 2023-06-27
AU2020407633A1 (en) 2022-08-11
US20210191940A1 (en) 2021-06-24
JP7458485B2 (ja) 2024-03-29
TW202131204A (zh) 2021-08-16
US20230359618A1 (en) 2023-11-09
WO2021124287A1 (en) 2021-06-24
JP2023507499A (ja) 2023-02-22
CN115175747A (zh) 2022-10-11

Similar Documents

Publication Publication Date Title
KR102212261B1 (ko) 평행 현실 게임 내에서의 활동을 이용한 플레이어의 현실 세계 위치 검증
US10646783B1 (en) Linking real world activities with a parallel reality game
US9723107B1 (en) Executing cross-cutting concerns for client-server remote procedure calls
JP6989731B1 (ja) 検証経路に対応するランドマークの画像データを使用したプレーヤの現実世界のロケーションの検証
US10300395B1 (en) Systems and methods for filtering communication within a location-based game
US10130888B1 (en) Game data validation
JP2024088654A (ja) 予測可能なクエリ応答時間を有するジオロケーションデータのシャードストレージ
US20230277934A1 (en) Refining camera re-localization determination using prior pose model
WO2022232226A1 (en) Repeatability predictions of interest points
KR20230024979A (ko) 위치 기반 게임을 위한 플레이어 장치 근접 감지
TWI804257B (zh) 用於在擴增實境環境中之多使用者路線追蹤之方法、非暫時性電腦可讀儲存媒體及電腦系統
US20210228988A1 (en) Background process for importing real-world activity data into a location-based game
US11007429B2 (en) Background process for importing real-world activity data into a location-based game
US20240033631A1 (en) Maintaining object alignment in 3d map segments
AU2022312218A1 (en) Reducing latency in anticheat dataflow
TW202421244A (zh) 在三維(3d)地圖片段中保持物件對齊

Legal Events

Date Code Title Description
A201 Request for examination