KR101401607B1 - 가상 세계에서의 위치 추적 - Google Patents

가상 세계에서의 위치 추적 Download PDF

Info

Publication number
KR101401607B1
KR101401607B1 KR1020117026638A KR20117026638A KR101401607B1 KR 101401607 B1 KR101401607 B1 KR 101401607B1 KR 1020117026638 A KR1020117026638 A KR 1020117026638A KR 20117026638 A KR20117026638 A KR 20117026638A KR 101401607 B1 KR101401607 B1 KR 101401607B1
Authority
KR
South Korea
Prior art keywords
avatar
virtual world
resolution
avatars
grid
Prior art date
Application number
KR1020117026638A
Other languages
English (en)
Other versions
KR20120074263A (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 KR20120074263A publication Critical patent/KR20120074263A/ko
Application granted granted Critical
Publication of KR101401607B1 publication Critical patent/KR101401607B1/ko

Links

Images

Classifications

    • A63F13/10
    • 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
    • A63F13/12
    • 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/45Controlling the progress of the video game
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • 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/534Features 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 network load management, e.g. bandwidth optimization, latency reduction
    • 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
    • A63F2300/5533Game data structure using program state or machine event data, e.g. server keeps track of the state of multiple players on in a multiple player game
    • 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/5546Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
    • A63F2300/5553Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history user representation in the game field, e.g. avatar
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

가상 세계 내의 아바타(505)의 위치가 복수의 비트코드 해상도를 이용하여 클라이언트에게 통신됨으로써 가상 세계 서버와 가상 세계 클라이언트 사이에 필요한 통신 대역폭을 최소화하고, 이것에 의해 모든 아바타 위치를 모든 다른 플레이어에게 전송할 수 있게 한다. 저해상도 비트코드는 가상 세계에 덮어 씌워지는 저해상도 격자에 기초한 것이고, 고해상도 비트코드는 가상 세계에 덮어 씌워지는 고해상도 격자(500)에 기초한 것일 수 있다. 일 예로서, 가상 세계 서버는 위치 정보가 전송될 아바타(505)와 가상 세계 내의 다른 아바타 사이의 거리에 따라서 사용할 비트코드 해상도를 결정할 수 있다. 해상도는 가까운 아바타의 위치를 고해상도 비트코드로 제공하는 공간 해상도, 또는 위치 정보의 전송 빈도를 가까운 아바타에 대하여 더 크게 하는 시간 해상도를 포함한다. 전송 스트림 내의 위치 정보는 런렝쓰 인코딩을 이용하여 추가로 응축될 수 있다.

Description

가상 세계에서의 위치 추적{POSITION TRACKING IN A VIRTUAL WORLD}
본 발명은 가상 세계에서의 위치 추적에 관한 것이다.
가상 세계는 복수의 개인이 공유 경험(shared experience)에 함께 참여할 수 있는 그래픽적으로 연출된 시뮬레이트 환경을 제공한다. 예를 들면, 가상 세계는 가공의 게임 환경, 실세계 장소와 주변 환경, 및 실생활 활동 및 상호작용을 시뮬레이트하기 위해 사용되어왔다. 전형적으로 사용자들은 복수의 클라이언트에 대응하는 데이터를 통합하고 관리하는 가상 세계 서버와 인터페이스 접속하는 동안 자신의 컴퓨터 또는 기타 장치의 클라이언트 애플리케이션 또는 모듈을 동작시킬 수 있다.
가상 세계를 생성하고 관리하는 하나의 태양은 환경 내에서 사용자 위치를 추적하고 식별하는 것이다. 특히, 하나의 캐릭터 또는 사용자(아바타로 표시됨)의 위치는 일반적으로 다른 캐릭터 또는 사용자의 클라이언트가 장소에 따라서 아바타를 그래픽적으로 묘사하고 적당한 장소에 있는 아바타들 간의 통신을 가능하게 하도록 다른 캐릭터 또는 사용자에게 방송할 필요가 있다. 이것은 사용자가 가상 세계의 가시성 근접지(viewable proximity) 내에 있는 다른 사용자를 볼 수 있게 하고, 또한 클라이언트 애플리케이션이 사용자의 디스플레이에 다른 아바타를 연출할 시점을 결정할 수 있게 한다. 일부 예에서, 가상 세계는 수십만 명(또는 그 이상)의 동시 사용자를 포함할 수 있다. 따라서, 각 아바타의 위치를 전송하는데 필요한 대역폭의 양이 대폭적일 수 있다.
어떤 아바타 위치를 소정의 클라이언트에게 전송해야 하는지를 결정하는 한가지 종래의 방법은 레히(Leahy) 등에게 허여된 미국 특허 제7,181,690호 및 제7,493,558호에 개시되어 있다. 상기 2개의 특허에서, 서버는 사용자의 장소에 가장 가까운 N개의 아바타의 리스트와 그 아바타의 위치를 결정하고 그러한 정보를 사용자의 클라이언트 소프트웨어에 전송하도록 구성된다. 레히의 특허에서, 사용자의 장소에 가장 가까운 N개의 아바타의 리스트는 가상 세계를 점유하는 모든 사용자보다 적게 표시한다. 그러나, 이러한 솔루션은 사용자가 원격에 있는 사용자에 대하여 전혀 알지 못하고, 이것은 사용자가 멀리 있는 친구를 찾거나, 비교적 격리되어 어떤 행동을 수행하기 위해 가상 세계 내의 조용한 지역을 찾거나, 또는 많은 다른 사용자들과 상호작용하기 위해 가상 세계 내의 붐비는 지역을 찾기가 어렵기 때문에 바람직하지 않다.
본 발명의 목적은 가상 세계에서의 위치 추적 방법 및 시스템을 제공하는 것이다.
본 발명의 개념의 선택을 간단한 형태로 소개하기 위한 개요를 제공하는데, 이러한 본 발명의 개념은 뒤에서 실시예를 설명하면서 자세히 설명된다. 이 개념은 청구범위 주제의 중요한 특징 또는 본질적인 특징을 확인시키기 위한 것으로 의도되지 않을 뿐만 아니라 청구범위 주제의 범위를 제한하기 위한 의도로 사용되지 않는다.
여기에서 설명하는 하나 이상의 태양은 가상 세계 내 아바타의 위치 정보를 전송하는 것과 관련이 있다. 예를 들면, 가상 세계 시스템은 제1 아바타에 대한 위치 이동 정보를 보고하기 위한 격자 해상도(grid resolution)를 결정하도록 구성될 수 있고, 여기에서 격자 해상도는 상이한 격자 해상도를 가진 복수의 격자로부터 격자를 선택하는 것에 기초하며, 각 격자는 가상 세계에 대응한다. 그 다음에 가상 세계 시스템은 선택된 격자에서 아바타의 현재 위치를 선택된 격자에서 아바타의 이전 위치와 비교함으로써 제1 아바타의 위치 이동 정보를 결정하고, 제1 아바타의 위치 이동 정보를 가상 세계 시스템에 접속된 클라이언트에게 전송할 수 있다.
여기에서 설명하는 다른 태양에 따르면, 가상 세계 서버는 가상 세계 내의 복수의 아바타 각각의 현재 위치를 결정할 수 있고, 여기에서 상기 복수의 아바타는 가상 세계 내의 모든 아바타를 포함한다. 가상 세계 서버는 그 다음에 복수의 아바타 각각의 현재 위치를 가상 세계에 대응하는 제1 격자 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교한 결과에 기초하여 복수의 아바타 각각에 대한 제1 위치 상계(offset) 데이터를 발생하고, 복수의 아바타 각각의 현재 위치를 가상 세계에 대응하는 제2 격자 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교한 결과에 기초하여 복수의 아바타 각각에 대한 제2 위치 상계 데이터를 발생한다. 제1 격자와 제2 격자는 다른 해상도를 갖는다. 그 다음에, 가상 세계 서버는 복수의 아바타 각각에 대하여 제1 가상 세계 클라이언트 장치에 전송하기 위해 제1 위치 상계 데이터와 제2 위치 상계 데이터 중 하나만을 선택하고, 적어도 복수의 아바타 전부에 대한 선택된 위치 상계 데이터를 제1 가상 세계 클라이언트 장치에 전송한다.
다른 태양에 따르면, 고해상도 범위/임계치는 특정 아바타의 위치로부터 고해상도 범위 내의 아바타의 수에 기초하여 수정될 수 있다. 예를 들어서 고해상도 범위 내의 아바타의 수가 아바타 임계치를 초과하면, 고해상도 범위는 아바타의 수가 아바타 임계치와 같거나 그 미만으로 될 때까지 감소되고, 시스템은 고해상도 범위 내의 아바타에 대한 위치정보를 전송할 때 고해상도 비트코드를, 및 고해상도 범위 밖의 아바타에 대한 위치 정보를 전송할 때 저해상도 비트코드를 사용할 수 있다.
다른 태양에 따르면, 비트코드는 전송 스트림으로 포맷될 수 있다. 추가적으로 또는 대안적으로, 특정 유형(예를 들면, 고정 아바타)의 연속 비트코드는 런렝쓰 인코딩(run length encoding; RLE)을 이용하여 단축 비트코드로 응축될 수 있다. 예를 들면, 일련의 100개의 연속적인 고정 아바타에 대한 위치 변경 정보는 100개의 고정 아바타 모두를 표시하는 단일 11 비트 RLE 비트코드로 응축될 수 있다.
다른 태양에 따르면, 각 아바타에 대한 저해상도 위치 비트코드와 고해상도 위치 비트코드의 단일 쌍이 처리 시간을 줄이기 위해 가상 세계 시스템에 의해 미리 발생될 수 있다. 가상 세계 시스템은 이전(previous) 업데이트에서 수신 클라이언트에게 보고된 위치 정보의 유형에 따라서 고해상도 위치 정보와 저해상도 위치 정보로부터 선택할 수 있다. 일부 클라이언트의 경우, 비트코드는 만일 클라이언트가 하나 이상의 다른 아바타에 대한 가장 최근의 위치 정보를 갖고 있지 않으면 급히 발생될 수 있다.
여기에서 설명하는 다른 태양에 따르면, 수신 클라이언트 장치는 가상 세계 내 복수의 아바타에 대한 위치 상계 정보를 수신할 수 있다. 위치 상계 정보가 수신되는 각 아바타에 대하여, 클라이언트 장치는 위치 상계 정보의 해상도를 결정하고, 상기 결정된 해상도에 따라 수신 위치 상계 정보를 적용하여 그 위치 상계 정보에 대응하는 아바타의 새로운 위치를 결정한다. 제1 아바타에 대응하는 위치 상계 정보는 제1 해상도로 수신되고, 제2 아바타에 대응하는 위치 상계 정보는 제2 해상도로 수신된다.
본 발명에 따르면, 본 발명의 목적은 가상 세계에서의 위치 추적 방법 및 시스템을 제공하는 것이 가능하다.
특정의 실시예가 첨부 도면에서 제한하는 의도가 없는 예시의 목적으로 도시되어 있고, 첨부 도면에서 동일한 참조 번호는 유사한 요소를 나타낸다.
도 1은 본 발명의 하나 이상의 태양을 사용할 수 있는 예시적인 네트워크 환경을 나타낸 도이다.
도 2는 본 발명의 하나 이상의 태양에 따른 예시적인 가상 세계 클라이언트를 나타내는 블록도이다.
도 3은 본 발명의 하나 이상의 태양에 따른 예시적인 가상 세계 서버를 나타내는 블록도이다.
도 4는 본 발명의 하나 이상의 태양에 따른 예시적인 가상 세계를 나타낸 도이다.
도 5a 및 5b는 본 발명의 하나 이상의 태양에 따른, 2개의 다른 격자 해상도의 격자 시스템을 가진 예시적인 가상 세계를 나타낸 도이다.
도 6a 및 6b는 본 발명의 하나 이상의 태양에 따른 가상 세계 내 아바타의 위치를 표시하는 예시적인 비트코드를 나타낸 도이다.
도 7은 본 발명의 하나 이상의 태양에 따른 가상 세계 내 아바타의 위치 정보를 결정 및 유포하는 예시적인 서버측 방법을 나타내는 흐름도이다.
도 8은 본 발명의 하나 이상의 태양에 따른 예시적인 고해상도 비트코드 임계치를 나타낸 도이다.
도 9는 본 발명의 하나 이상의 태양에 따른 높은 시간 해상도 및 낮은 시간 해상도 비트코드 정보의 예시적인 전송 스케줄을 나타낸 도이다.
도 10은 본 발명의 하나 이상의 태양에 따른, 소요되는 대역폭의 양을 줄이기 위해 전송 스트림을 인코딩하는 예시적인 방법을 나타내는 흐름도이다.
도 11은 본 발명의 하나 이상의 태양에 따른 고해상도 범위를 결정 및 수정하는 예시적인 방법을 나타내는 흐름도이다.
도 12는 본 발명의 하나 이상의 태양에 따른 가상 세계 내 아바타의 위치 정보를 수신 및 업데이트하는 예시적인 클라이언트측 방법을 나타내는 흐름도이다.
이하의 각종 실시예의 설명에서는 이 명세서의 일부를 구성하고 본 발명이 실시될 수 있는 예시적인 각종 실시예를 나타내는 첨부도면을 참조하여 설명한다. 다른 실시예를 활용할 수도 있고, 본 발명의 범위를 벗어나지 않고 구조적 및 기능적 수정이 가능하다는 것을 이해하여야 한다.
여기에서 설명하는 태양들은 가상 세계 내 아바타의 위치 정보를 전송하는 것과 관련이 있다. 가상 세계 서버는 가상 세계 내에서 아바타의 위치를 결정하고, 가상 세계에 접속된 복수의 클라이언트에게 각각 아바타 위치를 전송할 때 고해상도 비트코드를 사용할 것인지 저해상도 비트코드를 사용할 것인지를 결정하도록 구성된다. 비트코드 해상도는 공간적으로 또는 시간적으로 변할 수 있다. 예를 들면, 사용자의 아바타에 가까운 다른 아바타의 위치는 제1 비트코드 해상도를 이용하여 결정 및 전송될 수 있고, 사용자의 아바타로부터 멀리 이격된 다른 아바타의 위치는 더 낮은 제2 비트코드 해상도를 이용하여 결정 및 전송될 수 있으며, 이것에 의해 대역폭을 보전하면서 가상 세계 내의 모든 아바타에 대한 위치 정보를 제공할 수 있다. 시간 해상도를 사용하는 경우, 더 가까운 아바타의 위치는 더 멀리 이격된 장소에 있는 아바타의 위치보다 더 자주 전송될 수 있다.
여기에서 사용하는 용어 가상 세계는 많은 사용자가 서로에 대해, 서로에 대항하여, 공통의 목적으로, 또는 공동 게임을 하기 위해 상호작용하는 그래픽적으로 연출된 또는 그래픽적으로 시뮬레이트된 환경을 말한다. 가상 세계는 전형적으로 수천 명 이상 또는 수백만 명 이상의 사용자가 동시에 사용할 수 있는 환경을 말한다. 가상 세계는 가상 세계 소유자가 희망하는 실생활 장소, 과학적 가공 환경, 판타지 환경, 또는 임의의 다른 장소를 나타내도록 그래픽적으로 묘사될 수 있다.
도 1은 클라이언트(101)가 가상 세계 서버(106)와 상호작용하는 네트워크 환경을 나타낸 것이다. 클라이언트(101)는 포괄적 데이터 처리 장치(101a), 퍼스널 컴퓨터(PC)(101b), 랩톱, 포터블 또는 노트북 컴퓨터(101c), 개인용 정보 단말기 또는 모바일 장치(101d), 이동 통신 장치(도시 생략됨) 등을 비롯한 각종 장치를 포함한다. 각 클라이언트(101)는 클라이언트(101)가 네트워크(100)를 통해 가상 세계 서버(106)와 접속할 수 있게 하는 네트워크 어댑터를 구비할 수 있다. 일 예로서, 네트워크(100)는 인터넷 프로토콜(IP) 기반 네트워크, 예를 들면 인터넷을 포함할 수 있다. 다른 네트워크는 셀룰러 네트워크, 케이블 네트워크, 광섬유 네트워크, 무선 네트워크, 유선 네트워크 및/또는 이들의 조합을 포함할 수 있다. 네트워크(100)는 유선 또는 무선 근거리 통신망(LAN) 등과 같은 하나 이상의 서브 네트워크를 또한 포함할 수 있다.
가상 세계 서버 소프트웨어(106)의 하나 이상의 인스턴스를 구동하기 위해 하나 이상의 물리 서버(105)를 사용할 수 있다. 각 물리 서버는 클라이언트(101)와 유사한 데이터 처리 장치일 수 있고, 및/또는 특수한 서버 하드웨어를 포함할 수 있다. 서버 소프트웨어(106)의 각 구동 인스턴스는 정확히 하나의 가상 세계를 생성한다. 물리 서버의 수와 구동하는 서버 소프트웨어의 카피의 수 사이에 반드시 상관관계가 있을 필요는 없다. 예를 들면, 하나의 강력한 서버(105a)가 복수의 가상 세계(106a, 106b)를 구동할 수 있고, 또는 수 개의 덜 강력한 서버(105c, 105d)가 함께 동작하여 하나의 큰 가상 세계(106d)를 구동하도록 클러스터 내에서 접속될 수 있다. 여기에서 설명하는 '서버'는 서버 소프트웨어(106)의 단일 인스턴스(즉, 가상 세계의 단일 독립 인스턴스)를 인용하기 위해 사용된다. 서버는 하부 하드웨어 서버(105)를 반드시 인용하지는 않는다.
도 2는 도 1의 서버(106a)와 같은 가상 세계 서버에 의해 제공되는 가상 세계에 액세스하고 가상 세계와 상호작용하기 위해 사용될 수 있는 PC(101b)(도 1 참조)와 같은 예시적인 클라이언트 장치(200)를 나타낸 것이다. 클라이언트 장치(200)는 프로세서(217), 랜덤 액세스 메모리(RAM)(215), 읽기 전용 메모리(ROM)(213), 데이터 베이스(201, 203), 연출기(renderer)(205), 출력 어댑터(211), 입력 인터페이스(209) 및 통신 인터페이스(207)를 비롯한 각종 컴포넌트 및 모듈을 포함할 수 있다. 프로세서(217)는 그래픽 처리 장치(GPU)를 포함할 수 있고, 별도의 GPU가 출력 어댑터에 포함될 수 있다. 아바타 데이터베이스(201)는 가상 세계를 탐구하고 가상 세계와 상호작용하기 위해 장치(200)의 사용자에 의해 사용되는 아바타를 규정하는 데이터 및 다른 방식으로 아바타와 관련된 데이터를 저장하도록 구성된다. 아바타 정보는 아바타 특징(예를 들면, 힘, 피부색, 눈색, 머리 길이, 키, 몸무게, 지능), 아바타 위치/장소 정보, 아바타와 관련된 물건(예를 들면, 물품명세서(inventory), 의복, 무기, 액세서리) 등을 포함할 수 있다. 반면에 월드 데이터베이스(203)는 아바타가 존재하는 환경을 규정 및 발생하는 데이터를 저장하도록 구성된다. 예를 들면, 월드 데이터베이스(203)는 바닥(floor) 또는 지면(ground), 벽, 하늘 등을 연출하기 위한 텍스쳐 맵을 저장할 수 있다. 다른 예로서, 월드 데이터베이스(203)는 시뮬레이트된 날씨 데이터, 접근가능한 지역 대 접근 불가능한 지역, 컬러, 가상 세계의 대화형 컴포넌트(대 비대화형 컴포넌트), 가상 세계에 존재하는 무생물을 규정하는 데이터, 컴퓨터 제어형 캐릭터를 규정하는 데이터 등을 저장할 수 있다. 각 데이터베이스(201, 203)는 종래의 데이터베이스일 수도 있고 아닐 수도 있으며, 필요할 때 클라이언트 소프트웨어에 의해 액세스되는 RAM 메모리에 저장된 데이터를 말할 수도 있다. 아바타 또는 가상 세계와 관련된 데이터는 통신 인터페이스(207)를 통하여 클라이언트 장치(200)와 가상 세계 서버 사이에서 통신될 수 있다. 예를 들면, 아바타 위치, 속성 및 상태는 업데이트될 수 있고, 또는 인터페이스(207)를 통하여 상기와 같은 데이터를 통신함으로써 환경이 변경될 수 있다.
가상 세계 및 아바타는 클라이언트 소프트웨어(205)에 의해 연출되고 후속적으로 출력 어댑터(211) 및 디스플레이(219)에 전송될 수 있다. 클라이언트 소프트웨어(205)는, 하나 이상의 구성에서, 가상 세계 및 그 컴포넌트뿐만 아니라 사용자에 대응하는 아바타의 3차원(3-D) 모델을 발생하도록 구성될 수 있다. 사용자는 아바타를 제어하고 키보드(223) 및 마우스(225)를 비롯한 각종 입력 장치를 이용하여 입력 인터페이스(209)를 통하여 가상 세계와 상호작용할 수 있다. 다른 유형의 입력 장치는 마이크로폰(예를 들면, 네트워크를 통해 음성 통신을 하기 위해서), 조이스틱, 움직임 감지 장치 및/또는 이들의 조합을 포함할 수 있다. 하나 이상의 구성에 있어서, 음악, 또는 음성과 같은 다른 오디오는 가상 세계의 일부로서 포함될 수 있다. 그러한 예에서, 오디오는 스피커(221)를 통하여 출력된다.
클라이언트 소프트웨어(205), 컴퓨터 실행가능 명령어, 및 클라이언트 장치(200)의 프로세서(217) 및 기타의 컴포넌트에 의해 사용되는 다른 데이터는 RAM(215), ROM(213) 또는 이들의 조합에 저장될 수 있다. 휘발성 및 비휘발성 메모리와 같은 다른 유형의 메모리를 또한 사용할 수 있다. 소프트웨어(205)는 프로세서(217)에 명령어를 제공하여 명령어가 실행될 때 프로세서(217), 클라이언트 장치(200) 및/또는 이들의 다른 컴포넌트가 여기에서 설명하는 기능 및 방법을 수행하게 하도록 RAM(215), ROM(213) 및/또는 데이터베이스(201, 203)에 저장될 수 있다. 일 예로서, 가상 세계 서버와 인터페이스하는 사용자 인터페이스를 발생하는 명령어는 RAM(215), ROM(213) 및/또는 데이터베이스(201, 203)에 저장될 수 있다. 클라이언트 소프트웨어(205)는 애플리케이션 및 운영체제 소프트웨어를 포함할 수 있고, 코드 세그멘트, 명령어, 애플릿, 프리컴파일드 코드, 컴파일드 코드, 컴퓨터 프로그램, 프로그램 모듈, 엔진, 프로그램 로직 및 이들의 조합을 포함할 수 있다. 컴퓨터 실행가능 명령어 및 데이터는 예를 들면 전기적으로 소거가능한 프로그래머블 읽기 전용 메모리(EEPROM), 플래시 메모리 또는 기타 메모리 토폴로지, CD-ROM, DVD 또는 기타 광디스크 기억장치, 자기 카세트, 자기 테이프, 자기 기억장치 등과 같은 소정의 물리적 유형의 컴퓨터 판독가능 기억 매체(여기에서 "컴퓨터 메모리"라고 부른다)에 또한 저장될 수 있다.
미리 도 4를 참조하면, 사용자는 예시적인 가상 세계(400) 내에서 여행하거나 다른 사람과 상호작용할 수 있다. 각 사용자는 가상 세계 내의 사용자를 나타내는 그래픽 표시인 아바타(예를 들면, 아바타(401))로서 표시될 수 있다. 가상 세계(400)는 나무(403)와 자동차(405)를 포함할 수 있다. 아바타(401)는 가상 세계(400) 내의 특정 위치에서 연출 및 배치될 수 있다. 도 2와 관련하여 위에서 설명한 제어를 이용하여, 사용자는 아바타(401)를 이동시켜서 아바타(401)의 위치를 수정할 수 있다. 예를 들면, 사용자는 아바타(401)를 자동차(405)에 근접하게 또는나무(403)에 근접하게 이동시킬 수 있다. 자동차(405) 또는 나무(403) 또는 둘 다는 상호작용할 수 있다. 즉, 사용자는 자신의 아바타(401)를 제어하여 예를 들면 자동차(405)의 문을 열고 자동차에 들어가서 운전을 할 수 있고, 또는 땔감용 목재를 얻기 위해 나무(403)를 베어 넘어뜨릴 수 있다. 비록 가상 세계(400)의 일부 태양이 2차원(2-D)으로 도시되어 있지만, 이러한 태양들은 선택적으로 텍스쳐 및 컬러를 가진 3-D 물체로서 발생될 수 있다.
도 3을 참조하면, 가상 세계 서버(300)는 도 4의 가상 세계(400)와 같은 가상 세계를 발생 및 동작시키도록 구성될 수 있다. 서버(300)는 통신 인터페이스(307), 아바타 위치 데이터베이스(309), 월드 데이터베이스(311), 사용자 데이터베이스(313), 게임 로직(317), 해상도 결정기(319), 비트코드 압축기(320) 및 비트코드 발생기(321)를 포함한다. 서버가 실행되는 물리적인 하드웨어는 예를 들면 하나 이상의 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), RAM, ROM, 네트워크 인터페이스, 비휘발성 메모리, 입력/출력 인터페이스 등(도시 생략됨)과 같이 소정의 작업(task)에 적합한 임의의 서버 하드웨어 또는 데이터 처리 장치를 포함할 수 있다.
아바타 위치 데이터베이스(309)는 각 아바타의 위치 정보를 (예를 들면 각 클라이언트로부터 수신한 이동 명령에 따라서) 저장하도록 구성될 수 있다. 월드 데이터베이스(311)는 가상 세계에서 이용가능한 상호작용을 위한 규칙, 알고리즘 및 기타 데이터를 저장할 수 있다. 예를 들면, 컴퓨터 제어기 캐릭터가 이동하거나 다른 방식으로 행동하는 방식은 월드 데이터베이스(311)에 저장된 데이터로 규정될 수 있다. 추가적으로, 아이템이 각 클라이언트에 의해 수정되지 않도록 아이템 정보가 월드 데이터베이스(311)에서 규정될 수 있다. 다른 예로서, 월드 데이터베이스(311)는 아바타가 아닌 아이템 및 컴포넌트에 대한 장소 정보를 저장할 수 있다. 반면에, 사용자 데이터베이스(313)는 사용자가 아바타를 제어하는 것을 기술하는 정보를 저장하기 위해 구성될 수 있다. 예를 들면, 사용자 데이터베이스(313)는 계정(account) 정보, 사용자 선호도, 지불 정보, 사용자 식별 정보, 캐릭터 정의 등을 포함할 수 있다. 각 데이터베이스(309, 311, 313)는 종래의 데이터베이스일 수도 있고 아닐 수도 있으며, 필요할 때 서버 소프트웨어에 의해 액세스되는 RAM 메모리에 저장된 데이터를 말할 수도 있다. 예를 들면, 위치 데이터베이스(309)는 사실상 RAM에 저장되고 여기에서 설명하는 것처럼 업데이트되는 아바타 위치의 집합일 수 있다.
아바타의 위치는 가상 세계의 크기에 따라서 좌표계를 이용하여 서버에 저장될 수 있다. 3-D 공간에서, 아바타의 위치는 3차원의 각각에 대응하는 x, y, z 좌표의 집합으로서 규정될 수 있다. 2-D 공간에서, 아바타의 위치는 2차원에 대응하는 x, y(또는 x, z) 좌표의 집합에 의해 표시될 수 있다. 일 예로서, 가상 세계는 4개의 계층(layer)으로 나누어지고, 각 계층이 10Km×10Km 크기의 공간을 나타낼 수 있다.
사용자의 위치를 통신하기 위해, 서버는 격자를 이용하여 가상 세계를 나눌 수 있고, 각 사용자가 어떤 격자 셀에 위치되는지를 통신할 수 있다. 도 5a는 가상 세계 내의 아바타의 위치를 통신하기 위해 사용될 수 있는 제1 격자 해상도의 예시적인 격자 시스템을 나타낸 것이다. 클라이언트에게 아바타의 위치를 통신하기 위해 사용되는 격자의 해상도는 서버에서 아바타의 위치를 저장하기 위해 사용되는 좌표계의 해상도와 같거나 그보다 더 낮을 수 있다. 격자(500)는 적층된 계층(501)의 집합으로 나누어질 수 있고, 각 계층은 셀의 집합으로 나누어질 수 있다. 일 예로서, 각 계층은 수직 거리의 범위, 고도 또는 "두께"를 표시한다. 예를 들면, 제1 계층은 그라운드 레벨로부터 그라운드 레벨 위로 5m까지를 표시할 수 있고, 제2 계층은 그라운드 레벨 위로 15m를 표시할 수 있다. 계층의 두께는 필요에 따라 더 높일 수도 있고 더 낮출 수도 있다. 다른 실시예로서, 각 계층은 그라운드 레벨이 실제로 어디인지에 상관없이 그라운드 레벨 위의 가상 세계의 다른 부분들을 인용할 수 있다. 예를 들면, 그라운드 고도가 1m, 4m 또는 13m인 것에 상관없이, 그라운드 위에 서있는 모든 아바타는 계층 0에 포함될 수 있고, 어떤 건물의 1층 위의 2층에 서있는 모든 아바타는 계층 1에 위치될 수 있으며(각 건물의 천장 높이에 관계없이), 어떤 빌딩의 1층 위의 3층에 서있는 모든 아바타는 계층 2에 위치될 수 있다. 그 다음에, 아바타의 위치는 아바타(예를 들면, 아바타(505))가 위치하고 있는 격자 셀의 좌표를 식별함으로써 통신될 수 있다. 따라서, 격자(500)에서 아바타(505)의 위치는 x, y, z 좌표에 각각 대응하는 (3, 0, 1)로서 통신될 수 있다. 아바타(505)의 위치와 관련된 계층은 아바타(505)를 교차하는 최저 계층에 의해 규정될 수 있고(예를 들면, 도시된 예에서는 계층 0에 있는 아바타의 발에 기초해서), 또는 가상 세계 소프트웨어에 의해 다른 방식으로 결정된 계층일 수 있다. 도 5a에 도시된 격자 시스템(500)은 2000m×2000m×45m 가상 세계 내에서 5×4×3(각각 x, y 및 z에 대응함) 셀의 해상도를 갖는다고 말할 수 있다.
도 5b는 도 5a의 격자 시스템(500)과 함께 사용할 수 있는 제2 해상도의 예시적인 격자 시스템을 나타낸 것이다. 도 5a 및 도 5b는 2개의 다른 해상도 격자를 이용하여 덮어씌워진(overlaid) 동일한 가상 세계를 나타낸다. 제2 해상도는 3×3×2 셀의 격자에 대응하고, 따라서, 도 5a의 격자(500)의 해상도보다 더 올이 성기거나 덜 과립상이다. 올이 성긴 또는 더 낮은 해상도 격자의 사용은 다른 사용자에게 아바타의 위치를 전송함에 있어서 더 낮은 해상도의 비트코드(뒤에서 설명함)를 사용하게 하고, 위치에서의 더 적은 변화가 낮은 해상도 격자 내에서의 장소 변화를 야기할 것이므로 위치의 변화를 나타내는 클라이언트에게 전송할 필요가 있는 데이터의 양을 감소시키는 데 도움이 된다. 일 예로서, 격자가 더 낮은 해상도를 가지면, 아바타(505)의 위치 변화는 아바타(505)의 위치가 제1 셀로부터 제2 셀로 변하지 않기 때문에 검출되지 않을 것이다. 격자 셀 내에서의 이동은 검출되지 않기 때문에, 아바타(505)의 위치 변화는 도 5b의 낮은 해상도 격자를 이용하는 경우 등록되지 않을 것이다. 그러나, 도 5a에 있어서는 동일한 위치 변화가 다른 셀, 즉 셀(4, 0, 2)로 넘어가기 때문에 등록된다.
다시 도 3을 참조하면, 일단 게임 로직(317)이 위치 데이터베이스(309)에서 아바타의 위치를 결정 또는 업데이트하였으면, 서버는 비트코드 발생기(321)에 명령하여 고해상도 격자의 어느 셀에 사용자의 위치가 있는지를 결정하고 대응하는 고해상도 비트코드를 준비하며, 저해상도 격자의 어느 셀에 사용자의 위치가 있는지를 결정하고 대응하는 저해상도 비트코드를 준비하게 한다. 이 비트코드들은 최종 위치 업데이트 이후 각각의 격자 내의 아바타에 의한 임의의 이동을 표시한다.
서버는 뒤에서 더 자세히 설명하는 것처럼 고해상도 비트코드 또는 저해상도 비트코드를 전송함으로써 모든 다른 클라이언트/아바타의 위치 정보로 모든 클라이언트/아바타를 업데이트할 수 있다. 다른 구성에서, 서버는 주어진 전송에서(예를 들면 공간 해상도에 추가해서 또는 그 대신으로 시간 해상도를 사용할 때) 모든 다른 아바타 위치보다 적게 각 클라이언트를 업데이트하고, 한편 주어진 시간량 내에서(시간 해상도의 최대 대기시간에 따라서) 모든 아바타에 대한 위치 정보를 궁극적으로 전송한다. 여기에서 사용하는 용어 해상도는 위치를 표시하는 공간적 또는 시간적 정확성을 말한다. 공간 해상도는 주어진 공간에서 사용자의 위치를 결정하는 물리적 입도(granularity)를 말한다. 반면에, 시간 해상도는 위치 정보를 전송하는 빈도에 대응할 수 있다(예를 들면, 위치 정보가 더 빈번하게 제공될수록 전형적으로 아바타의 위치가 더 정확해진다).
공간 해상도를 사용할 때, 해상도 결정기(319)는 뒤에서 더 자세히 설명하는 것처럼 아바타의 위치를 주어진 클라이언트에게 고해상도 비트코드를 이용하여 전송할 것인지 저해상도 비트코드를 이용하여 전송할 것인지를 결정한다. 시간 해상도를 사용할 때, 해상도 결정기(319)는 뒤에서 더 자세히 설명하는 것처럼 아바타의 위치를 주어진 클라이언트에게 주어진 프레임 동안 전송해야 하는지를 결정한다. 공간 및 시간 해상도는 여기에서 설명하는 각종 실시예에서 개별적으로 또는 동시에 사용될 수 있다.
가상 세계 시스템은 각 클라이언트가 가상 세계의 모든 다른 아바타에 대한 위치 정보를 필요로 하기 때문에 아바타의 수가 큰 경우 비트코드를 발생하기 위해 상당한 수의 계산을 수행하여야 한다(각 아바타는 유일한 클라이언트에 대응하는 것으로 가정한다). 따라서, 만일 가상 세계가 2000개의 아바타를 갖고 있으면, 시스템은 2000×2000(=4,000,000)개의 비트코드, 즉 각 클라이언트에 대하여 2000 비트코드의 하나의 집합을 발생(및/또는 전송)할 필요가 있다. 이러한 처리 부하를 감소시키기 위해, 시스템은 각 아바타에 대해 한 쌍의 비트코드를 미리 발생하는데, 여기에서 제1 비트코드는 최종 프레임 이후의 저해상도 격자 변화에 대응하고 제2 비트코드는 최종 프레임 이후의 고해상도 격자 변화에 대응한다. 각 클라이언트에게 위치 정보가 전송되어야 할 때, 미리 발생된 2개의 비트코드 중의 하나는 수신 클라이언트가 이전 업데이트 또는 프레임에서 아바타에 대해 고해상도 비트코드를 수신하였는지 저해상도 비트코드를 수신하였는지에 따라서 선택될 수 있다. 비트코드가 이미 발생되었기 때문에, 상기 선택은 비트코드를 급히 계산할 필요없이 행하여질 수 있다. 그러나, 일부 경우에, 비트코드는 여전히 급히 발생될 수 있다. 예를 들면, 클라이언트가 이전의 위치 업데이트를 놓친 경우(예를 들면, 위치 정보의 최종 프레임이 떨어질 것을 요구하는 네트워크 대역폭 사용량), 클라이언트가 알고 있는 이전 위치 정보가 미리 발생된 비트코드를 결정하기 위해 사용되는 이전 위치 정보와 다르기 때문에 특수한 비트코드가 발생될 필요가 있을 수 있다.
하나 이상의 구성에서, 가상 세계의 모든 활동성 아바타의 위치는 모든 다른 활동성 아바타에게 전송된다. 아바타는 만일 아바타가 가상 세계에 등록하면 활동성이라고 생각할 수 있다. 모든 활동성 아바타에 대한 위치를 전송하는 것은 사용자가 소망의 인구 통계를 가진 가상 세계의 지역들을 식별할 수 있게 한다. 예를 들면, 사용자는 모든 다른 사용자의 장소를 식별하고 소망의 인구 밀도를 가진 지역을 선택함으로써 가상 세계에서 조용한 위치를 찾을 수 있다(더 많은 사람은 더 많은 활동성 및 노이즈에 대응하는 것으로 가정한다). 다른 구성에서, 가상 세계의 모든 활동성 아바타보다 적은 수의 위치는 제1 시간 해상도 내에서 다른 활동성 아바타에게 전송될 수 있고, 모든 활동성 아바타의 위치 정보는 제2 시간 해상도 내에서 전송될 수 있다.
아바타 위치의 전송 및 계산과 관련하여 여기에서 설명하는 방법 및 시스템은 각 아바타의 이전 위치에 의존한다. 즉, 위치 정보는 "이동" 정보로서 전송될 수 있고, 이동 정보는 만일 있다면 최종 업데이트 이후 아바타가 얼마나 많이 이동하였는지를 표시한다. 따라서, 제1 아바타의 새로운 위치를 결정하기 위해, 제2 아바타에 대응하는 클라이언트는 제1 아바타의 이전 위치를 알 필요가 있다. 사용자가 가상 세계에 첫번째로 접속하는 상황에서, 사용자의 클라이언트는 가상 세계의 다른 아바타의 이전 위치를 알지 못할 것이다. 따라서, 가상 세계 시스템은 저해상도 비트코드를 이용해서 시스템 내의 모든 다른 아바타의 위치를 제공하는 접속 사용자의 클라이언트에 대한 셋업 패킷을 준비할 수 있다. 가상 세계 시스템은 모든 다른 아바타에 대해 (0, 0, 0)의 이전 위치에 기초하여 초기 위치 정보를 제공할 수 있다. 이것은 접속하는 클라이언트가 공지의 시작 위치(예를 들면, (0, 0, 0))를 이용하여 다른 아바타의 위치를 결정할 수 있게 한다.
위에서 설명한 바와 같이, 비트코드 발생기(321)는 고해상도 포맷과 저해상도 포맷을 이용하여 비트코드를 발생할 수 있다. 다른 실시예에 있어서, 2개 이상의 비트코드 해상도를 사용할 수 있다. 비트코드는 프리픽스 코드(가끔은 허프만 코드라고 부름)일 수 있다. 즉, 집합 내에서 임의의 다른 유효 비트코드의 프리픽스(시작)인 유효 비트코드는 없다. 프리픽스 코드의 사용은 코드와 함께 제공된 코드 또는 정보가 끝난 때를 지정하기 위해 엔드 코드 또는 다른 특수 마커를 사용할 필요가 없게 한다. 도 6a는 아바타 위치 정보를 제공하기 위해 발생 및 전송될 수 있는 예시적인 고해상도 비트코드 집합(601, 603)을 나타낸 것이며, 여기에서 해상도는 4개의 계층 및 계층당 12800×12800 격자 셀을 격자에 대응한다. 일 예로서, '0'(1 비트)의 비트코드는 사용자의 아바타가 격자 셀을 변경하지 않았고 따라서 검출가능한 위치 변화를 하지 않았음을 표시한다. 만일 사용자의 아바타가 격자 셀을 변경하였지만 자신의 이전 셀과 동일한 계층에서 이전 셀의 인접 셀로 변경되었으면, '1 000 rrr'(7 비트)의 비트코드가 사용되고, 여기에서 rrr은 인접하는 8개의 셀 중의 어느 것에서 아바타가 이동하였는지를 나타내는 3 비트코드이다('rrr'의 비트코드가 각 인접 셀을 지칭하는 것과 관련하여 클라이언트와 서버간의 선협약된(preagreed) 상관관계를 이용하여). 인접 셀은 아바타의 이전 셀 주변에서 역 시계방향 또는 시계방향을 포함한 다양한 방법으로 번호가 붙여질 수 있다. 대안적으로, 만일 사용자의 아바타가 동일한 계층 내에서 2개의 셀을 지나 이동하였으면, '1 010 rrrr'의 비트코드가 발생되고, 여기에서 rrrr은 아바타의 이전 격자 셀로부터 정확히 2개의 셀만큼 이격되어 있는 16개의 셀 중 하나를 나타내는 4 비트코드이다.
계층의 변경을 수반하거나, 또는 2개 이상의 셀의 이동이지만 -16과 15 셀 사이에서 이격되는 이동을 수반하는 위치의 변경은 하기의 17 비트의 비트코드로 표시될 수 있다: '1 011 0 yyxxxxxzzzzz' 여기에서 yy=(신 계층 - 구 계층)&3, xxxxx=(신 x - 구 x)&31, 및 zzzzz=(신 z - 구 z)&31이다. 위치의 변화가 -16과 15 셀 사이에서 이격되어 있는지를 판정하기 위해, 가상 세계가 분할될 수 있는 격자는 네가티브(-) 및 포지티브(+) 방향으로 지정될 수 있다. 따라서, x축을 따라 우측으로의 이동은 포지티브 이동이라고 간주되고 x축을 따라 좌측으로의 이동은 네가티브 이동이라고 간주될 수 있다. 따라서, -16의 거리는 축을 따르는 하나의 방향으로 16 셀 이격됨을 표시하고 포지티브 15의 거리는 반대 방향으로 15 셀 이격됨을 표시한다. 여기에서 사용된 '&' 기호는 이진 AND 연산을 표시하고 각 차원에 대한 위치 비트의 비트마스크를 생성하기 위해 사용된다. 이 17 비트의 비트코드는 랩어라운드(wrap around)와 함게 부호없는 숫자로서 전송될 수 있다. 예를 들어서 만일 사용자가 4층 격자의 최상층으로부터 최하층으로 이동하면, yy는 1(즉, -3 대신에)로 설정되어 최상층으로부터 최하층으로의 랩어라운드를 표시할 수 있다. 아바타가 -16 내지 15 셀 이격보다 더 큰 거리를 이동하는 경우에, '1 011 1 yyxxxxxxxxxxxxxxzzzzzzzzzzzzzz' 형태의 35 비트 비트코드를 사용할 수 있고, 여기에서 yy=(신 계층 - 구 계층)&3, xxxxx=(신 x - 구 x)&16383, 및 zzzzz=(신 z - 구 z)&16383이다. 하나 이상의 구성에 있어서, x, y 및 z 거리와 함께 AND 연산되는 값들(예를 들면, 3, 31, 16383)은 위치 격자의 크기 또는 해상도에 기초하여 변할 수 있다. 전형적으로, 주어진 차원에서 이동되는 거리가 비트마스크를 생성하도록 (이진수 AND를 이용해서) 마스크되는 값은 2n-1의 이진수 표시이고, 여기에서 n은 격자 내에서 그 차원을 표시하는 데 필요한 비트의 수를 나타낸다.
비트코드 603은 각 비트코드 시퀀스에서 제2 비트를 제외하고 비트코드 601을 반복한다. 비트코드 603은 비트코드 601의 경우의 '0' 대신에 '1'의 값을 갖는다. 이러한 제2 비트의 변화는 아바타에 대한 추가의 정보가 뒤따르거나 전송에 포함된다는 것을 클라이언트에게 표시할 수 있다. 아바타의 위치가 변경되지 않았음을 표시하는 비트코드 '1 100'의 예에서, '1'의 값을 가진 제2 비트는 아바타의 일부 다른 태양(예를 들면, 키, 생존 대 죽음, 건강 등)이 변경되었음을 표시할 수 있다. 비트코드(603)의 각각의 의미는 도 6a에 표시되어 있다.
도 6b는 아바타 위치 정보를 제공하기 위해 발생 및 전송될 수 있는 일련의 저해상도 비트코드(605)를 나타낸 것이고, 여기에서 저해상도 비트코드는 고해상도 비트코드에 의해 의존되는 동일한 아바타 위치에 대응하지만, 4개의 계층 및 계층당 200×200 격자 셀을 가진 격자에 기초하여 통신된다. 비트코드(601, 603)와 마찬가지로, 비트코드(605)도 프리픽스 코드 규칙에 따를 수 있다. 그러나, 만일 프리픽스 코드로서 함께 사용될 경우 비트코드(601, 603)가 비트코드(605)와 충돌하기 때문에, 수신자는 어떤 코드 집합이 각 아바타에 대해 사용되고 있는지를 알아야 한다. 따라서, 이 예에서 수신자는 항상 비트코드 해상도가 아바타에 대해 수신된 최종 비트코드 해상도와 동일하다고 가정한다. 도 6b에 표시한 것처럼, 임의의 특정 격자 셀은 21 비트의 비트코드를 이용하여 명백하게 특정될 수 있기 때문에, 200×4×200(x,y,z) 크기의 저해상도 격자를 이용하여 임의의 위치 변경을 보고하는 데 필요한 최대 대역폭 크기는 21 비트이다. 또한, 고해상도 격자로의 전환이 코드 '1 00'으로 표시된 경우에도, 고해상도 비트코드는 아바타가 위치하고 있는 기존 저해상도 격자 셀 내에서 특정의 고해상도 격자 셀을 제공함으로써 저해상도 비트코드로부터 추정될 수 있다. 즉, 이 예에서, 각각의 저해상도 격자 셀은 64×64 고해상도 격자 셀을 포함한다. 그러므로, 임의의 고해상도 격자 셀은 아바타가 위치하는 저해상도 격자 셀 내에서 특정 고해상도 격자 셀의 식별을 이용하여 저해상도 격자 셀로부터 명백하게 추정될 수 있다. 저해상도 격자 셀마다 26×26 고해상도 격자 셀이 있기 때문에, 3-비트코드 '1 00'을 넘어서 고해상도로 전환하는 데 필요한 것은 6+6(즉, 12)의 추가 비트가 전부이다. 게다가 고해상도 비트코드 보고와 대조적으로, 추가 정보를 표시하는 비트코드는 위치가 저해상도 비트코드로 보고되는 경우 추가의 정보가 관련되지 않거나 중요하지 않다는 가정하에서 특정되지 않거나 저해상도 비트코드 정보에 포함되지 않을 수 있다.
도 6a와 6b는 아바타의 위치를 보고하기 위해 사용되는 비트코드 해상도의 변경을 표시하기 위한 특정 비트코드를 각각 포함한 예시적인 비트코드를 나타낸 것이다. 이것은 위치 정보가 고해상도 포맷인지 저해상도 포맷인지를 비트코드 자체가 표시하지 못하고, 위에서 설명한 것처럼 프리픽스 코드가 다른 방식으로 충돌하기 전에 어떤 비트코드가 사용중에 있는지를 수신 장치가 알 필요가 있기 때문에 타당할 수 있다. 전부는 아닐지라도 대부분의 경우에, 클라이언트 장치 또는 애플리케이션은 위치 정보가 그 아바타에 대하여 수신한 이전 위치와 동일한 해상도의 것이라고 가정할 것이다(뒤에서 자세히 설명함). 따라서, 해상도의 변경이 발생하면, 도 6a 및 도 6b의 대응하는 비트코드를 이용하여 클라이언트에게 통지할 수 있다.
도 7은 가상 세계의 모든 아바타에 대한 위치 정보를 결정하여 그 가상 세계에(또는 그 가상 세계의 인스턴스에) 접속된 모든 클라이언트 장치에게 보고하기 위한 예시적인 서버측의 방법을 나타낸 흐름도이다. 단계 700에서, 비트코드 발생기(321)는 각 아바타의 현재 위치를 나타내는 고해상도 및 저해상도 비트코드를 이전에 전송된 위치를 기초로 하여 재계산한다. 즉, 서버는 각 아바타에 대하여 최종 위치 업데이트 후에 그 아바타가 이동하였는지 아닌지를 결정하고, 그 결정에 기초해서, 비트코드 발생기(321)는 각 아바타의 이동(또는 그 결핍)을 나타내는 고해상도 비트코드 및 저해상도 비트코드를 발생한다. 그 다음에, 서버는 가상 세계에 접속된 각 클라이언트 장치에 대하여 단계 705~745를 반복하고, 이것에 대해서는 위치 정보가 준비된 하나의 클라이언트와 관련하여 뒤에서 설명한다.
단계 705에서, 서버는 사용되는 임의의 시간 해상도에 기초해서 어떤 아바타의 위치가 클라이언트에 보고되어야 하는지를 결정한다(도 9 및 관련 설명 참조). 시간 해상도는 대역폭 사용량을 더 효율적으로 관리하기 위해 사용될 수 있다. 예를 들면, 더 멀리 떨어진 아바타의 위치는 더 근접하게 위치된 아바타보다 다 낮은 주파수(더 낮은 프레임 속도)로 보고하여 전송 프레임당 사용되는 대역폭의 양을 줄일 수 있다. 이 예는 시간 해상도가 사용되지 않고, 각 아바타의 위치가 고해상도 비트코드 또는 저해상도 비트코드를 이용하여 각 프레임마다 보고되는 것으로 가정한다(프레임은 매 t초마다 전송되는 위치 데이터의 패킷을 말하고, 여기에서 t는 서버가 위치 정보를 제공하는 최단 시간을 나타내며, 예를 들면, t=1초, t=5초, t=250 밀리초 등이다).
현재 프레임에서 위치가 클라이언트에게 보고되어야 하는 각 아바타에 대하여, 서버는 단계 710~730을 반복하며, 이것은 하나의 아바타와 관련하여 뒤에서 설명한다. 단계 710에서, 서버는 현재의 아바타 위치를 클라이언트에게 미리 계산된 고해상도 비트코드를 이용해서 또는 저해상도 비트코드를 이용해서 전송해야 하는지를 결정한다. 이 결정은 임의의 원하는 기술, 예를 들면 도 8 및 도 11과 관련하여 뒤에서 설명하는 방법을 이용하여 행할 수 있다. 단계 715에서, 서버는 이 아바타에 대한 위치 정보를 내포하는 바로 이전의 프레임을 수신하였는지 판정한다. 이것은 만일 클라이언트가 이 아바타 위치를 내포한 바로 이전 프레임을 수신하지 못한 경우 비트코드가 결과적으로 올바르지 않은 위치로 될 것이기 때문에(비트코드는 이전 위치로부터의 상계를 제공할 뿐이므로) 중요하다. 따라서, 만일 현재 클라이언트가 현재 아바타의 위치 정보를 내포한 이전 프레임을 수신하였으면, 서버는 단계 720에서 그 아바타에 대한 미리 계산된 비트코드를 단계 710에서 선택한 비트코드 해상도를 이용하여 선택한다. 만일 현재 클라이언트가 현재 아바타의 위치 정보를 내포한 이전 프레임을 수신하지 못하였으면, 단계 725에서 비트코드 발생기(321))는 현재 클라이언트에 보고된 최종 위치 비트코드에 기초하여 적당한 비트코드 해상도로 새로운 비트코드를 발생한다.
단계 730에서, 서버는 선택된(단계 720에서) 또는 새로 발생한(단계 725에서) 비트코드를 현재 프레임용으로 클라이언트에 대한 전송 패킷에 추가한다. 단계 735 및 단계 740에서, 서버는 현재 클라이언트에게 보고할 필요가 있는 아바타 위치가 더 있는지를 판정하고, 만일 더 있으면 위치를 보고할 각각의 추가 아바타에 대하여 단계 710~730을 반복한다.
클라이언트에게 보고할 모든 아바타의 위치를 비롯해서 서버가 클라이언트에 대한 전송 패킷을 수집하였으면, 단계 745에서 비트코드 압축기(320)는 렁렝쓰 인코딩(도 10과 관련하여 뒤에서 설명함)을 수행하고, 전송 패킷을 클라이언트에게 전송한다. 단계 750 및 단계 755에서, 서버는 현재 프레임에 대한 위치 정보를 수신할 임의의 클라이언트가 남아있는지를 판정하여 만일 있으면 그 클라이언트 각각에 대하여 단계 705~745를 반복한다.
각 클라이언트에게 고해상도 비트코드를 제공할 것인지 또는 저해상도 비트코드를 제공할 것인지의 결정은 가상 세계에서 기준 아바타(비트코드가 전송된 클라이언트와 관련된 아바타)와 다른 각 아바타 간의 거리에 따라 달라질 수 있다. 도 8을 간단히 참조하면, 가상 세계 서버는 기준 아바타(801)에 대한 해상도 임계 거리를 결정할 수 있다. 기준 아바타(801)는 다른 아바타(803, 805) 각각에 대한 위치 정보가 보고되어야 하는 클라이언트에 대응한다. 따라서 해상도 임계치는 기준 아바타(801)의 위치로부터의 거리로서 규정될 수 있다. 임계치에 또는 임계치 미만의 거리 내에 있는 아바타(803)의 위치는 고해상도 비트코드를 이용하여 보고되고, 기준 아바타(801)로부터 임계치를 넘는 거리에 위치된 아바타(805)의 위치는 저해상도 비트코드를 이용하여 보고될 수 있다. 대안적으로 또는 추가적으로, 아바타의 시야(view)가 해상도를 선택할 때 고려될 수 있다. 예를 들면, 아바타는 180도의 시야 범위(viewing scope)를 가질 뿐이다. 따라서, 상기 180도의 시야각을 벗어나는 모든 다른 아바타들의 위치는 저해상도 비트코드를 이용하여 또한 보고될 것이다.
도 11은 가상 세계에서 붐비는 지역을 보상하기 위해 고해상도 범위를 수정하는 예시적인 방법을 나타낸 것이다. 단계 1100에서, 가상 세계 시스템은 고해상도 범위 내(예를 들면 100m 이내)에 있는 아바타의 수를 판정한다. 단계 1105에서, 가상 세계 시스템은 고해상도 범위 내의 아바타의 수가 소정의 임계치 이상인지를 판정한다. 이 임계치는 아바타가 인구밀도가 높은 지역에 있을 때 고해상도 비트코드를 많이 전송하기 위해 상당한 양의 대역폭을 사용해야 하는 가능성을 감소시키도록 규정될 수 있다. 임계치는 20 아바타, 50 아바타, 100 아바타, 500 아바타, 1000 아바타 등일 수 있다. 만일 아바타의 수가 소정의 임계치를 초과하고 그 범위가 최소 범위 이상이면, 가상 세계 시스템은 단계 1115에서 고해상도 범위를 감소시키고 새로운 범위를 시험하기 위해 단계 1100으로 되돌아갈 수 있다. 범위 내의 아바타의 수가 임계치와 같거나 그 미만이면, 또는 범위가 더 이상 감소될 수 없으면, 서버는 단계 1110으로 진행하여 고해상도 범위 내의 아바타에 대한 고해상도 비트코드 및 다른 모든 아바타에 대한 저해상도 비트코드를 선택/결정한다. 하나 이상의 구성에 있어서, 최소의 고해상도 범위는 고해상도 범위가 최소치 미만으로 되지 않도록 규정될 수 있다. 이러한 경우에, 고해상도 아바타의 수는 임계치를 초과할 수 있다.
도 9는 고해상도 비트코드를 보고하는 높은 시간 해상도(즉, 빈도) 및 저해상도 비트코드를 보고하는 낮은 시간 해상도를 제공하는 예시적인 전송 스케줄을 나타낸 것이다. 이것에 따라서, 예시적인 전송 스케줄(900)은 매 200 밀리초마다 저해상도 비트코드를 전송하고, 고해상도 비트코드 정보는 매 50 밀리초마다 전송된다. 대안적으로, 저해상도 비트코드 정보를 더 높은 빈도로 전송하고 고해상도 비트코드 정보를 더 낮은 빈도로 전송하여 대역폭을 관리할 수 있다.
전술한 바와 같이, 가상 세계 시스템은 복수의 아바타에 대한 위치 정보를 운반하는 전송 스트림에서의 대역폭 사용량을 최적화하기 위해 런렝쓰 인코딩(RLE)을 사용할 수 있다. 도 10은 전송 스트림을 최적화하기 위해 런렝쓰 인코딩을 사용하는 예시적인 방법을 나타낸 것이다. 단계 1000에서, 가상 세계 시스템은, 예를 들어서 도 7과 관련하여 위에서 설명한 것처럼, 기준 아바타 클라이언트에 전송할 복수의 아바타에 대응하는 위치 정보(예를 들면, 고해상도 비트코드 및 저해상도 비트코드)를 결정할 수 있다. 단계 1005에서, 시스템은 위치 정보를 특정 순서에 따라 분류할 수 있다. 일 예로서, 상기 순서는 하기와 같이 규정될 수 있다: 1) 이동을 표시하는 고해상도 비트코드가 이전 업데이트시에 보내진 아바타, 2) 이동이 없음을 표시하는 고해상도 비트코드가 이전 업데이트시에 보내진 아바타, 3) 이동이 없음을 표시하는 저해상도 비트코드가 이전 업데이트시에 보내진 아바타, 및 4) 이동을 표시하는 저해상도 비트코드가 이전 업데이트시에 보내진 아바타. 각 그룹은 서버 및 각 클라이언트에게 공지된 아바타 ID에 기초하여 추가로 분류될 수 있다. 아바타 위치 정보가 전송되는 순서는 변할 수 있고, 서버와 클라이언트 간에 임의의 미리 규정된 및 협정된 분류 순서를 포함할 수 있다. 따라서, 아바타/클라이언트의 순서를 표시하는 추가의 정보 및 데이터는 각 클라이언트가 서버에 의해 분류된 순서로 데이터가 수신될 것으로 기대하기 때문에 전송에 포함될 필요가 없다. 전송 스트림에서 각 비트코드와 함께 아바타 ID 정보를 보낼 필요가 없기 때문에 추가의 대역폭이 절약된다.
일단 분류되었으면, 단계 1010에서 시스템은 연속적인 고정 아바타 위치의 세그멘트를 표 1의 RLE 비트코드(및 적용가능한 경우 데이터) 중의 하나로 교체할 수 있다.
RLE 비트코드
RLE 비트코드 RLE 데이터 설명
0 00 적용불능 다음 하나(1)의 아바타가 고정이다
0 01 nnnn 다음 nnnn 아바타가 고정이고, nnnn은 1~16의 이진수를 나타낸다
0 10 nnnnnnnn 다음 nnnnnnnn 아바타가 고정이고, nnnnnnnn은 1~256의 이진수를 나타낸다
0 11 nnnnnnnnnnn 다음 nnnnnnnnnnn 아바타가 고정이고, nnnnnnnnnnn은 1~2048의 이진수를 나타낸다
예를 들어서, '0 00'의 비트코드는 예상된 아바타 순서에서 다음 사용자만이 고정임을 표시하기 위해 사용되고, '0 01 nnnn'은 리스트에서 다음 nnnn(최대 24까지) 사용자가 고정임을 표시하기 위해 사용되며, '0 10 nnnnnnnn'은 리스트에서 다음 nnnnnnnn(최대 28까지) 사용자가 고정임을, 및 '0 11 nnnnnnnnnnn'은 리스트에서 다음 nnnnnnnnnnn(최대 211까지) 사용자가 고정임을 표시하기 위해 사용된다. RLE 비트코드와, 비트코드 뒤에 이진수 1~2m이 뒤따르는 m의 값 사이의 임의의 선협정 상관관계를 사용할 수 있다. 211(2048)은 이 예에서 가상 세계의 각 인스턴스가 기껏해야 한번에 2000 사용자를 가질 수 있고, 따라서 211 이상의 사용자를 고정으로 표시할 필요가 없기 때문에 최종 RLE 비트코드에 대하여 선택되었다. 따라서 RLE 비트코드는 아바타 위치가 고정이고 추가의 정보가 제공되지 않는다는 것을 표시하는 '0' 비트코드의 인스턴스를 교체하기 위해 사용된다. 어떤 RLE 비트코드가 사용되는지는 특정 클라이언트에게 전송하기 위해 준비된 패킷에서 연속적인 '0' 비트코드의 수에 의존한다. 이것에 의해 RLE 비트코드는 복수의 고해상도/저해상도 비트코드(뒤에서 설명하는 것은 제외)를 단일 RLE 비트코드로 교체함으로써 대역폭을 추가로 감소시킨다. 단계 1015에서, 비트코드는 기준 아바타의 클라이언트에게 전송될 수 있다.
RLE 비트코드는 예를 들면 전송 스트림에서 2048개 이상의 연속적인 아바타가 고정인 경우 추가의 아바타 위치를 수용하기 위해 수정 또는 추가될 수 있다. 단일 고해상도 비트코드(또는 저해상도 비트코드) '0'으로부터 RLE 비트코드 '0 00'으로의 변화가 실제로 1비트로부터 3비트로 대역폭의 증가를 가져오지만, RLE 비트코드를 사용하는 실 효과는 위에서 설명한 분류 순서에 따라서 전체 대역폭을 감소시킨다. 고해상도 비트코드 및 저해상도 비트코드 '0'은 '0'이 RLE 비트코드의 프리픽스이고 사용중인 프리픽스 코드 시스템에 불명확성을 도입하기 때문에 RLE 비트코드와 함께 사용될 수 없다. 게다가, 만일 추가의 비 위치 정보(non-position information)가 위치 비트코드를 뒤따르면, 이 위치 비트코드는 클라이언트가 뒤따르는 추가의 정보를 인식하도록 교체되지 않을 것이다. 다시 말해서, 추가의 정보가 제공되어야 할 때, 가상 세계 서버는 다른 연속적인 고정 아바타 위치 내에서 아바타를 포함하는 대신에 그 아바타에 대한 코드 '1 100'을 전송한다.
도 12는 클라이언트 장치에서 위치 정보 전송 스트림을 수신 및 처리하는 예시적인 방법을 나타낸 것이다. 클라이언트는 위에서 설명한 것처럼 먼저 RLE 압축을 수행하여 RLE 비트코드가 신장되고 복수의 고정 '0' 비트코드로 대신 교체되게 한다. 그 다음에 도 12의 방법이 각 아바타에 대하여 클라이언트에 의해 수행된다.
단계 1200에서, 클라이언트는 개별 비트코드가 수신된 아바타를 식별한다. 단계 1205에서 클라이언트는 이전에 알려진 아바타의 위치뿐만 아니라 그 아바타에 대하여 최종 사용된 비트코드 해상도를 조사하고, 입력되는 비트코드는 동일한 해상도라고 가정한다. 단계 1210에서 클라이언트는 비트코드가 해상도 변화를 표시하는지를 가정된 비트코드 해상도를 이용하여 결정한다. 만일 해상도의 변화가 표시되지 않으면, 단계 1215에서 클라이언트는 이전에 알려진 위치에 새로운 비트코드를 적용하여 그 아바타에 대한 새로운 위치를 획득하고, 처리는 단계 1250으로 진행한다.
그러나, 만일 비트코드가 해상도의 변화를 표시하면, 단계 1220에서 클라이언트는 해상도가 증가하는지(저해상도 비트코드로부터 고해상도 비트코드로 진행) 또는 감소하는지(고해상도 비트코드로부터 저해상도 비트코드로 진행)를 결정한다. 만일 비트코드 해상도가 감소하면, 단계 1225에서 클라이언트는 아바타의 이전에 알려진 위치를 저해상도 격자를 이용하여 고해상도 격자로부터 감소시킨다(즉, 이 예에서, 클라이언트는 저해상도 격자 셀마다 64×64 고해상도 격자 셀이 있음을 알고, 그에 따라서 계산하며 동일한 계층을 유지한다). 단계 1230에서, 클라이언트는 그 다음에 추가의 저해상도 비트코드를 판독하고, 단계 1215에서 클라이언트는 저해상도 비트코드를 이전에 알려진 위치에 적용하여 현재 위치를 결정한다.
만일 단계 1220에서 비트코드 해상도가 증가한다고 비트코드가 표시하면, 단계 1235에서 클라이언트는 아바타에 대한 제2의 저해상도 비트코드를 판독하고, 단계 1240에서 제2의 저해상도 비트코드를 이전에 알려진 위치에 적용하여 클라이언트가 아바타에 대한 정확한 위치를 갖고 있음을 저해상도 비트코드에 기초하여 확실히 한다. 단계 1245에서, 클라이언트는 단계 1240에서 클라이언트에 의해 계산된 위치에 제1의 저해상도 비트코드와 함께 수신된 추가의 정밀 정보를 적용하여 장래의 고해상도 비트코드와 함께 사용할 수 있는 위치에 도달한다. 그 다음에 클라이언트는 단계 1250으로 진행한다.
단계 1250에서, 클라이언트는 전송 스트림이 추가의 아바타 위치에 대한 임의의 비트코드를 내포하는지를 판단하고, 만일 내포하고 있으면 다음 아바타의 비트코드를 선택하고 수신된 각각의 추가 아바타 비트코드에 대하여 단계 1200~1250을 반복한다.
각 아바타의 새로운 위치를 결정한 후, 또는 각 아바타의 새로운 위치를 결정한 때, 클라이언트는 가상 세계의 그래픽 묘사를 제공하는 그래픽 사용자 인터페이스를 재연출하여 업데이트된 위치를 반영한다. 클라이언트는 아바타가 위치되는 격자 셀의 중앙에 아바타가 위치되는 것으로서 묘사하거나, 또는 아바타가 최근에 격자 셀로 이동하였는지 등에 대하여 아바타의 이동 이력에 따라서 아바타를 묘사하도록 격자 셀 내의 위치를 추정할 수 있다.
여기에서 설명하는 임의의 방법 단계, 절차 또는 기능은 예를 들면 단계, 모듈, 기능, 프로그램, 물체 등을 결합, 재순서화 및/또는 분리함으로써 다른 형태로 구현될 수 있다. 또한, 여기에서 설명한 기술은 프로세서 및 기타의 컴포넌트가 방법 단계, 절차 또는 기능을 수행하게 하는 실행가능 명령어와 함께 1개 이상의 프로세서를 이용하여 구현될 수 있다. 여기에서 사용하는 용어 "프로세서" 및 "컴퓨터"는 단독으로 사용되든 메모리 또는 다른 컴퓨터 판독가능 기억 매체에 저장된 실행가능 명령어와 함께 사용되든 임의의 각종 유형의 잘 알려진 컴퓨팅 구조물, 비제한적인 예를 들자면, 1개 이상의 마이크로프로세서, 특수 용도 컴퓨터 칩, 현장 프로그램가능한 게이트 어레이(FPGAS), 컨트롤러, 용도 지정 집적회로(ASICS), 하드웨어/펌웨어/소프트웨어의 조합, 또는 기타의 특수 용도 또는 범용의 처리 회로 등의 구조물을 포함하는 것으로 이해하여야 한다. 또한, 여기에서 설명하는 특수한 소프트웨어 아키텍쳐는 단지 예시적인 것이고, 소프트웨어 기능은 추가의 또는 다른 모듈, 프로그램, 물체, 애플리케이션 등에 의해 수행될 수 있다.
지금까지 본 발명을 실시하는 특수한 예를 설명하였지만, 이 기술에 숙련된 사람이라면 첨부된 청구범위에서 규정되는 본 발명의 정신 및 범위로부터 벗어나지 않고 전술한 시스템 및 방법을 여러 가지로 변경 및 치환할 수 있다는 것을 알 것이다. 또한, 이 기술에 숙련된 사람이라면 이 명세서의 내용에 비추어 첨부된 청구범위의 범위 및 정신에 속하는 많은 다른 실시예, 수정예 및 변형예를 생각해 낼 수 있을 것이다.
100: 네트워크 101: 클라이언트
105: 물리 서버 106: 가상 세계 서버
201, 203: 데이터 베이스 205: 클라이언트 소프트웨어
207: 통신 인터페이스 209: 입력 인터페이스
211: 출력 어댑터 213: ROM
215: RAM 217: 프로세서
219: 디스플레이 221: 스피커
223: 키보드 225: 마우스
300: 가상 세계 서버 307: 통신 인터페이스
309: 아바타 위치 데이터베이스 311: 월드 데이터베이스
313: 사용자 데이터베이스 317: 게임 로직
319: 해상도 결정기 320: 비트코드 압축기
321: 비트코드 발생기 400: 가상 세계
401: 아바타 403: 나무
405: 자동차

Claims (50)

  1. 가상 세계 내의 하나 이상의 아바타에 대한 위치 이동 정보를 전달하는 방법에 있어서,
    제1 아바타에 대한 위치 이동 정보를 보고하기 위한 격자 해상도 - 상기 격자 해상도는 상이한 격자 해상도를 가진 복수의 격자로부터 격자를 선택하는 것에 기초한 것이고, 각 격자는 가상 세계에 대응하는 것임 - 를 결정하는 단계;
    상기 선택된 격자 내의 아바타의 현재 위치를 상기 선택된 격자 내의 아바타의 이전 위치와 비교하여 상기 제1 아바타의 상기 위치 이동 정보를 결정하는 단계; 및
    상기 제1 아바타의 상기 위치 이동 정보를 클라이언트에게 전송하는 단계를 포함하며,
    상기 선택된 격자는 상기 가상 세계에서 상기 제1 아바타와 제2 아바타 간의 거리에 기초하여 선택되고, 상기 제2 아바타는 상기 위치 이동 정보가 전송되는 상기 클라이언트에 대응하는 것인, 위치 이동 정보 전달 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 격자를 선택하는 것은,
    상기 거리가 고해상도 범위 임계치 미만인지의 여부를 결정하는 단계와;
    상기 거리가 상기 고해상도 범위 임계치와 같거나 그 미만이라는 결정에 응답해서, 제1 해상도를 가진 제1 격자를 선택하는 단계와;
    상기 거리가 상기 고해상도 범위 임계치를 초과한다는 결정에 응답해서, 상기 제1 해상도보다 더 낮은 제2 해상도를 가진 제2 격자를 선택하는 단계를 포함한 것인, 위치 이동 정보 전달 방법.
  4. 제1항에 있어서, 상기 위치 이동 정보를 결정하는 단계는, 상기 선택된 격자 내에서 상기 제1 아바타에 대한 이동 상계(offset)를 발생하는 단계를 포함한 것인, 위치 이동 정보 전달 방법.
  5. 제1항에 있어서, 상기 결정된 격자 해상도에 기초해서, 상기 위치 이동 정보를 나타내는 비트코드를 발생하는 단계를 더 포함한 위치 이동 정보 전달 방법.
  6. 제1항에 있어서,
    상기 위치 이동 정보를 전송할 시간 해상도를 결정하는 단계와;
    상기 결정된 시간 해상도에 따라서 상기 위치 이동 정보의 전송을 스케줄하는 단계를 더 포함한 위치 이동 정보 전달 방법.
  7. 제1항에 있어서,
    제2 아바타에 대한 위치 이동 정보를 보고하기 위한 제2 격자 해상도- 상기 제2 격자 해상도는 상기 복수의 격자로부터 제2 격자를 선택하는 것에 기초한 것임- 를 결정하는 단계와;
    상기 선택된 제2 격자 내의 상기 제2 아바타의 현재 위치를 상기 선택된 제2 격자 내의 상기 제2 아바타의 이전 위치와 비교하여 상기 제2 아바타의 상기 위치 이동 정보를 결정하는 단계와;
    상기 제2 아바타의 상기 위치 이동 정보를 상기 클라이언트에게 전송하는 단계를 더 포함한 위치 이동 정보 전달 방법.
  8. 제1항에 있어서, 상기 클라이언트에게 전송하는 단계는, 복수의 아바타의 위치 이동 정보에 대응하는 복수의 비트코드를 포함한 전송 스트림으로 상기 위치 이동 정보를 전송하는 단계를 포함한 것이고, 상기 방법이,
    2개 이상 아바타의 대응 집합의 위치에 변화가 없음을 표시하는 2개 이상의 연속 비트코드의 집합을 식별하는 단계와;
    상기 2개 이상 연속 비트코드의 집합을 단축 비트코드로 응축하는 단계를 더 포함하는 위치 이동 정보 전달 방법.
  9. 제1항에 있어서, 상기 격자를 선택하는 것은,
    해상도 범위를 식별하는 단계와;
    상기 클라이언트에 대응하는 제2 아바타로부터 상기 해상도 범위 내에 있는 아바타의 수를 결정하는 단계와;
    상기 해상도 범위 내에 있는 아바타의 수가 아바타 임계치를 초과하는지 여부를 결정하는 단계와;
    상기 해상도 범위 내에 있는 아바타의 수가 아바타 임계치를 초과한다는 결정에 응답해서, 상기 해상도 범위 내에 있는 아바타의 수가 상기 아바타 임계치 내로 될 때까지 상기 해상도 범위를 수정하는 단계를 포함한 것인, 위치 이동 정보 전달 방법.
  10. 제9항에 있어서, 상기 해상도 범위 내에 있는 아바타의 위치 이동 정보는 상기 선택된 격자에 기초해서 보고되고, 상기 해상도 범위 밖에 있는 아바타의 위치 이동 정보는 상기 제1 격자보다 더 낮은 해상도를 가진 제2 격자에 기초해서 보고되는 것인, 위치 이동 정보 전달 방법.
  11. 제1항에 있어서, 상기 위치 이동 정보는 복수의 아바타에 대한 위치 이동 정보에 대응하는 복수의 비트코드를 포함한 전송 스트림으로 전송되는 것인, 위치 이동 정보 전달 방법.
  12. 제11항에 있어서, 상기 복수의 아바타에 대한 위치 이동 정보는 이전 전송에서 상기 클라이언트에게 제공된 과거 위치 이동 정보의 해상도 및 유형에 따라서 상기 전송 스트림에서 분류(sort)되는 것인, 위치 이동 정보 전달 방법.
  13. 제11항에 있어서, 상기 복수의 아바타는 상기 가상 세계 내의 모든 아바타를 포함한 것인, 위치 이동 정보 전달 방법.
  14. 가상 세계 내의 복수의 아바타에 대한 위치 정보를 제공하는 방법에 있어서,
    상기 가상 세계 내의 모든 아바타를 포함하는 상기 가상 세계 내의 복수의 아바타 각각의 현재 위치를 가상 세계 서버가 결정하는 단계;
    상기 가상 세계에 대응하는 제1 격자 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교해서 복수의 아바타 각각의 현재 위치에 따라 복수의 아바타 각각의 제1 위치 상계(offset) 데이터를 발생하는 단계;
    상기 가상 세계에 대응하는 제2 격자 - 상기 제1 격자와 상기 제2 격자는 다른 해상도를 갖는 것임 - 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교해서 복수의 아바타 각각의 현재 위치에 따라 복수의 아바타 각각의 제2 위치 상계 데이터를 발생하는 단계;
    복수의 아바타 각각에 대해서, 제1 가상 세계 클라이언트 장치에 전송하기 위해 상기 제1 위치 상계 데이터와 상기 제2 위치 상계 데이터 중의 하나만을 선택하는 단계;
    적어도 복수의 아바타 전부에 대한 상기 선택된 위치 상계 데이터를 상기 제1 가상 세계 클라이언트 장치에 전송하는 단계;
    복수의 아바타 각각에 대해서, 제2 가상 세계 클라이언트 장치에 전송하기 위해 상기 제1 위치 상계 데이터와 상기 제2 위치 상계 데이터 중의 하나만을 선택하는 단계 - 상기 제2 가상 세계 클라이언트 장치에 전송하기 위해 선택되는 위치 상계 데이터는 상기 제1 가상 세계 클라이언트 장치에 전송하기 위해 선택되는 위치 상계 데이터와 다른 것임 - ; 및
    상기 제2 가상 세계 클라이언트 장치에 대응하는 아바타를 제외하고 적어도 복수의 아바타 전부에 대한 상기 선택된 위치 상계 데이터를 상기 제2 가상 세계 클라이언트 장치에 전송하는 단계를 포함하는 위치 정보 제공 방법.
  15. 삭제
  16. 제14항에 있어서, 각 위치 상계 데이터는 비트코드를 포함하고, 상기 비트코드의 포맷은 아바타의 위치 변화의 유형에 기초하는 것인, 위치 정보 제공 방법.
  17. 제16항에 있어서, 상기 가상 세계는 3차원 가상 세계이고, 상기 아바타의 위치 변화의 상기 유형은 상기 가상 세계에서 상기 아바타의 수직 위치의 변화를 포함한 것인, 위치 정보 제공 방법.
  18. 제16항에 있어서, 위치 변화의 상기 유형은 이동 없음을 포함한 것인, 위치 정보 제공 방법.
  19. 제14항에 있어서,
    상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터의 바로 이전 집합을 수신하였는지 여부를 결정하는 단계와;
    상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터의 바로 이전 집합을 수신하지 않았다는 결정에 응답해서, 상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터를 최종 수신한 이후 아바타 이동에 기초해서 위치 상계 데이터의 커스텀 집합을 발생하는 단계와;
    상기 위치 상계 데이터의 커스텀 집합을 상기 제1 가상 세계 클라이언트 장치에 전송하는 단계를 더 포함한 위치 정보 제공 방법.
  20. 제19항에 있어서, 상기 위치 상계 데이터의 커스텀 집합은 복수의 아바타 각각에 대한 디폴트 이전 위치에 기초하여 발생되는 것인, 위치 정보 제공 방법.
  21. 가상 세계 클라이언트 장치에서, 가상 세계 내의 복수의 아바타의 위치 상계 정보를 수신하는 단계와;
    위치 상계 정보가 수신된 각 아바타에 대하여,
    상기 위치 상계 정보의 해상도를 결정하고,
    상기 수신된 위치 상계 정보를 상기 결정된 해상도에 따라 적용하여 상기 위치 상계 정보에 대응하는 상기 아바타의 새로운 위치를 결정하는 단계를 포함하고,
    제1 아바타에 대응하는 위치 상계 정보는 제1 해상도로 수신되고 제2 아바타에 대응하는 위치 상계 정보는 제2 해상도로 수신되는 것인, 방법.
  22. 제21항에 있어서, 상기 복수의 아바타는 상기 가상 세계 내의 모든 아바타를 포함한 것인, 방법.
  23. 제21항에 있어서, 수신된 비트코드에 기초해서, 제3 아바타에 대응하는 위치 상계 정보가 상기 제1 해상도로부터 상기 제2 해상도로 변화하였는지를 결정하는 단계를 더 포함한 방법.
  24. 제23항에 있어서, 상기 제1 해상도는 상기 제2 해상도보다 더 낮은 것이고, 상기 방법은 상기 수신된 비트코드와 함께 수신된 추가의 정밀 정보를 이용하여 상기 제3 아바타의 위치를 결정하는 단계를 더 포함한 방법.
  25. 제22항에 있어서, 상기 복수의 아바타의 상기 위치 상계 정보는 바로 이전에 수신한 위치 상계 정보 집합의 해상도에 따라 분류되는 것인, 방법.
  26. 제25항에 있어서, 상기 복수의 아바타의 상기 위치 상계 정보는 바로 이전에 수신한 위치 상계 정보에서 표시하는 위치 변화의 유형에 따라 추가로 분류되는 것인, 방법.
  27. 가상 세계 서버 시스템에 있어서,
    하나 이상의 프로세서와;
    하나 이상의 네트워크 인터페이스와;
    하나 이상의 프로세서에 의해 실행될 때, 가상 세계 내의 하나 이상의 아바타에 대한 위치 이동 정보를 상기 가상 세계 서버 시스템과 통신하는 하나 이상의 클라이언트 장치에 상기 하나 이상의 네트워크 인터페이스를 통해 전달하는 방법을 수행하는 실행가능 명령어를 저장한 컴퓨터 메모리를 포함하고, 상기 전달하는 방법은,
    제1 아바타에 대한 위치 이동 정보를 보고하기 위한 격자 해상도- 상기 격자 해상도는 상이한 격자 해상도를 가진 복수의 격자로부터 격자를 선택하는 것에 기초한 것이고, 각 격자는 가상 세계에 대응하는 것임- 를 결정하는 단계;
    상기 선택된 격자 내의 아바타의 현재 위치를 상기 선택된 격자 내의 아바타의 이전 위치와 비교하여 상기 제1 아바타의 상기 위치 이동 정보를 결정하는 단계; 및
    상기 제1 아바타의 상기 위치 이동 정보를 클라이언트에게 전송하는 단계를 포함하며,
    상기 위치 이동 정보는 복수의 아바타에 대한 위치 이동 정보에 대응하는 복수의 비트코드를 포함한 전송 스트림으로 전송되고,
    상기 복수의 아바타에 대한 위치 이동 정보는 이전 전송에서 상기 클라이언트에게 제공된 과거 위치 이동 정보의 해상도에 따라서 상기 전송 스트림에서 분류되는 것인, 가상 세계 서버 시스템.
  28. 제27항에 있어서, 상기 선택된 격자는 상기 가상 세계 내의 상기 제1 아바타와 제2 아바타 간의 거리에 기초하여 선택되고, 상기 제2 아바타는 상기 위치 이동 정보가 전송될 상기 클라이언트에 대응하는 것인, 가상 세계 서버 시스템.
  29. 제28항에 있어서, 상기 격자를 선택하는 것은,
    상기 거리가 고해상도 범위 임계치 미만인지 여부를 결정하는 단계와;
    상기 거리가 상기 고해상도 범위 임계치와 같거나 그 미만이라는 결정에 응답해서, 제1 해상도를 가진 제1 격자를 선택하는 단계와;
    상기 거리가 상기 고해상도 범위 임계치를 초과한다는 결정에 응답해서, 상기 제1 해상도보다 더 낮은 제2 해상도를 가진 제2 격자를 선택하는 단계를 포함한 것인, 가상 세계 서버 시스템.
  30. 제27항에 있어서, 상기 위치 이동 정보를 결정하는 단계는, 상기 선택된 격자 내에서 상기 제1 아바타에 대한 이동 상계를 발생하는 단계를 포함한 것인, 가상 세계 서버 시스템.
  31. 제27항에 있어서, 상기 전달하는 방법이, 상기 결정된 격자 해상도에 기초해서, 상기 위치 이동 정보를 나타내는 비트코드를 발생하는 단계를 더 포함한 가상 세계 서버 시스템.
  32. 제27항에 있어서, 상기 전달하는 방법이,
    상기 위치 이동 정보를 전송할 시간 해상도를 결정하는 단계와;
    상기 결정된 시간 해상도에 따라서 상기 위치 이동 정보의 전송을 스케줄하는 단계를 더 포함한 가상 세계 서버 시스템.
  33. 제27항에 있어서, 상기 전달하는 방법이,
    제2 아바타에 대한 위치 이동 정보를 보고하기 위한 제2 격자 해상도- 상기 제2 격자 해상도는 상기 복수의 격자로부터 제2 격자를 선택하는 것에 기초한 것임- 를 결정하는 단계와;
    상기 선택된 제2 격자 내의 상기 제2 아바타의 현재 위치를 상기 선택된 제2 격자 내의 상기 제2 아바타의 이전 위치와 비교하여 상기 제2 아바타의 상기 위치 이동 정보를 결정하는 단계와;
    상기 제2 아바타의 상기 위치 이동 정보를 상기 클라이언트에게 전송하는 단계를 더 포함한 가상 세계 서버 시스템.
  34. 제27항에 있어서, 상기 클라이언트에게 전송하는 단계는, 복수의 아바타의 위치 이동 정보에 대응하는 복수의 비트코드를 포함한 전송 스트림으로 상기 위치 이동 정보를 전송하는 단계를 포함한 것이고, 상기 전달하는 방법이,
    2개 이상 아바타의 대응 집합의 위치에 변화가 없음을 표시하는 1개 이상의 연속 비트코드의 집합을 식별하는 단계와;
    1개 이상 연속 비트코드의 집합을 런렝쓰(run length) 인코딩 비트코드로 교체하는 단계를 더 포함한 가상 세계 서버 시스템.
  35. 제27항에 있어서, 상기 격자를 선택하는 것은,
    해상도 범위를 식별하는 단계와;
    상기 클라이언트에 대응하는 제2 아바타로부터 상기 해상도 범위 내에 있는 아바타의 수를 결정하는 단계와;
    상기 해상도 범위 내에 있는 아바타의 수가 아바타 임계치를 초과하는지 여부를 결정하는 단계와;
    상기 해상도 범위 내에 있는 아바타의 수가 상기 아바타 임계치를 초과한다는 결정에 응답해서, 상기 해상도 범위 내에 있는 아바타의 수가 상기 아바타 임계치 내로 될 때까지 상기 해상도 범위를 수정하는 단계를 포함한 것인 가상 세계 서버 시스템.
  36. 제35항에 있어서, 상기 해상도 범위 내에 있는 아바타의 위치 이동 정보는 상기 선택된 격자에 기초해서 보고되고, 상기 해상도 범위 밖에 있는 아바타의 위치 이동 정보는 상기 제1 격자보다 더 낮은 해상도를 가진 제2 격자에 기초해서 보고되는 것인, 가상 세계 서버 시스템.
  37. 삭제
  38. 가상 세계 서버 시스템에 있어서,
    하나 이상의 프로세서와;
    하나 이상의 네트워크 인터페이스와;
    하나 이상의 프로세서에 의해 실행될 때, 가상 세계 내의 복수의 아바타에 대한 위치 정보를 제공하는 방법을 수행하는 실행가능 명령어를 저장한 컴퓨터 메모리를 포함하고, 상기 제공하는 방법은,
    상기 가상 세계 내의 모든 아바타를 포함하는 상기 가상 세계 내의 복수의 아바타 각각의 현재 위치를 결정하는 단계;
    상기 가상 세계에 대응하는 제1 격자 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교해서 복수의 아바타 각각의 현재 위치에 따라 복수의 아바타 각각의 제1 위치 상계 데이터를 발생하는 단계;
    상기 가상 세계에 대응하는 제2 격자- 상기 제1 격자와 상기 제2 격자는 다른 해상도를 갖는 것임- 내의 복수의 아바타 각각의 대응하는 이전 위치와 비교해서 복수의 아바타 각각의 현재 위치에 따라 복수의 아바타 각각의 제2 위치 상계 데이터를 발생하는 단계;
    복수의 아바타 각각에 대해서, 제1 가상 세계 클라이언트 장치에 전송하기 위해 상기 제1 위치 상계 데이터와 상기 제2 위치 상계 데이터 중의 하나만을 선택하는 단계;
    적어도 복수의 아바타 전부에 대한 상기 선택된 위치 상계 데이터를 상기 제1 가상 세계 클라이언트 장치에 전송하는 단계;
    상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터의 바로 이전 집합을 수신하였는지 여부를 결정하는 단계;
    상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터의 바로 이전 집합을 수신하지 않았다는 결정에 응답해서, 상기 제1 가상 세계 클라이언트 장치가 위치 상계 데이터를 최종 수신한 이후 아바타 이동에 기초해서 위치 상계 데이터의 커스텀 집합을 발생하는 단계; 및
    상기 위치 상계 데이터의 커스텀 집합을 상기 제1 가상 세계 클라이언트 장치에 전송하는 단계를 포함하는 것인, 가상 세계 서버 시스템.
  39. 제38항에 있어서, 상기 제공하는 방법이,
    복수의 아바타 각각에 대해서, 제2 가상 세계 클라이언트 장치에 전송하기 위해 상기 제1 위치 상계 데이터와 상기 제2 위치 상계 데이터 중의 하나만을 선택하는 단계- 상기 제2 가상 세계 클라이언트 장치에 전송하기 위해 선택되는 위치 상계 데이터는 상기 제1 가상 세계 클라이언트 장치에 전송하기 위해 선택되는 위치 상계 데이터와 다른 것임- 와;
    상기 제2 가상 세계 클라이언트 장치에 대응하는 아바타 이외의 적어도 복수의 아바타 전부에 대한 상기 선택된 위치 상계 데이터를 상기 제2 가상 세계 클라이언트 장치에 전송하는 단계를 더 포함한 것인 가상 세계 서버 시스템.
  40. 제38항에 있어서, 각각의 위치 상계 데이터는 비트코드를 포함하고, 상기 비트코드의 포맷은 아바타의 위치 변화의 유형에 기초하는 것인, 가상 세계 서버 시스템.
  41. 제40항에 있어서, 각 비트코드는 프리픽스 코딩 방식에 따르는 것인, 가상 세계 서버 시스템.
  42. 제40항에 있어서, 위치 변화의 상기 유형은 이동 없음을 포함한 것인, 가상 세계 서버 시스템.
  43. 삭제
  44. 제38항에 있어서, 상기 위치 상계 데이터의 커스텀 집합은 복수의 아바타 각각에 대한 디폴트 이전 위치에 기초하여 발생되는 것인, 가상 세계 서버 시스템.
  45. 가상 세계 클라이언트 장치에서 실행될 때, 아바타 위치 정보를 수신하는 방법을 수행하는 실행가능 명령어를 저장한 하나 이상의 물리적 컴퓨터 메모리에 있어서, 상기 수신하는 방법이,
    가상 세계 내의 복수의 아바타의 위치 상계 정보를 수신하는 단계와;
    위치 상계 정보가 수신된 각 아바타에 대하여,
    상기 위치 상계 정보의 해상도를 결정하고,
    상기 수신된 위치 상계 정보를 상기 결정된 해상도에 따라 적용하여 상기 위치 상계 정보에 대응하는 상기 아바타의 새로운 위치를 결정하는 단계를 포함하고,
    제1 아바타에 대응하는 위치 상계 정보는 제1 해상도로 수신되고 제2 아바타에 대응하는 위치 상계 정보는 제2 해상도로 수신되는 것인, 컴퓨터 메모리.
  46. 제45항에 있어서, 상기 복수의 아바타는 상기 가상 세계 내의 모든 아바타를 포함한 것인, 컴퓨터 메모리.
  47. 제45항에 있어서, 상기 수신하는 방법이, 수신된 비트코드에 기초해서, 제3 아바타에 대응하는 위치 상계 정보가 상기 제1 해상도로부터 상기 제2 해상도로 변화하였는지를 결정하는 단계를 더 포함한 것인 컴퓨터 메모리.
  48. 제47항에 있어서, 상기 제1 해상도는 상기 제2 해상도보다 더 낮은 것이고, 상기 수신하는 방법이 상기 수신된 비트코드와 함께 수신된 추가의 정밀 정보를 이용하여 상기 제3 아바타의 위치를 결정하는 단계를 더 포함한 것인 컴퓨터 메모리.
  49. 제46항에 있어서, 상기 복수의 아바타의 상기 위치 상계 정보는 바로 이전에 수신한 위치 상계 정보 집합의 해상도에 따라 적어도 일부분이 분류되는 것인, 컴퓨터 메모리.
  50. 제46항에 있어서, 상기 복수의 아바타의 상기 위치 상계 정보는 바로 이전에 수신한 위치 상계 정보에서 표시하는 위치 변화의 유형에 따라 적어도 일부분이 분류되는 것인, 컴퓨터 메모리.
KR1020117026638A 2009-04-27 2010-03-29 가상 세계에서의 위치 추적 KR101401607B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/430,578 US8441486B2 (en) 2009-04-27 2009-04-27 Position tracking in a virtual world
US12/430,578 2009-04-27
PCT/IB2010/000727 WO2010125435A2 (en) 2009-04-27 2010-03-29 Position tracking in a virtual world

Publications (2)

Publication Number Publication Date
KR20120074263A KR20120074263A (ko) 2012-07-05
KR101401607B1 true KR101401607B1 (ko) 2014-06-02

Family

ID=42768117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026638A KR101401607B1 (ko) 2009-04-27 2010-03-29 가상 세계에서의 위치 추적

Country Status (6)

Country Link
US (2) US8441486B2 (ko)
EP (1) EP2425602B1 (ko)
JP (1) JP5492290B2 (ko)
KR (1) KR101401607B1 (ko)
CN (1) CN102498699B (ko)
WO (1) WO2010125435A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8441486B2 (en) * 2009-04-27 2013-05-14 Jagex Ltd. Position tracking in a virtual world
US8655964B2 (en) 2009-12-14 2014-02-18 At&T Intellectual Property I, Lp Unified location and presence, communication across real and virtual worlds
US9235268B2 (en) * 2010-04-09 2016-01-12 Nokia Technologies Oy Method and apparatus for generating a virtual interactive workspace
US8898567B2 (en) 2010-04-09 2014-11-25 Nokia Corporation Method and apparatus for generating a virtual interactive workspace
US20110302504A1 (en) * 2010-06-08 2011-12-08 Santosh Khare Mobile Application for Proximity Based Awareness System
FR2961929B1 (fr) * 2010-06-29 2019-11-15 Alcatel Lucent Procede d'affichage d'un monde virtuel dans lequel evolue l'avatar d'un utilisateur d'un service de realite virtuelle
US20130014033A1 (en) * 2011-07-08 2013-01-10 WoGo LLC Systems and methods for facilitating user interaction between multiple virtual environments
CA2845730A1 (en) 2011-08-18 2013-02-21 Utherverse Digital, Inc. Systems and methods of virtual world interaction
US8842131B2 (en) * 2012-01-10 2014-09-23 Fanhattan Llc System and method for framework clipping
JPWO2014171066A1 (ja) * 2013-04-19 2017-02-16 パナソニックIpマネジメント株式会社 三次元画像表示システム、三次元画像表示システムのサーバ及び三次元画像表示方法
US9063330B2 (en) * 2013-05-30 2015-06-23 Oculus Vr, Llc Perception based predictive tracking for head mounted displays
WO2016068581A1 (en) * 2014-10-31 2016-05-06 Samsung Electronics Co., Ltd. Device and method of managing user information based on image
US10188952B1 (en) * 2015-12-18 2019-01-29 Controlled Protocols, Inc. Method for dynamically mapping servers
JP6114848B1 (ja) * 2016-02-09 2017-04-12 株式会社コロプラ 同期サーバ及び同期方法
CN107016924B (zh) * 2016-12-20 2020-04-07 阿里巴巴集团控股有限公司 虚拟地图中的瓦片地图生成方法、更新方法和装置
JP6724110B2 (ja) * 2018-10-31 2020-07-15 株式会社ドワンゴ 仮想空間中のアバター表示システム、仮想空間中のアバター表示方法、コンピュータプログラム
CN112774182A (zh) * 2019-11-06 2021-05-11 阿里巴巴集团控股有限公司 角色所处区域的确定方法及装置、电子设备和存储介质
CN111739135B (zh) * 2020-07-30 2023-03-21 腾讯科技(深圳)有限公司 虚拟角色的模型处理方法、装置及可读存储介质
US20220070237A1 (en) * 2020-08-28 2022-03-03 Tmrw Foundation Ip S. À R.L. System and method for virtually broadcasting from within a virtual environment
US11316955B1 (en) 2021-03-05 2022-04-26 Improbable Worlds Ltd Scalable replication of object positions in virtual simulations
JP6995416B1 (ja) 2021-06-09 2022-01-14 クラスター株式会社 アバター出力装置、端末装置、アバター出力方法、およびプログラム
JP7142392B1 (ja) 2021-06-09 2022-09-27 クラスター株式会社 アバター出力装置、端末装置、アバター出力方法、およびプログラム
KR102484939B1 (ko) * 2021-12-13 2023-01-04 세종대학교산학협력단 가상 공간에 대한 식별 정보 할당 방법 및 가상 공간 검색 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020060519A (ko) * 2001-01-11 2002-07-18 이은숙 온라인 게임에서의 캐릭터 이동 데이터 패킷 송수신 방법
KR100895198B1 (ko) * 2007-12-03 2009-04-24 에스케이 텔레콤주식회사 가상 공간에서의 텍스처 데이터 제공 방법 및 시스템

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5736982A (en) * 1994-08-03 1998-04-07 Nippon Telegraph And Telephone Corporation Virtual space apparatus with avatars and speech
US6219045B1 (en) * 1995-11-13 2001-04-17 Worlds, Inc. Scalable virtual world chat client-server system
JPH1057628A (ja) 1996-08-19 1998-03-03 Oaks Hebun:Kk 通信回線を利用したゲームシステム
JPH1125288A (ja) 1997-07-09 1999-01-29 Casio Comput Co Ltd サイバースペースシステムおよびサイバースペース構築方法
US6854012B1 (en) * 2000-03-16 2005-02-08 Sony Computer Entertainment America Inc. Data transmission protocol and visual display for a networked computer system
EP1219330A3 (en) * 2000-12-28 2004-04-21 Nintendo Co., Limited Network game system
JP4922513B2 (ja) 2000-12-28 2012-04-25 任天堂株式会社 ゲーム管理装置,ゲームプログラムおよびゲームシステム
JP2003085116A (ja) 2001-09-07 2003-03-20 Katsutoshi Takifuji 仮想空間情報システム
FR2833101B1 (fr) * 2001-12-03 2004-07-02 Dotvision Procede de creation et de gestion d'univers virtuel
JP2004041646A (ja) 2002-07-12 2004-02-12 Katsutoshi Takifuji 仮想空間内のオブジェクトを制御するコード化システム
JP3861071B2 (ja) 2003-05-09 2006-12-20 任天堂株式会社 ゲームシステムおよびゲームプログラム
GB2447020A (en) 2007-03-01 2008-09-03 Sony Comp Entertainment Europe Transmitting game data from an entertainment device and rendering that data in a virtual environment of a second entertainment device
GB2447094B (en) 2007-03-01 2010-03-10 Sony Comp Entertainment Europe Entertainment device and method
CA2685353C (en) 2007-03-07 2016-04-26 Ideaflood, Inc. Multi-instance, multi-user animation platforms
CN101281590B (zh) * 2008-01-03 2011-09-07 青岛海信电器股份有限公司 一种操作单元及包括所述操作单元的视频系统
US8441486B2 (en) * 2009-04-27 2013-05-14 Jagex Ltd. Position tracking in a virtual world

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020060519A (ko) * 2001-01-11 2002-07-18 이은숙 온라인 게임에서의 캐릭터 이동 데이터 패킷 송수신 방법
KR100895198B1 (ko) * 2007-12-03 2009-04-24 에스케이 텔레콤주식회사 가상 공간에서의 텍스처 데이터 제공 방법 및 시스템

Also Published As

Publication number Publication date
WO2010125435A3 (en) 2010-12-23
CN102498699A (zh) 2012-06-13
WO2010125435A2 (en) 2010-11-04
EP2425602B1 (en) 2013-09-18
US8441486B2 (en) 2013-05-14
KR20120074263A (ko) 2012-07-05
CN102498699B (zh) 2015-12-16
JP5492290B2 (ja) 2014-05-14
US20100275136A1 (en) 2010-10-28
US9203880B2 (en) 2015-12-01
JP2012525622A (ja) 2012-10-22
EP2425602A2 (en) 2012-03-07
US20130227438A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
KR101401607B1 (ko) 가상 세계에서의 위치 추적
CN1273939C (zh) 公共空间的智能模拟的系统和方法
Lv et al. Virtual reality smart city based on WebVRGIS
US7537523B2 (en) Dynamic player groups for interest management in multi-character virtual environments
JP5937711B2 (ja) プログラム、記録媒体、情報処理装置及び制御方法
US9117193B2 (en) Method and system for dynamic detection of affinity between virtual entities
CN108463273A (zh) 基于游戏者的移动历史来进行非游戏者角色的路径寻找的游戏系统等
JP7277671B2 (ja) スパニングツリーを用いたセル結合による領域分割 本開示は、一般に、領域分割に関し、特に、位置情報ゲームで使用するための異なる地域の特定に関するものである。
Merrick et al. A shape grammar approach to computational creativity and procedural content generation in massively multiplayer online role playing games
Wang et al. Coverage-All Targets Algorithm for 3D Wireless Multimedia Sensor Networks Based on the Gravitational Search Algorithm
CN115052668A (zh) 用于区域聊天的基于玩家密度的区域划分
Li et al. Efficiency-reinforced learning with auxiliary depth reconstruction for autonomous navigation of mobile devices
CN116772886B (zh) 虚拟场景中虚拟角色的导航方法、装置、设备及存储介质
Johnson et al. Cognitive model of agent exploration with vision and signage understanding
Dwivedi et al. Computing Spatial Features to Allocate Collision-free Motion-Paths for Tele-presence Avatars
CN117695652A (zh) 多人在线游戏中智能体运动控制方法、装置及电子设备
CN101854368A (zh) 用于三维场景模型递进传输的方法和装置
CN115970279A (zh) 寻路地图的生成方法、装置、计算机设备和存储介质
Åkerblom Jonsson Collaborative Exploration with Intermittent Communication: Inferring map information from exploration graphs
CN116943159A (zh) 游戏场景的处理方法和装置、存储介质及电子设备
Pribyl et al. Multi-resolution next location prediction for distributed virtual environments
Bittermann et al. Virtual reality and computational design
CN116850591A (zh) 路径规划方法、装置、计算机设备、存储介质及程序产品
CN115526645A (zh) 基于生成对抗模仿学习模型的行人轨迹模拟方法及系统
CN117122933A (zh) 虚拟宠物的显示方法、装置、设备、介质及程序产品

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 6