KR102003007B1 - 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템 - Google Patents

비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템 Download PDF

Info

Publication number
KR102003007B1
KR102003007B1 KR1020187003968A KR20187003968A KR102003007B1 KR 102003007 B1 KR102003007 B1 KR 102003007B1 KR 1020187003968 A KR1020187003968 A KR 1020187003968A KR 20187003968 A KR20187003968 A KR 20187003968A KR 102003007 B1 KR102003007 B1 KR 102003007B1
Authority
KR
South Korea
Prior art keywords
game
client
video
server
executable
Prior art date
Application number
KR1020187003968A
Other languages
English (en)
Other versions
KR20180018845A (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 KR20180018845A publication Critical patent/KR20180018845A/ko
Application granted granted Critical
Publication of KR102003007B1 publication Critical patent/KR102003007B1/ko

Links

Images

Classifications

    • 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
    • H04L67/38
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/31Communication aspects specific to video games, e.g. between several handheld game devices at close range
    • 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/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F9/00Games not otherwise provided for
    • A63F9/24Electric games; Games using electronic circuits not otherwise provided for
    • H04L65/4023
    • 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/402Support for services or applications wherein the services involve a main real-time session and one or more additional parallel non-real time sessions, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services
    • H04L65/4025Support for services or applications wherein the services involve a main real-time session and one or more additional parallel non-real time sessions, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services where none of the additional parallel sessions is real time or time sensitive, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services
    • H04L65/4069
    • 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/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

컴퓨팅 시스템이, 서버에서 컴퓨터 프로그램을 실행하고 지리적으로 원격지에 있는 클라이언트로 통신 네트워크를 통해 프로그램 출력의 비디오 스트림을 제공하도록 구성된다. 이 컴퓨팅 시스템은 또한, 비디오 스트림과 병행적으로, 통신 네트워크를 통해 클라이언트로 컴퓨터 프로그램의 실행가능 컨텐트를 제공하도록 추가 구성된다. 실행가능 컨텐트의 충분한 양이 클라이언트로 제공되면, 컴퓨터 프로그램의 실행은 서버에서 클라이언트로 전환된다. 이 전환에는, 선택에 따라서는, 컴퓨터 프로그램의 상황을 서버로부터 클라이언트로 전송하는 것이 포함된다. 실행가능 컨텐트는 컴퓨터 프로그램의 상황에 기초하여 결정된 순서로 클라이언트에 제공될 수 있다. 실행가능 컨텐트의, 클라이언트에서의 게임 실연을 지원하기 위해 필요하게 될 가능성이 높다고 판단되는 해당 부분에는 우선권이 부여된다.

Description

비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템{A Method and System of Providing a Computer Game at a Computer Game System Including a Video Server and a Game Server}
본 발명은 컴퓨터 프로그래밍 분야에 관한 것으로서, 구체적으로는, 컴퓨터 프로그램의 서버측에서의 실행에 관한 것이다.
<관련 출원의 상호 참조>
본 출원은, 미국 특허출원 제12/334,819호(출원일: 2008. 12. 15., 명칭: "Systems and Methods of Serving Game Video")의 일부계속출원이며, 미국 특허출원 제12/826,130호(출원일: 2010. 6. 29., 명칭: "Video Game Overlay")의 일부계속출원이며, 미국 특허출원 제12/826,489호(출원일: 2010. 6. 29., 명칭: "Voice Overlay")의 일부계속출원으로서, 미국 임시 특허출원 제61/382,470호(출원일: 2010. 9. 13., 명칭: "Add-on Management"), 미국 임시 특허출원 제61/407,898호(출원일: 2010. 10. 28., 명칭: "Dual-Mode Program Execution"), 미국 임시 특허출원 제61/421,163호(출원일: 2010. 12. 8., 명칭: "Intelligent Game Loading"), 및 미국 임시 특허출원 제 61/421,175호(출원일: 2010. 12. 8., 명칭: "Program Mode Switching")에 대한 이익 및 우선권을 주장하는 출원이다. 공동 소유의 상기 모든 특허출원의 개시 사항을 참고자료로서 본 명세서에 포함시킨다.
컴퓨터 프로그램은 일반적으로, 두 가지 방식 중 하나를 사용하여 실행할 수 있다. 한 방식으로서, 사용자(가령, 게임자)로부터 입력을 받고 프로그램 출력을 이 사용자에게 출력하는 하나의 장치에서 컴퓨터 프로그램이 실행된다. 다른 방식으로서, 프로그램 실행이 하나 이상의 클라이언트의 제어하에 원격지의 서버에서 일어난다. 사용자는 클라이언트에 입력을 제공하고, 클라이언트에 표시할 프로그램 출력을 받는다. 클라이언트와 서버 간의 통신은 인터넷 등의 통신 네트워크를 통해 이루어진다.
프로그램 실행을 클라이언트와 서버의 양자 간에 분산시키는 것이 가능하다. 예를 들어, 멀티플레이어 비디오 게임에서는, 복수의 클라이언트에서 온 입력에 기초한 게임의 전체 상황(global state)을 서버에 두고, 각 클라이언트에서는 게임 규칙과 전체 상황의 일부에 응답하는 개별 비디오를 렌더링(rendering)하는 것이 일반적이다. 이러한 비디오 게임의 클라이언트 소프트웨어는 클라이언트에 설치되어야 한다.
게임의 즉시 실행(실연) 및 클라이언트측에서의 비디오 렌더링을 모두 제공하기 위해 프로그램 실행의 2중 모드 모델을 사용한다. 본질적으로, 즉시 실행은, 서버에서 먼저 비디오를 렌더링하고 이 렌더링한 비디오를 인터넷 등의 통신 네트워크를 통해 클라이언트로 제공함으로써 이루어진다. 클라이언트측 게임 로직 및 관련된 컨텐트는 렌더링된 비디오와 병행해서 또는 렌더링된 비디오에 이어서 클라이언트로 다운로드된다. 클라이언트측 소프트웨어의 전부 또는 충분한 부분이 클라이언트에서 수신 될 때, 프로그램 실행 모드는, 비디오의 렌더링이 서버가 아니라 클라이언트에서, 또는 서버 뿐만 아니라 클라이언트에서도 수행되도록 변경된다.
본질적으로, 서버측 게임 로직과 관련 구성부를, 신속하게 또는 게임 실연 요청을 수신하기 전에 제공받을 수 있기 때문에 즉시 실행이 달성된다. 서버측 게임 로직의 출력에는 수신된 게임 커맨드에 대한 응답으로 서버에서 렌더링된 비디오 스트림, 게임 상황, 및 게임자의 시점이 포함된다. 이 비디오 스트림은, 이를 실시간으로 게임자에게 보여주는 클라이언트로 전송된다. 이 작업을 수행하기 위해서 클라이언트에서 필요한 로직은, 비디오 스트림을 수신하고, 디코딩하고, 표시하는 것 뿐이다.
본 발명의 다양한 실시예에는, 비디오 소스로부터 지리적으로 원격지에 있는 제1클라이언트로, 비디오 소스에서 생성되며 컴퓨터 프로그램의 현재 상황(예컨대, 컴퓨터 게임상황)에 기반한 스트리밍 비디오를 제공하도록 구성된 비디오 소스와, 스트리밍 비디오가 비디오 소스로부터 제1클라이언트로 제공되는 동안에, 코드 소스로부터 네트워크를 통해 제1클라이언트로, 컴퓨터 프로그램의 실행가능 코드 및 그 밖의 구성부를 다운로드하도록 구성된 다운로드 관리자를 포함하는 게임 시스템이 포함된다. 이들 실시예는, 선택에 따라서는, 컴퓨터 프로그램의 상황을 제1클라이언트로 제공하도록 구성된 상황 소스를 추가로 포함한다.
본 발명의 다양한 실시예에는, 입력 장치, 게임 엔진, 전환 로직, 상황 저장소, 및 출력 장치을 포함하는 게임 서버가 포함된다. 입력 장치은 지리적으로 원격지의 복수의 클라이언트로부터 게임 커맨드를 수신하도록 구성되어 있으며, 게임 엔진은 수신된 게임 커맨드에 기초하여 비디오 게임의 전체 상황을 유지하며, 비디오 게임의 전체 상황의 서로 다른 부분상황을 복수의 클라이언트를 구성하는 서로 다른 클라이언트로 제공하도록 구성되어 있다. 여기서, 각 부분상황은 복수의 클라이언트 중의 특정 클라이언트에 각각 할당된다. 전환 로직은 복수의 클라이언트 중의 제1클라이언트로부터 복수의 클라이언트 중의 제2클라이언트로 전체 상황의 부분상황들 중 하나를 재할당하도록 구성되어 있으며, 상황 저장소는 전체 상황을 저장하도록 구성되어 있고, 출력 장치은 전체 상황의 부분사황을 인터넷을 통해 복수의 클라이언트들에 제공하도록 구성되어 있다.
본 발명의 다양한 실시예에는 컴퓨터 게임을 제공하는 방법이 포함되는데, 이 방법은, 게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 비디오 서버에서 게임 로직을 실행하는 것을 포함한다. 이 방법은 또한, 비디오 서버로부터 통신 네트워크를 통해 클라이언트로 비디오 스트림을 제공하는 것, 그리고 게임상황을 기초로 비디오를 생성하도록 구성된 실행가능 게임 코드를, 비디오 스트림과 병행해서 클라이언트로 제공하는 것을 포함한다.
추가적으로, 게임 로직과 관련 컨텐트(예를 들어, 게임 로직에서 사용되는 컨텐트)는 여러 부분으로 나눌 수 있는데, 이들 부분은 게임 시스템으로부터 클라이언트로 기본적으로 임의의 순서로 다운로드될 수 있다. 다양한 실시예에서, 이들 부분은 진행중인 게임 실연에서 이들 부분을 필요로 할 수 있는 확률에 기반한 순서로 다운로드된다. 예를 들어, 게임의 현재 상황의 관점에서, 클라이언트측 게임 로직의 특정 부분 (및 다른 컨텐트)이 장차의 게임 실현에 필요하게 될 가능성이 있다면, 이 부분에는 다운로드 순서상의 높은 우선순위를 부여받게 될 것이다. 다운로드 순서는, 선택에 따라서는, 게임 실연에 응답하여 동적으로 업데이트되고, 게임 로직의 부분 및 관련 컨텐트는 클라이언트로 다운로드되는 게임 로직과 관련 컨텐트의 양이 클라이언트에서의 클라이언트측 모드로 게임 실연을 지원하기 위해 충분하다고 간주될 때까지, 스트리밍 비디오와 병행적으로 클라이언트로 다운로드된다. 이 시점에서, 게임 실연은 클라이언트로 전환될 수 있고, 비디오 스트리밍이 중단되고, 게임 코드의 다운로드가 완료될 수 있다. 클라이언트로 비디오 스트리밍이 끝난 후에, 게임 코드의 나머지 부분은 계속해서 동적으로 순서가 정해지고, 게임상황에 대한 응답으로서 해당 순서에 따라 클라이언트로 다운로드된다. 선택에 따라서는, 전체 게임 코드가 다운로드되지 않았고, 아직 다운로드되지 않은 게임 코드를 예기치 않게 게임 상황이 필요로 할 경우에는, 게임 실연은 서버측 모드로 다시 역전환될 수 있다.
본 발명의 다양한 실시예에는 비디오 소스와 다운로드 관리자를 포함하는 게임 시스템이 포함된다. 비디오 소스는 비디오 소스로부터 지리적으로 원격지에 있는 클라이언트로 스트리밍 비디오를 제공하도록 구성된다. 여기서 스트리밍 비디오는 비디오 소스에서 컴퓨터 프로그램의 현재 상황에 대한 응답으로서 생성된다. 다운로드 관리자는 컴퓨터 프로그램의 현재 상황에 응답하여, 컴퓨터 프로그램의 실행가능 코드의 복수의 부분 및 관련 구성부(이들을 함께 "실행가능 컨텐트" 또는 "실행가능 게임 컨텐트"로 부름)의 다운로드 순서를 동적으로 결정하도록 구성된다. 다운로드 관리자는 또한, 스트리밍 비디오가 비디오 소스로부터 클라이언트로 제공되는 동안에, 코드 소스로부터 네트워크를 통해 클라이언트로, 상기 다운로드 순서에 따라, 실행가능 컨텐트의 부분을 다운로드하도록 구성된다. 다양한 실시예에서, 비디오 소스에 다운로드 관리자가 포함된다. 다양한 실시예에서, 다운로드 관리자는 컴퓨터 프로그램의 현재 상황을 기초로 하여, 컴퓨터 프로그램의 다른 상황의 확률을 결정함으로써 다운로드 순서를 동적으로 결정하도록 구성된다. 이러한 실시예들 중 일부에서, 게임 시스템은 확률 트리 데이터베이스를 저장하는 컴퓨터 판독 가능한 매체를 추가로 포함하고, 이 컴퓨터 판독 가능 매체는 다운로드 관리자와 통신한다. 이러한 실시예에서 다운로드 관리자는, 확률 트리 데이터베이스에 질의(query)하여 컴퓨터 프로그램의 현재 상황을 기초로 하여 컴퓨터 프로그램의 다른 상황의 확률을 결정하도록 추가 구성된다. 다양한 실시예에서 게임 시스템은 확률 트리 데이터베이스를 유지하기 위해 구성된 통계 엔진을 추가로 포함한다.
본 발명의 다양한 실시예에는 컴퓨터 게임을 제공하는 방법이 포함된다. 이들 실시예에서 컴퓨터 게임 제공 방법은, 게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 비디오 서버에서 서버측 게임 실행 모드로 게임 로직을 실행하고, 비디오 서버로부터 통신 네트워크를 통해 클라이언트로 비디오 스트림을 제공하는 것을 포함한다. 이 방법은 또한, 게임상황을 기초로 비디오를 생성하도록 구성된 실행가능 게임 컨텐트의 복수의 부분의 다운로드 순서를, 게임상황에 응답하여, 동적으로 결정하고, 다운로드 순서에 따라 비디오 스트림과 병행으로 실행가능 게임 코드의 부분을 클라이언트로 제공하는 것을 포함한다. 다양한 실시예에서 다운로드 순서를 동적으로 결정하는 것에는, 확률 트리 데이터베이스에 질의하는 것이 포함된다. 다양한 실시예에서 상기 방법은 또한, 클라이언트로 실행가능 게임 컨텐트의 부분을 제공하는 다운로드 속도를 결정하는 것을 추가로 포함하고, 이들 실시예의 일부에서는, 다운로드 속도를 결정하는 것에 클라이언트로의 통신 채널의 대역폭을 모니터링하는 것이 포함된다. 다양한 실시예에서, 상기 방법은 또한, 서버측 게임 실행 모드로부터, 게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 클라이언트에서 게임 로직이 실행되는 클라이언트측 게임 실행 모드로의 전환을 시작하는 것을 추가로 포함한다. 이러한 실시예들의 일부에서, 상기 방법은 또한, 전환이 시작된 후에 실행가능 게임 컨텐트의 부분을 클라이언트로 제공하는 것을 추가로 포함하며, 또다른 실시예에서는, 다운로드 순서에 따라 전환의 개시가 이루어질 수 있게 된 후에 실행가능 게임 컨텐트의 부분을 클라이언트로 제공하는 것을 포함한다. 또다른 실시예에서는, 전환이 시작된 후에, 상기 방법은 게임상황에 대한 응답으로서 다운로드 순서를 동적으로 결정하는 것을 포함한다.
본 발명에 따르면, 프로그램 실행의 2중 모드 모델을 사용함으로써 게임의 즉시 실행 및 클라이언트측에서의 비디오 렌더링을 모두 제공할 수 있다.
도 1은 본 발명의 다양한 실시예에 따른 게임 시스템을 도시한다.
도 2는 본 발명의 다양한 실시예에 따른, 복수의 비디오 게임을 제공하도록 구성된 비디오 소스의 상세 구성을 도시한다.
도 3은 본 발명의 다양한 실시예에 따른 게임 서버의 상세 구성을 도시한다.
도 4는 본 발명의 다양한 실시예에 따른 사용자 인터페이스를 도시한다.
도 5는 본 발명의 다양한 실시예에 따른 다운로드 관리자의 상세 구성을 도시한다.
도 6은 본 발명의 다양한 실시예에 따른 결정 트리구조를 도시한다.
도 7은 본 발명의 다양한 실시예에 따른, 실행가능 게임 컨텐트를 다운로드하는 방법을 도시한다.
도 8은 본 발명의 다양한 실시예에 따른, 컴퓨터 게임을 제공하는 방법을 도시한다.
도 9는 본 발명의 다양한 실시예에 따른, 게임 세션을 전송하는 방법을 도시한다.
본 발명의 다양한 실시예는, 동시에, 실행가능 게임 로직을 다운로드하여 게임 비디오를 동일한 클라이언트에게 스트리밍하고, 그리고/또는 서버측 게임 실행 모드를 클라이언트측 게임 실행 모드으로 전환하는 것을 포함한다. 이러한 과정에는 잠재적으로 여러 당사자와 시스템이 관여한다. 비디오 서버 시스템은 게임 규칙 및 수신한 게임 커맨드에 대한 응답으로서 네트워크를 통해 클라이언트로 스트리밍 비디오를 제공하도록 구성된다. 다운로드 관리자는 스트리밍 비디오의 제공과 병행하여, 클라이언트로, 실행가능 게임 로직 및 관련 컨텐트를 제공하도록 구성된다. 클라이언트는 게임자에게 스트리밍 게임 비디오를 표시하는 동안에, 실행가능 게임 로직 및 컨텐트를 수신하도록 구성된다. 선택에 따라서는(옵션으로서), 게임 서버는 멀티플레이어 비디오 게임의 전체 게임상황을 보관하고, 이 게임상황의 부분상황(subset)을 비디오 서버 시스템 및 게임 서버의 다른 클라이언트에 제공하도록 구성된다. 실행가능 게임 로직은 게임 서버, 비디오 서버 시스템, 또는 제3자 시스템에 의해 제공될 수 있다.
서버측 모드는 비디오 서버가 게임 비디오를 렌더링(rendering)하고 여기서 렌더링된 게임 비디오를 지리적으로 떨어져 있는 클라이언트(원격지 클라이언트)에 제공하는 것을 특징으로 한다. 이 모드에서, 게임 비디오는, 통신 네트워크를 통해 비디오 서버에서 수신한 클라이언트로부터 온 게임 커맨드들에 응답한다. 클라이언트측 모드는, 게임 비디오의 렌더링이, 클라이언트에 국지적으로(로컬에서) 입력된 게임 커맨드에 응답하여 클라이언트에서 이루어지는 것을 특징으로 한다. 서버측 모드와 클라이언트측 모드가 반드시 상호 배타적인 것은 아니다. 선택에 따라서는, 게임 비디오를 비디오 서버와 클라이언트 모두가 렌더링하고, 이를 병행적으로 또는 순차적으로 클라이언트에 표시할 수 있다.
서버측 모드와 클라이언트측 모드 사이의 전환을 관리하도록 구성된 전환 로직은, 선택에 따라서는, 이들 장치 사이에서 분산 배치된다. 예를 들어, 전환 로직을, 스트리밍 게임 비디오의 표시를 종료하고, 로컬의 게임상황 사본을 수신하고, 그리고/또는 수신된 실행가능 게임 로직의 실행을 시작하도록, 클라이언트 상에 구성할 수 있다. 비디오 서버 시스템에서는 전환 로직을, 스트리밍 게임 비디오의 전송을 종료하고, 클라이언트로 상기 로컬 게임상황 사본을 제공하고, 충분한 실행가능 게임 로직이 언제 클라이언트에게 제공되어 전환을 시작하였는지를 판단하고, 그리고/또는 실행가능 게임 로직이 클라이언트에 제공되야 할 순서를 결정하도록 구성할 수 있다. 게임 서버상의 전환 로직은, 비디오 서버 시스템과 게임 서버 사이의 통신사항(게임 커맨드들과 게임상황이 포함됨)을 중계(redirection)하여 이 통신사항들이 게임 서버와 클라이언트 사이에서 일어날 수 있도록 구성할 수 있다. 전환 로직의 추가적 특징은 다른 곳에서 설명한다.
도 1은 본 발명의 다양한 실시예에 따른, 컴퓨터 프로그램을 실행하도록 구성된 게임 시스템(100)을 도시한다. 게임 시스템(100)은 네트워크(115)를 통해 하나 이상의 클라이언트(110)에 비디오 스트림을 제공하도록 구성된다. 게임 시스템(100)은 일반적으로, 비디오 서버 시스템(120)과, 선택사항인 게임 서버(125)를 포함한다. 비디오 서버 시스템(120)은 하나 이상의 클라이언트(110)에 최소한의 서비스 품질로 비디오 스트림을 제공하도록 구성된다. 예를 들어, 비디오 서버 시스템(120)은 비디오 게임의 상황(state) 또는 비디오 게임 내에서의 시점(point of view)을 변경하는 게임 커맨드(command)을 수신할 수 있으며, 최소한의 지연 시간으로 이러한 상태 변경을 반영하도록 업데이트된 비디오 스트림을 클라이언트(110)에 제공할 수 있다. 비디오 서버 시스템(120)은 매우 다양한 비디오 포맷(아직 정의되어 있지 않은 포맷도 포함)으로 비디오 스트림을 제공하도록 구성될 수 있다. 또한, 비디오 스트림은 매우 다양한 프레임 속도로 게임자에게 보여지도록 구성된 비디오 프레임을 포함할 수 있다. 일반적인 프레임 속도는 초당 30 프레임, 초당 60 프레임, 그리고 초당 120 프레임인데, 그러나 본 발명의 대안적 실시예에는 이보다 높거나 낮은 프레임 속도가 포함된다. 일부 실시예에서, 비디오 서버 시스템(120)은 3차원 영상 데이터(예를 들어, 사람의 눈 사이의 거리만큼 이격된 시점(point of view)에 따라 렌더링된 정합된 비디오 스트림)을 제공하도록 구성된다.
클라이언트(110)(이하 개별적으로 110A와 110B 등으로 참조함)는 단말기, 개인용 컴퓨터(PC), 게임 콘솔, 태블릿 컴퓨터, 전화기, 텔레비전, 셋톱박스, 키오스크, 무선 장치, 디지털 패드, 독립 실행형 장치, 핸드헬드 게임 실연 장치, 및/또는 그 밖의 것을 포함할 수 있다. 일반적으로, 클라이언트(110)는 인코딩된 비디오 스트림을 수신하고, 비디오 스트림을 디코딩하고, 게임자(예를 들어, 게임을 하는 사람)에게 최종 비디오를 보여주도록 구성된다. 인코딩된 비디오 스트림을 수신하고 그리고/또는 비디오 스트림을 디코딩하는 과정은, 선택에 따라서는, 클라이언트의 수신 버퍼에 개별 비디오 프레임을 저장하는 것을 포함한다. 비디오 스트림은, 클라이언트(110)에 통합된 디스플레이, 또는 모니터나 TV 등의 별도의 장치를 통해 게임자에게 제공될 수 있다. 클라이언트(110)는, 선택에 따라서는, 한 명 이상의 게임자를 지원하도록 구성된다. 예를 들어, 게임 콘솔을 2명, 3명, 4명, 또는 그 이상의 게임자를 동시 지원하도록 구성할 수 있다. 각 게임자는 각각 별도의 비디오 스트림을 받을 수 있거나, 또는 하나의 비디오 스트림에 각 게임자마다 특별히 생성된(예를 들어 각 게임자의 각 시점에 기초하여 생성된) 프레임 영역들이 포함될 수 있다. 클라이언트(110)는, 선택에 따라서는, 지리적으로 분산된다. 게임 시스템(100)에 포함된 클라이언트의 수는 한 두 개 내지 수천, 수만 개 또는 그 이상까지, 변화폭이 매우 클 수 있다. 여기서 사용된 용어 "게임자(game player)"는 게임을 하는 사람을 지칭하며, "게임 실연 장치(game playing device)"는 게임을 하는 데 사용되는 장치를 지칭하는 것으로 사용되었다.
클라이언트(110)들은 네트워크(115)를 통해 비디오 스트림을 수신하도록 구성된다. 네트워크(115)는 전산 장치(컴퓨팅 장치) 간의 임의 형태의 통신망(가령, 전화망, 인터넷, 무선망, 전력선망, 근거리 네트워크(LAN), 광역 네트워크(WAN), 사설 네트워크, 및/또는 그 밖의 것)일 수 있다. 네트워크(115)에는, 명시적으로, 머더보드 버스와 같이 전적으로 컴퓨팅 장치 내에 있는 통신 채널은 포함되지 않는다. 전형적인 실시예에서, 비디오 스트림은 TCP/IP 또는 UDP/IP 등의 표준 프로토콜을 통해 전송된다. 또는 이와 다르게, 비디오 스트림은 독점형 표준(proprietary standard)을 통해 전송된다.
클라이언트(110)의 전형적인 예는, 프로세서, 비휘발성 메모리, 디스플레이, 디코딩 로직, 네트워크 통신 기능, 및 입력 장치로 구성되는 개인용 컴퓨터이다. 상기 디코딩 로직은 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어를 포함할 수 있다. 비디오 스트림을 디코딩(및 인코딩)하기 위한 시스템은 본 발명이 속한 기술 분야에서 주지되어 있으며, 채택된 특정 인코딩 방식에 따라 달라진다.
클라이언트(110)는, 수신된 비디오를 수정하도록 구성된 시스템을 추가로 포함할 수 있지만, 반드시 그러한 것은 아니다. 예를 들어, 클라이언트는, 추가 렌더링(further rendering)의 실행, 한 비디오 영상을 다른 비디오 영상에 중첩, 비디오 영상 자르기(crop), 및/또는 그 밖의 기능을 하도록 구성될 수 있다. 클라이언트(110)는 I-프레임, P-프레임, B-프레임과 같은 다양한 형식의 비디오 프레임을 수신하고, 이들 프레임을 처리하여 게임자에게 표시되기 위한 영상을 만들도록 구성될 수 있다. 일부 실시예에서는, 클라이언트(110)들 중 하나 이상이 비디오 스트림에 대해서 추가 렌더링, 음영작업(shading), 3D로의 변환 등의 기능을 수행하도록 구성된다. 클라이언트(110)들의 일원은, 선택에 따라서는, 하나 이상의 오디오 또는 비디오 스트림을 수신하도록 구성된다. 클라이언트의 입력 장치(110)에는, 예를 들어, 키보드, 조이스틱, 포인팅 장치, 포스 피드백(force feedback) 장치, 동작 및/또는 위치 감지 장치, 마우스, 터치 스크린, 신경 인터페이스, 카메라, 아직 개발되어 있지 않은 입력 장치, 및/또는 그 밖의 것이 포함될 수 있다.
클라이언트(110)에 의해 수신된 비디오 스트림(그리고, 선택에 따라서는, 오디오 스트림)은 비디오 서버 시스템(120)에 의해 생성 및 제공된다. 다른 곳에서 자세하게 설명하겠지만, 이 비디오 스트림에는 비디오 프레임이 포함된다(그리고 오디오 스트림에는 오디오 프레임이 포함된다). 비디오 프레임은 게임자에게 표시되는 영상에 유의미하게 기여하도록(예를 들어, 적절한 데이터 구조의 픽셀 정보를 포함하도록) 구성된다. 유의미한 기여란, 게임자가 용이하게 영상을 볼 수 있도록 하는 기여를 의미한다. 여기서 사용한 용어 "비디오 프레임"은 주로, 게임자에게 보여지는 영상에 기여하도록(예를 들어, 효과를 주도록) 구성된 정보를 포함한 프레임을 참조하기 위해 사용하였다. "비디오 프레임"에 관한 여기서의 대부분의 설명은 또한, "오디오 프레임"에도 적용할 수 있다. 클라이언트(110)를, 동시에 하나 이상의 비디오 스트림을 수신하도록 구성할 수 있다. 예를 들어, 클라이언트(110B)를, 비디오 스트림 중 하나가 한 쪽 눈에 보여지고 다른 스트림은 다른 쪽 눈에 보여짐으로써 3차원 영상을 형성하도록 구성된 비디오 스트림의 정합된 쌍을 수신하도록 구성할 수 있다. 클라이언트(110B)는, 선택에 따라서는, 제1소스로부터 제1비디오 스트림을, 제2소스로부터 제2비디오 스트림을 수신하고, 게임자에게 제공하기 위하여 이들 두 비디오 스트림을 중첩하도록 구성된다.
클라이언트(110)는 일반적으로, 게임자의 입력을 수신하도록 구성된다. 이 입력 사항은 비디오 게임의 상황을 변경하도록 또는 그렇지 않으면 게임 실연에 영향을 미칠 수 있도록 구성된 게임 커맨드들(game commands)을 포함할 수 있다. 게임 커맨드는 입력 장치를 사용하여 수신할 수도 있고, 그리고/또는 자동으로 클라이언트(110)에서 실행되는 컴퓨팅 명령(computing instructions)에 의해서 생성될 수도 있다. 수신된 게임 커맨드는 네트워크(115)를 통해 클라이언트(110)로부터 비디오 서버 시스템(120) 및/또는 게임 서버(125)로 전송된다. 예를 들어, 일부 실시예에서, 게임 커맨드는 비디오 서버 시스템(120)을 통해 게임 서버(125)로 전송된다. 일부 실시예에서는, 클라이언트(110)로부터 게임 서버(125)와 비디오 서버 시스템(120)으로 게임 커맨드의 별도의 사본들이 전송된다. 게임 커맨드의 전송은, 선택에 따라서는, 커맨드의 정체성(identity)에 따라 달라진다. 게임 커맨드는, 선택에 따라서는, 클라이언트(110B)에 오디오 또는 비디오 스트림을 제공하는 데 사용되는 다른 경로 또는 통신 채널을 통해 클라이언트(110B)로부터 전송된다. 예를 들어, 게임 커맨드를 셀룰러 전화 등의 무선 장치로부터 수신할 수 있고, 오디오 및/또는 비디오 스트림을 텔레비전 세트 등의 디스플레이로 출력할 수 있다. 무선 장치와 디스플레이가 직접 통신할 필요는 없다. 이 예에서, 클라이언트(110B)는 두 개의 별도 장치를 포함한다. 셀룰러 전화로부터 온 커맨드들은 셀룰러 전화망 또는 무선 라우터를 통해 전송될 수 있다.
다양한 실시예에서, 클라이언트(110)는, 각 클라이언트(100)와 비디오 서버 시스템(120) 사이, 또는 클라이언트(110)들의 각 구성 클라이언트 사이에서 부가기능 데이터(add-on data)를 통신하도록 구성된다. 예를 들어, 클라이언트들 간의 직접 음성 통신을 가능하게 하는 부가 기능이 클라이언트 간의 오디오 데이터의 통신에 포함될 수 있다. 서버측 컴퓨터 프로그램의 기능성을 증강시키는 부가기능 데이터는, 서버측 부가기능에 사용되기 위하여 또는 클라이언트측 부가기능에 사용되기 위하여 클라이언트(110) 중 하나에 저장될 수 있다. 부가기능 데이터는 또한, 비디오 서버 시스템(120)에 또는 별도의 부가기능 서버에 저장될 수 있고, 클라이언트(110)들 중 하나, 비디오 서버 시스템(120), 또는 부가기능 서버에서 부가기능에 사용될 수 있다.
게임 서버(125)는, 선택에 따라서는, 비디오 서버 시스템(120)과는 다른 기관에 의해 운용된다. 예를 들어, 게임 서버(125)를 멀티플레이어 게임의 출시자가 운용할 수 있다. 이 예에서, 비디오 서버 시스템(120)은, 선택에 따라서는, 게임 서버(125)에 대한 클라이언트로 볼 수 있으며, 이는, 선택에 따라서는, 게임 서버(125)의 관점에서 볼 때 종래의 게임 엔진을 실행하는 종래의 클라이언트로 보일 수 있도록 구성된다. 비디오 서버 시스템(120) 및 게임 서버(125) 사이의 통신은 네트워크(115)를 통해 수행될 수 있다. 따라서, 게임 서버(125)는, 게임상황 정보를 여러 클라이언트(이들 중 하나는 비디오 서버 시스템(120)임)에게 전송하는 종래의 멀티플레이어 게임 서버가 될 수 있다. 비디오 서버 시스템(120)은 게임 서버(125)의 복수의 인스턴스(instance)를 동시에 통신하도록 구성할 수 있다. 예를 들어, 비디오 서버 시스템(120)을, 서로 다른 게임자에게 서로 다른 복수의 비디오 게임을 제공하도록 구성할 수 있다. 서로 다른 각 비디오 게임은, 서로 다른 게임 서버(125)에 의해 지원될 수 있고, 그리고/또는 서로 다른 기관에서 제작될 수 있다. 일부 실시예에서, 비디오 서버 시스템(120)의 지리적으로 분산된 여러 개의 인스턴스들은 복수의 다른 게임자들에게 게임 비디오를 제공하도록 구성된다. 비디오 서버 시스템(120)의 이들 각 인스턴스는 게임 서버(125)의 동일한 인스턴스와 통신할 수 있다. 비디오 서버 시스템(120)과 하나 이상의 게임 서버(125) 사이의 통신은, 선택에 따라서는, 전용 통신 채널을 통해 수행된다. 예를 들어, 비디오 서버 시스템(120)은, 이 비디오 서버 시스템과 게임 서버(125) 간의 통신을 전담하는 높은 대역폭의 채널을 통해 게임 서버(125)에 연결될 수 있다.
비디오 서버 시스템(120)은 적어도, 비디오 소스(130), I/O 장치(145), 프로세서(150), 비일시적 저장소(non-transitory storage)(155)를 포함한다. 비디오 서버 시스템(120)은 하나의 컴퓨팅 장치로 구성할 수 있거나, 또는, 복수의 컴퓨팅 장치들 사이에 분산될 수 있다. 이들 컴퓨팅 장치는, 선택에 따라서는, 근거리망(LAN)과 같은 통신 시스템을 통해 연결된다.
비디오 소스(130)는 비디오 스트림(예를 들어, 스트리밍 비디오, 또는 동영상을 구성하는 일련의 비디오 프레임)을 제공하도록 구성된다. 일부 실시예에서 비디오 소스(130)는 또한, 오디오 스트림을 제공하도록 구성된다. 일부 실시예에서, 비디오 소스(130)는 비디오 게임 엔진과 렌더링 로직을 포함한다. 비디오 게임 엔진은 게임자로부터 게임 커맨드를 수신하고, 수신된 커맨드에 따라 비디오 게임의 상황 사본을 유지하도록 구성된다. 이 게임상황에는 게임 환경에서의 객체의 위치, 그리고 일반적으로, 시점이 포함된다. 게임상황은 또한, 객체의 속성(property), 영상, 색상, 및/또는 질감을 포함할 수 있다. 게임상황은 일반적으로, 게임 규칙 및 게임 커맨드(이동, 회전, 공격, 포커스 설정, 반격, 사용, 및/또는 그 밖의 커맨드)에 따라 유지된다. 게임 엔진의 일부는, 선택에 따라서는, 게임 서버(125) 내에 배치된다. 게임 서버(125)는, 지리적으로 분산되어 있는 클라이언트를 사용하여 복수의 게임자들로부터 받은 게임 커맨드에 따라 게임의 상황 사본을 유지할 수 있다. 이러한 경우들에 있어서, 게임상황은 게임 서버(125)에 의해서 비디오 소스(130)로 제공되는데, 여기에 게임상황 사본이 저장되고 렌더링이 수행된다. 게임 서버(125)는 네트워크(115)를 통해 클라이언트(110)로부터 게임 커맨드를 직접 받을 수도 있고, 그리고/또는 비디오 서버 시스템(120)을 통해 게임 커맨드를 받을 수도 있다.
비디오 소스(130)에는 일반적으로, 렌더링 로직(예를 들어, 하드웨어, 펌웨어, 및/또는 저장소(155) 등의 컴퓨터 판독 가능한 매체에 저장된 소프트웨어)이 포함된다. 이 렌더링 로직은 게임상황에 기초하여 비디오 스트림의 비디오 프레임을 만들도록 구성된다. 렌더링 로직의 전체 또는 일부는, 선택에 따라서는, 그래픽 처리 장치(GPU) 내에 배치된다. 렌더링 로직은 일반적으로, 객체들 간의 3차원적 공간 관계를 결정하고, 그리고/또는 게임상황 및 시점에 따른 적절한 질감 등을 적용하도록 구성되는 처리 단계를 포함한다. 렌더링 로직은 원시 비디오를 생성하는데, 이 원시 비디오는 보통, 생성된 후에 인코딩되어서 클라이언트(110)로 전송된다. 예를 들어, 원시 비디오를 Adobe Flash® 표준, .wav, H.264, H.263, On2, VP6, VC-1, WMA, Huffyuv, Lagarith, MPG-x, Xvid, FFmpeg, x264, VP6-8, realvideo, MP3, 또는 그 밖의 형식으로 인코딩할 수 있다. 인코딩 과정은, 선택에 따라서는, 원격지 장치에 있는 디코더에 전송하기 위해 패키지되는 비디오 스트림을 생성한다. 비디오 스트림은 프레임 크기 및 프레임 속도로써 특징지어진다. 일반적인 프레임 크기는 800×600, 1280×720(예를 들어, 720p), 1024×768이지만, 이와 다른 프레임 크기도 사용될 수 있다. 프레임 속도는 1초당의 비디오 프레임의 수이다. 비디오 스트림에는 서로 다른 형식의 비디오 프레임들이 포함될 수 있다. 예를 들어, H.264 표준은 "P" 프레임과 "I" 프레임을 포함한다. I 프레임은 디스플레이 장치에서 모든 매크로 블록/픽셀을 새로고침(refresh)하기 위한 정보를 포함하고, 반면에 P 프레임은 그 부분상황을 새로고침하기 위한 정보를 포함한다. P 프레임은 일반적으로, 그 데이터 크기가 I 프레임보다 작다. 여기서 사용한 용어 "프레임 크기"는 프레임 내의 픽셀의 수를 지칭하며, "프레임 데이터 크기"는 프레임을 저장하는 데 필요한 바이트 수를 지칭한다.
대안적 실시예에서, 비디오 소스(130)는 카메라 등의 비디오 기록 장치를 포함한다. 이 카메라는 컴퓨터 게임의 비디오 스트림 내에 포함될 수 있는 지연된 비디오 또는 라이브 비디오를 생성하는 데 사용할 수 있다. 생성된 비디오 스트림에는, 선택에 따라서는, 렌더링된 영상과, 정지영상 카메라나 비디오 카메라를 사용하여 기록된 영상이 모두 포함된다. 비디오 소스(130)는 또한, 비디오 스트림에 포함되어야 할, 사전에 기록된 영상을 저장하기 위해 구성된 저장 장치를 포함할 수 있다. 비디오 소스(130)는 또한, 객체(가령, 사람)의 움직임이나 위치를 감지하도록 구성된 움직임/위치 감지 장치와, 감지된 움직임 및/또는 위치를 기초로 게임상황을 결정하거나 비디오를 생성하도록 구성된 로직을 포함할 수 있다.
비디오 소스(130)는, 선택에 따라서는, 다른 비디오 위에 놓이게 구성된 중첩 기능을 제공하도록 구성된다. 예를 들어, 이들 중첩 기능은, 커맨드(command) 인터페이스, 로그인 명령(instruction), 다른 게임자의 시점에서 렌더링된 비디오 프레임, 게임자에 대한 메시지, 다른 게임자의 영상, 다른 게임자의 비디오 입력(feed)(예를 들어, 웹캠 비디오)을 포함할 수 있다. 터치 스크린 인터페이스를 포함하는 클라이언트(110B)의 실시예에서, 중첩 기능은 가상 키보드, 조이스틱, 터치 패드, 및/또는 그 밖의 것을 포함할 수 있다. 중첩 기능의 일례로서, 게임자의 음성이 오디오 스트림에 중첩된다. 비디오 소스(130)는, 선택에 따라서는, 하나 이상의 오디오 소스를 추가로 포함한다.
비디오 서버 시스템(120)이 하나 이상의 게임자로부터의 입력에 따라 게임상황을 유지하도록 구성되어 있는 실시예에서, 각 게임자는 다른 시점(바라보는 위치와 방향으로 이루어짐)을 가질 수 있다. 비디오 소스(130)는, 선택에 따라서는, 각 게임자의 시점에 따라 각 게임자마다 별도의 비디오 스트림을 제공하도록 구성된다. 또한, 비디오 소스(130)는 각 클라이언트(110)에게로 다른 프레임 크기, 프레임 데이터 크기, 및/또는 인코딩을 제공하도록 구성될 수 있다. 비디오 소스(130)는, 선택에 따라서는, 3D 영상을 제공하도록 구성된다.
I/O 장치(145)는, 비디오 서버 시스템(120)으로 하여금 비디오, 커맨드, 부가기능(add-on), 부가기능 데이터, 정보 요청, 게임상황, 클라이언트 정체성, 게임자 정체성, 게임 커맨드, 보안 정보, 오디오 데이터, 및/또는 그 밖의 것을 전송 및/또는 수신하도록 구성된다. I/O 장치(145)는 일반적으로, 네트워크 카드 또는 모뎀 등의 통신 하드웨어를 포함한다. I/O 장치(145)는 게임 서버(125), 네트워크(115), 및/또는 클라이언트(110)와 통신하도록 구성된다. I/O 장치(145)는 클라이언트(110) 중의 하나 이상으로부터 정보를 수신하도록 구성된다. I/O 장치(145)는, 선택에 따라서는, TCP나 UDP 등의 표준을 사용하여 정보를 패킷으로서 수신하도록 구성된다.
비디오 서버 시스템(120)은, 선택에 따라서는, 클라이언트 자격부여자(qualifier)(160)를 추가로 포함한다. 클라이언트 자격부여자(160)는 클라이언트의 기능(즉, 클라이언트(110A) 또는 클라이언트(110B))을 원격지에서 결정하도록 구성된다. 이들 기능은 클라이언트(110B)의 자체 기능뿐만 아니라, 클라이언트(110B)와 비디오 서버 시스템(120) 사이의 하나 이상의 통신 채널의 기능을 모두 포함할 수 있다. 예를 들어, 클라이언트 자격부여자(160)는 네트워크(115)을 통해 통신 채널을 테스트하도록 구성될 수 있다.
클라이언트 자격부여자(160)는 클라이언트(110B)의 기능을 수동 또는 자동으로 결정(예를 들어, 탐색)할 수 있다. 수동 결정에는, 클라이언트(110B)의 게임자와 통신하여 게임자에게 기능 제공을 요청하는 것이 포함된다. 예를 들어, 일부 실시예에서, 클라이언트 자격부여자(160)는 클라이언트(110B)의 브라우저에 영상, 텍스트, 및/또는 그 밖의 것을 표시하도록 구성된다. 표시되는 객체들은 게임자가 클라이언트(110B)의 운영 체제, 프로세서, 비디오 디코더 형식, 네트워크 연결 형식, 디스플레이 해상도 등의 정보를 입력하도록 하는 요청을 나타낸다. 게임자가 입력한 정보는 클라이언트 자격부여자(160)에게 되돌려 전송된다.
자동 결정은, 예를 들어, 클라이언트(110B)에서의 에이전트(agent)의 실행 그리고/또는 클라이언트(110B)로의 테스트 비디오 전송을 통해 수행될 수 있다. 에이전트는, 웹페이지에 포함되거나 부가기능으로서 설치된 자바 스크립트와 같은 컴퓨팅 명령(instruction)을 포함할 수 있다. 에이전트는, 선택에 따라서는, 클라이언트 자격부여자(160)에 의해 제공된다. 다양한 실시예에서, 에이전트는 클라이언트(110B)의 처리력, 클라이언트(110B)의 디코딩 및 디스플레이 성능, 클라이언트(110B)와 비디오 서버 시스템(120) 간의 통신 채널의 지연 시간 신뢰도 및 대역폭, 클라이언트(110B)의 디스플레이 형식, 클라이언트(110B)에 부여된 방화벽, 클라이언트(110B)의 하드웨어, 클라이언트(110B)에 실행되는 소프트웨어, 클라이언트(110B) 내의 레지스트리 항목, 클라이언트(110B)가 무선 라우터를 통해 연결되어 있는지 여부, 및/또는 그 밖의 것을 찾아낼 수 있다.
클라이언트 자격부여자(160)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 클라이언트 자격부여자(160)는, 선택에 따라서는, 비디오 서버 시스템(120)의 하나 이상의 다른 요소와 별도인 컴퓨팅 장치에 배치된다. 예를 들어, 일부 실시예에서, 클라이언트 자격부여자(160)는, 클라이언트(110)와 비디오 서버 시스템(120)의 하나 이상의 인스턴스 간의 통신 채널의 특징을 결정하도록 구성된다. 이 실시예에서 클라이언트 자격부여자(160)에 의해 탐색된 정보는, 비디오 서버 시스템(120)의 어느 인스턴스가 스트리밍 비디오를 클라이언트(110) 중 하나로 전송하는 데 가장 적합한지를 판단하는 데 사용할 수 있다.
다운로드 관리자(165)는 실행가능 게임 컨텐트를 클라이언트(110B)로 다운로드하는 것을 관리하도록 구성된다. 다운로드는 비디오 소스(130)에 의해 클라이언트(110B)로 제공되는 게임 비디오를 게임자에 대해 표시하는 것과 병행하여 수행된다. 두 개 이상의 클라이언트(110) 각각은 스트리밍 게임 비디오 및 실행가능 게임 컨텐트 모두를 동시에 받을 수 있다. 스트리밍 비디오와 병행하여 코드를 다운로드한다는 것은, 실행가능 게임 컨텐트의 패킷을, 스트리밍 게임 비디오와 동시에 또는 스트리밍 게임 비디오의 패킷들 사이에서 클라이언트(110B)에게 전송된다는 것을 의미한다. 다운로드 관리자(165)는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능 매체에 저장된 소프트웨어를 포함하며, 다운로드 관리자(165)는 하나 이상의 장치 사이에서 분산될 수 있다. 실행가능 게임 컨텐트는 클라이언트(110B)에서의 실행을 위해 구성되고, 실행시에는 게임 환경을 기초로 하여 게임자에게 표시되기 위한 비디오를 생성하도록 구성된다.
일부 실시예에서, 게임 비디오 및 실행가능 게임 컨텐트 모두가 동일한 데이터 패킷으로 클라이언트(110B)에 제공된다. 예를 들어, 패킷은 비디오 프레임(여러 가지 가능한 유형 중 하나임)과, 실행가능 게임 컨텐트의 부분인 데이터를 포함할 수 있다. 실행가능 게임 컨텐트는, 선택에 따라서는, I/O 장치(145)에 전송되기 전에 인코더(225A) 또는 후치 프로세서(260)에 의해 패킷에 삽입된다. 일부 실시예에서, 인코더(225A) 또는 후치 프로세서(260)는 비디오 프레임이 포함된 패킷을 검사하고, 얼마나 더 많은 데이터가 패킷 내에 들어갈 수 있을지를 계산하고, 패킷에 남아있는 공간을 채우기 위해서 실행가능 게임 컨텐트를 삽입하도록 구성된다. 바람직한 패킷 크기는, 선택에 따라서는, 이 계산을 수행하는 데 사용된다. 클라이언트(110B)에서, 패킷이 파싱(parse)되고 비디오 프레임은 실행가능 게임 컨텐트와 별도로 디코딩된다.
다운로드 관리자(165)는 실행가능 게임 컨텐트가 다운로드되는 속도(예를 들어, 메가비트/초(Mbits/second)를 제어하여 실행가능 게임 컨텐트를 부분적으로 관리한다. 이 속도는 게임 코드를 포함하는 데이터 패킷의 크기와 이들 데이터 패킷이 전송되는 주파수에 따라 달라진다. 속도를 선택하기 위하여 이들 요소 중 하나를 변화시킬 수 있다. 속도의 선택은, 1) 비디오 서버 시스템(120)과 클라이언트(110B) 간의 통신 채널의 사용가능한 대역폭과, 2) 스트리밍 게임 비디오를 제공하는 데 사용된 이 대역폭의 일부분에 기초하여 선택된다. 예를 들어, 통신 채널의 대역폭이 15Mb/sec이고 원하는 품질로 스트리밍 게임 비디오를 제공하는 데 10Mb/sec가 필요한 경우라면, 실행가능 게임 컨텐트가 다운로드되는 속도는 5Mb/sec로 제한될 것이다. 일반적으로, X Mb/sec 대역폭이 사용가능하고 Y Mb/sec가 스트리밍 비디오용으로 사용되는 경우, 다운로드 관리자(165)는 실행가능한 컨텐트가 다운로드되는 속도를 (X-Y) Mb/sec 미만으로 제한할 것이다. 다운로드 관리자(165)는, 최대 가능 속도에 대해서, 실행가능 게임 컨텐트의 다운로드 속도를 줄이게 될 것이다. 이로써 클라이언트(110B)는, 원하는 품질 수준(예컨대, 소정 해상도, 색심도, 및 프레임 크기 등에서의 원하는 신뢰도)으로 스트리밍 게임 비디오를 다운로드할 수 있다. 스트리밍 비디오를 전송하는 것이 실행가능 게임 컨텐트를 다운로드하는 것보다 우선권을 갖는다.
서로 다른 클라이언트(110)들과 비디오 서버 시스템(120) 간의 통신 채널의 대역폭이 서로 다른 대역폭을 가질 수 있기 때문에, 동일한 실행가능 게임 컨텐트가 이들 다른 클라이언트(110)로 다운로드되는 속도는 서로 다를 수 있다. 또한, 통신 채널이 동일한 대역폭을 갖는다 하더라도, 스트리밍 게임 비디오가 각 클라이언트(110)에 다운로드되는 속도가 다르다면 실행가능 게임 컨텐트가 다운로드되는 속도는 달라질 수 있다. 예를 들어, 클라이언트(110A)가 제1프레임 크기의 스트리밍 비디오를 수신하고 클라이언트(110B)가 제2프레임 크기의 스트리밍 비디오를 수신한다면, 이들이 실행가능 게임 컨텐트를 수신한 속도는, 각자의 통신 채널이 동일한 대역폭을 갖는다 하더라도, 다르게 될 수 있다.
실행가능 게임 컨텐트가 비디오 서버 시스템(120)으로부터 클라이언트(110B)로 다운로드되는 속도는 시간에 따라 동적으로 변화할 수 있다. 예를 들어, 통신 채널의 대역폭이 하강하면, 다운로드 관리자(165)는 이 대역폭 하강에 대한 응답으로서 실행가능 게임 컨텐트가 클라이언트(110B)로 다운로드되는 속도를 줄일 수 있다. 대역폭의 하강은 종종, 손실된 패킷을 모니터링함으로써 검출된다. 일부 실시예에서, 다운로드 관리자(165)는, 실행가능 게임 컨텐트 패킷 및/또는 스트리밍 비디오 패킷이 손실되는 경우에 실행가능 게임 컨텐트의 다운로드 속도를 자동으로 줄이도록 구성된다. 실행가능 게임 컨텐트의 다운로드되는 속도를 감소시킨 상태에서, 스트리밍 게임 비디오가 전송되는 속도를 일정하게 유지시킬 수 있다. 예를 들어, 스트리밍 게임 비디오가 전송되는 속도를 줄임으로써 게임자에게 보여지는 비디오의 품질이 최소한의 품질 아래로 하락하게 될 경우라면, 스트리밍 게임 비디오가 전송되는 속도를 줄이기 전에, 실행가능 게임 컨텐트가 다운로드되는 속도를 감소시키게 될 것이다. 따라서 스트리밍 게임 비디오 통신 속도에 대한 실행가능 게임 컨텐트의 비율이 감소된다.
실행가능 게임 컨텐트가 다운로드되는 속도는, 다운로드 과정 중에 감소뿐만 아니라 증가시킬 수 있다. 예를 들어, 통신 채널 대역폭을 임시로 감소시킨 후에 속도를 점차적으로 높여서 다운로드 속도를 더 올리는 것이 가능한지 여부를 테스트 할 수 있다. 패킷이 손실된다면, 다운로드 속도를 다시 약간 낮춘다. 이 방법을 사용하여, 통신 채널의 대역폭이 시간에 따라 변한다 하더라도 최적의 다운로드 속도를 찾을 수 있다. 일부 실시예에서, 실행가능 게임 컨텐트의 다운로드는, 비교적 느린 다운로드 속도부터 시작하여 패킷이 손실될 때까지 다운로드 속도를 증가시킨다. 이 시점에서, 패킷 손실이 허용 수준에 이를 때까지 실행가능 게임 컨텐트의 다운로드 속도를 감소시킨다.
일부 실시예에서, 다운로드 관리자(165)는 비디오 서버 시스템(120)과 클라이언트(110B) 사이의 사용가능한 대역폭의 추정치를 수신하도록 구성된다. 이 사용가능한 대역폭은, 다른 곳에서 설명한 테스트 방법으로 판단할 수 있으며, 하나 이상의 통신 채널을 포함할 수 있다. 예를 들어, 사용가능한 대역폭의 추정치를 클라이언트 자격부여자(160)로부터 받을 수 있다. 실행가능 게임 컨텐트의 패킷은, 선택에 따라서는, 스트리밍 게임 비디오와는 다른 통신 채널을 통해 다운로드된다. 이러한 다양한 통신 채널은 공통적인 일부 세그먼트를 가질 수 있다. 예를 들어, 스트리밍 게임 비디오가 비디오 소스(130)로부터 전송되는 동안, 실행가능 게임 컨텐트는 코드 소스(170)로부터 다운로드될 수 있다. 코드 소스(170)는, 선택에 따라서는, 비디오 소스(130)에서 지리적으로 떨어진 원격지에 배치된다. 따라서, 실행가능 게임 컨텐트는 스트리밍 게임 비디오에 대해서 네트워크(115)의 다른 세그먼트를 통해 지나갈 수 있다. 일부 세그먼트가 다르다 하더라도, 실행가능 게임 컨텐트 및 스트리밍 게임 비디오는 둘 다, 네트워크(115)의 다른 세그먼트(들)(예를 들어, 네트워크(115)와 클라이언트(110B)를 연결하는 마지막 세그먼트)을 지나갈 수 있게 된다.
네트워크(115)의 어느 세그먼트가, 실행가능 게임 컨텐트와 스트리밍 게임 비디오를 통과시키는 통신 채널의 대역폭을 제한하는지에 따라서, 때때로, 하나의 채널만을 통할 때 보다도 더 많은 총 바이트수로 전송 및 다운로드하는 것이 가능하다. 예를 들어, 스트리밍 게임 비디오가 전송되는 제1통신 채널이, 실행가능 게임 컨텐트를 다운로드하는 데 사용되지 않는 세그먼트에 의해서 X Mbits/sec 대역폭으로 제한되는 경우에, 스트리밍 게임 비디오 및 다운로드가능한 실행가능 게임 컨텐트 둘 다의 총 바이트수는 X Mbits/sec보다 클 것이다. 실행가능 게임 컨텐트를 다운로드하는 데 사용되는 제2통신 채널의 대역폭에 도달되거나 또는 제1및 제2통신 채널이 둘 다 공유하는 네트워크(115)의 세그먼트 용량에 도달될 때까지, 실행가능 게임 컨텐트가 다운로드되는 속도를 증가시키는 것이 때때로 가능하다. 실행가능 게임 컨텐트의 패킷 또는 스트리밍 게임 비디오의 패킷 중 하나가 너무 빈번히 잃을 때까지 실행가능 게임 컨텐트가 다운로드되는 속도를 증가시킬 수 있다. 그 다음에 이 속도를, 패킷이 전혀 손실되지 않거나 허용가능한 수준으로 손실되는 최적치로 감소시킨다. 통신 및 다운로드의 최적 속도의 결정은 다운로드 관리자(165) 및/또는 클라이언트 자격부여자(160)를 사용하여 관리 할 수 있다.
코드 소스(170)에는 실행가능 게임 로직과 관련 컨텐트(선택사항임)를 저장하도록 구성된 하드 드라이브 및/또는 반도체 메모리 등의 저장 장치가 포함된다. 코드 소스(170)는, 선택에 따라서는, 비디오 서버 시스템(120)의 다른 구성요소들 지리적으로 떨어져있는 위치에 배치된다. 예를 들어, 제1위치에 있는 코드 소스(170)의 하나의 인스턴스를, 한 곳 이상의 다른 위치에 있는 하나 이상의 비디오 서버 시스템(120)이 공유할 수 있다. 이들 실시예에서, 코드 소스(170)는 서로 다른 클라이언트(110)에 복수의 실행가능 게임 컨텐트 사본(게임 로직 및 관련 컨텐트)을 병렬적으로 제공하도록 구성되는데, 여기서, 각 컨텐트 사본은 때때로, 동일한 클라이언트(110)에 제공되는 스트리밍 게임 비디오와 병행해서 제공된다. 코드 소스(170)는, 선택에 따라서는, 동일한 당사자에 의해서, 게임 서버(125)로서 포함되고/포함되거나 관리된다. 코드 소스(170)는, 선택에 따라서는, 하나 이상의 비디오 게임 타이틀을 위한 실행가능 게임 컨텐트를 제공하도록 구성된다. 실행가능 게임 컨텐트는, 선택에 따라서는, 부가기능들 및/또는 부가기능 데이터를 포함한다.
일부 실시예에서 코드 소스(170)의 전체 또는 일부는, 몇몇 다중 장치들(선택에 따라서는, 복수 구성된 클라이언트(110)들이 포함됨) 사이에 분산된다. 이들 실시예에서 실행가능 게임 컨텐트의 전체 또는 일부는 피어-투-피어 기반으로, 한 클라이언트(110)로부터 다른 클라이언트(110)로 제공될 수 있다. 이러한 목적을 위해, 코드 소스(170)와 비디오 소스(130) 간의 통신에 관하여 설명한(비디오 서버 시스템(120)의 일부로서 설명함) 통신 채널의 테스트 및 모니터링을 또한, 복수 구성된 클라이언트(110)들 사이의 통신 채널에 적용할 수 있다. 예를 들어, 클라이언트(110B)가 수신한 실행가능 게임 컨텐트의 부분을, 비디오 서버 시스템(120), 클라이언트(110A), 및/또는 클라이언트(110C)(미도시)로부터 수신할 수 있다. 일부의 경우에, 클라이언트(110A)와 클라이언트(110B)의 상대적 접근성은 클라이언트(110B)와 비디오 서버 시스템(120)의 접근성보다 훨씬 더 가까울 수 있다. 따라서, 피어-투-피어 통신 채널이 바람직할 수 있다. 실행가능 게임 컨텐트의 어느 부분을 어느 소스로부터 받을지를 선택하는 것은, 선택에 따라서는, 클라이언트(110B)로의 전달을 최적화하기 위해 이루어진다. 피어-투-피어로부터의 전달의 경우에, 각 피어에 가해지는 부담은, 3개, 5개, 또는 10개의 피어를 소스로서 더 사용함으로써 줄일 수 있다. 다운로드 관리자(165)는, 선택에 따라서는, 피어-투-피어 통신을 관리하도록 구성된다.
다운로드 관리자(165)는, 선택에 따라서는, 실행가능 게임 컨텐트가 다운로드되는 순서를 관리하도록 구성된다. 예를 들어, 실행가능 게임 컨텐트가 다운로드되는 순서는, 비디오 서버 시스템(120) 또는 클라이언트(110B)에 저장된 비디오 게임의 상황에 대한 응답에 따라 변경될 수 있다. 다운로드 관리자(165)는, 선택에 따라서는, 이 상황을, 게임이 스트리밍 모드 및/또는 클라이언트측 모드 중 하나로 실행되는 동안에 모니터링하도록 구성된다.
다운로드 관리자(165)는 클라이언트(110B)로의 게임상황의 다운로드를 관리하도록 추가 구성된다. 이 게임상황은 스트리밍 게임 비디오를 생성하기 위하여 비디오 소스(130)에서 사용되는 게임상황이다. 게임상황은, 선택적 구성요소인 상황 소스(175)로부터 또는 게임 서버(125)로부터 다운로드될 수 있다. 일부 실시예에서, 일단 초기 상황이 다운로드되면, 다운로드 관리자(165)는 두 개의 게임상황 사본을 유지하기 위한 업데이트를 다운로드하도록 추가적으로 구성된다. 예를 들어, 게임상황의 제2본을 클라이언트(110B)에 보관해놓고 게임상황의 제1본을 상황 소스(175)에 저장(그리고 비디오 소스(130)에 의해 사용)할 수 있다.
상황 소스(175)는, 비디오 게임상황을 저장하도록 구성된, 하드 드라이브 및/또는 반도체 메모리 등의 저장 장치를 포함한다. 저장된 상황은, 선택에 따라서는, 게임 서버(125)에 저장되어 있는 전체 게임상황의 부분상황이며, 일반적으로, 복수 구성된 클라이언트(110)들로부터 받은 커맨드 및/또는 게임 서버(125)로부터 받은 상황 업데이트내용에 기초하여 업데이트된다.
다운로드 관리자(165)는, 선택에 따라서는, 실행가능 게임 컨텐트의 다운로드의 진행을 모니터링하고, 전환 로직(180)를 사용하여 클라이언트(110B)에 다운로드된 코드의 실행을 개시하도록 추가 구성된다. 실행의 개시는, 실행가능 게임 컨텐트의 실행가능 부분상황이 다운로드되거나 또는 실행가능 게임 컨텐트 모두가 다운로드된 때에 수행될 수 있다. 다운로드 관리자(165)는 일반적으로, 이들 조건 중 하나 또는 모두가 충족 될 때를 감지하도록 구성된다.
실행 개시는 자동 또는 수동으로 할 수 있다. 자동 개시는 클라이언트(110B)에서의 게임자의 행위를 요하지 않고 전환 로직(180)에 의해 수행되는 반면, 수동 개시는 게임자에 의한 소정의 행위를 요한다. 자동 개시에서, 커맨드는 전환 로직(180A)으로부터 클라이언트(110B)에 있는 전환 로직(180C)으로 전송되어 실행가능 게임 컨텐트가 설치 및/또는 시작되도록 한다. 클라이언트(110)의 모든 유형이 반드시, 보안상의 이유로 프로그램 실행의 원격 자동 개시를 허용하는 것은 아니다.
수동 개시에서, 게임자는 다운로드된 실행가능 게임 컨텐트의 실행을 시작하거나 허용할 소정의 행위를 취한다. 예를 들어, 게임자는, 실행가능 게임 컨텐트를 설치하는 설치 프로그램을 실행하며, 설정 및 데이터 파일을 정하며, 그리고/또는 설치 완료된 게임 코드의 실행을 시작시키는 버튼을 클릭할 수 있다. 이는, 게임자가 한 번의 클릭만을 필요로 하는 최소한의 경우이다. 다른 실시예에서, 게임자는, 다운로드된 실행가능 게임 컨텐트로부터 게임 클라이언트의 설치를 우선적으로 시작해야 하고, 설치하는 동안에는 설정 관련 질문에 답해야 하고, 라이센스 키를 입력해야 하고, 설치된 게임 클라이언트의 실행을 수동으로 개시해야 하고, 및/또는 기타의 행위를 해야 한다. 다양한 실시예에서, 이러한 작업들의 임의의 조합은 게임자가 해야 할 수도 있고 하지 않아도 될 수 있다.
일부 실시예에서, 다운로드된 실행가능 게임 컨텐트의 수동 실행 개시는, 스트리밍 게임 비디오가 표시되는 것과 같이 동일한 브라우저 창을 통해 게임자에게 보여지는 제어항목에 의해서 용이하게 할 수 있다. 예를 들어, 개시 버튼을 게임 비디오 상에 배치된 중첩부의 일부로서 게임자에게 제공할 수 있거나, 또는, 개시 버튼을 스트리밍 게임 비디오가 표시되는 동일한 브라우저 창의 다른 부분에 표시할 수 있다. 스트리밍 게임 비디오 및 개시 제어항목은, 선택에 따라서는, 브라우저 창의 서로 다른 프레임에 위치할 수 있다.
일부 실시예에서, 게임자는 다운로드된 코드의 실행이 개시될 때 제어항목을 제공받는다. 예를 들어, 게임 실연을 사전에 정해놓은 시간(예컨대 5분) 내에 서버측 모드에서 클라이언트측 모드로 전환해야 한다는 것을 나타내는 메시지가 게임자에게 표시될 수 있다. 이 메시지는 중첩기능으로서 표시되거나, 스트리밍 비디오가 표시되는 브라우저 창의 다른 곳에 표시될 수 있다. 또는 별도의 창에 표시될 수 있다. 이 메시지는 게임자로 하여금 사전에 정해놓은 시간 내에 게임자가 선택한 시간에 전환을 시작할 수 있도록 하는 버튼을 포함할 수 있다. 메시지는, 선택에 따라서는, 사전에 정해놓은 시간을 카운트다운한다. 이 시간의 만료시에 스트리밍 게임 비디오는 더 이상 클라이언트에게 제공되지 않지만, 실시간 게임 실연이 포함하지 않은 대체 컨텐트는 클라이언트에게 제공될 수 있다. 일부 실시예에서, 다운로드된 실행가능 게임 컨텐트의 클라이언트(110B)에서의 실행의 개시는, 게임자가 수동으로 스트리밍 게임 비디오의 수신을 종료하고, 실행가능 게임 컨텐트를 기반으로 하는 게임 클라이언트의 설치를 수동으로 수행하고, 그리고나서, 게임 클라이언트의 실행을 수동으로 시작하는 것을 필요로 한다. 게임자는, 선택에 따라서는, 이러한 전환의 전체 또는 일부를 수동으로 수행하는 미리 정의해놓은 시간을 부여받는다.
일부 실시예에서, 다운로드를 시작할 수 있는 권한은 게임자로부터 받는다. 그리고 이 권한은 또한 설치 루틴 및 비디오 게임 클라이언트 둘 다의 실행을 시작하는 데 사용된다. 예를 들어, 실행가능 게임 컨텐트를 다운로드하고, 준비가 된 때 다운로드된 코드를 실행할 수 있는 권한을 요청하는 게임자에게 메시지를 표시해 줄 수 있다. 이 제어항목은 본 명세서의 다른 곳에서 논의된 제어항목 표시 방식을 통해 표시될 수 있다. 제어항목은, 게임자가 게임을 요청한 때, 스트리밍 게임 비디오의 전송이 시작된 때 또는 스트리밍 게임 비디오가 게임자에게 표시되고 소정의 시간이 지난 때에 제공될 수 있다. 예를 들어, 다양한 실시예에서는, 특정 게임상황에 도달한 후, 게임자가 게임의 특정 단계에 진입한 후, 게임자가 게임상황을 저장한 후, 및/또는 그 밖의 경우에만 실행가능 게임 컨텐트의 다운로드가 수행된다. 다운로드의 시작 그리고/또는 실행가능 게임 컨텐트의 실행 개시를 위한 권한의 요청을 위해서는, 선택에 따라서는, 게임을 구입해야 하는 옵션이 수반된다. 예를 들어, 다운로드 개시 및/또는 실행 개시를 위해 비용을 지불해야 할 수도 있다.
일부 실시예에서, 스트리밍 게임 비디오의 전달이 게임자에 의해 종료되기 전까지는 실행가능 게임 컨텐트의 다운로드가 시작되지 않는다. 예를 들어, 다운로드 관리자(165)는 게임자가 일단 게임 실연을 중지한 후에 실행가능 게임 컨텐트를 다운로드할 것을 게임자에게 요구하도록 구성될 수 있다. 따라서, 일실시예에서, 게임자는 30분 동안(또는 다른 시간 동안) 서버측 모드으로 게임을 하고 나서 게임을 종료할 수 있다. 게임을 종료하면 게임자는 게임을 구입할 기회를 요청받는다. 게임자가 수락하면 실행가능 게임 컨텐트가 다운로드된다. 다운로드의 순서는, 선택에 따라서는, 서버측 모드 동안에 게임자가 게임에서 무엇을 행했는지에 좌우된다. 예를 들어, 게임자의 화신(아바타)의 현재 위치를 지원하기 위해 필요한 실행가능 게임 컨텐트가 가장 먼저 다운로드될 수 있다.
게임자는 이 다운로드가 진행되는 동안에 게임을 다시 시작할지를 결정할 수도 있고 결정하지 않을 수도 있다. 게임자가 게임을 다시 시작하기로 결정한다면, 다운로드 관리자(165)는 실행가능 게임 컨텐트의 실행가능 부분상황(또는 전부)가 이미 다운로드되었음을 우선적으로 결정하도록 구성된다. 실행가능 부분상황 또는 모든 실행가능 게임 컨텐트가 다운로드되면, 다운로드된 게임 코드가 실행된다. 실행가능 부분상황 또는 모든 실행가능 게임 컨텐트가 다운로드되지 않은 경우에는, 게임은 스트리밍 모드으로 다시 실행된다. 또한, 게임이 서버측 모드으로 다시 실연되는 동안에 실행가능 게임 컨텐트가 다운로드될 수도 있고 그렇지 않을 수도 있다. 게임자가 시간을 두고 복수의 게임 세션을 실행하는 경우에는, 서버측 모드의 게임 실연 기간에 다운로드 기간이 섞여있게 될 수 있다.
일부 실시예에서, 게임 코드의 실행가능 부분상황인 것으로 생각되었던 것이 게임자가 게임을 하는 데에 충분하지 않은 것임을 알 수 있다. 예를 들어, 게임자가, 게임의 더 높은 레벨의 영역에 대한 지원이 다운로드되기도 전에 아바타를 게임의 해당 영역으로 진입시킬 경우에는, 클라이언트측 게임 모드는 중단될 수 있다. 다운로드 관리자(165)는, 선택에 따라서는, 이러한 일이 발생하면 서버측 모드의 게임 실행으로 되돌리도록 구성된다. 이 경우, 본 명세서에서 설명한 다양한 전환 단계는 역으로 수행될 수 있다.
스트리밍 게임 비디오의 수신 시에는 일반적으로, 처음에는 아바타를 조종하기 전에 등록된 계정을 게임자가 가질 것을 요구하지는 않지만, 스트리밍 게임 비디오의 수신, 게임 코드의 수신, 게임에서의 게임자의 행위에 의한 최종 게임상황의 저장, 그리고/또는 서버측 모드에서 로컬 실행 모드로의 전환에는 일반적으로, 계정이 필요하다. 계정은 자동으로 또는 게임자에 의해 개설될 수 있다. 일부 실시예에서, 게임 서버(125)는 때때로, 멀티플레이어 게임을 실연하기 위해서는 계정을 필요로 한다. 이러한 실시예에서, 비디오 서버 시스템(120) 내의 계정 관리자(185), 또는 게임 시스템(100)의 다른 부분의 인스턴스는, 게임 서버(125)의 요구사항을 충족하는 임시 계정을 개설할 수 있다. 예를 들어, 계정 관리자(185)는 사용자 이름, 암호, 지리적 위치, 및/또는 그 밖의 것을 자동 생성하도록 구성될 수 있다. 그 다음, 이 계정 정보는 비디오 서버 시스템(120) 및 게임 서버(125) 사이에 게임 세션을 설정하는 데 사용된다. 이 게임 세션은 게임 커맨드과, 비디오 서버 시스템(120) 및 게임 서버(125) 사이의 게임상황 정보를 전송하는 데 사용된다. 계정 관리자(185)에 의해서, 게임자는, 모든 계정 정보가 게임자에 의해서 제공되기 전에도 서버 기반 비디오 게임을 시작할 수 있게 된다. 게임자가 게임의 상황을 저장하려고 할 때 또는 게임의 국지적 실행이 시작된 때에, 계정 정보는, 시간이 지남에 따라 게임 내의 특정 시점에서 게임자로부터 수집될 수 있다. 예를 들어, 게임자가 5분, 10분, 또는 15분 동안 게임을 한 후, 게임자가 소정의 게임 레벨 또는 게임상황에 도달할 때, 게임자가 게임상황을 저장하려고 할 때, 및/또는 그 밖의 경우에 게임자는 사용자 이름과 암호를 설정하라는 요구를 받을 수 있다. 게임자는 또한, 계정 정보를 설정할 때 게임 비용을 지불하라는 요구를 받을 수 있다. 계정을 개설하라는 요청은, 선택에 따라서는, 스트리밍 비디오 상에 중첩되어 표시되거나, 선택에 따라서는, 스트리밍 게임 비디오가 표시되는 동일한 브라우저 창의 다른 곳에 표시된다.
일부 실시예에서, 게임 비디오의 서버측 렌더링(서버측 모드)과 게임의 클라이언트측 렌더링(클라이언트측 모드)을 스위칭하는 경우에, 전환 로직(180A)은 비디오 서버 시스템(120)에 의해 수신된 계정 정보를 클라이언트(110B)로부터 게임 서버(125)로 제공하도록 구성된다. 전환 로직(180B)은 이 계정 정보로, 계정 관리자(185)에 의해 자동으로 생성된 계정 정보를 교체한다. 예를 들어, 게임자가 최초로 스트리밍 비디오 게임을 시작하면, 계정 관리자(185)는 무작위로 생성된 사용자 이름(SLE4IF45FFK1)과 암호(kalLI28lup)를 게임 서버(125)에 제공할 수 있다. 서버 실행 모드 및 클라이언트 실행 모드의 전환이 있기 전에, 게임자가 선정한 사용자 이름(EmmaP)과 암호(4mybutterfly)를 비디오 서버 시스템(120)이 접수한다. 전환 시간이 되면, 게임자가 선택한 계정 정보는 전환 로직(180A)으로부터 전환 로직(180B)으로 전송되고 전환 로직(180B)에 의해서 게임 서버(125)의 메모리에 있는 자동 생성된 계정 데이터가 이들 값으로 교체된다. 따라서, 게임자가 선한 계정 정보는, 비디오 서버 시스템(120)에 의해 자동 생성된 임시 계정 정보를 대체한다.
일부 실시예에서, 비디오 서버 시스템(120)에 의해 자동으로 생성된 계정 정보에는, 서버 선택, 게임자 추천 정보, 지리적 위치, 및/또는 그 밖의 것이 포함된다. 게임자 추천 정보는 게임자를 어떻게 게임에 유입시켰는지에 관한 정보이다. 게임자는 웹사이트, 광고, 마케팅 프로그램, 다른 게임자 등에 의해 게임에 유입될 수 있다. 이러한 경우에, 추천 정보에는 일반적으로, 추천자의 정체성이 포함한다. 예를 들어, 제1게임자가 스트리밍 비디오 게임을 할 수 있도록 구성된 링크를, 소셜 네트워킹 웹사이트에 있는 제2게임자의 페이지에 표시할 수 있다. 제2게임자(또는 그의 아바타)의 식별자가 이 링크 내에 포함될 수 있고 비디오 서버 시스템(120)은 이 식별자를 사용하여 제2게임자를 식별하도록 구성된다. 제2게임자의 정체성은 계정 관리자(185) 또는 게임 서버(125)에 의해 사용되어, 제2게임자에게 제1게임자를 추천한 데 대한 점수(credit)를 부여할 수 있다. 또한, 제2게임자의 정체성은, 제2게임자와 동일한 게임 서버, 아바타 파벌, 게임 환경 내의 위치 등에 제1게임자를 배치하기 위하여 게임 서버(125)에 의해 사용될 수 있다. 이는, 선택사항으로서 비디오 서버 시스템(120)에 의해 생성되는 계정 정보의 또다른 예시이다.
좀 더 구체적인 예로서, 월드 오브 워크래프트(World of Warcraft)®로부터의 스트리밍 게임 비디오 또는 그 프레임의 사본이, 비디오 소스(130)에 의해서 클라이언트(110B)에 있는 제1게임자에게 제공되고 제1게임자의 페이스북®의 페이지로 제공된다. 이 스트리밍 게임 비디오 사본은, 월드 오브 워크래프트를 실연하고 있는 제1게임자에 제2게임자가 합류가능하도록 구성되어 있는 링크와 상기 페이지상에서 연결된다. 이 링크를 제2게임자가 클릭하면, 식별자가 비디오 서버 시스템(120)의 인스턴스로 전송된다. 계정 관리자(185)는 이 식별자를 사용하여 제1게임자의 월드 오브 워크래프트 서버, 게임자 파벌(부대 또는 동맹), 그리고 선택에 따라서는, 월드 오브 워크래프트 게임 공간 내의 위치를 찾는다. 계정 관리자(185)는 이 정보를 이용하여, 제2게임자에 대한 계정 정보를 자동으로 생성(또는 제안)하여 제1게임자와 동일한 월드 오브 워크래프트 서버와 게임자 파벌에 제2게임자를 배치한다. 계정 관리자(185)는 또한, 게임 서버(125)에 정보를 제공하여, 제1게임자가 제2게임자를 추천하였음을 식별할 수 있다. 따라서, 제1게임자는 제2게임자를 게임으로 데려온 데 대한 점수를 받을 수 있다.
계정 관리자(185)에 의해 비디오 서버 시스템(120)으로부터 게임 서버(125)로 전송된 계정 정보의 일부는 게임 실연 중에 생성된다. 예를 들어, 게임을 하는 동안에 게임자는 계정에 부가기능을 연계시키거나 아바타를 설정할 수 있다. 이 정보는, 이 정보가 생성될 때, 게임이 나중에 저장될 때, 주기적인 통신 이벤트의 일환으로서, 및/또는 그 밖의 경우에, 이 정보가 클라이언트측 실행 모드에 필요한 곳으로 전송될 수 있다.
전환 로직(180)은, 선택에 따라서는, 게임 시스템(100)의 구성요소들 간에 그 밖의 정보를 전송하도록 구성된다. 예를 들어, 설치된 부가기능 코드와 생성된 부가기능 데이터를 비디오 서버 시스템(120)으로부터 또는 게임 시스템(100)의 다른 곳으로부터 클라이언트(110B)로 이송(transfer)될 수 있다. 이러한 이송은 전환 시에 또는 전환 전에 수행될 수 있다. 일부 실시예에서, 생성된 부가기능 데이터 및/또는 부가기능 코드는, 비디오 소스(130)로부터 클라이언트(110B)로의 스트리밍 게임 비디오의 전송과 병행하여 클라이언트(110B)로 복사된다.
게임자의 계정 정보는, 선택에 따라서는, 게임 서버(125)가 게임상황 정보를 제공하는 IP(인터넷 프로토콜) 주소를 포함한다. 이 IP 주소는 로그인 세션 마다 서로 다를 수 있다. 예를 들어, 게임자가 게임 서버(125)가 제공하는 비디오 게임을 하기 위해 로그인할 때마다 비디오 소스(130)는 다른 IP 주소를 제공할 수 있다. 마찬가지로 클라이언트(110B)는, 비디오 소스(130)으로부터 스트리밍 게임 비디오를 수신하는 매 세션마다 다른 IP 주소를 가질 수 있다. 종래 기술에서는, 게임 서버(125)가 게임상황 정보를 보내는 IP 주소가 개별 게임 세션 내에서는 변경되지 않는다. 만일 IP 주소가 변경된다면 게임자는 다시 로그인하거나 새 게임 세션을 시작하려면 일부의 초기 상태에서부터 시작해야 한다. 이러한 방법으로 IP 주소는, 로그인에 의해 인증된 게임자와 연계된다. 마찬가지로, 게임 커맨드가 게임 서버(125)에 의해 수신될 때, 해당 커맨드가 송출된 IP 주소를 사용하여 해당 커맨드를 특정 게임 세션/게임자에 지정한다.
발명의 일부 실시예에서, 게임 서버(125)가 게임상황 정보를 보내고 게임 커맨드가 수신된 IP 주소는 단일 게임 세션 내에서 변경된다. 예를 들어, 스트리밍 게임 방식과 로컬 게임 방식 간의 전환이 이루어질 때, 게임 서버(125)는, 게임상황 정보를 비디오 소스(130)로 전송하고 이로부터 게임상황 정보를 수신하는 것으로부터 게임상황 정보를 클라이언트(110B)로 전송하고 이로부터 게임상황 정보를 수신하는 것으로 전환한다. 이는, 선택에 따라서는, 게임자가 재 로그인할 필요없이 수행된다.
IP 주소를 변경하기 위하여, 전환 로직(180A)은 비디오 소스(130)가 클라이언트(110B)와 통신하는 데 사용하는 IP 주소를 게임 서버(125)로 전송한다. 클라이언트 IP 주소에는, 게임 서버(125)가 게임상황 정보를 클라이언트(110B)로 보내고/또는 클라이언트(110B)로부터 게임 커맨드를 받아들이라는 요청이 수반된다. 게임 서버(125)에서, 전환 로직(180B)은 클라이언트 IP 주소를 수신하고, 이를 특정 게임 세션에 연계시킨다. 그 다음에, 향후의 게임상황이 비디오 소스(130)의 IP 주소에 추가하여 또는 그 대신에 이 클라이언트 IP 주소로 전송된다. 마찬가지로, 게임 커맨드가 클라이언트 IP 주소로부터 게임 서버(125)에서 수신되는 경우에, 이들은 게임자의 게임 세션에 연계된다. 이 연계는, 게임 세션, 그리고 선택적 구성요소인 로그인이 비디오 소스(130)를 통해 최초로 개설된 경우에도 이루어진다. 또한, 게임 서버(125)와 통신하기 위해 비디오 소스(130)에서 사용되는 게임 서버 IP 주소는, 선택에 따라서는, 클라이언트(110B)로 제공되어 클라이언트(110B)가 이 게임 서버 IP 주소로 게임 커맨드를 직접 보낼 수 있도록 한다. 클라이언트(110B)로 이 게임 서버 IP 주소를 제공하는 것은, 게임 서버(125)의 IP 주소가 클라이언트(110B)로 다운로드된 실행가능 게임 컨텐트 내에 포함되는 실시예에서는 선택사항(옵션)이 된다.
일부 실시예에서, 클라이언트 IP 주소를 게임 세션에 연계함으로써, 게임 세션은 하나 이상의 클라이언트와 연계된다. 이 경우에, 게임상황의 부분상황은 클라이언트 모두에게 전송될 수 있다. 예를 들어, 게임상황의 부분상황은 게임 서버(125)로부터 클라이언트(110B) 및 비디오 소스(130) 모두로 전송될 수 있다. (게임 서버(125)는 비디오 소스(130)를 클라이언트로서 보며, 비디오 소스(130)와 클라이언트(110B)를 서로 다른 유형의 클라이언트로 구분할 수도 있고 아닐 수도 있다.) 소정의 시간 이후에, 게임 세션과 비디오 소스(130)의 IP 주소 사이의 연계가 해제될 수 있다. 일부 실시예에서는, 클라이언트 IP 주소를 게임 세션에 연계하면 자동으로 게임 세션과 비디오 소스(130)의 IP 주소의 연계가 해제되는 결과가 일어난다. 연계 해제가 즉시 일어나는지 여부 또는 두 IP 주소가 소정 시간 동안 게임 세션과 연결되는지 여부에 상관없이, 최종 결과는 전환 로직(180)에 의해서 게임 세션이 제1클라이언트로부터 제2클라이언트로 재할당된다는 것이다. 이 재할당은, 선택에 따라서는, 단일의 게임 세션 동안에 새로운 게임 세션을 시작하지 않고 수행된다.
다운로드 관리자(165) 및/또는 전환 로직(180)은, 선택에 따라서는, 스트리밍 게임 비디오를 렌더링하기 위해 비디오 소스(130)가 사용하는 게임상황의 부분상황의 두 사본을 유지하도록 구성된다. 두 부분상황 사본 중 하나는 비디오 소스(130)에 위치하고 다른 하나는 클라이언트(110B)에 위치한다. 이들 부분상황 사본은 비디오 소스(130) 또는 게임 서버(125) 중 하나로부터 클라이언트(110B)로 상황 업데이트를 전송함으로써 유지된다. 두 상황 사본은, 게임자가 불일치한 상황을 경험하지 않게끔 실행 모드의 전환이 이루어지도록 한다. 특히, 동일한 상황이 비디오 소스(130)에서의 게임 로직 실행과 클라이언트(110B)에서의 게임 로직 실행 모두에 사용가능하다. 두 상황 사본은 전환 전, 전환 중, 및/또는 전환 후의 일정 기간 동안 유지된다. 이 기간은 단축될 수 있다. 일부 실시예에서, 비디오 소스(130) 상의 게임 로직과 클라이언트(110B) 상의 게임 로직은 시간상 병렬로 실행됨으로써, 게임자에 대한 프리젠테이션 용으로 구성된 두 사본의 비디오 프레임이 다른 장소에서 생성되도록 한다. 다운로드된 실행가능 게임 컨텐트의 클라이언트(110B)에서의 실행은, 선택에 따라서는, 스트리밍 게임 비디오가 아직 클라이언트(110B)로 전송되고 및/또는 표시되는 동안에 시작된다.
일부 실시예에서 전환 로직(180) 및/또는 다운로드된 실행가능 게임 컨텐트는, 다운로드된 실행가능 게임 컨텐트의 실행시에 비디오 소스(130)로부터 클라이언트(110B)로 수신된 스트리밍 게임 비디오의 프리젠테이션을 종료하도록 구성된다. 예를 들어, 실행가능 게임 컨텐트는, 그 실행 시에, 스트리밍 게임 비디오가 표시되고 있는 브라우저 창을 닫을 수 있다. 또는 이와 달리, 실행가능 게임 컨텐트는 브라우저 창을 비디오 소스(130)로부터 실행가능 게임 컨텐트의 비디오 출력으로 중계(redirection)하도록 구성될 수 있다. 예를 들어, 전환 로직(180C)은 실행가능 게임 코드의 국지적(로컬) 출력의 URL을 브라우저 창에 제공함으로써, 비디오 소스(130)로부터 받은 비디오 스트림이, 다운로드된 실행가능 게임 컨텐트의 비디오 출력으로 대체될 수 있다. 실행가능 게임 컨텐트가 실행된 다음 번에는, 선택에 따라서는, 브라우저가 아닌 그 자체의 프로그램 창에서 게임 비디오를 표시하도록 구성된다.
본 명세서의 다른 곳에서 논의한 바와 같이, 일부 실시예에서, 다운로드 관리자(165) 및/또는 전환 로직(180)은, 다운로드된 실행가능 게임 컨텐트의 실행이 이 게임 코드의 부분상황만이 다운로드된 이후에 시작되도록 구성된다. 일반적으로, 다운로드 관리자(165)는 전환 후에는 실행가능 게임 컨텐트가 다운로드되는 속도를 증가시키도록 구성된다. 왜냐하면, 다운로드 속도를 스트리밍 게임 비디오의 최소한의 품질을 보장하기 위해 제한해야 할 필요가 더 이상 없기 때문이다.
프로세서(150)는 본 명세서에서 설명한 비디오 서버 시스템(120)의 다양한 구성요소에 포함되어 있는 로직(예컨대, 소프트웨어)을 실행하도록 구성된다. 예를 들어, 프로세서(150)는 비디오 소스(130), 게임 서버(125), 클라이언트 자격부여자(160), 다운로드 관리자(165), 코드 소스(170), 상황 소스(175), 및/또는 전환 로직(180A)의 기능을 수행하기 위해 소프트웨어 명령어(instruction)로 프로그래밍할 수 있다. 비디오 서버 시스템(120)은, 선택에 따라서는, 프로세서(150)의 하나 이상의 인스턴스를 포함한다. 프로세서(150)는 또한, 비디오 서버 시스템(120)에 의해 수신된 커맨드(command)을 실행하기 위해, 또는, 본 명세서에서 설명한 게임 시스템(100)의 다양한 구성요소의 기능을 조율하기 위해, 소프트웨어 명령어로 프로그래밍할 수 있다. 프로세서(150)는 하나 이상의 하드웨어 장치를 포함할 수 있다. 프로세서(150)는 전자식 처리기이다.
저장소(155)에는 비일시적 아날로그 및/또는 디지털 저장 장치가 포함된다. 예를 들어, 저장소(155)는 비디오 프레임을 저장하도록 구성된 아날로그 저장 장치를 포함할 수 있다. 저장소(155)는 컴퓨터 판독 가능한 디지털 저장장치, 예를 들어, 하드 드라이브, 광 드라이브, 또는 반도체 저장장치 등을 포함할 수 있다. 저장소(155)는 비디오 프레임, 인공 프레임(artificial frame), 비디오 프레임과 인공 프레임을 포함하는 비디오 스트림, 오디오 프레임, 오디오 스트림, 부가기능, 부가기능 데이터, 실행가능 게임 컨텐트, 및/또는 그 밖의 것을 저장하도록 구성된다(예를 들어, 적절한 데이터 구조 또는 파일 체계로써 구성됨). 저장소(155)는, 선택에 따라서는, 복수의 장치 간에 분산 배치된다. 일부 실시예에서, 저장소(155)는, 본 명세서의 다른 곳에서 논의된 비디오 소스(130)의 소프트웨어 부분을 저장하도록 구성된다. 이 부분은 필요시에 즉시 준비될 수 있도록 하기 위한 포맷으로 저장될 수 있다.
도 2는 본 발명의 다양한 실시예에 따른, 다중 비디오 게임을 제공하도록 구성된 비디오 소스(130)의 보다 상세한 구성을 도시한다. 다중 비디오 게임은 동일한 비디오 게임의 복수의 인스턴스들 및/또는 다른 비디오 게임의 복수의 인스턴스들을 포함할 수 있다. 비디오 게임은, 선택에 따라서는, 멀티플레이어 게임이다. 예를 들어, 비디오 게임 중 하나 이상의 게임상황이 게임 서버(125)의 하나 이상의 인스턴스(각각은 복수의 클라이언트로부터 받은 입력에 기초함)에 의해 유지될 수 있다. 도 2에 도시한 비디오 소스(130)의 구성요소들은, 선택에 따라서는, 프로세서(150)를 사용해 실행된다.
비디오 게임은 게임 로직(210)의 서로 다른 인스턴스(각각 210A, 210B, 210C 등으로 표시해 놓았음)를 사용하여 실행된다. 게임 로직(210)은 게임상황을 사용하여, 게임자에게 표시해주도록 구성된 비디오 스트림으로 렌더링할 수 있는 게임 환경을 결정하도록 구성된다. 게임 환경은 게임내 객체, 아바타, 객체의 위치, 객체의 형상, 질감, 객체 간의 공간 관계, 및 그 밖의 것이 포함된 2차원 또는 3차원의 가상 환경이다. 게임 환경은 정점(vertex) 데이터, 변환(transformation) 데이터 및 질감 데이터, 및/또는 그 밖의 것을 포함할 수 있다.
게임 로직(210)은 "게임 세션"의 일부로서 비디오 게임을 제공하도록 구성된다. 게임 세션은, 선택에 따라서는, 게임자가 비디오 게임을 하기 위해 로그온하고 로그오프한(또는 그 밖에 게임과의 접속을 종료) 사이의 시간 간격이다. 게임자가 로그인 계정을 개설하지 않고 게임을 하는 실시예에서, 게임 세션은, 게임자의 게임 진행 및/또는 게임상황이 게임 프로그램에 의해서 추적될 수 있고 유지되는 동안의 연속된 시간이다. 게임자가 게임 진행 및/또는 게임상황이 저장된 계정과 연계되지 않은 경우라면, 게임 세션이 종료될 때 게임 진행과 게임상황을 잃게 된다. 게임 세션은 클라이언트(110B)와 비디오 소스(130) 사이에, 클라이언트(110B)와 게임 서버(125) 사이에, 그리고 비디오 소스(130)와 게임 서버(125) 사이에 존재할 수 있다. 일부 실시예에서, 게임 세션은, 게임 세션이 종료되지 않고도, 게임 서버(125)와 비디오 소스(130) 사이에 존재하던 상황로부터 클라이언트(110B)와 게임 서버(125) 사이에 존재하는 상태로 (및/또는 그 반대로) 이송된다.
게임 환경의 렌더링은 일반적으로, 특정 게임자와 관련된 하나 이상의 시점에 기반을 두고 있다. 이들 시점은 위에서 보기, 앞으로 보기 등과 같이 매우 다를 수 있다. 또는, 시점은, 사람의 눈동자 사이의 거리에 의해 대략적으로 서로 다르게 되는 위치로부터 생길 수 있으며, 3D 영상을 만들도록 구성할 수 있다. 비디오 소스(130)는 게임 로직(210)의 1, 2, 3, 5, 7, 15, 또는 31개 이상의 인스턴스를 포함할 수 있다. 게임 로직(210)은, 선택에 따라서는, 게임 서버(125)의 클라이언트이며, 네트워크(115)를 통해 게임 서버(125)와 통신하도록 구성할 수 있다.
게임 로직(210)은 클라이언트(110)의 하나 이상으로부터 게임 커맨드를 수신하고 수신된 커맨드를 한 세트의 게임 규칙에 따라 처리하도록 구성된다. 이 규칙은, 예를 들어, 아바타가 다른 아바타들 또는 게임내 객체들과 상호 작용하는 방법, 아바타의 움직임, 게임 인스턴스의 관리, 및/또는 그 밖의 사항을 포괄하고 있다. 게임 로직(210)은 또한, 선택에 따라서는, 게임 내의 이벤트를 기반으로 오디오 데이터를 생성하도록 구성된다. 이 오디오 데이터는 총소리, 물 튀는 소리, 엔진 소리, 음성, 비행기 소리, 빗소리, 음악, 또는 게임에서 일어날 수 있는 그 밖의 소리를 제공할 수 있다. 예를 들어, 객체가 다른 객체를 때리는 이벤트에서는 이에 관련된 소리가 표현될 수 있을 것이다. 게임 로직(210)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 게임 로직(210)은 일반적으로, 관련 게임 컨텐트와 연계된다.
게임 로직(210)의 각 인스턴스는 별도의 컴퓨팅 장치에 배치될 수 있고, 또는, 게임 로직(210)의 여러 인스턴스가 동일한 컴퓨팅 장치에 배치될 수도 있을 것이며, 또는 게임 로직(210)의 하나의 인스턴스가 복수의 컴퓨팅 장치에 걸쳐서 배치될 수도 있을 것이다. 게임 로직(210)의 인스턴스는, 게임자가 현재 실연하고 있는 게임 환경의 요구조건에 따라 사용되는 컴퓨팅 장치의 개수 및/또는 정체성을 동적으로 변경할 수 있다. 동일한 컴퓨팅 장치에 배치된 게임 로직(210)의 인스턴스는, 선택에 따라서는, 별개의 가상 머신 또는 가상 I/O 셸(shell) 내에서 실행된다. 일부 실시예에서, 게임 로직(210)의 서로 다른 인스턴스들은, 서로에게 게임 커맨드 및/또는 게임상황 정보를 직접적으로 전송하도록 구성된다(예컨대, 게임 서버(125)를 통하여 통신할 필요없이).
게임 로직(210)은 일반적으로, 운영 체제(OS)(215)의 상층에서 실행된다. 운영 체제(215)는, 윈도우즈™, 리눅스, UNIX, Mac OS™, Solaris™, 및/또는 그 밖의 것을 포함할 수 있다. 가상 머신 플랫폼은 운영 체제(215)와 게임 로직(210) 사이에서 작동할 수 있다. 가상 머신 플랫폼은, ESX, 하이퍼-V, 및/또는 그 밖의 것과 같은 상업용 시스템을 포함할 수 있다. 이 실시예에서, 하나 이상의 게임 로직(210)을 가상 머신 내에서 실행시킬 수 있다. 게임 로직(210)의 다중 인스턴스는 운영 체계(215)의 동일한 인스턴스에 대해서 실행할 수 있다. 예를 들어, 도 2는 게임 로직 210A와 게임 로직 210B 모두가 동일한 운영 체제(215)에서 실행되는 것을 도시하고 있다. 동일한 운영 체계(215)에서 실행되는 게임 로직(210)의 인스턴스들은 동일한 비디오 게임을 실연하도록 구성될 수도 있고 아닐 수도 있다. 예를 들어, 게임 로직(210A, 210B, 210C)은, 모두가 월드 오브 워크래프트®의 클라이언트가 될 수도 있고, 각각이 월드 오브 워크래프트®, 이브(Eve)®, 콜투암스(Call to Arms)®의 클라이언트일 수도 있다.
일부 실시예에서, 게임 로직(210)에 의해 정해진 게임 환경은, 선택적 구성요소인 가상 3D 비디오 드라이버(220)으로 전달(pass)된다. 이 가상 3D 비디오 드라이버(220)는, 게임 로직(210)의 관점에서 볼 때 그래픽 처리 장치를 제어하는 비가상의(현실의) 3D 비디오 드라이버로서 보이도록 구성된다. 게임 로직(210)의 각 인스턴스가 가상 3D 비디오 드라이버(220)의 자신의 인스턴스와 연계될 수도 있고, 또는 가상 3D 비디오 드라이버(220)가 게임 로직(210)의 두 개 이상의 인스턴스에 의해 공유될 수도 있다. 일부 실시예에서, 각 게임 로직(210)에 의해 결정된 게임 오디오는 선택적 구성요소인 가상 오디오 드라이버(285)로 전달된다. 게임 오디오는 게임자에게 오디오 스트림의 일부로서 제공하도록 구성된 사운드 데이터를 포함한다. 게임 오디오는 게임 규칙(예를 들어, 총을 쏘면 '빵'하는 소리가 나야 함)에 의해 만들어질 수도 있고, 또는, 게임 오디오는 음악 트랙, 클라이언트(110)들, 마이크로폰, 및/또는 그 밖의 음원으로부터 받을 수도 있다.
대안적 실시예에서, 게임 로직(210)은 여기서 설명한 것과 같은 가상 3D 비디오 드라이버(220) 및/또는 가상 오디오 드라이버(285)의 기능성을 포함하도록 구성된다. 이들 실시예에서는, 가상 3D 비디오 드라이버(220) 및/또는 가상 오디오 드라이버(285)는 필요하지 않다.
가상 3D 비디오 드라이버(220)는, 수신된 게임 환경을 (비가상의) 3D 드라이버(230)로 전달하도록 추가적으로 구성된다. 선택에 따라서는, 3D 드라이버(230)로 게임 환경을 전달(delivery)하는 것은 가상 3D 비디오 드라이버(220)의 다양한 인스턴스에 의해 조율된다. 예를 들어, 3D 드라이버(230)가 게임 환경을, 한 번에 한 개만의 또는 최소 개수의 가상 3D 비디오 드라이버(220)로부터 수신하도록 전달 작용을 조율할 수 있다. 전형적인 실시예에서, 각각의 가상 3D 비디오 드라이버(220)는 별도의 프로세스로서 보이도록 그리고 3D 드라이버(230)에 입력되는 비디오 데이터의 별도의 소스로서 보이도록 구성된다. 그 본질상, 3D 드라이버(230)는 렌더링 후에 어느 비디오 데이터로부터 어느 비디오 프레임이 나오는지 추적하도록 구성된다.
3D 드라이버(230)에 의해 수신된 비디오 데이터는 원시 비디오 프레임으로의 렌더링을 위한 그래픽 처리 장치(GPU)(235)로 전달된다. 그래픽 처리 장치(235)는, 선택에 따라서는, 하나 이상의 비디오 스트림을 병행적으로 렌더링하는 데 사용된다. 예를 들어, 그래픽 처리 장치(235)는 병행적으로, 게임 로직 210A에서 수신된 비디오 데이터를 바탕으로 제1비디오 스트림을 생성하고, 게임 로직 210B에서 수신된 비디오 데이터를 기반으로 제2비디오 스트림을 생성하고, 게임 로직 210C에서 수신된 비디오 데이터를 기반으로 제3 비디오 스트림을 생성할 수 있다. 비디오 스트림의 병행 생성에는 이들 스트림을 동시에 생성하는 것이 포함되지만, 그러나, 비디오 스트림의 병행 생성에, 그래픽 처리 장치(235) 내에서 동시에 개별 프레임이 처리되는 것이 포함될 수도 있다(반드시 그러한 것은 아님). 예를 들어, 일부 실시예에서는 이와 달리, 3D 드라이버(230)가 게임 로직(210)들에 의해 생성된 비디오 데이터를 그래픽 처리 장치(235)로 전달(pass)한다. 게임 로직 210A에 의해 생성된 데이터가 하나의 비디오 프레임을 만들기 위해 사용되고, 뒤이어서, 게임 로직 210B에 의해 생성된 데이터가 하나의 비디오 프레임을 만들기 위해 사용된다. 이 경우에, 개별 프레임이 순차적으로 생성되는 것과 달리, 비디오 스트림은 병행해서 생성된다. 또는 이와 다르게, 하나 이상의 비디오 프레임을 그래픽 처리 장치(235)에서 동시에 생성할 수 있다. 이 경우에 그래픽 처리 장치(235)의 제1부분은 제1프레임을 생성하는 데 사용하고, 그래픽 처리 장치(235)의 제2부분은 제2프레임을 생성하는 데 사용된다. 여기서, 제1, 제2프레임은 서로 다른 게임 로직(210)에 의해 생성된 비디오 데이터로부터 생긴다. 일부 실시예에서는, 한 세트의 그래픽 계산 코어가 제1프레임을 생성하는 데 사용되고, 제2조의 그래픽 계산 코어가 동시에 제2프레임을 생성하는 데 사용된다. 그 결과로서 생성되는 비디오 프레임은 3D 드라이버(230)의 제어부로 되돌려 전달된다.
가상 3D 비디오 드라이버(220)는, 선택에 따라서는, 3D 드라이버(230)로부터의 렌더링된 원시(raw) 비디오 프레임의 이송(transfer)을 관리하도록 구성된다. 예를 들어, 가상 3D 드라이버(220)는 3D 드라이버(230)의 제어부로부터 공유 메모리(240)로의 비디오 프레임의 이송을 조율하는 데 사용할 수 있다. (렌더링이 끝나면, 비디오 프레임은 그래픽 처리 장치(235)의 메모리 또는 3D 드라이버(230)에 의해 관리되는 메모리에 있다. 어느 경우든, 이들은 3D 드라이버(230)의 제어를 받는다.) 가상 3D 비디오 드라이버(220)가 3D 드라이버(230)와의 비디오 데이터 및 프레임의 통신을 관리하기 때문에, 일부 실시예에서는, 이 가상 3D 비디오 드라이버(220)가, 특정 비디오 다이나믹 인코딩 파이프라인(DEP: Video Dynamic Encoding Pipeline)(245)에 연계된 공유 메모리(240)의 부분에 비디오 프레임을 위치시킬 수 있는 능력이 있다. 비디오 DEP(245)는 개별적으로, 비디오 DEP(245A), 비디오 DEP(245B), 비디오 DEP(245C) 등으로 표시해놓았다. 이들 실시예에서, 각 비디오 DEP(245)는 공유 메모리(240) 내의 특정 메모리 위치에 할당되며, 그리고, 이 위치에서 비디오 데이터를 검색하도록 구성된다.
다른 실시예에서, 가상 3D 드라이버(220)는 타이밍을 기반으로 하여, 공유 메모리(240)로의 비디오 데이터의 이송을 관리하도록 구성된다. 이 실시예에서, 각 가상 3D 드라이버(220)에서 관리되는 이송 동작들은 동기화되며, 가상 3D 드라이버(220)는 각 비디오 DEP(245)에게, 이들에게 해당되는 데이터가 언제 공유 메모리(240)에 있는지를 통보한다. 일단 이 데이터가 비디오 DEP(245) 중 통보받은 DEP에 의해서 검색되면, 다른 DEP에 해당되는 데이터는 가상 3D 비디오 드라이버(220)의 제어하에 3D 드라이버(230)로부터 공유 메모리(240)로 이송된다. 이 경우, 국지적으로 설치된 GPU 메모리로부터 공유 메모리(240)로 독출된 픽셀은 일정에 기반한 것(based on schedule)일 수 있다. 여기서 사용한 용어 "동기상태(in sync)" 및 "동기되다(synchronized)"란, 두 이벤트가 일정에 의해, 타이밍 신호에 의해, 시간 지연에 의해 시간적으로 관련됨을, 또는 어느 이벤트가 다른 이벤트가 조건에 충족될 때까지는(가령, 완료됨) 일어나지 않음을 의미한다. 예를 들어, 가상 3D 드라이버(220)들은 동기상태로 동작할 수 있는데, 즉, 게임 환경은, 그래픽 처리 장치(235)가 두 번째 가상 3D 드라이버(220)로부터의 게임 환경을 렌더링 완료한 후에, 첫 번째 가상 3D 드라이버(220)로부터 3D 드라이버(230)로 보내진다. 이러한 동기화의 타이밍은, 선택에 따라서는, 그래픽 처리 장치(235)를 최적으로 사용할 수 있도록 선택된다.
가상 3D 비디오 드라이버(220)의 관리의 결과로서, 복수의 비디오 스트림이, 어느 프레임이 어느 비디오 스트림에 속하는지에 대한 혼동없이, 공유 메모리(240)에 저장될 수 있다. 공유 메모리(240)는, 선택에 따라서는, 비디오 데이터 뿐만 아니라 오디오 데이터를 저장하도록 구성된다. 이 오디오 데이터는 비디오 데이터와 관련하여 논한 것과 유사한 방식으로 저장 및/또는 관리될 수 있다.
가상 오디오 드라이버(285)는, 선택에 따라서는, 게임 로직(210) 및 OS(215) 사이에 있는 가상 I/O 셸의 일부이다. 이들은 게임 로직(210)의 관점에서 볼 때에 오디오 드라이버로서 보이도록 구성되며, 이들이 게임 로직(210)으로부터 수신한 오디오 데이터를 오디오 DEP(270)들의 일원로 전달(pass)하도록 구성된다. 예를 들어, 일부 실시예에서, 게임 로직 210A에 연계된 가상 오디오 드라이버(285)는 오디오 데이터를 오디오 DEP 270A로 보내도록, 게임 로직 210B에 연계된 가상 오디오 드라이버(285)는 오디오 데이터를 오디오 DEP 270B로 보내도록 구성된다.
공유 메모리(240)에는, 랜덤 액세스 메모리(RAM), 또는 비디오 데이터의 효율적인 읽기 및 쓰기를 위해 구성된 유사한 메모리가 포함된다. 공유 메모리(240)는 서로 다른 복수의 비디오 DEP(245) 별로 비디오 데이터를 저장하도록 구성된다. 서로 다른 비디오 DEP(245)별 비디오 데이터는, 선택에 따라서는, 공유 메모리(240)에 동시에 저장된다. 공유 메모리(240)는 단일의 하드웨어 장치로 구성될 수도 있고, 또는 여러 장치를 포함할 수도 있다.
비디오 DEP(245)들은 각각, 그래픽 처리 장치(235)를 사용하여 렌더링된 비디오 데이터를 인코딩하도록 구성된, 동적으로 할당된 인코딩 파이프라인들이다. 비디오 DEP(245)들 각각은, 비디오 DEP(245)가 준비될 때에 지정된 비디오 포맷으로 인코딩하도록 구성된다. 이 포맷 규격은 일반적으로, 클라이언트(110) 중 하나의 요구 및/또는 비디오 서버 시스템(120)과 클라이언트(110) 사이의 통신 경로의 성능에 기반한다. 비디오 DEP(245)들은, 선택에 따라서는, 클라이언트(110) 중 하나로부터의 요청에 응답하여 동적으로 준비된다. 예를 들어, 클라이언트(110B)가 비디오 서버 시스템(120)에 연결되어 비디오 스트림 요청을 보낼 때, 비디오 DEP(245)는, 클라이언트(110B)의 요구를 충족하도록 특별히 선택된 구성요소(가령, 인코더)를 포함하도록 준비될 수 있다. 본 명세서의 다른 곳에서 논한 바, 비디오 DEP(245)들의 일원은, 선택에 따라서는, 하나 이상의 인코딩 기법을 사용하도록 구성된다.
비디오 DEP(245)들은 각각, 공유 메모리(240)로부터 비디오 데이터를 잡고(grab) 비디오 DEP(245)의 메모리로 이 비디오 데이터를 이송하도록 구성되는 그래버(grabber)(247)를 포함한다. 그래버(247)는, 선택에 따라서는, 가상 3D 비디오 드라이버(220)들의 일원에 의해 제어된다. 예를 들어, 다양한 실시예에서, 그래버(247)는, 공유 메모리(240) 내의 특정 위치로부터 비디오 데이터를 잡기 위하여 및/또는 비디오 DEP(245)들 중 다른 것으로의 비디오 데이터의 이송과 동기된 특정 시간에 비디오 데이터를 잡기 위하여 가상 3D 드라이버(220)의 일원에 의해 제어된다.
비디오 DEP(245)는 각각, 선택에 따라서는, 그래픽 처리 장치(235)에 의해 생성된 비디오 데이터(예를 들어, 프레임) 상에 하나 이상의 비디오 영상을 중첩하도록 구성된 중첩 로직(290)을 포함한다. 중첩은, 제1영상을 제2영상 위에 올려놓거나, 한 소리를 다른 소리에 추가하는 것이다. 중첩은 다양한 투명도로 적용할 수 있다. 예를 들어, 제1영상을 불투명한 것으로 중첩하여 그 아래의 제2영상의 덮힌 부분이 완전히 가려지도록 할 수 있다. 또는, 제1영상을 부분적으로 투명하게 하여 그 아래의 제2영상이 어느 정도는 보일 수 있게 할 수 있다. 중첩에 의해 아래에 있는 영상의 전부 또는 일부(들)를 가릴 수 있다. 예를 들어, 넓은 면적 내에서 특정 픽셀을 가리도록 중첩 영상을 구성할 수 있다. 이 경우 중첩 영상은 클라이언트(110)들 중 하나의 디스플레이장치의 픽셀로 매핑되거나, 또는, 그래픽 처리 장치(235)에 의해 생성된 영상 내의 픽셀로 매핑된다. 매핑은 다양한 방법으로 수행할 수 있다. 예를 들어, 중첩 영상의 왼쪽 하단 픽셀을, 그래픽 처리 장치(235)에 의해 생성된 비디오 프레임의 특정 픽셀에 할당할 수 있다. 일부 실시예에서, 중첩 로직(290)은, 중첩을 적용하기 전에 중첩의 크기를 재조정하도록 구성된다. 중첩 로직(290)은, 선택에 따라서는, 비디오 DEP(245A) 내의 다른 위치에 위치한다. 예를 들어, 전치 프로세서(전치 프로세서)(250)의 뒤에 위치한다.
중첩 영상에는 다양한 유형의 픽셀/비디오 영상이 포함될 수 있다. 예를 들어, 중첩 영상에는 인터넷을 통해 받은 게임자의 실시간 영상 또는 정지 영상, 스포츠(또는 다른) 이벤트의 실시간 영상 또는 정지 영상, 입력 제어항목(예를 들어, "a", "b", "TAB", "리턴", "스페이스바", "기능 키", "화살표", 및/또는 그 밖의 키 또는 입력 수단)의 이미지, 지도, 텍스트, 및/또는 그 밖의 것이 포함될 수 있다. 중첩 영상의 크기와 모양은 광범위하게 다양할 수 있다. 어떤 경우에는 중첩은 3D 게임 환경의 렌더링 결과이다. 영상 위에 하나 이상을 중첩할 수 있다. 이 중첩 영상을 중첩시키거나 분리할 수 있다. 중첩 영상은, 선택에 따라서는, 인코딩된 포맷으로 수신되어, 중첩 적용 전에 디코딩된다.
중첩 영상의 존재와 내용은, 선택에 따라서는, 수신된 게임 커맨드, 한 명 이상의 게임자의 정체성, 계정의 유형, 실연 중인 게임의 정체, 녹화 또는 실시간 스포츠 이벤트나 현실 세계 게임에서 캡쳐된 비디오, 게임 규칙, 및/또는 게임 로직(210)에 의해 생성된 비디오의 컨텐트에 응답한다. 예를 들어, 중첩 영상에는 게임 커맨드의 수신에 의해 생성되는 메뉴가 포함될 수 있다. 중첩 영상은 게임 로직(210)에 의해 생성된 비디오에 포함된 픽셀 패턴(예를 들어, 영상)에 응답하는 컨텐트를 포함할 수 있다. 중첩 로직(290)은, 선택에 따라서는, 하나의 비디오 프레임에 다중으로 중첩을 적용하도록 구성되며, 이때 각 중첩은 서로 다른 소스에서 생성될 수 있다.
중첩 로직(290)은, 선택에 따라서는, 전치 프로세서(250)를 이용하여 비디오 프레임을 전처리한 후, 그리고/또는 인코더(255)들 중 하나를 이용하여 인코딩한 후에 중첩을 적용하도록 구성된다. 일부 실시예에서 중첩 영상에는, 인터넷을 통해 비디오 소스(130)의 입력(예를 들어, I/O 장치(145))에서 받은 영상이 포함되며, 중첩 로직(290)은 영상으로부터 중첩 영상을 생성하도록 구성된 비디오 처리 로직을 포함한다. 상기 받은 영상은, 선택에 따라서는, 카메라 등의 영상 소스 또는 파일 저장소로부터 받는다.
또한 비디오 DEP(245)들은 각각, 선택에 따라서는, 전치 프로세서(PRE)(250)를 포함한다. 전치 프로세서(250)는 RGB에서 YUV로의 색공간 변환 및/또는 비디오 프레임의 해상도를 증가 또는 감소시키는 스케일(scaling) 기능을 수행하도록 구성된다. 전치 프로세서(250)는, 그래픽 처리 장치(235)의 출력이 YUV 색 공간 또는 그 밖의 원하는 색 공간에 있는 실시예에서는 선택사항이다. 다양한 크기의 비디오 프레임을 갖는 복수의 비디오 스트림을 생성하도록 구성된 비디오 DEP(245)에는 다중 전치 프로세서(250)가 포함될 수 있다.
비디오 DEP(245)들 각각에는 적어도 하나의 인코더(ENC)(255)가 포함된다. 인코더(255)를 개별적으로 인코더(255A), 인코더(255B) 등으로 표시해 놓았다. 각 인코더(225)는, 특정 코덱에 따라, 아울러 선택에 따라서는, 특정 색 깊이(색심도, color depth) 및/또는 프레임 크기에 따라 비디오 데이터를 인코딩하도록 구성된다. 예를 들어, 인코더(225)는 비디오 데이터를 어도비플래시(Adobe Flash)® 표준, .flv, .wav, .avi, .mpg, H.264, H.263, On2, VP6, VC-1, WMA, 및/또는 여기서 설명한 그 밖의 코덱으로 인코딩하도록 구성될 수 있다.
비디오 DEP(245)들의 일원은 한 개, 두 개, 또는 그 이상의 인코더(255)를 포함할 수 있다. 이들 인코더는 다양한 코덱으로 및/또는 서로 다른 포맷의 동일한 코덱으로 인코딩하도록 구성될 수 있다. 예를 들어, 인코더 255가 제2의 프레임 크기와 색심도의 Flash 표준으로 인코딩하도록 구성되는 반면에, 인코더 255A는 제1의 프레임 크기와 색심도의 동일한 Flash 표준에 따라 인코딩하도록 구성될 수 있다. 각 비디오 DEP(245) 내에 있는 인코더(255)의 정체성은 일반적으로, 비디오 DEP(245)가 준비될 때에 판단된다. 예를 들어, 하나의 커맨드나 커맨드 집합을 사용하여, 비디오 DEP(245A)를 생성(준비)하고 이 생성된 비디오 DEP(245A)에 무슨 구성요소를 포함시켜야 할지 지정할 수 있다. 비디오 DEP(245A)의 생성은, 다른 곳에서 더 설명한다. 두 개 이상의 인코더(255)를 포함하는 비디오 DEP(245)들의 일원은, 전체 구성요소가 아닌 일부 구성요소를 공통으로 갖는 두 개 이상의 별도의 비디오 DEP(245)들로 달리 볼 수 있다. 예를 들어, 비디오 DEP 245A와 비디오 DEP 245B는 동일한 전치 프로세서(250)와 서로 다른 인코더(255)를 가질 수 있다.
일 실시예에서, 인코더 255A는 H.264용 코덱을 사용하도록 구성되고, 반면에 인코더 255B는 H.263용 코덱을 사용하도록 구성된다. 두 개 이상의 서로 다른 가용성있는 인코더를 가짐으로써, 비디오 DEP 245A는 비디오 스트림의 전달시에 인코딩을 변경할 수 있다. 인코딩의 변경은 어느 한 인코딩 유형에서 다른 인코딩 유형으로 이루어질 수 있거나, 또는 단순히 특정 코드 유형의 특징을 변경하는 정도일 수 있다. 예를 들어, 특징은, 색심도, 초당 프레임 수, 인코딩 옵션, 픽셀 수, 및/또는 그 밖의측면에서 변경될 수 있다. 일부 실시예에서, 비디오 DEP 245A는, 선택에 따라서는, 클라이언트(110B)의 특징의 변화 또는 클라이언트(110B)와 비디오 소스(130) 간의 통신 채널의 변화에 응답하여 인코더 255A 및 255B 사이에서 스위칭도록 구성된다.
실무적으로, 현재 사용되고 있는 코덱과 다른 코덱이 필요한 경우에는, 새로운 비디오 DEP(245)가 현재의 비디오 DEP(245)와 병행해서 짧은 시간 동안에 생성 및 실행된다. 새로운 비디오 DEP(245)는, 선택에 따라서는, 원래 비디오 DEP(245)의 한 지류(branch)이다. 예를 들어, 원래 비디오 DEP(245)의 일부 구성요소를 새로운 비디오 DEP(245)에서도 사용할 수 있다. 이들 두 비디오 DEP(245)는 트리 구조로 로직 배열된 구성요소를 가질 수 있다.
일부 실시예에서, 비디오 DEP(245)는, 동시에 두 개 이상의 서로 다른 비디오 스트림을 생성하기 위해 두 개 이상의 서로 다른 인코더를 사용하도록 구성된다. 이들 비디오 스트림은 그래픽 처리 장치(255)에 의해 렌더링된 동일한 게임 환경을 기반으로 하며, 따라서, 본질적으로 동일한 자료를 포함하며(중첩 영상의 제외 가능성 있음) 다른 장소로 전송될 수 있다. 예를 들어, 비디오 스트림 중 하나는 클라이언트 110A로 전송될 수 있고, 다른 것은 클라이언트 110B로 전송될 수 있다. 또는 이와 달리, 비디오 스트림 중 하나는 클라이언트 110B로 전송되고, 다른 것은 제3자가 비디오를 감상할 수 있는 웹사이트로 전송될 수 있다. 이 웹사이트는, 선택에 따라서는, 소셜 네트워킹 사이트 또는 게임자 사이트의 일부이다. 두 개의 서로 다른 비디오 스트림은, 프레임 속도, 인코딩 유형, 프레임 크기, 색심도 등에서 서로 다를 수 있다. 예를 들어, 소셜 네트워킹 웹사이트로 전달되는 비디오 스트림은, 클라이언트(110B)를 사용하여 게임을 하는 게임자에게 전달되는 비디오 스트림보다 훨씬 품질이 낮을 수 있다. 제2 비디오 스트림은 게임을 하고 있는 게임자 또는 단순히 게임을 보고 있는 관중들에게 전달될 수 있다. 비디오 스트림은, 선택에 따라서는, 하나 이상의 장소로 전달된다.
비디오 DEP(245A)는, 선택에 따라서는, 하나 이상의 후치 프로세서(POST)(260)를 포함한다. 후치 프로세서(260)를 개별적 예시로서 260A와 260B로 표시하였다. 후치 프로세서(260)는 인코딩된 비디오 프레임을, 공용 또는 사설 네트워크 프로토콜에 맞게 네트워크를 통해 통신하기에 적합한 포맷으로 컨테이너에 패키징하도록 구성된다. 예를 들어, 어도비 RTMP와 같은 일부 프로토콜은 후처리가 필요하지만, H.264 Annex B와 같은 다른 비디오 표준은 후처리를 필요로 하지 않는다. 각 후치 프로세서(260)는 인코더(255)의 특정 일원과 연계될 수 있으며, 또는 인코딩된 비디오 프레임을 인코더(255)의 일원으로부터 수신하도록 여러 후치 프로세서(260)를 구성할 수 있다.
후치 프로세서(260)의 출력은, 하나 이상의 클라이언트(110)로 전달하기 위해 I/O 장치(145)로 전해진다. 여기서 설명한 비디오 DEP(245)의 구성요소에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 예를 들어, 각 비디오 DEP(245)는 메모리에 저장되어 전자식 프로세서에 의해 실행되는 소프트웨어 세트를 제공할 수 있다.
오디오 DEP(270)는 게임 로직(210)들에 의해 생성된 오디오 데이터를 수신하여 이 오디오 데이터를 오디오 패킷으로 인코딩하도록 구성된다. 그 다음에, 인코딩된 데이터 패킷은 I/O 장치(145) 및 네트워크(115)를 사용하여 클라이언트(110)로 전송된다. 오디오 DEP(270)는 또한, 선택에 따라서는, 게임 로직(210)으로부터 수신된 오디오 데이터에 오디오를 중첩하도록 구성된다. 다른 오디오 DEP(270)들에 대해서 개별적으로 270A, 270B, 270C 등으로 표시하였다
비디오 DEP(245)들과 마찬가지로, 오디오 DEP(270)들은 일반적으로, 필요에 따라 분배되어 게임 로직(210)의 특정 일원으로부터의 오디오 데이터를 처리 하도록 할당된다. 이 오디오 데이터는 비디오 게임 내의 이벤트에 기반할 수 있다. 예를 들어, 비디오 게임의 한 명 이상의 게임자자가 취한 행위에 의해서, 게임 규칙에 부합되는 오디오 데이터가 생성될 수 있다(예를 들어, 물이 떨어지면 물튀는 소리가 발생됨). 오디오 DEP(270A)의 분배는 일반적으로, 동일한 요소에 응답하며 비디오 DEP(245A)의 분배와 동일한 방식으로 수행된다. 예를 들어, 오디오 DEP(270A)에 포함된 구성요소들은 클라이언트(110) 중 하나의 요구에 응답할 수 있다. 오디오 DEP(270)는 오디오 데이터를 공유 메모리(240)로부터 및/또는 가상 오디오 드라이버(285) 중 하나로부터 직접 수신할 수 있다.
오디오 DEP(270A)는, 선택에 따라서는, 가상 오디오 드라이버(285) 중 하나로부터 오디오 데이터를 수신하고, 비디오 서버 시스템(120) 외부에 있는 하나 이상의 소스로부터 오디오 데이터를 수신하고, 그리고/또는 공유 메모리(240)로부터 오디오 데이터를 얻도록 구성된 그래버(275)를 포함한다. 예를 들어, 일부 실시예에서, 그래버(275)는 인터넷을 통해 비디오 소스(130)의 외부 소스(예컨대, 하나 이상의 클라이언트(110))로부터 받은 데이터를 검색하도록 구성된다. 이들 임의의 소스로부터 받은 오디오는 음성, 음악, 음향 효과, 사운드 트랙, 경보음, 및/또는 그 밖의 것을 포함할 수 있다. 예를 들어, 클라이언트(110A)를 사용하는 게임자의 목소리는 클라이언트(110A)에서 수신할 수 있고, 이 게임자는 클라이언트(110) 중 다른 것을 사용하는 게임자에게 음악을 보내서 듣게 할 수 있다. 오디오 데이터는, 한 명 이상의 게임자로부터 오디오 스트림으로서 병행적으로 수신할 수 있다.
선택에 따라서는, 오디오 DEP(270A)는 중첩 로직(295)을 추가로 포함한다. 중첩 로직(295)은 게임 로직(210)의 일원에 의해 생성된 오디오 데이터 위에 하나 이상의 오디오를 중첩하도록 구성된다. 오디오 중첩은 오디오, 음악, 음향 효과, 사운드 트랙, 경보음, 및/또는 그 밖의 것을 포함할 수 있다. 예를 들어, 일부 실시예에서, 오디오 중첩에는, 인터넷을 통해 하나 이상의 게임자로부터 데이터 패킷으로서 수신한 음성 데이터가 포함된다. 이러한 데이터 패킷은, 선택에 따라서는, 오디오 중첩에 포함되기 전에 중첩 로직(295)에 의해 디코딩된다. 게임 로직(210)의 일원에 의해 생성된 오디오 데이터 위에 중첩을 하는 것은, 선택에 따라서는, 생성된 오디오 데이터에 이 데이터를 부가하는 것이 포함된다. 오디오 중첩의 전체 또는 일부는 오디오 소스(130)의 외부에 있는 소스에서부터 받을 수 있다. 예를 들어, 일부 실시예에서 중첩에는, 인터넷을 통해 I/O 장치(145)에서 수신된 오디오 데이터를 포함하고, 중첩 로직(290)은 이 오디오 데이터로부터 오디오 중첩을 생성하도록 구성된 오디오 처리 로직을 포함한다. 오디오 중첩에 대해서 참고하자면, 일부 실시예에서, 어느 데이터가 중첩 오디오인지, 그리고 중첩이 적용되고 있는 데이터가 어느 것인지의 정체성은, 오디오 데이터가 비디오 데이터에서는 가능할 수 있는 중첩 순서의 개념을 갖고 있지 않기 때문에 임의적일 것이다.
오디오 DEP(270A)는 오디오 인코더(280A)를 추가로 포함한다. 오디오 인코더(280A)는 게임 로직(210)의 일원에 의해 생성된 오디오 데이터와 오디오 코덱에 따라 오디오 패킷 내로 삽입된 오디오 중첩을 인코딩하도록 구성된다. 인코딩은 일반적으로, 오디오 중첩(들)이 오디오 데이터에 적용된 후에 수행된다.
그래버(275), 오디오 인코더(280A), 중첩 로직(295)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 오디오 DEP 270B 및 오디오 DEP 270C는 오디오 DEP 270A와는 다른 실시예이다.
비디오 소스(130)의 동작은 일반적으로, 컨트롤러(265)에 의해 관리된다. 컨트롤러(265)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 예를 들어 컨트롤러(265)는 메모리에 저장되어 마이크로 프로세서에 의해 실행되는 소프트웨어를 포함할 수 있다.
일부 실시예에서, 컨트롤러(265)는 게임을 실연하라는 요청에 대한 응답으로 게임 로직(210A), 가상 오디오 드라이버(285), 및 가상 3D 비디오 드라이버(220)의 인스턴스를 준비하도록 구성된다. 예를 들어, 특정 비디오 게임에 대한 요청이 클라이언트(110B)로부터 수신되면, 컨트롤러(265)는 저장소(155)에서 게임 로직(210A), 가상 오디오 드라이버(285), 및 가상 3D 비디오 드라이버(220)를 검색하여 이들을 작동 메모리에 배치한다. 게임 로직(210A)은 클라이언트(110B) 및 게임 서버(125) 모두와 통신하도록 배치될 수 있다. 그 다음에 게임 로직(210A)은, 비디오 게임의 실연을 위해서 프로세서(150)에 의해 실행된다.
일부 실시예에서, 컨트롤러(265)는 게임 실연 요청에 대한 응답으로 비디오 DEP(245) 및/또는 가상 오디오 드라이버(285)의 인스턴스를 분배하도록 구성된다. 예를 들어, 컨트롤러(265)는 먼저 비디오 DEP(245A) 및 오디오 DEP(270A)에 대한 요구사항을 결정하거나 수신하고, 그 다음에 이들 요구사항을 충족하는 컴퓨팅 명령을 준비하도록 구성할 수 있다. 그런 후, 비디오 DEP(245A) 및 오디오 DEP(270)는 게임 로직(210) 중 하나 및 가상 3D 드라이버(220) 중 하나와 연계된다. 준비된 비디오 DEP(245A)는, 선택에 따라서는, 공유 메모리(240) 내의 특정 영역에서 원시 비디오 데이터를 검색하도록 구성된다.
일부 실시예에서 비디오 DEP(245A) 및/또는 오디오 DEP(270A)에 대한 요구사항은 클라이언트(110B)를 사용하는 게임자에게 질의(query)함으로써 결정된다. 예를 들어, 컨트롤러(265)는 문자 메시지가 클라이언트(110B)에 표시되도록 구성될 수 있는데, 이 메시지는 클라이언트(110B)를 사용하는 게임자가, 게임자가 원하는 비디오 스트림의 특징들을 입력하도록 요청하는 메시지이다. 이들 특징에는 연결 형식, 프레임 크기, 인코딩 기법, 프레임 속도, 색심도, 및/또는 그 밖의 것이 포함될 수 있다. 입력된 특징들은 컨트롤러(265)로 다시 보내어지는데, 그 다음에 컨트롤러는 이들 특징을 이용하여, 이들이 준비될 때, 비디오 DEP(245A) 및/또는 오디오 DEP(270A)에 포함시킬 구성요소를 선택한다. 예를 들어, 게임자가 특정 인코딩 기법을 요청하면, 이 요청받은 인코딩 기법을 사용하도록 구성된 인코더(255)가 선택되고 비디오 DEP(245A)에 포함되게 된다.
일부 실시예에서 비디오 DEP(245A) 및/또는 오디오 DEP(270A)에 대한 요구사항은 자동으로 정해진다. 예를 들어, 클라이언트 자격부여자에 의해 수집된 정보를 사용하여 비디오 DEP(245A)에 대한 요구사항을 결정할 수 있다. 이 예에서, 만약 클라이언트(110B)가 Microsoft Silverlight® 디코더 및 Adobe Flash® 디코더만을 포함하고 있다면, 비디오 DEP(245A)에서는 해당 인코더 구성 또는 그 변종들 중의 적어도 하나가 필요하다. 비디오 DEP(245A)를 사용하여 생성되어야 할 비디오 스트림의 특징(가령, 프레임 크기, 색심도, 프레임 속도)도 또한, 이러한 방식으로 컨트롤러(265)에 의해 결정될 수 있다.
비디오 DEP(245A) 및/또는 오디오 DEP(270)에 대한 요구사항의 결정은 게임자가 제공한 특징과 자동으로 결정된 특징 모두를 사용하는 것을 포함할 수 있다. 일부 실시예에서, 가능한 특징은 게임자의 계정 유형, 지불, 및/또는 가입에 의해 제한된다. 예를 들어, 게임자는 더 높은 품질의 비디오 스트림을 받기 위해 대가를 지불할 수 있다.
컨트롤러(265)는 또한, 공유 메모리(240)의 공유를 관리할 수 있다. 예를 들어, 컨트롤러(265)는, 공유 메모리(240) 내에서 특정 메모리 위치를 사용하기 위하여 비디오 DEP(245A) 및/또는 오디오 DEP(270A)를 구성할 수 있다. 그리고/또는 컨트롤러(265)는 특정 타이밍 신호에 대한 응답으로서 공유 메모리(240)에 액세스하기 위하여 비디오 DEP(245A) 및/또는 오디오 DEP(270A)를 구성하도록 구성될 수 있다. 상기 타이밍 신호는 서로 다른 비디오 DEP(245)들에 의한 공유 메모리(240)로의 액세스의 동기에 시간이 맞춰진다.
도 3은 본 발명의 다양한 실시예에 따른 게임 서버(125)의 보다 상세한 구성을 도시한다. 게임 서버(125)는 복수의 클라이언트로부터 받은 게임 커맨드에 따라 비디오 게임의 전체 상황을 유지하도록 구성된다. 상기 클라이언트는 클라이언트(110), 비디오 소스(130), 및/또는 다른 형식의 클라이언트일 수 있다. 게임 서버(125)는 하나 이상의 컴퓨팅 장치를 포함할 수 있다. 예를 들어, 일부 실시예에서, 게임 서버(125)는 게임 내의 다양한 영역, 인스턴스, 또는 지하 감옥을 지원하기 위한 다양한 전용 하드웨어 장치를 포함한다.
게임 서버(125)는 네트워크(115)을 통해 지리적으로 떨어져 있는 복수의 클라이언트로부터 게임 커맨드를 수신하도록 구성된 입력/출력(I/O)(310)을 포함한다. 입력/출력(310)은 일반적으로, 이더넷 포트, 라우터, 게이트웨이, 및/또는 그 밖의 네트워크 연결수단을 포함한다. 이들 네트워크 연결수단은, 선택에 따라서는, TCP, UDP, 및/또는 그 밖의 표준을 사용하여 통신하도록 구성된다. 입력/출력(310)은 또한, 복수의 클라이언트로 게임상황 정보를 전송하도록 구성된다. 이 게임상황 정보는 일반적으로, 게임 서버(125)에 의해 유지관리되는 전체 게임상황의 부분상황을 포함한다. 각 클라이언트에게 제공되는 부분상황은 보통, 아바타의 위치와, 클라이언트에 연계된 특정 게임 세션에 의존한다. 예를 들어, 전체 게임상황의 부분상황은 일반적으로, 아바타 주변 지역을 대표하는 게임상황을 포함한다. 부분상황은 아바타 주위의 게임 환경을 정의하기에 충분하도록 구성된다. 이로써, 아바타의 시점을 기준으로 하여 스트리밍 비디오의 렌더링이 가능해진다. 전체 게임상황은 전체 게임 또는 게임의 중요한 부분을 대표하는 것이며, 게임 규칙과, 지리적으로 떨어져 있는 원격지 클라이언트로부터 받은 게임 커맨드에 기반을 두고 있다.
게임 서버(125)는 수신된 게임 커맨드 및 한 세트의 게임 규칙에 기반한 비디오 게임의 전체 상황을 유지하도록 구성된 게임 엔진(320)를 추가로 포함한다. 게임 엔진(320)은 또한, 개별 게임 세션을 추적하고 각 게임 세션별로 전체 게임상황의 부분상황을 선정하고 생성하도록 구성된다. 이들 부분상황은 복수 구성된 클라이언트의 각 클라이언트로 제공된다. 일반적으로, 전체 게임상황에서 생성된 각 부분상황은 복수 구성된 클라이언트의 특정 클라이언트에 각각 할당된다. 이 할당은 게임 엔진(320)과 특정 클라이언트 사이에 개설된 게임 세션에 기반한다.
선택에 따라서는, 게임 서버(125)는, 서버측 모드에서 클라이언트측 모드으로(그 반대의 옵션도 가능) 게임 실연을 전환하도록 구성된 전환 로직(180B)을 추가로 포함한다. 특히, 전환 로직(180B)은 단일 게임 세션 내에서, 게임 서버(125)와의 통신을, 제2클라이언트로부터 제1클라이언트로 전환하도록 구성된다. 일반적으로, 제1클라이언트는 비디오 소스(130)의 인스턴스가 될 것이며 제2클라이언트는 클라이언트(110)들 중 하나가 될 것이다. (이러한 역할은, 클라이언트측 모드에서 서버측 모드으로 역전환 할 경우에는 반대로 된다.) 이 전환에는, 복수의 클라이언트 중의 제1 클라이언트로부터 제2 클라이언트로 전체 상황의 부분상황 중 하나를 재할당하는 것이 포함된다. 따라서, 부분상황은 복수의 클라이언트 중의 제1 클라이언트 대신에 또는 이에 추가하여 제2 클라이언트로 전송될 것이다. 또한, 전환 로직(180B)은 수신한 통신의 게임 세션에의 할당을 변경하도록 구성됨으로써, 복수의 클라이언트 중의 제1 클라이언트로부터의 통신이 할당된 것과 동일한 게임 세션에 복수의 클라이언트 중의 제2 클라이언트로부터의 통신이 할당되도록 한다. 일부 실시예에서, 하나의 게임 세션 및/또는 게임 부분상황을 동시에 하나 이상의 클라이언트에 할당할 수 있다. 이 경우, 두 클라이언트로부터 받은 게임 커맨드는 동일한 게임 세션에 할당되고, 전체 게임상황의 동일한 부분상황이 모든 클라이언트로 전송된다. 모든 클라이언트로부터 받은 게임 커맨드는 마치 이들을 동일한 클라이언트로부터 받은 것처럼 처리된다.
본 명세서의 다른 곳에서 설명하고 있는 바와 같이, 전환 기능에는 비디오 서버 시스템(120)으로부터 게임 세션 재할당 요청을 수신하는 것이 포함될 수 있다. 이 요청에는 일반적으로, 재할당되어야 할 클라이언트(110) 중 하나의 IP 주소 또는 그 밖의 다른 주소가 포함된다. 일부 실시예에서, 전환 로직(180B)은 특정의 사전에 정해 놓은 클라이언트만으로부터의 재할당 요청에 대해서만 수락하도록 구성된다. 예를 들어, 전환 로직(180B)은 비디오 서버 시스템(120)의 인스턴스로부터의 재할당 요청은 수락하지만 클라이언트(110)의 인스턴스로부터의 재할당 요청은 수락하지 않도록 구성될 수 있다. 선택에 따라서는, 재할당 요청은 암호화되고, 그리고/또는 인증 코드를 포함할 수 있다.
게임 서버(125)는 전체 상황 및 그 부분상황을 저장하도록 구성된 상황 저장소(330)를 포함한다. 상황 저장소(330)는 하드 드라이브, 정적(static) 메모리, 랜덤 액세스 메모리, 및/또는 그 밖의 것을 포함하는 하나 이상의 정적 저장장치를 포함한다. 전체 상황(게임상황)은, 선택에 따라서는, 게임 내의 다양한 영역을 대표하는 각 부분으로 다수 분할된다.
도 4는 본 발명의 다양한 실시예에 따른 사용자 인터페이스(400)를 도시한다. 일부 실시예에서, 사용자 인터페이스(400)는 비디오 소스(130)에 의해 생성된다. 사용자 인터페이스(400)는 브라우저 또는 그 밖의 창에 표시되는 하나의 비디오로 구성할 수 있다. 대안적으로, 사용자 인터페이스(400)는 하나 이상의 비디오 및/또는 비디오와 정지 영상의 조합을 포함할 수 있다. 예를 들어, 스트리밍 게임 비디오는 게임 표시 영역(410)에 표시될 수 있고, 제어항목은 메뉴 영역(420)에 표시된다. 제어항목 및 스트리밍 게임 비디오는, 선택에 따라서는, 서로 다른 위치에서 생성된다. 예를 들어, 스트리밍 비디오는 비디오 소스(130)에 의해 생성되는 반면, 제어항목은 클라이언트(110B)에 생성될 수 있다. 일부 실시예에서, 게임 표시 영역(410) 및 메뉴 영역(420)은 브라우저 창 내에 있는 다른 프레임이다.
메뉴 영역(420)은 다양한 제어항목을 포함할 수 있는데, 그 중 몇 개만 설명의 목적을 위해 도시하였다. 도 4에 표시한 제어항목은, 선택에 따라서는, 스트리밍 게임 비디오의 일부분에 중첩된다. 제어항목을 클릭하거나 커서를 올려놓는 등의 선택을 하면, 커맨드가 전환 로직(180C), 전환 로직(180B), 전환 로직(180A), 다운로드 관리자(165), 계정 관리자(185), 및/또는 그 밖의 구성요소로 전송된다.
도시된 예에서, 메뉴 영역(420)은, 비디오 게임을 구입하고자 하는 게임자를 위해 구성된 구매 버튼(430)을 포함한다. 일부 실시예에서, 구매는 게임 실연을 방해하지 않고 행해질 수 있다. 예를 들어, 구매 행위(이름 및 신용 카드 정보, 및/또는 기타 항목을 입력)가 메뉴 영역(420)에서 이루어지는 동안에도 표시 영역(410)에서는 스트리밍 게임 비디오가 계속해서 게임자에게 표시될 수 있다. 게임을 구입하면 서버측 모드와 클라이언트측 모드 사이의 전환이 개시될 수 있으며, 다운로드된 실행가능 게임 컨텐트가 활성화 될 수 있으며, 실행가능 게임 컨텐트의 다운로드가 시작될 수 있고, 그 밖의 기능이 수행될 수 있다. 일반적으로, 게임을 구입시에 게임자는 계정 정보를 제공해야 한다.
도시된 예에서, 메뉴 영역(420)은 또한 계정 버튼(440)을 포함한다. 계정 버튼(440)은 계정 관리자(185) 기능에 액세스하는 데 사용할 수 있다. 다양한 실시예에서, 계정 버튼(440)은 계정명 설정, 아바타 생성, 서버 선택, 결제, 암호 설정, 게임간 전환, 및/또는 그 밖의 기능을 하는 데 사용된다. 계정 버튼(440)(또는 구매 버튼(430))을 사용하여 게임자가 제공한 정보는 비디오 서버 시스템(120),게임 서버(125), 또는 게임 시스템(100) 내의 다른 구성요소에 저장될 수 있다.
전형적인 실시예에서, 계정 버튼(440) 또는 구매 버튼(430)을 선택하면, 그 결과로, 비디오 서버 시스템(120)에 커맨드가 전송되어 메뉴 영역(420)의 내용을 변경시켜서 게임자에게 추가 옵션 및/또는 데이터 입력 필드를 제공하게 될 것이다.
도시한 예에서, 메뉴 영역(420)은 또한, 자랑하기 버튼(450)을 포함한다. 자랑하기 버튼(450)은 게임자가 소셜 네트워킹 사이트 등의 외부 웹사이트에 게임 비디오를 자동으로 게시하도록 구성된다. 비디오가 게시되는 위치와 게시 비디오의 길이는, 계정 버튼(440)을 사용하여 선택적으로 설정된 파라미터에 따른다. 게시 비디오는 생방송이거나 녹화물 수 있다. 예를 들어, 자랑하기 버튼은, 마지막 60초의 실연, 두목을 죽이기 전 2분간의 실연, 또는 게임의 실시간 비디오를 게시하도록 구성될 수 있다. 게시하기 위해 선택되는 비디오는, 선택에 따라서는, 게임 실연을 모니터하도록 구성된 부가기능(가령, 두목과의 마주침 감지, 성적, 레벨 변경 등)의 결과에 의존한다.
도시된 예에서, 메뉴 영역(420)은 또한, 새 게임 버튼(460)을 포함한다. 새 게임 버튼(460)은 실연가능한 다른 비디오 게임의 목록을 게임 시스템(100)을 통해 게임자에게 제시하도록 구성된다. 일반적으로, 게임자가 새 게임을 선택하면, 현재 게임의 비디오의 전송이 종료되고 새로운 게임의 비디오로 대체된다. 선택에 따라서는, 현재 게임과 새 게임의 비디오는 동일한 브라우저 창에 순차적으로 표시된다. 계정 관리자(185)는, 선택에 따라서는, 게임자 계정 정보를 한 비디오 게임으로부터 다른 비디오 게임으로 복사하도록 구성된다. 새 게임 버튼(460)은, 선택에 따라서는, 게임자가 한 비디오 게임에서 다른 비디오 게임으로 거의 지체없이 이동할 수 있도록 구성된다. 선택에 따라서는, 새 게임이 시작되면, 게임 세션이 게임 로직(210)의 다른 인스턴스 또는 비디오 소스(130)의 다른 인스턴스에 할당된다. 이 할당 기능에는 클라이언트의 IP 주소를 할당자로부터 피할당자로 전송하는 것이 포함될 수 있다.
이전에 명시한 바와 같이, 다운로드 관리자(165)는 실행가능 게임 컨텐트를 클라이언트(110B)로 다운로드하는 것에 관련된 다양한 기능을 수행하도록 구성된다. 도 5는 본 발명의 다양한 실시예에 따른 예시적인 다운로드 관리자(165)를 도시한다. 다운로드 관리자(165)는 통계 엔진(500), 확률 트리 데이터베이스(510), 상황 모니터(520), 대역폭 모니터(530), 다운로더(540), 및 우선순위 목록(550) 중의 전부 또는 일부를 포함할 수 있다. 구체적으로, 다운로더(540)는 모니터(520, 530)로부터 오는 입력을 받고, 실행가능 게임 컨텐트의 다운로드 양태(예컨대, 실행가능 게임 컨텐트의 다운로드 순서와, 다운로드 속도)를 제어하기 위하여 확률 트리 데이터베이스(510)에 액세스한다.
도 6은 본 발명의 다양한 실시예에 따른, 결정 트리(600)를 도시하는 것으로서, 예컨대 도 5를 참조하여 본 명세서에서 설명한 다운로드 관리자(165)의 기능의 일부에 대한 이해를 돕기 위한 도면이다. 결정 트리(600)는, 게임상황이, 게임자의 입력에 따라, 다른 게임자로부터의 입력에 따라, 그리고 실행가능 게임 컨텐트나 게임 로직(210)에 의해 지정된 규칙에 따라, 여러 가지 다른 게임상황 중 하나로 진행할 수 있는 지점인 분기점(610)들을 포함한다. 분기점(610)들은 보다 더 많은 분기점(610)들을 만들어서, 전체적인 결정 트리(600)를 만든다. 각 분기점(610)은 고유의 게임상황을 표시하는 것이지만, 실행가능 게임 컨텐트에 구현된 규칙이 다른 대체 상황(alternative)을 제시하지 않는 경우에는, 해당 게임 실연은 분기점(610)에 있지 않은 게임상황을 통해 진행될 수 있음을 이해하게 될 것이다. 다른 대체 상황이 더 이상 없는 게임상황을, 도 6에서는 명확성을 위해 생략하였다. 실무적으로, 컴퓨터 게임은 도 6에 도시된 것보다 더 많은 분기점(610)을 포함할 수 있다.
각 분기점(610)으로부터의 대체상황은 실행가능 게임 컨텐트에 따라 결정된다. 처음에 설정 단계에서는 선택권이 제한되는데, 예를 들면, 판타지 게임의 게임자는 가장 먼저, 가능한 아바타의 설정 번호 중 하나를 선택해야 할 수도 있다. 아바타를 선택하면, 다음으로 게임자는 두 개 이상의 연합 또는 동맹 중에서 선택하는 옵션이 주어질 수 있다. 이의 선택에 따라, 게임자는, 아바타가 게임 실연의 목적을 위해 충분히 정립될 때까지, 캐릭터 종족, 초기 설정 등에 대한 다양한 선택권을 가질 수 있다. 특정 예로서, 게임자가 인간 아바타를 선택한 경우에, 인간의 시작 구역과 관련된 실행가능 게임 컨텐트를 게임이 필요로 할 확률이 높고, 가까운 시간 내에 오크족(Orc)의 시작 구역과 관련된 리소스를 필요로 하는 것은 가능성이 낮음이 알려져 있다. 또 다른 예로서, 게임자가 경주 게임에서 타원형 트랙을 선택하면, 이 타원형 트랙에 필요한 리소스(resource)에는 피겨8 트랙(figure eight track)에만 필요한 리소스에 비해 더 높은 다운로드 우선순위가 부여된다. 다양한 종류의 게임에 다양한 선택권(가령, 차량 종류, 경주 트랙, 전투 지역, 게임자 수, 아바타 무기, 아바타 기술, 아바타 성별 등)이 있을 수 있다. 그 다음에, 게임자는, 예를 들어, 게임상황 속으로 배치됨에 의해서, 설정 단계(Set Up)에서부터 게임 실연 단계(Game Play)로 진행할 수 있다. 단순화를 위해 도 6에서는, 게임 실연 단계에서 고유의 최초 게임상황으로 매핑되는 각 최종 분기점(610)을 설정 단계에서 도시하고 있다. 그러나, 설정 단계에 있는 많은 최종 분기점(610)들이 게임 실연 단계에 있는 동일한 최초 게임상황으로 매핑될 수 있음을 이해할 것이다. 각 분기점(610)이 적절한 게임 실연을 위한 특정 세트의 리소스을 필요로 함은 알려져 있다.
분기점(610)이 될 수 있는 초기 게임상황으로부터, 게임 실연에 관여할 게임자가 선택할 수 있는 옵션에는, 다른 장소로의 이동, 다른 게임자와의 상호 작용(interacting), 게임 환경내 기능들과의 상호 작용, 객체 획득, 돈 벌기 등이 포함된다. 게임에 참여한 게임자가 제공한 게임자 입력(예를 들어, 게임 커맨드)은, 도 6에 도시된 바와 같이, 게임상황을 점진적으로 변경시킨다. 일부 실시예에서는, 다른 게임자의 행위가 게임상황에 변화를 일으킬 수 있다. 특정의 게임상황으로부터의 진행을 위해 실행가능 게임 컨텐트가 제공한 다른 옵션에는, 설정 단계의 분기점(610)으로 복귀할 수 있는 능력, 게임 레벨을 변경하는 능력, 그리고 게임상황에서 아바타를 재이동시킬 수도 있는 다른 행위를 취할 능력이 포함된다. 단순화를 위해 도 6에서는 항상 앞으로 전진하는 것을 도시하고 있지만, 그러나 방금 설명한 바와 같이, 임의의 분기점(610)으로부터의 분기는 복합적일 수 있으며, 선택에 따라서는, 예를 들어, 설정 단계에 위치하거나 다른 레벨에 있는 분기점(610)으로 진행할 수도 있다. 한 분기점(610)으로부터 다른 분기점으로의 게임자의 진행 이력은 해당 게임자에 대한 게임 경로(620)를 구성한다.
각 분기점(610)에는, 게임 경로(620)가 다른 대체 게임상황들의 각각 및 이를 넘어서 더 먼 게임상황으로 진행될 것이라는 변화를 표시하는 확률의 집합이 있다. 특정 예로서, 어느 한 분기점(610)에, 게임 경로(620)가 계속될 25개의 다른 대체 게임상황이 있을 수 있다. 게임 경로(620)가, 수신된 게임 커맨드에 응답하여, 이들 25개 분기점(610) 중의 앞의 두 지점으로 이어질 확률은 각각 21%와 9%이다. 그 다음 23개의 대체 상황은 각각 3%의 확률을 갖는다. 또한, 게임자가 게임을 일시 중지하거나 종료할 확률도 1% 있다. 이들 확률은 상기 분기점(610)에 도달하기 위해 취해진 경로에 따라 달라질 수 있다. 현재의 분기점(610)에서 몇 단계 떨어진 분기점(610)에 도달할 확률은, 확률들을 곱하여 계산할 수 있다. 이들 확률을 결정하는 방법은 본 명세서의 다른 곳에서 개시한다.
도 5를 다시 참조하면, 선택요소인 통계 엔진(500)은, 현재 게임상황에 있는 게임자가, 현재 게임상황에서 한 단계 이동된 다른 게임상황들 각각으로 이동할 통계적 가능성을 계산하도록 구성된다. 통계 엔진(500)은, 선택에 따라서는, 오랜 시간 동안 많은 게임자들의 게임 실연을 모니터링하여 이러한 계산을 수행한다. 게임자의 수가 많고 모니터링 기간이 길수록, 결과의 통계적 의미는 더 좋아진다. 주어진 게임상황에 있어서, 일부 게임상황의 경우에는 매우 확률이 높을 것인 반면에 다른 게임상황은 확률이 낮을 것이다. 예를 들어, 게임자가 설정 단계에서 게임상황으로 돌아갈 가능성은 일반적으로, 낮은 확률일 것인 반면에, 현재의 게임 레벨을 통해서 아바타를 전진시키는 선택은 높은 확률이 될 것이다. 또한, 게임자가 게임을 종료할 확률도 있다. 통계 엔진(500)은 복수의 게임자의 게임 실연을 지속적으로 모니터링하면서, 시간에 따라 확률 트리 데이터베이스(510)에 확률을 업데이트한다. 통계 엔진(500)의 단일 인스턴스가 많은 수의 다운로드 관리자(165)를 지원할 수 있다. 통계 엔진(500)은, 선택에 따라서는, 다운로드 관리자(165)의 다른 부분으로부터 지리적으로 원격 배치된다.
일부 실시예에서, 통계 엔진(500)은 현재 게임상황에서 한 단계 이동된 대체 게임상황의 일부 또는 전부에 대해서 이러한 계산을 수행한다. 일부 추가 실시예에서, 통계 엔진(500)은 현재 게임상황에서 한 단계보다 더 이동된 대체 게임상황의 일부 또는 전부에 대해서 이러한 계산을 수행한다. 다양한 실시예에서, 통계 엔진(500)은 현재 게임상황에 근거하여 그리고/또는 게임 경로(620)을 따르는 하나 이상의 이전 게임상황에 근거하여, 각 대체 게임상황의 확률을 계산한다. 예를 들어, 특정 게임상황으로 진행할 확률은 게임자가 현재 게임상황에 얼마나 도달해 있는지에 따라 달라질 수 있다.
비록 통계 엔진(500)이 도 5에서는 다운로드 관리자(165) 내에 있는 것으로 도시되어 있지만, 통계 엔진(500)은 여러 게임 서버(125)에 걸쳐 분산됨으로써, 각 인스턴스 운용(instantiation)이 게임 서버(125)에 의해 지원되는 게임 실연에 근거한 확률 트리 데이터베이스(510)에 기여함을 이해할 것이다. 통계 엔진(500)에서의 각 인스턴스 운용은, 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어를 포함할 수 있다. 확률 트리 데이터베이스(510)는 컴퓨터 판독 가능한 매체에 저장된 조직화되고 검색가능하게 취합된 데이터를 포함한다. 다양한 실시예에서, 각 다운로드 관리자(165)는 확률 트리 데이터베이스(510)의 사본을 포함할 수 있다. 또는 단순히, 각 다운로드 관리자는, 공유되어 있는 확률 트리 데이터베이스(510)에 액세스할 권한을 가질 수 있다. 확률 트리 데이터베이스(510)에 저장되어 있는 확률은 충분한 수의 게임자의 게임 실연을 충분한 시간 동안 모니터링한 후에 적정하게 안정화될 수 있기 때문에, 다양한 실시예에서는, 다운로드 관리자(165)가 통계 엔진(500)을 포함하지 않고, 그리고/또는 확률 트리 데이터베이스(510)가 추가적 게임 실연에 응하여 업데이트되지 않는다.
다운로드 관리자(165)는 또한 상황 모니터(520)를 포함한다. 상황 모니터(520)는 게임상황을, 그리고 선택에 따라서는, 게임 경로(620)를 따른 이전 분기점(610)을 추적하도록 구성된다. 다운로드 관리자(165)는, 선택에 따라서는, 대역폭 모니터(530)를 추가로 포함한다. 다양한 실시예에서 상황 모니터(520)는 게임 서버(125) 또는 상황 소스(175)로부터 게임상황을 수신하도록 구성된다. 상황 모니터(520)는, 선택에 따라서는, 게임 비디오를 생성하는 게임 로직(210)에 의해 사용되는 게임상황을 모니터링한다. 상황 모니터(520)는 통계 엔진(500)에 게임상황을 제공하여 통계 엔진(500)이 확률 계산을 수행할 수 있도록 구성된다.
대역폭 모니터(530)는, 예를 들어 비디오 서버 시스템(120)과 클라이언트(110B)간의 통신 채널의 대역폭을 모니터링한다. 상황 모니터(520) 및 대역폭 모니터(530)는 각각 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어를 포함할 수 있다. 대역폭 모니터(530)는 손실된 패킷을 검출하여, 지연을측정하여, 통신 속도의 증가에 의해서 손실 패킷이 발생하는지 알아보기 위한 테스트를 수행하여, 테스트 패킷을 전송하여, 및/또는 그 밖의 방법으로 대역폭을 모니터한다. 대역폭 모니터(530)가 사용할 수 있는 다른 대역폭 테스트 방법은 공동 명의의 미국 특허출원 제12/791,819에 개시되어 있고, 그리고/또는 본 명세서의 다른 곳에서 클라이언트 자격부여자(160)에 관해 설명한 바 있다.
또한, 다운로드 관리자(165)는 다운로더(540)를 포함한다. 다운로더(540)는 상황 모니터(520)로부터, 그리고 선택에 따라서는, 대역폭 모니터(530)로부터 입력을 수신하도록 구성되고, 나아가, 확률 트리 데이터베이스(510)에 액세스하도록 구성된다. 선택에 따라서는, 다운로더(540)는 상태 모니터(520)에서 받은 게임상황에 대해서, 해당 게임상황으로부터 대체 가능한 각 대체 상황의 확률이 얼마인지를 판단하기 위하여 확률 트리 데이터베이스(510)에 질의(query)를 할 수 있다. 예를 들어, 두 가지 가능성있는 게임상황이 통계적으로 가망성이 있는 반면에 나머지 게임상황은 통계적으로 매우 가망성이 없는 경우에, 다운로더(540)는 두 가지 대체 상황 각각을 바라보고 둘로부터 추가적 대체 상황을 고려할 수 있다.
게임상황, 그리고 선택에 따라서는, 하나 이상의 이전 분기점(610)이 주어진 경우, 다운로더(540)는 해당 게임상황으로부터 가능성있는 대체 상황 각각의 확률을 사용하여, 실행가능 게임 컨텐트가 다운로드될 순서의 우선순위를 동적으로 설정한다. 다운로더(540)는 실행가능 게임 컨텐트의 부분이 다운로드될 순서를 알려주는 우선순위 목록(550)을 보관하고 있다. 선택에 따라서는, 실행가능 게임 컨텐트의 부분이 다운로드되고 게임상황이 변경될 때, 다운로더(540)는 우선순위 목록(550) 내의 순서를 변경한다. 다운로더(540)는 특정 규칙에 따라 우선순위 목록(550)를 유지한다. 예를 들어, 실행가능 게임 컨텐트의 부분적으로 다운로드된 세그먼트가 다른 게임상황보다도 가능성이 낮게 될 수 있는 게임상황과 관련이 있더라도, 이들 세그먼트에 다운로드를 완료할 우선순위를 부여할 수 있다. 또 다른 예를 들면, 실행가능 게임 컨텐트의 가장 확률이 높은 게임상황을 지원하는 데 필요한 부분이 가장 높은 다운로드 우선순위를 갖게 될 것이고, 실행가능 게임 컨텐트의 이보다 낮은 확률의 게임상황을 지원하는 데 필요한 부분은 이에 상응한 낮은 다운로드 우선순위를 갖게 될 것이다. 실행가능 게임 컨텐트의 부분은 디렉토리, 파일, 및/또는 파일의 하위 부분으로 나눌 수 있다.
일부 실시예에서, 다운로더(540)는 다른 부분에서 설명한 것과 같이 실행가능 게임 컨텐트가 다운로드되는 속도를 조절한다. 다운로더(540)는 대역폭 모니터(530)가 제공한 대역폭, 그리고 선택에 따라서는, 비디오 서버 시스템(120)에서 온 그 밖의 정보(가령, 스트리밍 게임 비디오를 제공하는 데 사용되는 대역폭 크기)에 따라 다운로드 속도를 조절한다.
다운로더(540)는, 선택에 따라서는, 여기 다른 곳에서 설명한 것과 같이, 전환 로직(180)를 사용하여 클라이언트(110B)에 다운로드된 코드의 실행을 개시하도록 구성된다. 일부 실시예에서, 클라이언트(110B)에 다운로드된 코드의 실행이 개시된 후에, 그리고 스트리밍 게임 비디오가 비디오 서버 시스템(120)에 의해서 클라이언트(110B)로 더 이상 전송되지 않게 된 후에, 다운로더(540)는 우선순위 목록(550)에 의거하여 클라이언트(110B)로의 게임 코드 다운로드를 계속할 수 있다. 이러한 실시예 중 일부에서, 다운로더(540)는 게임상황을 계속해서 수신하고 클라이언트(110B)에 전체 게임 코드가 완전히 다운로드될 때까지 우선순위 목록(550)의 순서를 동적으로 계속해서 변경한다.
도 7은 본 발명의 예시적인 실시예에 따라 실행가능 게임 컨텐트를 다운로드하기 위한 방법(700)을 도시한다. 이 방법(700)은 예를 들어, 다운로드 관리자(165)에 의해 수행될 수 있다. 이 방법(700)은, 게임상황을 수신하는 단계 710, 확률을 결정하는 단계 720, 및 다운로드 순서를 결정하는 단계 730을 포함한다. 단계 710에서 새로운 게임상황을 받을 때마다, 선택에 따라서는, 단계 720에서 새로운 확률을 결정하는데, 이를 위해 예컨대, 확률 트리 데이터베이스(510)를 쿼리한다. 그러나, 많은 경우에 하나의 게임상황에서 다음으로 진행시에는 단계 730에서 이루어지는 다운로드 순서를 재정렬할 필요가 없을 것이다. 그러나 어떤 경우에는, 게임 실연시에, 게임자 또는 다른 게임자로부터 받은 입력 때문에 확률학적으로 가능성이 적은(기대한 게임 실연에 비해서) 순번을 받게 될 수도 있다. 이러한 경우에, 실행가능 게임 컨텐트 중 하나 이상의 부분에 예컨대, 우선순위 목록(550)에서 가장 높은 새로운 우선순위가 부여되고, 반면에, 실행가능 게임 컨텐트의 다른 부분에는 이보다 낮은 새로운 우선순위가 부여된다. 다양한 실시예에서, 확률 및/또는 우선순위 목록(550)을 재계산하는 시간은, 정해진 시간(예컨대, 1분, 5분, 또는 10분)에, 게임 내 영역을 떠나는 아바타, 아바타가 이동한 거리, 게임 환경 내에서의 월경(국경 넘어가기), 아바타가 행하는 특정 행위들, 특정 상황에의 도달, 아바타 레벨의 변경, 및/또는 그 밖의 요인에 따른다.
이 방법(700)은 또한, 실행가능 게임 컨텐트 다운로드시의 다운로드 속도를 결정하는 단계 740을 옵션으로서 추가로 포함할 수 있다. 일부 실시예에서, 단계 740은 통신 채널의 대역폭을 모니터링하는 것을 포함한다. 일부 실시예에서, 단계 740은 대역폭 모니터(530)로부터 대역폭을 수신하는 것을 포함할 수 있다. 본 명세서의 다른 곳에서 설명한 바와 같이, 다운로드 속도는 사용가능한 대역폭 및 최소한의 품질 수준으로 스트리밍 비디오를 제공하는 데 필요한 대역폭에 따라 결정할 수 있다.
이 방법(700)은 또한, 실행가능 게임 컨텐트를 다운로드하는 단계 750을 추가로 포함한다. 다양한 실시예에서 단계 750은, 단계 730에서 동적으로 순서를 정한 우선순위 목록에 따라, 클라이언트(110B)로 네트워크(115)를 통해 실행가능 게임 컨텐트의 부분을 전송하는 것을 포함한다. 이 단계는 예를 들어, 다운로더(540)에 의해 수행될 수 있다. 다양한 실시예에서 실행가능 게임 컨텐트의 부분은, 우선순위 목록에 지정된 순서에 따라, 코드 소스(170)에서 검색되어 클라이언트(110B)로 전송된다. 이러한 실시예의 일부에서, 실행가능 게임 컨텐트는 먼저, 대기하게 되는데, 대기열(queue)에서 실행가능 게임 컨텐트의 순서가, 우선순위 목록의 순서가 재정렬됨에 따라 동적으로 재정렬된다.
일부의 경우에 단계 750은 다운로드 속도를 변화시키는 것을 포함한다. 다운로드 속도는, 예를 들어, 다운로더(540)에 의해서 대역폭의 가용도를 변화시키는 등의 요인에 따라 변화될 수 있다. 사용가능한 대역폭의 크기는 채널 가변성과, 스트리밍 비디오의 대역폭 요구사항의 변화, 둘 다에 의해서 달라될 수 있다. 예를 들어, 특정 시간에서 스트리밍 비디오는 다른 시간에서보다 더 적은 초당 프레임수를 필요로 할 수 있으며, 다운로드 속도를 사용가능 대역폭의 추가 사용을 위해서 증가시킬 수 있다.
일부 실시예에서는, 특정 조건들이 스트리밍 비디오의 준비에 비해서 상대적으로 실행가능 게임 컨텐트의 다운로드에 더 큰 우선순위를 부여하는 결과를 낳는다. 예를 들어, 리소스가 사용가능하지 않은 이유로 클라이언트측 모드의 게임 실행이 중단될 가능성이 높다면, 게임자에게 표시되는 게임 비디오의 최소한의 품질을 유지하는 것에 대한 해당 리소스를 다운로드하는 데에 보다 더 높은 우선순위가 주어질 수 있다. 일부 실시예에서, 프레임 속도, 프레임 크기, 색심도, 또는 그 밖의 게임 비디오의 특징은, 다운로드된 비디오 크기(비트/초)를 감소시키도록 변경될 수 있다. 이 결과로서, 실행가능 게임 컨텐트를 다운로드하는 데 사용될 대역폭이 더 커지게 된다. 특정 예에서, 다운로드 관리자(165)가, 필요한 리소스를 필요시에 사용할 수 없을 것이라고 판단할 경우, 다운로드 관리자(165)는 비디오 소스(130)에 명령을 내려서 클라이언트(110B)로 제공되는 스트리밍 비디오의 프레임 속도를 감소시켜서, 리소스가 필요하게 되기 전에 이 리소스가 다운로드될 확률을 높여야 함을 알린다. 프레임 속도의 감소량은, 선택에 따라서는, 필요한 리소스를 다운로드하기 위해 필요한 예상 시간에 따라 계산된다. 이와 다른 대안적 실시예에서, 필요한 리소스가 이들을 필요로 하기 전에 다운로드되는 것을 보장하기 위해, 클라이언트측 모드 중에서는 게임의 실연이 "멈춰 고정된다(freeze)". 이와 다른 대안적 실시예에서, 클라이언트측 실행에서 필요한 때에, 필요한 리소스가 클라이언트(110B)에서 사용할 수 없게 가능성이 있을 경우 게임 실연은 클라이언트측 모드에서 서버측 모드으로 전환된다.
일부 실시예에서, 리소스들은 적절한 게임 실연을 위한 자신들의 필요성에 따라 구별된다. 예를 들어, 게임 영역 내의 땅(지상) 및/또는 객체의 형태는 적절한 게임 실연을 위해 필요한 것으로 절대적으로 간주할 수 있지만, 게임 내 객체에 적용하고자 하는 질감은 절대적으로 필요하지 않을 수도 있다. 이러한 실시예에서, 다운로드 관리자(165)가 필요한 리소스가 필요시에 사용될 수 없다고 판단 할 경우에는 다른 대체 리소스를 대신 사용할 수 있다. 예를 들어, 실내의 벽에 대해 의미가 있는 질감을 건물의 외벽에도 사용할 수 있다. 또는 불필요한 객체를, 게임자에게 제공되는 비디오에서 생략할 수 있다. 다운로드 관리자(165)는 리소스의 허용가능한 대체 리소스가 담긴 표를, 선택에 따라서는, 클라이언트(110B)에게 제공한다. 필요한 리소스에는, 필요치 않은 리소스에 비해서, 클라이언트(110B)로의 다운로드에 더 큰 우선순위를 부여할 수 있다. 여기서 사용한 용어 "적절한 게임 실연"은 게임이 의도된 대로 표시되고 실연됨을 나타내는 것이다. 적절하지 않은 게임 실연에는 대체된 질감, 누락된 객체 등이 포함될 수 있는데, 그래도 약간 다른 형태 또는 기능으로 게임 실연은 가능하다.
이 방법(700)은, 선택에 따라서는, 서버측 게임실행 모드에서 클라이언트측 게임실행 모드으로의 전환을 시작하는 단계 760을 추가로 포함한다. 예를 들어, 단계 760은, 실행가능 게임 컨텐트의 임의의 부분이 필요하게 될 확률이 임계값보다 낮다는 것을, 이 부분이 다운로드되기 전에 판단하는 것을 포함할 수 있다. 이 확률은, 게임상황이 실행가능 게임 컨텐트의 부분을 필요로 하게 될 확률 및 이 게임상황에 도달될 때의 확률에 관련되어 있다. 리소스가 필요해지기까지 걸리는 시간이 길수록, 리소스가 필요하기 전에 리소스를 다운로드할 수 있는 기회가 있을 가능성이 높아진다. 다양한 실시예에서, 임의의 리소스가 다운로드되기 전에 그 리소스가 필요하게 될 확률이 임계값 1%, 2%, 또는 5%보다 낮으면, 실행가능 게임 컨텐트의 "실행가능 부분상황"이 클라이언트로 이미 다운로드된 것으로 간주될 것이다. 이 실시예에서, 실행가능 부분상황의 특징화에는, 장차 어느 리소스가 필요할게 될 가능성이 있는지 그리고 이들 리소스가 필요하게 될 때까지 이들을 다운로드할 확률을 고려하는 것이 포함된다. 따라서 이 실행가능 부분상황은 게임의 현재 상태에 따라 달라진다. 다른 실시예에서, 이 실행가능 부분상황은, 최소한의 실행가능한 리소스 세트가 클라이언트에 다운로드되었을 때에 다운로드된 것으로 간주된다(장차 무엇이 필요하게 될 것인지에 관계없이).
실행가능 부분상황이 다운로드되면, 전환 로직(180)은 게임 실행의 클라이언트측 모드로의 전환을 시작할 수 있다. 단계 760은, 예를 들어, 비디오 서버로부터 클라이언트로의 스트리밍 비디오의 전달을 종료시키고, 클라이언트에 있는 실행가능 게임 컨텐트를 실행시켜서 게임 상황에 따라 비디오를 생성하는 것을 포함할 수 있다. 각 단계 710-760은 스트리밍 비디오가 클라이언트에게 제공되는 동안에 수행될 수 있다.
이 방법(700)은, 선택에 따라서는, 실행가능 게임 컨텐트의 다운로드를 종료하는 단계 770으로 구성된다. 이 단계에서 실행가능 게임 컨텐트는, 단계 760(예컨대, 클라이언트측 모드로 전환시키는 단계) 이후에 클라이언트로의 다운로드를 계속할 수 있다. 이러한 실시예의 일부에서, 실행가능 게임 컨텐트는, 단계 760의 수행시에 존재했던 것과 같은 다운로드 순서에 따라 다운로드될 수 있다. 다른 실시예에서, 단계 770 동안에, 다운로드 순서는 게임상황에 따라 단계 730을 사용하여 동적으로 계속해서 변화된다. 이러한 실시예에서, 클라이언트(110B)에 유지되고 있는 게임상황은 다운로드 관리자(165)에게 다시 전송된다. 단계 730에서는, 실행가능 게임 컨텐트의 부분이 클라이언트(110B)로 다운로드되는 순서를, 심지어 실행가능 부분상황의 실행이 클라이언트(110B)에서 이루어진 이후에라도 변경할 수 있다.
선택에 따라서는, 이 방법(700)은 스트리밍 비디오가 클라이언트에게 제공되도록 하기 위해 역전환을 시작하는 단계 780을 포함할 수 있다. 이 단계는, 단계 760의 종료 후에 게임상황이 예컨대 다운로더(540)에 계속해서 수신되는 경우에 수행할 수 있다. 여기서, 다운로더(540)가 게임상황에 근거해서, 아직 클라이언트에 다운로드되지 않은 실행가능 게임 컨텐트의 부분이, 진행중인 게임 실연을 지원하는 데 필요할 확률이 크다고 판단할 경우에, 전환 로직(180)은 예를 들어 클라이언트를 클라이언트측 게임 실행 모드로부터 벗어나 서버측 게임 실행 모드로 역으로 들어가도록 전환할 수 있다. 비록 도 7에 나타낸 단계 780은 단계 770 이후에 있는 것으로 도시되어 있지만, 단계 780을 수행할 경우에 이 단계는 단계 770이 완료되기 전에 시작됨을 이해할 것이다. 이러한 경우에는 단계 770이 중단되고, 본 방법(700)이 단계 710으로 되돌아가서, 단계 760이 클라이언트측 게임 실행 모드로의 역 전환을 반복할 때까지, 실행가능 게임 컨텐트를 클라이언트로 다운로드하는 상태에서 클라이언트로 비디오를 계속해서 스트리밍한다.
도 8은 본 발명의 다양한 실시예에 따른, 컴퓨터 게임을 제공하는 방법을 도시한다. 이러한 방법은, 선택에 따라서는, 본 명세서의 다른 곳에서 개시한 시스템과 방법을 사용하여 수행된다. 커맨드 수신 단계 810에서, 게임 커맨드가 통신 시스템을 통해 원격지 클라이언트로부터 비디오 서버 시스템에서 수신된다. 예를 들어, 일부 실시예에서, 비디오 서버 시스템(120)이 네트워크(115)를 통해 클라이언트(110B)로부터 게임 커맨드를 받는다. 게임 커맨드의 수신은 클라이언트(110B)와 비디오 서버 시스템(120) 사이에 개설된 게임 세션의 일부이다. 도 8에 도시된 단계들은, 선택에 따라서는, 다른 순서로 수행된다.
선택사항인 커맨드 전달 단계 815에서, 상기 수신된 게임 커맨드는 게임 서버(예를 들어, 게임 서버(125))로 전달된다. 수신된 게임 커맨드는, 선택에 따라서는, 네트워크(115)를 통해 게임 서버(125)로 전달된다. 선택사항인 상황 수신 단계 820에서, 비디오 서버 시스템은 업데이트된 게임상황을 게임 서버로부터 수신한다. 수신된 게임상황은, 선택에 따라서는, 게임 서버(125)에 의해 유지되는 전체 게임상황의 부분상황이며, 또한, 선택에 따라서는, 커맨드 전달 단계 815에서 전달된 게임 커맨드를 사용하여 업데이트된다. 멀티플레이어 게임에서는, 수신된 부분상황은 일반적으로, 복수의 게임자 및/또는 복수의 클라이언트(110)에서 받은 게임 커맨드의 결과이다.
커맨드 전달 단계 815 및 상황 수신 단계 820는, 선택에 따라서는, 게임 서버(125)를 포함하지 않는 실시예에서 이루어진다. 이러한 실시예에서는, 상황 업데이트 단계 825가 비디오 서버 시스템(120)에서 수행된다. 상황 업데이트 단계 825는, 비디오 서버 시스템(120)에 저장된 게임상황을 업데이트하기 위해 클라이언트(110B)에서 받은 게임 커맨드를 사용하는 것을 포함한다. 이러한 업데이트는, 선택에 따라서는, 게임 로직(210) 중 하나의 게임 규칙을 사용하여 수행된다.
비디오 생성 단계 830에서, 상황 수신 단계 820에서 수신한 게임상황 또는 상황 업데이트 단계 825에서 업데이트한 게임상황을 기초로 게임 비디오가 생성된다. 게임 비디오는, 선택에 따라서는, 다른 곳에서 설명한(예를 들어 도 2 관련하여) 비디오 서버 시스템(120)을 사용하여 생성된다. 예를 들어, 일부 실시예에서, 게임 비디오는 비디오 드라이버(220), 3D 드라이버(230), GPU(235), 및/또는 비디오 DEP(245A)를 사용하여 게임 로직(210)에 의해 생성된 게임 환경을 기초로 생성된다.
비디오 제공 단계 835에서, 게임 비디오가 통신 네트워크를 통해 비디오 서버 시스템로부터 원격지 클라이언트로 제공된다. 예를 들어, 게임 비디오가 네트워크(115)를 통해 비디오 서버 시스템(120)으로부터 클라이언트(110B)에 제공될 수 있다. 게임 비디오는 일반적으로, 클라이언트(110B)에 표시할 수 있는 형식으로 제공된다. 하지만, 선택에 따라서는, 게임 비디오를 표시하기 전에 이를 디코딩, 중첩, 및/또는 그 밖의 처리를 한다.
속도 결정 단계 840에서, 실행가능 게임 컨텐트를 클라이언트로 이송할 수 있는 속도가 결정된다. 이 결정은, 선택에 따라서는, 실행가능 컨텐트를 병행해서 이송하는 동안에, 클라이언트에 게임 비디오를 표시할 최소 수준의 품질을 유지하는 것에 기반한다. 예를 들어, 실행가능 컨텐트는, 스트리밍 게임 비디오가 클라이언트(110B)에 병행적으로 제공되는 동안에, 비디오 서버 시스템(120)(또는 다른 게임 시스템(100))으로부터 네트워크(115)를 통해 클라이언트(110B)로 이송될 수 있다. 실행가능 게임 컨텐트의 이송과 게임 비디오 전달의 병행적 수행이 의미하는 것은, 게임 비디오의 패킷이 실행가능 게임 컨텐트의 패킷과 동시에 수신되거나 이들 사이에 개재된다는 것이다. 선택에 따라서는, 게임 비디오의 패킷과 실행가능 게임 컨텐트의 패킷은 둘 다, 클라이언트(110B)의 수신 버퍼에 동시에 저장된다. 속도 결정 단계 840는, 선택에 따라서는, 다운로드 관리자(165)를 사용하여 수행된다. 다른 곳에서 논의한 것과 같이, 이송 속도의 결정은 비디오 서버 시스템(120)과 클라이언트(110B) 사이의 통신 채널의 사용가능한 대역폭, 및/또는 스트리밍 게임 비디오를 제공하는 데 사용되는 이 대역폭의 일부를 기초로 하여 이루어질 수 있다 .
속도 결정 단계 840에서의 이송 속도의 결정은, 게임 비디오의 품질을 유지하기 위해, 실행가능 게임 컨텐트가 클라이언트(110B)에 이송될 때에 반복될 수 있다.
코드 제공 단계 845에서, 실행가능 게임 컨텐트는 통신 네트워크를 통해 원격지 클라이언트로 제공된다. 예를 들어, 일부 실시예에서, 실행가능 게임 컨텐트는 코드 소스(170)로부터 네트워크(115)를 통해 클라이언트(110B)로 전송된다. 여기서 사용한 용어 "실행가능 게임 컨텐트"와 "실행가능 컨텐트"는 실행가능한 코드 뿐만 아니라 게임(또는 다른 응용 프로그램)의 비디오를 생성하기 위해 사용되는 관련 리소스(예를 들어, 스크립트, 데이터 구조, 영상, 질감, 지리 정보, 캐릭터 이름, 객체 형태, 사용자 데이터, 게임 데이터 등)를 포함하는 의미로 사용되었다. 실행가능 게임 컨텐트는 일반적으로, 다른 곳에서 논의한 것과 같은 속도 결정 단계 840에서 결정된 속도 이하로 제공된다. 실행가능 게임 컨텐트에는 게임상황에 따라 게임 비디오를 생성하도록 구성된 게임 로직 및/또는 코드가 포함된다. 게임 코드는, 선택에 따라서는, 질감, 영상, 게임 구역의 지리적 데이터, 및/또는 게임을 지원하는 데 사용되는 그 밖의 게임 데이터를 추가로 포함한다. 실행가능 게임 컨텐트 및 게임 비디오 스트림의 적어도 일부는 원격지 클라이언트에 병행적으로(병렬) 제공된다. 예를 들어, 코드 소스(170)로부터의 실행가능 게임 컨텐트는, 비디오 소스(130)로부터의 게임 비디오와 병행적으로 네트워크(115)를 통해 클라이언트(110B)로 이송될 수 있다. 또는 이와 달리, 실행가능 게임 컨텐트 및 게임 비디오는 별도의 채널을 통해 클라이언트(110B)로 병행 이송될 수 있다.
따라서, 사용가능한 대역폭이 변화됨에 따라, 클라이언트(110)에 의해 수신된 실행가능 컨텐트에 대한 스트리밍 게임 비디오의 비율(단위: 바이트/초)이 변화할 수 있다. 다운로드 관리자(165)는 주기적으로, 예를 들어, 적어도 매초, 매 10초마다, 매 100초마다, 매 10프레임마다, 매 1000프레임마다, 매 100프레임마다, 또는 연속적으로, 이송(transfer) 속도의 결정을 반복할 수 있다. 일부 실시예에서, 다운로드 관리자(165)는 게임 비디오의 데이터 속도 또는 게임 비디오의 데이터 속도의 변화를 신호를 비디오 소스(130)로부터 수신하는 것과 같은 이벤트에 대한 응답으로서 단계 840을 반복할 수 있다. 다운로드 관리자(165)는 클라이언트(110B) 요구사항(예를 들어, 지연 시간 가변성의 제한, 클라이언트(110B)와 비디오 서버 시스템(120) 간의 통신 채널의 대역폭의 변화, 디스플레이 해상도의 변경 등)의 변경과 같은 조건 변경에 대한 응답으로서 단계 840을 반복할 수 있다.
코드 제공 단계 845에서, 실행가능 게임 컨텐트의 부분은 사전에 정해진 특정 순서로 원격지 클라이언트에 제공될 수 있다. 예를 들어, 클라이언트(110B)는 제2게임상황보다도 제1게임상황에 도달하는 데 더 큰 확률을 가질 수 있다. 따라서 제1게임상황에서 필요한 리소스는 제2게임상황에서 필요한 리소스보다 더 높은 우선순위를 부여받을 수 있다.
선택적 단계인 순서 수정 단계 850에서, 실행가능 게임 컨텐트의 부분이 원격지 클라이언트에게 제공되는 순서가, 현재 게임상황에 대한 응답으로서 동적으로 수정된다. 본 명세서의 다른 곳에서 설명한 바와 같이, 순서 재정렬은 일반적으로, 게임자가 게임을 실연할 때에 게임 코드 또는 다른 리소스가 필요하게 될확률이 변한다는 것에 기초한 것이다. 게임이 한 상황에서 다른 상황으로 변경될 때에는, 장래의 게임상황에 대한 새로운 확률이 다운로드 관리자(165)에 의해 계산된다. 순서 수정 단계 850에서는 이들 새로운 확률을 이용하여 게임 코드의 일부가 클라이언트(110B)로 제공되는 순서를 수정함으로써, 필요하게 될 가장 큰 확률을 갖는 해당 부분이 가장 먼저 제공되도록 한다. 다운로드 관리자(165)는 실행가능 게임 컨텐트의 부분을 제공하는 순서를, 게임 코드가 다운로드되는 동안에, 반복적으로 수정할 수 있다. 필요에 따라 순서 수정 단계 850은 반복될 수 있다. 수정된 순서는 실행가능 컨텐트가 다운로드되고 있는 게임자가 취한 행위, 및/또는 게임 내에서 다른 게임자가 취한 행위에 의해 좌우될 수 있다.
부분상황 판단 단계 855에서, 다운로드 관리자(165)는 실행가능 게임 컨텐트의 실행가능 부분상황이 원격지 클라이언트(예를 들어, 클라이언트(110B))로 다운로드되었는지를 판단한다. 실행가능 게임 컨텐트의 실행가능 부분상황은, 게임자가 적절한 확률(필요한 리소스가 아직 다운로드되지 않은 이유로는 게임이 중단되지 않을 확률)로 게임을 할 수 있도록 하는 부분이다. 필요한 확률은 사전에 미리 결정되며, 다양한 실시예에서 이는 최소한 99, 98, 95, 90, 또는 85%이다. 부분상황 판단 단계 855는, 게임 비디오의 렌더링이 클라이언트로 이송되기 전에 모든 실행가능 게임 컨텐트가 다운로드되는 실시예에서는 옵션사항이 된다.
상황 제공 단계 860에서는, 게임상황이 원격지 클라이언트로 제공된다. 게임상황은 시간을 두고 클라이언트에 제공될 수 있다. 예를 들어, 일부 실시예에서, 상황 제공 단계 860은, 최초 게임상황을 제공하고 나서 시간이 지남에 따라 이 최초 상황에 대한 업데이트를 제공하는 것을 포함한다. 또는 이와달리, 상황 제공 단계 860은 하나의 현재 상황을 제공하는 것을 포함할 수 있다. 제공된 게임상황은 클라이언트(110B) 및/또는 클라이언트(110)의 다른 일원으로부터 받은 게임 커맨드의 결과일 수 있다. 게임상황은 게임 서버(125) 및/또는 비디오 서버 시스템(120)으로부터 제공받을 수 있다.
상황 업데이트 이송 단계 865에서, 게임상황 업데이트의 전달은, 이들이 게임 서버(125)로부터 비디오 서버 시스템(120)로가 아니라, 게임 서버(125)로부터 클라이언트(110B)로 전송되도록 변경된다. 선택에 따라서는, 게임상황 업데이트가 클라이언트(110B)와 비디오 서버 시스템(120)으로 모두 전송되는 기간이 있다. 게임상황 업데이트는 게임 서버(125)에서 유지되고 비디오 서버 시스템(120)과 클라이언트(110B)에서 게임 비디오를 생성하기 위해 사용되는, 전체 게임상황의 부분상황이다. 게임상황 업데이트는 증분 형태(incremental) 및/또는 총합 형태(total)일 수 있다. 상황 업데이트 이송 단계 865는 일반적으로, 전환 로직(180)에 의해 수행된다.
상황 업데이트 이송 단계 865는, 클라이언트(110B)의 주소(예를 들어, IP 주소)를, 특정 게임 세션과 관련된 게임상황 업데이트를 이 주소로 전송해야 한다는 명령과 함께 게임 서버(125)로 제공하는 것을 포함한다. 게임 서버(125)에서, 이 제공된 주소는 기존의 게임 세션과 연계된다. 예를 들어, 클라이언트(110B)의 주소는, 게임 서버(125)와 비디오 서버 시스템(120) 사이에 기존에 존재하던 게임 세션에 할당된다. 이 게임 세션에서, 게임상황 업데이트는 게임 서버(125)로부터 비디오 서버 시스템(120)으로 이전에 전송되었던 것이다. 상황 업데이트 이송 단계 865의 결과, 전체 게임상황의 부분상황이 비디오 서버 시스템(120)에 추가하여 또는 그 대신에 클라이언트(110B)로 전송된다. 선택에 따라서는, 이러한 변경은 하나의 게임 세션에서 수행된다.
커맨드 이송 단계 870에서, 명령(instructions)은 전환 로직(180)에 의해서 게임 서버(125)로 제공됨으로써, 게임 서버는, 원격지 클라이언트로부터 받은 커맨드(commands)를, 게임 서버(125)와 비디오 서버 시스템(120) 사이에 사전에 개설된 게임 세션에 할당한다. 클라이언트(110B)로부터 받은 커맨드는 일반적으로, 클라이언트(110B)의 IP 주소를 사용하여 식별되지만, 다른 식별자도 사용할 수 있다. 선택에 따라서는, 게임 서버(125)로 제공되는 명령에는 클라이언트(110B)의 IP 주소(110B)가 포함된다.
추가적으로, 커맨드 이송 단계 870에서, 클라이언트(110B)는 비디오 서버 시스템(120)이 아닌 게임 서버(125)로 또는 비디오 서버 시스템(120)에 추가하여 게임 서버(125)로 게임 커맨드를 보내도록 명령받는다. 이 명령에는 일반적으로, 게임 서버(125)의 주소가 포함된다. 예를 들어, 전환 로직(180A)는 클라이언트(110B0로 게임 서버(125)의 IP 주소를 제공할 수 있고, 클라이언트(110B)에 명령하여(예를 들어, 전환 로직(180C)을 통해) 게임 커맨드를 게임 서버(125)로 직접 전송하도록 명령할 수 있다.
상황 업데이트 이송 단계 865 및 커맨드 이송 단계 870은 선택사항이다. 일부 실시예에서, 게임 서버(125)와 클라이언트(110B) 사이에서의 게임상황 및 게임 커맨드의 통신은, 스트리밍 모드로부터 클라이언트 모드로의 전환이 이루어진 후라 하더라도, 비디오 서버 시스템(120)을 통해서 계속적으로 수행된다. 비디오 서버 시스템(120)을 통한 통신을 계속하는 것은, 스트리밍 모드로 역전환이 일어날 수 있는 가능성이 있는 상황에서 도움이 될 수 있다.
실행 시작 단계 875에서는, 클라이언트(110B)에서 실행가능 게임 컨텐트의 실행가능 부분상황의 실행이 시작된다. 이 실행에 의해서, 상황 제공 단계 860 및 상황 업데이트 이송 단계 865의 결과로 수신된 게임상황을 기초로 게임 비디오가 생성된다. 이 게임 비디오는 클라이언트(110B)에서 표시되도록 구성된다. 게임 코드의 실행은, 선택에 따라서는, 전환 로직(180A)에 의해 또는 이것의 제어하에 시작된다. 실행 시작 단계 875는, 부분상황 판단 단계 855에서 판단된, 실행가능 게임 컨텐트의 전부 또는 실행가능 부분상황이 클라이언트로 다운로드된 후에만 수행된다. 일부 실시예에서, 코드 제공 단계 845는, 실행 시작 단계 875 이후에도 계속해서 수행된다. 이는, 실행이 시작된 이후에, 실행가능 게임 컨텐트 및/또는 새 게임 코드의 나머지가 다운로드될 수 있도록 한다.
상황 제공 단계 860, 상황 업데이트 이송 단계 865, 커맨드 이송 단계 870, 및 실행 시작 단계 875의 결과, 서버측 모드로부터 클라이언트측 모드로 컴퓨터 게임의 실행이 전환되어, 원격지 서버 대신에 클라이언트에서, 게임 코드와 하드웨어를 이용한 렌더링이 수행된다. 특히, 게임 비디오의 렌더링이, 게임 서버에서 원격지 클라이언트 비디오로, 가령, 비디오 서버 시스템(120)으로부터 클라이언트(110B)로 옮겨진다. 다른 곳에서 논의한 것에 따라, 게임 비디오는 비디오 서버 시스템(120)에서 수신될 수 있는 것은 물론, 일정 시간 동안 병행적으로 클라이언트(110B)에서 생성될 수 있다. 이로써, 비디오의 동기화가 가능해지고, 그리고/또는 게임자는, 게임자가 선택한 때에 브라우저에서의 비디오 게임 실연에서 다른 창(이것도 역시 브라우저 창이 될 수도 있음)에서의 비디오 게임 실연으로 전환할 수 있다.
게임 비디오 종료 단계 880에서, 비디오 서버 시스템에서 원격지 클라이언트로의 게임 비디오의 전달이 종료된다. 예를 들어, 전환 로직(180A)은 다운로드 관리자(165)에게 명령하여 비디오 서버 시스템(120)으로부터 클라이언트(110B)로의 게임 비디오의 제공을 종료하도록 할 수 있다. 대안적 실시예에서, 게임 비디오 종료 단계 880은 수동으로 수행할 수 있다. 예를 들어, 게임자가 단순히 게임 비디오가 표시되는 브라우저 창을 닫음으로써, 또는 비디오 서버 시스템(120)에 커맨드를 보내거나 또는 국지적 위치에서 비디오 서버 시스템(120)으로의 통신 채널을 닫음으로써 비디오 서버 시스템에서부터의 게임 비디오의 전달이 종료되도록 구성되어 있는 다운로드된 실행가능 게임 컨텐트를 수동으로 실행함으로써, 게임 비디오의 전달을 종료시킬 수 있다.
다운로드 속행 단계 885에서, 실행가능 게임 컨텐트의 추가 부분 및/또는 새로운 부분이 원격지 클라이언트로 다운로드된다. 다운로드 관리자(165)는, 이미 클라이언트(110B)에 다운로드된 실행가능 게임 컨텐트의 부분이 실행되는 동안에, 클라이언트(110B)로의 실행가능 게임 컨텐트의 부분을 계속해서 제공할 수 있다. 이로써, 클라이언트(110B)는, 이미 다운로드된 실행가능 게임 컨텐트의 부분을 사용하여 게임 비디오를 렌더링하여 게임자에게 제공하는 동안에, 실행가능 게임 컨텐트를 받는다. 비디오를 네트워크(115)를 통해 비디오 서버 시스템(120)에서부터 클라이언트(110B)로 더 이상 제공되지 않게 되면, 클라이언트(110B)에 실행가능 게임 컨텐트를 이전하는 데 사용가능한 대역폭의 일부는 일반적으로, 상당량 증가된다. 다운로드 속행 단계 885는, 실행 시작 단계 875 전에 모든 실행가능 게임 컨텐트가 다운로드되는 실시예에서는 선택사항이다.
선택적 단계인 복귀 단계 890에서, 비디오 서버 시스템은 클라이언트측 모드에서 서버측 모드로 되돌아간다. 비디오 서버 시스템(120)에서 클라이언트(110B)로의 스트리밍 게임 비디오의 전달이 재개되며, 선택에 따라서는, 클라이언트(110B)에서의 게임 비디오 렌더링이 종료된다. 복귀 단계 890은, 예를 들어, 클라이언트(110)에 상주하는 실행가능 게임 컨텐트 부분상황이 더 이상 현재 게임상황에 대한 그리고/또는 장래의 가능성있는 게임상황에 대한 비디오를 렌더링할 수 없게 될 때, 수행될 수 있다. 복귀 단계 890은, 전환이 전반적으로 반대 방향으로 수행된다는 것을 제외하고는, 위에서 논의한 단계 860-885과 유사한 단계를 거쳐 수행될 수 있다. 단계 850-890을 반복적으로 수행할 수 있다. 따라서, 비디오 게임은 클라이언트측 모드와 서버측 모드 사이에서 여러 번 전환될 수 있다. 일부 실시예에서, 이러한 전환은 2차원 모드와 3차원 모드 간에, 또는 그 밖의 비디오 출력의 소정의 변화 사이에서 비디오 게임이 변경될 때에 일어난다.
도 9는 본 발명의 다양한 실시예에 따른, 게임 세션을 이송하는 방법을 도시한다. 게임 세션은 게임 서버(125)의 제1클라이언트에서 제2클라이언트로(예를 들어, 비디오 서버 시스템(120)에서 클라이언트(110B)로) 이송된다. 이러한 방법은, 선택에 따라서는, 동일한 게임 세션 동안에 컴퓨터 게임이 스트리밍 모드와 클라이언트 모드 둘 다에서 실연될 수 있도록 게임 서버(125)에 의해서 수행된다. 도 9에 도시된 방법은 게임자가 제1 게임 세션을 종료하고 수동으로 게임 서버(125)에 로그인하여 제2 게임 세션을 개설하지 않고도, 모드를 변경할 수 있다. 또는 이와 달리, 본 방법은 게임자에게 제2 게임 세션에 로그인 할 수 있는 적절한 로그인 화면을 제공하여 모드 변경을 용이하게 할 수 있다. 도 9에 도시한 것과 유사한 단계들은 클라이언트(110B)로부터 비디오 서버 시스템(120)으로 게임 세션을 되돌려 이송하는 데 사용할 수 있다. 도 9에 도시된 단계들은, 선택에 따라서는, 다른 순서로 수행된다.
선택적 단계인 세션 개설 단계 910에서, 게임 서버(125)와 제1클라이언트(가령, 비디오 서버 시스템(120)) 사이에서의 게임 커맨드과 게임상황 정보를 통신하기 위해 게임 세션이 개설된다. 게임 세션을 개설하는 것은 본 명세서의 다른 곳에서 더 완전하게 설명한다. 일부 실시예에서, 게임 서버(125)는 게임 세션을 개설하기 위해 계정을 필요로 한다. 계정은 다른 곳에 설명된대로 자동으로 또는 게임자에 의해 개설할 수 있다. 개설된 게임 세션은 제1클라이언트와 게임 서버(125)의 주소를 식별하는 것을 포함한다. 게임 세션의 일부로서, 게임 커맨드는 제1클라이언트로부터 게이머 서버(125)로 전송되고, 게임상황 정보는 게임 서버(125)로부터 제1클라이언트로 전송된다. 세션 개설 단계 910은, 게임 세션이 이미 개설된 실시예에서는 선택사항이다.
게임 커맨드 수신 단계 915에서, 게임 서버(125)는 제1클라이언트에서부터 게임 커맨드를 받는다. 예를 들어, 일부 실시예에서, 게임 서버(125)는 비디오 서버 시스템(120)에서부터 게임 커맨드를 받는다. 이 게임 커맨드는 원래는 클라이언트(110B)에 의해서 비디오 서버 시스템(120)으로 전송되었을 수 있다. 비디오 서버 시스템에서(120), 게임 커맨드는 일반적으로, 클라이언트(110B)에 제공된 비디오 스트림을 렌더링하는 데 사용되는 게임상황의 사본을 업데이트하는 데 사용되고, 그리고/또는 게임 서버(125)로 전달되기 전에 처리되거나 그렇지 않으면 수정된다. 게임 커맨드의 수신은 게임 서버(125)와 비디오 서버 시스템(120) 사이에 개설된 게임 세션의 일부이다. 따라서, 수신된 게임 커맨드는 특정 게임 세션과 연계된다. 이 연계는, 선택에 따라서는, 게임 커맨드가 수신된 데이터 패킷 내의 주소 또는 기타 식별자를 사용하여 이루어진다.
상황 업데이트 단계 920에서, 게임 서버(125)는 게임상황을 업데이트하기 위하여 제1클라이언트로부터 받은 게임 커맨드를 사용한다. 업데이트된 상황은, 비디오 서버 시스템(120) 및/또는 게임 서버(125)에 저장될 수 있다. 업데이트는 일반적으로, 게임 서버(125)에 저장된 게임 규칙을 사용하여 수행된다.
상황 전송 단계 925에서, 게임 서버(125)는 게임 서버로부터 제1클라이언트로 컴퓨터 게임의 업데이트된 게임상황을 제1게임상황으로서 전송한다. 예를 들어, 제1게임상황은 비디오 서버 시스템(120)으로 전송될 수 있다. 일부 실시예에서, 상황 전송 단계 925는 최초의 제1게임상황을 전송하고, 그 다음, 시간 경과에 따라 이 제1게임상황에 대한 업데이트를 전송한다. 또는 이와 달리, 상황 전송 단계 925는 비디오 서버 시스템(120)으로 하나의 제1게임상황을 전송하는 것을 포함할 수 있다.
전환 커맨드 수신 단계 930에서는, 게임 서버(125)는 제1클라이언트로부터 제2클라이언트로 게임 세션을 전환하는 커맨드를 받는다. 이러한 클라이언트의 변경에 의한 결과로, 게임 실연이 스트리밍 모드와 클라이언트 모드 사이에서 전환된다. 이 커맨드는 일반적으로, 전환 로직(180)(예를 들어, 전환 로직(180A))에 의해 전송된다. 이 수신된 커맨드는 게임 서버(125)를, 전환을 수행하는 데 필요한 정보를 수신하고 처리할 준비가 되어있는 상태로 위치시킨다. 전환 커맨드에 대한 응답으로, 게임 서버(125)는 비디오 서버 시스템(120) 대신에, 제1클라이언트(예컨대, 클라이언트(110B))가 아닌 제2클라이언트로부터 또는 제1클라이언트와 제2클라이언트로부터 게임 커맨드를 수신하도록 준비된다. 제2클라이언트의 예로서, 클라이언트(110)(예를 들어, 클라이언트 110A 또는 110B)가 포함된다. 전환 커맨드 수신 단계 930에서, 게임 서버(125)는 또한, 제1클라이언트가 아닌 제2클라이언트로 또는 제1클라이언트 및 제2클라이언트에 상태 업데이트를 보내도록 준비된다.
선택적 단계인 인증 단계 935에서, 전환 커맨드 수신 단계 930에서 수신된 전환 커맨드가 인증된다. 이 인증은 다양한 방법으로 수행할 수 있다. 예를 들어, 일부 실시예에서, 수신된 전환 커맨드는 암호화되고, 그리고/또는 게임 세션의 무단 재할당을 방지하기 위해 구성된 인증 코드를 포함한다. 일부 실시예에서는, 게임 서버(125)는 인증된 IP 주소의 목록을 포함하고, 이 목록에 있는 IP 주소로부터의 전환 커맨드만을 받도록 구성된다. 전환 커맨드가 전송되어 온 IP 주소는, 선택에 따라서는, 핸드셰이킹 루틴을 사용하여 확인한다. 특정 예에서, 게임 서버(125)는 비디오 서버 시스템(120)의 IP(또는 MAC) 주소를 포함한 제한된 세트의 주소로부터 전환 커맨드는 받아들이나, 이 제한된 세트에 있지 않은 주소로부터의 전환 커맨드는 받지 않도록 구성된다. 인증 단계 935에서의 인증에는, 선택에 따라서는, 암호 해독 키의 사용, 또는 본 발명이 속한 기술 분야에서 공지된 다양한 메시지 인증 기법 중 하나가 포함된다.
주소 수신 단계 940에서, 게임 서버(125)는 제2클라이언트의 IP 주소(또는 다른 유형의 네트워크 주소)를 수신한다. 예를 들어, 전환 로직(180A)은 클라이언트(110B)의 IP 주소를 게임 서버(125)에 제공할 수 있으며, (전환 로직(180B)을 통해) 게임 서버(125)에 명령하여 클라이언트(110B)로 게임 커맨드를 직접 전송하도록 할 수 있다. 선택에 따라서는, 주소 수신 단계 940도 클라이언트(110)로 게임 서버(125)의 주소를 제공하는 것을 포함한. 예를 들어, 전환 로직(180A) 및/또는 전환 로직(180B)는 클라이언트(110B)로 게임 서버(125)의 IP 주소를 제공할 수 있으며, (전환 로직(180C)을 통해) 클라이언트(110B)에 명령하여 게임 커맨드를 비디오 서버 시스템(120)의 IP 주소 대신에, 또는 이에 추가하여, 게임 서버(125)의 IP 주소로 직접 전송하도록 할 수 있다. 비디오 서버 시스템(120)에서 받은 커맨드는 일반적으로, 비디오 서버 시스템(120)에 의해 식별되고, 클라이언트(110B)로부터 받은 커맨드는 일반적으로, 클라이언트(110B)의 IP 주소에 의해 식별되지만, 다른 식별자들도 사용할 수 있다. 따라서 게임 서버(125)에 제공되는 명령에는, 선택에 따라서는, 클라이언트(110B)의 IP 주소(또는 다른 유형의 네트워크 주소)가 포함된다.
주소 연계 단계 945에서, 컴퓨터 게임의 제2상황이 제2클라이언트로 전송되도록 그리고/또는 제2클라이언트로부터 받은 게임 커맨드가 게임 세션에 연계되도록, 제2클라이언트의 주소가 게임 세션에 연계된다. 게임 서버(125)에서, 전환 로직(180B)은 수신된 제2클라이언트 IP 주소를 특정 게임 세션에 연계시킨다. 예를 들어, 게임 서버(125)에서, 전환 로직(180B)은 클라이언트(110B)의 IP 주소를 수신하고 이를 요청된 게임 세션에 연계시킨다. 그 다음, 장래의 게임상황이 비디오 서버 시스템(120)의 IP 주소에 추가하여, 또는 그 대신에, 클라이언트(110B)의 IP 주소로 전송된다. 게임 세션이 한 번은 비디오 서버 시스템(120)의 IP 주소에 연계될 수 있고, 동일한 게임 세션이 다른 번에는 클라이언트(110B)의 IP 주소에 연계될 수 있다. 선택에 따라서는, 이 게임 세션은 일정 시간 동안 두 IP 주소와 연계된다. IP 주소와 게임 세션 사이를 연계하는 것은, 게임 세션이 이 IP 주소를 이용하여 게임상황을 전송하고 그리고/또는 수신된 게임 커맨드가 해당 게임 세션을 위한 것임을 식별하기 위한 것이다.
선택적 단계인 게임 커맨드 수신 단계 950에서는, 게임 커맨드가 제2클라이언트로부터 수신되고, 제2클라이언트의 주소를 이용하여 이 수신된 게임 커맨드가 특정 게임 세션을 위한 것임을 식별한다. 게임 커맨드 수신 단계 950에서 수신한 게임 커맨드는, 선택에 따라서는, 게임 커맨드 수신 단계 915에서 수신한 게임 커맨드과 동일한 형태의 게임 커맨드가다. 게임 서버(125)는, 네트워크(115)를 포함한 통신 시스템을 통해서 클라이언트(110B)로부터 게임 커맨드를 수신한다. 클라이언트(110B)는, 선택에 따라서는, 비디오 서버 시스템(120)의 IP 주소 대신에, 게임 서버(125)의 IP 주소로 게임 커맨드를 전송한다. 게임 서버(125)는, 비디오 서버 시스템(120)의 IP 주소 대신에, 주소 연계 단계 945에서서 제공받았던 클라이언트(110B)의 IP 주소로부터 게임 커맨드를 받는다. 게임 서버(125)는 클라이언트(110B)의 IP 주소를 사용하여, 게임자의 게임 세션에 상기 수신된 게임 커맨드를 연계한다. 수신된 게임 커맨드의 이러한 연계는, 게임 세션과 로그인 비디오 서버 시스템(120)을 통해 최초로 개설되었던 경우에도 이루어진다. 대안적 실시예에서는, IP 주소가 아닌 식별자(들)을 이용하여 게임 세션에, 수신된 게임 커맨드를 연계시킨다. 예를 들어, 세션 식별자가 게임 커맨드에 포함될 수 있다. 이 세션 식별자는 게임 세션이 시작될 때 또는 게임자가 로그인 할 때에 개설될 수 있다.
게임 커맨드 수신 단계 950의 일부측면은, 게임 커맨드가 클라이언트 모드에서 비디오 서버 시스템(120)을 통해 클라이언트(110B)로부터 게임 서버(125)에 의해 계속해서 수신되는 실시예에서는 선택사항이다.
전송 단계 955에서, 컴퓨터 게임의 제2상황이 제2클라이언트로 전송된다. 게임 서버(125)는, 선택에 따라서는, 게임 커맨드 수신 단계 950에서 수신한 게임 커맨드를 사용하여 컴퓨터 게임의 제2상황을 결정한다. 컴퓨터 게임의 제2상황은, 선택에 따라서는, 비디오 서버 시스템(120)의 IP 주소에 대신하여 또는 이에 추가로 클라이언트(110B)의 IP 주소로 전송된다.
대안적 실시예에서, 비디오 서버 시스템(120)은 게임이 클라이언트 모드로 실연될 때에 프록시 서버로 작동하도록 구성된다. 이 실시예에서, 컴퓨터 게임의 제2상황은 비디오 서버 시스템(120)을 통해 클라이언트(110B)로 전송된다. 프록시 서버로서, 비디오 서버 시스템(120)은 게임 커맨드과 게임상황을 적합한 목적지로 전달할 뿐이다. 이 과정은 게임 서버(125)에 대해 투명할 수 있다. 예를 들어, 게임 서버(125)는 게임 실연이 클라이언트 모드로 전환된 후, 게임 상황을 비디오 서버 시스템(120)으로 계속해서 전송할 수 있고 그리고/또는 비디오 서버 시스템(120)으로부터 커맨드를 계속해서 수신할 수 있다. 마찬가지로, 클라이언트(110B)는 게임 커맨드를 비디오 서버 시스템(120)으로 계속해서 전송할 수 있고 그리고/또는 비디오 서버 시스템(120)으로부터 게임상황을 계속 수신할 수 있다. 그러나, 다른 곳에서 설명한 것과 같이, 클라이언트 모드에서는, 클라이언트(110B)에 표시되는 게임 비디오의 대부분은 클라이언트(110B)에서 렌더링된다. 이 실시예에서, 비디오 서버 시스템(120)은 수신한 게임 커맨드과 게임상황을 다시 주소 지정하고 이들을 적합한 목적지로 전송하도록 구성된다. 모드가 클라이언트 모드에서 스트리밍 모드로 역으로 변경되는 경우에, 비디오 서버 시스템(120)은 스트리밍 비디오를 다시 생성하여 제공하기 시작하고 수신된 게임 커맨드를 이용하여 스트리밍을 렌더링하는 데 사용되는 게임상황의 국지적(로컬) 사본을 업데이트한다.
위의 여러 예에서 제1클라이언트는 로컬 클라이언트(예를 들어, 비디오 서버 시스템(120))로 설명하고, 제2클라이언트는 원격지 클라이언트(예를 들어, 클라이언트(110B))로 설명하였다. 그러나, 일부 실시예에서는, 제1클라이언트가 클라이언트 110B이고 제2클라이언트가 비디오 서버 시스템(120)이다. 따라서, 도 9에 나타낸 전환은, 스트리밍 모드로부터 클라이언트 모드로 또는 클라이언트 모드로부터 스트리밍 모드의 전환으로서 수행될 수 있다. 비디오 서버 시스템(120)은, 선택에 따라서는, 클라이언트(110B)를 인증하고 그리고/또는 클라이언트(110B)가 특정 비디오 게임에 대해서 클라이언트 모드롤 동작할 수 있는지를 판단하도록 구성된다.
일부 실시예에서, 클라이언트 모드에서 스트리밍 모드로 전환될 때에, 게임 서버(125)는 네트워크(115)를 통해, 게임 커맨드 수신 단계 915에서, 클라이언트(110B)로부터 게임 커맨드를 받는다. 게임 서버(125)는 또한, 상황 전송 단계 925에서, 네트워크(115)를 통해 클라이언트(110B)로 게임상황을 보낸다. 전환 커맨드 수신 단계 930에서, 게임 서버(125)는 컴퓨터 게임의 클라이언트 모드로부터 스트리밍 모드로 전환하는 커맨드를 받게 된다. 통신은, 여러 단계(즉, 전환 커맨드 수신 단계 930, 주소 수신 단계 940, 인증 단계 935, 주소 연계 단계 945)의 수행시에 클라이언트(110B)로부터 비디오 서버 시스템(120)으로 전환된다. 선택적 단계인 인증 단계 935에서는, 클라이언트 모드에서 스트리밍 모드로의 전환 커맨드가 인증된다. 스트리밍 모드로의 전환시에, 게임 서버(125)는 게임 커맨드를 비디오 서버 시스템(120)으로부터 받는다(게임 커맨드 수신 단계 950). 이 수신된 게임 커맨드를 기초로제2게임상황을 결정할 수 있다. 게임 서버(125)는 상황 전송 단계 955에서, 비디오 서버 시스템(120)으로 제2게임상황을 전송한다.
일부 실시예에서, 게임 서버(125)와 클라이언트(110B) 또는 비디오 서버 시스템(120) 간의 통신은, 게임 세션이 스트리밍 모드와 클라이언트 모드 사이에서 반복적으로 앞뒤로 전환됨에 따라, 비디오 서버 시스템(120)으로부터 클라이언트(110B)로 그리고 클라이언트(110B)로부터 비디오 서버 시스템(120)으로 앞뒤로 전환될 수 있다. 따라서, 클라이언트(110B)는 게임 세션 동안에, 비디오 서버 시스템(120)과 반복적으로 역할을 바꿀 수 있다. 마찬가지로, 비디오 서버 시스템(120)은 게임 세션 동안에, 게임 서버(125)의 클라이언트로서, 클라이언트(110B)와 반복적으로 역할을 바꿀 수 있다.
본 명세서에서 여러 실시예를 구체적으로 도시 및/또는 설명하였다. 그러나, 이에 대한 수정 및 변형은, 본 발명의 사상과 의도된 범위를 벗어나지 않고, 상술한 설명에 의해서 그리고 첨부한 청구범위의 범위 내에 포함됨을 이해할 것이다. 예를 들어, 여기서 논의한 시스템과 방법은 게임 이외의 컴퓨터 프로그램에도 적용할 수 있다. 이러한 컴퓨터 프로그램의 다른 유형으로는, 그래픽 프로그램, 스프레드시트, 워드프로세서, 데이터베이스 프로그램, 회계 프로그램, 프로젝트 관리 프로그램, 비디오 편집 프로그램, 영상 편집 프로그램, 웹사이트 개발 프로그램, 재고관리 프로그램, 전자 메일 프로그램, 파일 관리 프로그램, 문서 관리/보기 프로그램, 도면작성/CAD 프로그램, 프리젠테이션 프로그램, 및/또는 그 밖의 것을 들 수 있다. 여기서는 서버측 모드와 클라이언트측 모드를 게임 전달에 있어서의 별도의 모드로서 설명하였지만, 일부 실시예에서 이들 모드가 결합될 수 있다. 예를 들어, 게임자에게 제공되는 비디오의 일부는 비디오 서버 시스템(120)으로부터 스트리밍할 수 있고, 이 비디오의 다른 부분은 클라이언트(110B)에서 생성할 수 있다. 게임의 다양한 실연 모드에 있어서, 국지적 위치에서 생성된 비디오에 대한 스트리밍된 부분(verse)의 일부 및/또는 비율은 변할 수 있다. 예를 들어, 어떤 게임 이벤트는 다른 게임 이벤트보다도 더 많은 스트리밍된 비디오를 포함할 수 있다.
여기서 설명된 실시예들은 본 발명을 예시하는 것들이다. 본 발명의 이러한 실시예들을 도면을 참조하여 설명하였는바, 설명된 방법 및/또는 특정 구조의 다양한 수정 또는 적용은 발명이 속한 기술 분야에서 통상의 지식을 사람들에게 자명해질 수 있다. 본 발명의 개시 내용에 의존하는 이러한 모든 수정, 적용, 또는 변형과, 이를 통해 본 발명의 개시 내용이 기술을 진보시키는 것은, 본 발명의 사상 및 범위 내에 있는 것으로 간주된다. 따라서 본 발명이 설명된 실시예에만 한정되는 것이 전혀 아님을 이해할 수 있는 바, 본 설명 및 도면을 제한적인 의미로 간주해서는 안된다.
여기서 언급한 컴퓨팅 시스템은 집적 회로, 마이크로 프로세서, 개인용 컴퓨터, 서버, 분산 컴퓨팅 시스템, 통신 장치, 네트워크 장치, 또는 그 밖의 것, 그리고 이들의 조합을 포함할 수 있다. 컴퓨팅 시스템은 또한, 랜덤 액세스 메모리(RAM) 등의 휘발성 및/또는 비휘발성 메모리, 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 자기 매체, 광 매체, 나노 매체, 하드 드라이브, 컴팩트 디스크, 디지털 다용도 디스크(DVD), 및/또는 그 밖에, 가령 데이터베이스에 아날로그 또는 디지털 정보를 저장하도록 구성된 장치를 포함하는 하나 이상의 컴퓨터 판독 가능한 매체들을 포함할 수 있다. 앞에서 나타낸 로직의 다양한 예로서는, 하드웨어, 펌웨어, 또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어, 또는 이들의 조합을 들 수 있다. 여기서 사용한 컴퓨터 판독 가능 매체에서 종이와 반송파(carrier wave)는 명시적으로 제외한다. 여기서 설명한 본 방법의 컴퓨터에 의한 실현 단계는 컴퓨터 판독 가능한 매체에 저장된 명령어 세트를 포함할 수 있다. 이들 명령어가 실행되면 컴퓨팅 시스템이 각 단계를 수행할 수 있다. 프로그램 소프트웨어의 명령어에 관련된 특정 기능을 수행하도록 프로그램된 컴퓨팅 시스템은, 이러한 특정 기능들을 수행하기 위한 특수 목적 컴퓨팅 시스템이다. 이들 특정 기능을 수행시에 특수 목적 컴퓨팅 시스템에 의해 취급되는 데이터는 컴퓨팅 시스템의 버퍼에 최소한 전자식으로 저장되어, 이 특수 목적 컴퓨팅 시스템을 어느 한 상태에서 다음 상태로(이때 각 상태마다 저장된 데이터는 변경된다) 물리적으로 변화시킨다.

Claims (79)

  1. 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법으로서, 상기 방법은,
    게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 상기 비디오 서버에서 컴퓨터 게임의 게임 로직을 실행하는 단계,
    상기 비디오 서버로부터 통신 네트워크를 통해 원격지 클라이언트로 상기 비디오 스트림을 제공하는 단계, 및
    상기 비디오 서버에서, 상기 게임상황을 기초로 게임 비디오를 생성하도록 구성된 실행가능 게임 코드를, 상기 비디오 스트림과 병행적으로 상기 원격지 클라이언트에 제공하는 단계를 포함하고,
    상기 비디오 서버에서 실행된 상기 게임 로직의 출력은, 상기 원격지 클라이언트의 게임자로부터 수신된 게임 커맨드, 상기 게임상황, 및 상기 게임자의 시점에 대응하여 렌더링된 상기 비디오 스트림을 포함하며,
    상기 비디오 서버와 상기 게임 서버 중 적어도 하나는 전환 로직을 포함하고,
    상기 전환 로직은, 상기 실행가능 게임 코드의 부분상황만이 다운로드된 이후에, 다운로드된 실행 가능 게임 컨텐트의 실행을 시작하도록 구성되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  2. 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하기 위한 방법으로서, 상기 방법은,
    게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 상기 비디오 서버에서 게임 로직을 실행하는 단계,
    상기 비디오 서버로부터 통신 네트워크를 통해 클라이언트로 비디오 스트림을 제공하는 단계, 및
    상기 비디오 서버가 상기 게임상황을 기초로 비디오를 생성하도록 구성된 실행가능 게임 코드를 비디오 스트림과 병행적으로 클라이언트에 제공하는 단계를 포함하고,
    상기 비디오 서버에서 실행된 상기 게임 로직의 출력은, 상기 클라이언트의 게임자로부터 수신된 게임 커맨드, 상기 게임상황, 및 상기 게임자의 시점에 대응하여 렌더링된 상기 비디오 스트림을 포함하며,
    상기 비디오 서버와 상기 게임 서버 중 적어도 하나는 전환 로직을 포함하고,
    상기 전환 로직은, 상기 실행가능 게임 코드의 부분상황만이 다운로드된 이후에, 다운로드된 실행 가능 게임 컨텐트의 실행을 시작하도록 구성되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 비디오 서버는 서로 다른 복수의 비디오 게임을 위한 비디오 스트림을 제공하도록 구성되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  4. 제1항 또는 제2항에 있어서, 상기 게임상황은 상기 게임 서버에 유지되는 전체 게임상황의 부분상황인 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  5. 제1항 또는 제2항에 있어서, 상기 비디오 스트림이 제공되는 상기 통신 네트워크는 인터넷을 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  6. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드는 상기 비디오 스트림이 제공되는 상기 통신 네트워크는 다른 통신 네트워크를 통해 상기 클라이언트에 제공되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  7. 제6항에 있어서, 상기 다른 통신 네트워크는 인터넷과 전화망을 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  8. 제6항에 있어서, 상기 다른 통신 네트워크는 공통된 일부 세그먼트를 갖는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  9. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드가 제공되는 속도(단위: 바이트/초)는 상기 비디오 스트림이 전달되는 상기 통신 네트워크의 대역폭에 의존하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  10. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드가 제공되는 속도(단위: 바이트/초)는 상기 비디오 스트림이 전송되는 속도를 일정하게 유지시키는 데 필요한 대역폭에 의존하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  11. 제1항 또는 제2항에 있어서, 상기 비디오 서버로부터 상기 클라이언트로 전송되는 데이터 패킷은 상기 비디오 스트림의 데이터 및 상기 실행가능 게임 코드의 데이터를 모두 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  12. 제1항 또는 제2항에 있어서, 상기 게임 서버가 상기 비디오 서버로부터 상기 클라이언트로 상기 비디오 스트림이 제공되는 스트리밍 모드를 상기 실행가능 게임 코드가 상기 클라이언트에서 상기 컴퓨터 게임의 비디오를 생성하기 위해 사용되는 클라이언트 모드로 전환하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  13. 제1항 또는 제2항에 있어서, 상기 비디오 서버는 비디오 스트림을 생성하고 상기 비디오 스트림은 상기 비디오 서버로부터 상기 클라이언트에 의해서 일정 시간 동안 수신되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  14. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드는 상기 비디오 서버에 의해 스트리밍 모드와 클라이언트 모드 둘 다에서 상기 클라이언트로 다운로드되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  15. 제1항 또는 제2항에 있어서,
    상기 비디오 서버가 상기 클라이언트로부터 게임 커맨드를 수신하는 단계,
    상기 비디오 서버가 수신된 상기 게임 커맨드를 상기 게임 서버로 전달하는 단계, 및
    상기 비디오 서버가 수신된 상기 게임 커맨드를 사용하여 업데이트된 게임 상황을 상기 게임 서버로부터 수신하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  16. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 클라이언트에 표시되는 상기 비디오 스트림이 전송되는 속도를 일정하게 유지하면서 상기 실행가능 게임 코드가 상기 클라이언트로 다운로드될 수 있는 속도를 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  17. 제16항에 있어서, 상기 실행가능 게임 코드가 상기 클라이언트로 다운로드될 수 있는 속도는 상기 비디오 스트림이 상기 클라이언트로 제공되는 속도에 의존하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  18. 제16항에 있어서, 상기 실행가능 게임 코드가 상기 클라이언트로 다운로드 될 수 있는 속도는 시간이 지남에 따라 변화되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  19. 제16항에 있어서, 상기 실행가능 게임 코드가 상기 클라이언트로 다운로드되는 속도는 결정된 속도보다 작거나 같은 속도인 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  20. 제16항에 있어서, 상기 실행가능 게임 코드 및 상기 비디오 스트림이 상기 비디오 서버에 의해 병행적으로 상기 클라이언트에 제공되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  21. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 게임상황에 응답하여 상기 실행가능 게임 코드를 상기 클라이언트로 제공하는 순서를 수정하는 것을 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  22. 제21항에 있어서, 상기 순서의 수정은 상기 게임상황의 도달 확률에 의존하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  23. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 실행가능 게임 코드의 실행가능 부분상황이 상기 클라이언트로 다운로드되었는지를 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  24. 제23항에 있어서, 상기 실행가능 부분상황은 게임의 현재 상황에 의존하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  25. 제1항 또는 제2항에 있어서, 상기 비디오 서버로부터 상기 클라이언트로 상기 게임상황을 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  26. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 클라이언트에서 실행가능 부분상황의 실행을 시작하고 상기 실행된 부분상황 및 상기 게임상황을 사용하여 상기 컴퓨터 게임의 비디오를 생성하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  27. 제26항에 있어서, 상기 실행가능 부분상황은 상기 실행가능 게임 코드의 모두를 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  28. 제26항에 있어서, 상기 실행가능 부분상황이 상기 클라이언트로 제공된 후에, 상기 비디오 서버가 상기 비디오 서버로부터 상기 클라이언트로의 상기 게임 비디오의 제공을 종료시키는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  29. 제1항 또는 제2항에 있어서, 상기 클라이언트에서 생성된 컴퓨터 게임 비디오와 상기 비디오 서버로부터 수신된 게임 비디오가 동일한 브라우저 창에 표시되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  30. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드의 다른 부분이 상기 클라이언트로 다운로드되는 동안에 상기 비디오 서버에 의해 상기 클라이언트에서 실행가능 부분상황의 실행을 계속하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  31. 제1항 또는 제2항에 있어서, 상기 비디오 서버가, 상기 비디오 스트림이 상기 클라이언트로 제공되는 속도에 의존하여, 상기 실행가능 게임 코드가 상기 클라이언트로 제공되는 다운로드 속도를 계산하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  32. 제31항에 있어서, 상기 다운로드 속도를 계산하는 단계는 상기 비디오 서버가 상기 클라이언트로의 통신 채널의 대역폭을 모니터링하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  33. 제1항 또는 제2항에 있어서, 상기 게임 서버가, 서버측 게임 실행 모드로부터 상기 게임상황을 기초로 상기 비디오 스트림을 렌더링하기 위하여 상기 게임 로직이 상기 클라이언트에서 실행되는 클라이언트측 게임 실행 모드로의 전환을 시작하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  34. 제33항에 있어서, 상기 클라이언트측 게임 실행 모드로의 전환이 시작된 후, 상기 비디오 서버가 상기 실행가능 게임 코드를 상기 클라이언트로 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  35. 제33항에 있어서, 상기 클라이언트측 게임 실행 모드로의 전환이 시작된 후, 상기 실행가능 게임 코드를 상기 클라이언트로 제공하는 단계는 상기 실행가능 게임 코드의 다운로드 순서에 따라 상기 비디오 서버에 의해 수행되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  36. 제33항에 있어서, 상기 클라이언트측 게임 실행 모드로의 전환이 시작된 후, 비디오 서버가 상기 게임상황에 응답하여 상기 실행가능 게임 코드의 다운로드 순서를 동적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  37. 제1항 또는 제2항에 있어서, 상기 비디오 서버로부터 상기 클라이언트로 상기 비디오 스트림의 기반이 되는 상기 게임상황의 사본을 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  38. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 클라이언트에서 상기 실행가능 게임 코드를 실행하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  39. 제1항 또는 제2항에 있어서, 상기 실행가능 게임 코드는 상기 비디오 서버에 의해 상기 실행가능 게임 코드의 부분상황만이 상기 클라이언트로 다운로드된 때에 상기 클라이언트에서 실행되는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  40. 제1항 또는 제2항에 있어서, 상기 비디오 서버가, 상기 비디오 서버에서 생성된 상기 비디오 스트림을 상기 클라이언트에서 표시하는 것을 상기 실행가능 게임 코드에 의해 생성된 상기 비디오 스트림을 상기 클라이언트에서 표시하는 것으로 전환하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  41. 제1항 또는 제2항에 있어서, 상기 게임상황을 상기 비디오 서버에 제공하지 않거나 또는 제공하는 것에 추가하여, 상기 비디오 스트림의 기반이 되는 상기 게임상황을 상기 클라이언트로 전송하는 요청을 상기 게임 서버에 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  42. 제1항 또는 제2항에 있어서, 상기 비디오 서버가 상기 클라이언트의 IP 주소를 상기 게임 서버에 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  43. 제1항 또는 제2항에 있어서, 상기 비디오 서버로부터 상기 클라이언트로 상기 비디오 스트림의 제공을 종료한 후, 상기 비디오 서버가 상기 실행가능 게임 코드를 상기 클라이언트로 계속해서 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임을 제공하는 방법.
  44. 게임 시스템에 있어서, 상기 게임 시스템은:
    비디오 소스-상기 비디오 소스는 상기 비디오 소스로부터 지리적으로 원격지에 있는 제1클라이언트로 스트리밍 게임 비디오를 제공하도록 구성되고, 상기 스트리밍 게임 비디오는 상기 비디오 소스에서 생성되며 컴퓨터 프로그램의 현재 상황에 기반함-;
    상기 스트리밍 게임 비디오가 상기 비디오 소스로부터 상기 제1클라이언트로 제공되는 동안에, 코드 소스로부터 네트워크를 통해 상기 제1클라이언트로, 상기 컴퓨터 프로그램의 실행가능 게임 코드를 다운로드하도록 구성된 다운로드 관리자;
    게임상황에 기초하여 비디오 스트림을 렌더링하기 위한 게임 로직; 및
    상기 실행가능 게임 코드의 부분상황만이 다운로드된 이후에, 다운로드된 실행 가능 게임 컨텐트의 실행을 시작하도록 구성되는 전환 로직을 포함하고,
    상기 게임 시스템의 상기 게임 로직의 출력은, 상기 제1클라이언트의 게임자로부터 수신된 게임 커맨드, 상기 게임상황, 및 상기 게임자의 시점에 대응하여 렌더링된 상기 비디오 스트림을 포함하는 것을 특징으로 하는 게임 시스템.
  45. 제44항에 있어서, 상기 비디오 소스는 그래픽 처리 장치를 사용하여 상기 스트리밍 게임 비디오를 생성하도록 구성되는 것을 특징으로 하는 게임 시스템.
  46. 제44항에 있어서, 상기 컴퓨터 프로그램의 현재 상황은 상기 제1클라이언트와 제2클라이언트 중 적어도 하나로부터 수신한 커맨드에 의존하는 것을 특징으로 하는 게임 시스템.
  47. 제44항에 있어서, 상기 컴퓨터 프로그램은 컴퓨터 게임과 비디오 게임 중 적어도 어느 하나를 포함하고, 상기 스트리밍 게임 비디오는 비디오 소스에서 3차원 게임 환경으로부터 렌더링되는 것을 특징으로 하는 게임 시스템.
  48. 제44항에 있어서, 상기 다운로드 관리자는 상기 제1클라이언트에 상기 실행가능 게임 코드를 제공하는 것보다, 상기 제1클라이언트에 상기 스트리밍 게임 비디오를 제공하는 데 큰 우선순위를 부여하도록 구성되는 것을 특징으로 하는 게임 시스템.
  49. 제44항에 있어서, 상기 다운로드 관리자는, 상기 실행가능 게임 코드의 부분이 상기 제1클라이언트로 다운로드되기 전에 상기 제1클라이언트에서 필요하게 될 확률이 있을 때에 스트리밍 상기 게임 비디오가 다운로드되는 속도가 감소될 수 있도록, 상기 스트리밍 게임 비디오의 특징을 변경하도록 구성되는 것을 특징으로 하는 게임 시스템.
  50. 제49항에 있어서, 상기 스트리밍 게임 비디오의 변경된 상기 특징은 프레임 속도이거나, 또는 확률이 1%, 2%, 또는 5%보다 큰 것을 특징으로 하는 게임 시스템.
  51. 제44항에 있어서, 상기 다운로드 관리자는 상기 코드 소스와 상기 제1클라이언트 사이의 통신 채널의 대역폭에 의존하는 비트 속도로 상기 실행가능 게임 코드를 제공하도록 구성되는 것을 특징으로 하는 게임 시스템.
  52. 제51항에 있어서, 상기 비트 속도는 또한 상기 스트리밍 게임 비디오가 제공되는 비트 속도에 의존하는 것을 특징으로 하는 게임 시스템.
  53. 제44항에 있어서, 상기 다운로드 관리자는 상기 스트리밍 게임 비디오가 상기 제1클라이언트에 표시되는 상기 스트리밍 게임 비디오의 전송 속도를 일정하게 유지하도록 제공되는 속도에 의해 제한된 속도로 상기 실행가능 게임 코드를 상기 제1클라이언트로 다운로드하도록 구성되는 것을 특징으로 하는 게임 시스템.
  54. 제44항에 있어서, 상기 다운로드 관리자는, 상기 컴퓨터 프로그램의 현재 상황으로부터 도달되는 상기 컴퓨터 프로그램의 다른 상황들의 확률의 결정을 기초로, 그리고 이들 다른 상황들에 대응하는 필요한 리소스에 대한 지식을 기초로, 다운로드 순서를 동적으로 수정하도록 구성되는 것을 특징으로 하는 게임 시스템.
  55. 제54항에 있어서, 상기 다운로드 순서의 동적 수정은 서버측 모드 또는 클라이언트측 모드 중 하나에서 수행될 수 있는 것을 특징으로 하는 게임 시스템.
  56. 제44항에 있어서, 확률 트리 데이터베이스를 저장하고, 상기 다운로드 관리자와 통신하는 컴퓨터 판독 가능 매체를 추가로 포함하고,
    상기 다운로드 관리자는 상기 확률 트리 데이터베이스에 질의(쿼리)하여 상기 컴퓨터 프로그램의 현재 상황을 기초로 상기 컴퓨터 프로그램의 다른 상황의 확률을 결정하도록 추가로 구성되는 것을 특징으로 하는 게임 시스템.
  57. 제56항에 있어서, 상기 확률 트리 데이터베이스를 유지하도록 구성된 통계 엔진을 추가로 포함하는 것을 특징으로 하는 게임 시스템.
  58. 제44항에 있어서, 상기 비디오 소스는, 상기 제1클라이언트의 시점에 기초하여 제1스트리밍 게임 비디오를 생성하고 제2클라이언트의 시점에 기초하여 제2스트리밍 게임 비디오를 생성하며, 상기 제1스트리밍 게임 비디오와 상기 제2스트리밍 게임 비디오를 각각 상기 제1클라이언트와 상기 제2클라이언트로 제공하도록 구성되는 것을 특징으로 하는 게임 시스템.
  59. 제44항에 있어서, 상기 컴퓨터 프로그램의 현재 상황은 상기 제1클라이언트 및 제2클라이언트로부터 수신한 커맨드에 의존하는 것을 특징으로 하는 게임 시스템.
  60. 제45항에 있어서, 상기 그래픽 처리 장치는 두 개 이상의 비디오 스트림을 병행적으로 생성하도록 구성되며, 상기 비디오 소스는 상기 두 개 이상의 비디오 스트림을 서로 다른 클라이언트들로 전송하도록 구성되는 것을 특징으로 하는 게임 시스템.
  61. 제44항에 있어서, 상기 컴퓨터 프로그램의 현재 상황은 상기 제1클라이언트로부터 수신한 제1 커맨드에 의존하는 것을 특징으로 하는 게임 시스템.
  62. 제44항에 있어서, 상기 스트리밍 게임 비디오가 상기 제1클라이언트로 제공되는 동안에 상기 컴퓨터 프로그램의 현재 상황이 상기 제1클라이언트로 제공되는 것을 특징으로 하는 게임 시스템.
  63. 제44항에 있어서, 상기 다운로드 관리자는, 상기 코드 소스와 상기 제1클라이언트 사이의 통신 채널의 대역폭에 의존하는 비트 속도로 상기 실행가능 게임 코드를 제공하도록 구성되고, 상기 제1클라이언트는 또한 스트리밍 게임 비디오 내의 데이터 양에 의존하는 것을 특징으로 하는 게임 시스템.
  64. 제44항에 있어서, 상기 제1클라이언트에 상기 컴퓨터 프로그램의 상황을 제공하도록 구성된 상황 소스를 더 포함하는 것을 특징으로 하는 게임 시스템.
  65. 제64항에 있어서, 상기 상황 소스는 상기 제1클라이언트에 저장된 상기 컴퓨터 프로그램의 상황 사본을 업데이트하도록 추가 구성되는 것을 특징으로 하는 게임 시스템.
  66. 제64항에 있어서, 상기 상황 소스는 게임 서버로부터 수신한 데이터를 기초로 하여,상기 상황 소스에 저장된 상기 컴퓨터 프로그램의 상황 사본을 업데이트하도록 추가 구성되는 것을 특징으로 하는 게임 시스템.
  67. 제44항에 있어서, 상기 전환 로직은 상기 실행가능 게임 코드의 실행가능 부분상황이 상기 제1클라이언트로 언제 제공되었는지를 결정하도록 구성되는 것을 특징으로 하는 게임 시스템.
  68. 제44항에 있어서, 상기 다운로드 관리자는 실행가능 부분상황의 실행 개시 후에 상기 컴퓨터 프로그램의 상기 실행가능 게임 코드를 상기 제1클라이언트로 계속해서 제공하도록 구성되는 것을 특징으로 하는 게임 시스템.
  69. 제44항에 있어서, 상기 전환 로직은 상기 비디오 소스에서의 상기 컴퓨터 프로그램의 실행과 상기 제1클라이언트에서의 상기 실행가능 게임 코드의 실행을 동기화하도록 구성되는 것을 특징으로 하는 게임 시스템.
  70. 제44항에 있어서, 상기 전환 로직은 상기 제1클라이언트에서 상기 실행가능 게임 코드의 실행을 개시하도록 구성되는 것을 특징으로 하는 게임 시스템.
  71. 제44항에 있어서, 상기 전환 로직은 게임 서버로 상기 제1클라이언트의 IP 주소를 제공하도록 구성되며, 상기 비디오 소스는 상기 게임 서버로부터 상기 컴퓨터 프로그램의 상황을 수신하도록 구성되는 것을 특징으로 하는 게임 시스템.
  72. 제44항에 있어서, 상기 제1클라이언트가 상기 비디오 스트림이 수신되는 속도를 일정하게 유지하면서, 상기 실행가능 게임 코드와 스트리밍 게임 비디오를 병행적으로 수신할 능력이 있는지를 판단하도록 구성된 자격부여 로직을 더 포함하는 것을 특징으로 하는 게임 시스템.
  73. 제44항에 있어서, 상기 스트리밍 게임 비디오 및 상기 실행가능 게임 코드가 병행적으로 상기 제1클라이언트로 제공되는 총 속도는, 상기 스트리밍 게임 비디오를 통과시키는 통신 채널의 대역폭보다 큰 것을 특징으로 하는 게임 시스템.
  74. 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템을 제공하기 위한 방법으로서, 상기 방법은,
    게임상황을 기초로 비디오 스트림을 렌더링하기 위하여 상기 비디오 서버 또는 제1클라이언트에서 컴퓨터 게임의 게임 로직을 실행하는 단계,
    상기 비디오 서버 또는 상기 제1클라이언트로부터 통신 네트워크를 통해 원격지 제2클라이언트로 상기 비디오 스트림을 제공하는 단계, 및
    상기 비디오 서버가, 상기 게임상황을 기초로 게임 비디오를 생성하도록 구성된 실행가능 게임 코드를 상기 비디오 스트림과 병행적으로 상기 제1클라이언트로부터 상기 제2클라이언트로 제공하는 단계를 포함하고,
    상기 비디오 서버 또는 상기 제1클라이언트에서 실행된 상기 게임 로직의 출력은 상기 원격지 제2클라이언트의 게임자로부터 수신된 게임 커맨드, 상기 게임상황, 및 상기 게임자의 시점에 대응하여 렌더링된 상기 비디오 스트림을 포함하며,
    상기 비디오 서버와 상기 게임 서버 중 적어도 하나는 전환 로직을 포함하고,
    상기 전환 로직은, 상기 실행가능 게임 코드의 부분상황만이 다운로드된 이후에, 다운로드된 실행 가능 게임 컨텐트의 실행을 시작하도록 구성되는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하기 위한 방법.
  75. 제74항에 있어서, 상기 비디오 서버에 의해 상기 제2클라이언트에 대한 상기 제1클라이언트의 접근성을 판단하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하는 방법.
  76. 제74항에 있어서, 상기 비디오 서버에 의해 상기 제1클라이언트와 상기 제2클라이언트 사이의 통신 채널을 테스팅 또는 모니터링하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하는 방법.
  77. 제74항에 있어서, 상기 제1클라이언트로부터 상기 제2클라이언트로의 상기 실행가능 게임 코드의 전송을 관리하기 위해, 상기 제1클라이언트와 상기 제2클라이언트 모두로부터 떨어져 있는 비디오 서버에서 다운로드 관리자를 사용하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하는 방법.
  78. 제74항에 있어서, 상기 게임 로직은 상기 비디오 서버에 의하여 상기 제1클라이언트에서 실행되는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하는 방법.
  79. 제74항에 있어서, 상기 실행가능 게임 코드는 상기 제1클라이언트를 포함한 복수의 원격지 클라이언트로부터 상기 제2클라이언트로 피어-투-피어 방식으로 제공되는 것을 특징으로 하는 컴퓨터 게임 시스템을 제공하는 방법.
KR1020187003968A 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템 KR102003007B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US38247010P 2010-09-13 2010-09-13
US61/382,470 2010-09-13
US40789810P 2010-10-28 2010-10-28
US61/407,898 2010-10-28
US42116310P 2010-12-08 2010-12-08
US42117510P 2010-12-08 2010-12-08
US61/421,175 2010-12-08
US61/421,163 2010-12-08
US13/231,790 US8840476B2 (en) 2008-12-15 2011-09-13 Dual-mode program execution
PCT/US2011/051468 WO2012037170A1 (en) 2010-09-13 2011-09-13 Dual mode program execution and loading
US13/231,790 2011-09-13

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137008010A Division KR20130090898A (ko) 2010-09-13 2011-09-13 2중 모드 프로그램 실행 및 로딩

Publications (2)

Publication Number Publication Date
KR20180018845A KR20180018845A (ko) 2018-02-21
KR102003007B1 true KR102003007B1 (ko) 2019-07-23

Family

ID=45831945

Family Applications (6)

Application Number Title Priority Date Filing Date
KR1020177033252A KR101956639B1 (ko) 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템
KR1020187003968A KR102003007B1 (ko) 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템
KR1020137008010A KR20130090898A (ko) 2010-09-13 2011-09-13 2중 모드 프로그램 실행 및 로딩
KR1020177033254A KR20170129296A (ko) 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하기 위한 방법 및 시스템
KR1020177033253A KR20170129967A (ko) 2010-09-13 2011-09-13 게임 서버를 포함하는 컴퓨터 게임 시스템에서 통신 네트워크를 통해 클라이언트들 간에 게임 세션을 이송하는 방법
KR1020177033255A KR20170129297A (ko) 2010-09-13 2011-09-13 게임 서버

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177033252A KR101956639B1 (ko) 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020137008010A KR20130090898A (ko) 2010-09-13 2011-09-13 2중 모드 프로그램 실행 및 로딩
KR1020177033254A KR20170129296A (ko) 2010-09-13 2011-09-13 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하기 위한 방법 및 시스템
KR1020177033253A KR20170129967A (ko) 2010-09-13 2011-09-13 게임 서버를 포함하는 컴퓨터 게임 시스템에서 통신 네트워크를 통해 클라이언트들 간에 게임 세션을 이송하는 방법
KR1020177033255A KR20170129297A (ko) 2010-09-13 2011-09-13 게임 서버

Country Status (4)

Country Link
US (1) US8840476B2 (ko)
KR (6) KR101956639B1 (ko)
CN (1) CN103442774B (ko)
WO (1) WO2012037170A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090118019A1 (en) * 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US8549574B2 (en) 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US9077991B2 (en) * 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US9314691B2 (en) * 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
NZ561570A (en) * 2005-03-16 2010-02-26 Lucasfilm Entertainment Compan Three-dimensional motion capture
US9633379B1 (en) * 2009-06-01 2017-04-25 Sony Interactive Entertainment America Llc Qualified video delivery advertisement
US9313083B2 (en) * 2011-12-09 2016-04-12 Empire Technology Development Llc Predictive caching of game content data
US9392337B2 (en) * 2011-12-22 2016-07-12 Cisco Technology, Inc. Wireless TCP link state monitoring based video content adaptation and data delivery
US9751011B2 (en) 2012-05-25 2017-09-05 Electronics Arts, Inc. Systems and methods for a unified game experience in a multiplayer game
US9258353B2 (en) 2012-10-23 2016-02-09 Microsoft Technology Licensing, Llc Multiple buffering orders for digital content item
US9300742B2 (en) * 2012-10-23 2016-03-29 Microsoft Technology Licensing, Inc. Buffer ordering based on content access tracking
CN103561062B (zh) * 2013-10-18 2017-04-05 北京奇虎科技有限公司 应用执行方法、设备和***
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9578074B2 (en) * 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US20150133214A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Video encoding based on areas of interest
WO2015070231A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Multiple stream content presentation
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9374552B2 (en) * 2013-11-11 2016-06-21 Amazon Technologies, Inc. Streaming game server video recorder
CN104866499A (zh) * 2014-02-24 2015-08-26 腾讯科技(深圳)有限公司 一种网页的加载方法及装置
US9785427B2 (en) 2014-09-05 2017-10-10 Oracle International Corporation Orchestration of software applications upgrade using checkpoints
US9740474B2 (en) 2014-10-29 2017-08-22 Oracle International Corporation Orchestration of software applications upgrade using automatic hang detection
US9753717B2 (en) * 2014-11-06 2017-09-05 Oracle International Corporation Timing report framework for distributed software upgrades
US9880828B2 (en) 2014-11-07 2018-01-30 Oracle International Corporation Notifications framework for distributed software upgrades
US20160259453A1 (en) 2015-03-06 2016-09-08 Sony Computer Entertainment America Llc Dynamic adjustment of cloud game data streams to output device and network quality
KR20160112143A (ko) 2015-03-18 2016-09-28 삼성전자주식회사 전자 장치 및 전자 장치에서의 디스플레이 패널의 화면 업데이트 방법
CN108136259B (zh) 2015-07-24 2021-08-20 格瑞拉伯克斯有限公司 用于流式传输和用于再现应用的方法和电信网络
US10135892B2 (en) * 2015-07-28 2018-11-20 Google Llc Independent control of interactive streaming media
US10315108B2 (en) * 2015-08-19 2019-06-11 Sony Interactive Entertainment America Llc Local application quick start with cloud transitioning
WO2017108067A1 (de) * 2015-12-21 2017-06-29 Gorillabox Gmbh I. G. Verfahren zum abspielen von applikationen aus einer cloud sowie telekommunikationsnetz zum streamen und zur wiedergabe von anwendungen (apps) über ein bestimmtes telekommunikationssystem sowie verwendung eines telekommunikationsnetzes zum streamen und zur wiedergabe von anwendungen (apps)
WO2018041324A1 (de) 2016-09-03 2018-03-08 Gorillabox Gmbh Verfahren zum streamen und zur wiedergabe von anwendungen über ein bestimmtes telekommunikationssystem, telekommunikationsnetz zum durchführen dieses verfahrens und verwendung eines derartigen telekommunikationsnetzes
KR102004970B1 (ko) * 2016-11-17 2019-07-30 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치
RU2651251C1 (ru) 2017-04-28 2018-04-18 АО "Лаборатория Касперского" Способ загрузки правил фильтрации на мобильное устройство
EP3396927B1 (en) * 2017-04-28 2019-09-11 AO Kaspersky Lab System and method of downloading filtering rules onto a mobile device
US10372298B2 (en) 2017-09-29 2019-08-06 Apple Inc. User interface for multi-user communication session
DK201870364A1 (en) 2018-05-07 2019-12-03 Apple Inc. MULTI-PARTICIPANT LIVE COMMUNICATION USER INTERFACE
CN109040776B (zh) * 2018-07-27 2021-11-05 联达时代(南京)智能科技有限公司 用于播放内容的识别方法及装置
US11128792B2 (en) 2018-09-28 2021-09-21 Apple Inc. Capturing and displaying images with multiple focal planes
US10974153B2 (en) * 2019-01-17 2021-04-13 Disney Enterprises, Inc. Streamable compressed geometry for live broadcast
GB2583511B (en) * 2019-05-02 2024-01-10 Sony Interactive Entertainment Inc Method of and system for controlling the rendering of a video game instance
US11405347B1 (en) * 2019-05-31 2022-08-02 Meta Platforms, Inc. Systems and methods for providing game-related content
CN110327625B (zh) * 2019-07-08 2023-07-21 网易(杭州)网络有限公司 文件的处理方法、装置、处理器、终端及服务器
KR102674241B1 (ko) * 2019-10-31 2024-06-10 삼성에스디에스 주식회사 게임 스트리밍 방법 및 장치
US11638874B2 (en) * 2020-01-06 2023-05-02 Square Enix Ltd. Systems and methods for changing a state of a game object in a video game
US11079913B1 (en) 2020-05-11 2021-08-03 Apple Inc. User interface for status indicators
US20220129295A1 (en) 2020-10-25 2022-04-28 Meta Platforms, Inc. Server-side hosted environment for a cloud gaming system
US11671697B2 (en) 2021-01-31 2023-06-06 Apple Inc. User interfaces for wide angle video conference
US11893214B2 (en) 2021-05-15 2024-02-06 Apple Inc. Real-time communication user interface
US11907605B2 (en) 2021-05-15 2024-02-20 Apple Inc. Shared-content session user interfaces
US11360634B1 (en) 2021-05-15 2022-06-14 Apple Inc. Shared-content session user interfaces
US11812135B2 (en) 2021-09-24 2023-11-07 Apple Inc. Wide angle video conference

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040025190A1 (en) * 2002-07-31 2004-02-05 Bluestreak Technology Inc. System and method for video-on -demand based gaming
US20080207322A1 (en) * 2005-03-21 2008-08-28 Yosef Mizrahi Method, System and Computer-Readable Code For Providing a Computer Gaming Device
US20080234047A1 (en) 2007-03-21 2008-09-25 Igt Wager game license management in a game table

Family Cites Families (364)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4372558A (en) 1978-11-21 1983-02-08 Matsushita Electric Industrial Co., Ltd. Remote game apparatus
US5263723A (en) 1989-10-27 1993-11-23 Wakeman & Deforrest Corporation Interactive contest system
US7448063B2 (en) * 1991-11-25 2008-11-04 Actv, Inc. Digital interactive system for providing full interactivity with live programming events
US5926208A (en) 1992-02-19 1999-07-20 Noonen; Michael Video compression and decompression arrangement having reconfigurable camera and low-bandwidth transmission capability
US5553864A (en) 1992-05-22 1996-09-10 Sitrick; David H. User image integration into audiovisual presentation system and methodology
JP3148045B2 (ja) 1992-06-17 2001-03-19 富士通株式会社 三次元物体cg作成装置
JPH07325934A (ja) 1992-07-10 1995-12-12 Walt Disney Co:The 仮想世界に向上したグラフィックスを提供する方法および装置
US5411270A (en) 1992-11-20 1995-05-02 Sega Of America, Inc. Split-screen video game with character playfield position exchange
US5889499A (en) 1993-07-29 1999-03-30 S3 Incorporated System and method for the mixing of graphics and video signals
US6611607B1 (en) 1993-11-18 2003-08-26 Digimarc Corporation Integrating digital watermarks in multimedia content
CA2144253C (en) 1994-04-01 1999-09-21 Bruce F. Naylor System and method of generating compressed video graphics images
US5636209A (en) 1994-05-05 1997-06-03 Perlman; Stephen G. Modem to support multiple site call conferenced data communications
US5558339A (en) 1994-05-05 1996-09-24 Perlman; Stephen G. Network architecture to support recording and playback of real-time video games
EP0774186A4 (en) 1994-05-05 2005-07-20 Catapult Entertainment Inc NETWORK ARCHITECTURE FOR REAL-TIME VIDEO GAMES
JPH07319747A (ja) 1994-05-24 1995-12-08 Nec Telecom Syst Ltd データ更新システム
US5641319A (en) 1994-08-10 1997-06-24 Lodgenet Entertainment Corporation Entertainment system for providing interactive video game responses to the game interrogations to the video game engines without being processed by the host computer
US5689577A (en) 1994-10-14 1997-11-18 Picker International, Inc. Procedure for the simplification of triangular surface meshes for more efficient processing
US5685775A (en) 1994-10-28 1997-11-11 International Business Machines Corporation Networking video games over telephone network
WO1996014908A1 (en) 1994-11-14 1996-05-23 Catapult Entertainment, Inc. Method and apparatus for synchronizing the execution of multiple video game systems in a networked environment
US6005561A (en) 1994-12-14 1999-12-21 The 3Do Company Interactive information delivery system
US20040209660A1 (en) 1994-12-19 2004-10-21 Carlson Rolf E. Universal gaming engine
US7690043B2 (en) 1994-12-19 2010-03-30 Legal Igaming, Inc. System and method for connecting gaming devices to a network for remote play
US5707286A (en) 1994-12-19 1998-01-13 Mikohn Gaming Corporation Universal gaming engine
US7260834B1 (en) 1999-10-26 2007-08-21 Legal Igaming, Inc. Cryptography and certificate authorities in gaming machines
US6272223B1 (en) 1997-10-28 2001-08-07 Rolf Carlson System for supplying screened random numbers for use in recreational gaming in a casino or over the internet
US5623424A (en) 1995-05-08 1997-04-22 Kabushiki Kaisha Toshiba Rate-controlled digital video editing method and system which controls bit allocation of a video encoder by varying quantization levels
US5852672A (en) 1995-07-10 1998-12-22 The Regents Of The University Of California Image system for three dimensional, 360 DEGREE, time sequence surface mapping of moving objects
US6138147A (en) * 1995-07-14 2000-10-24 Oracle Corporation Method and apparatus for implementing seamless playback of continuous media feeds
US5935004A (en) 1995-08-28 1999-08-10 Mediaone Group, Inc. System and method for scheduled delivery of a software program over a cable network
GB9519921D0 (en) 1995-09-29 1995-11-29 Philips Electronics Nv Graphics image manipulation
JP3745802B2 (ja) 1995-10-13 2006-02-15 株式会社日立製作所 画像生成/表示装置
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US5790753A (en) * 1996-01-22 1998-08-04 Digital Equipment Corporation System for downloading computer software programs
US5738583A (en) 1996-02-02 1998-04-14 Motorola, Inc. Interactive wireless gaming system
WO1997035258A1 (en) 1996-03-21 1997-09-25 Mpath Interactive, Inc. Network match maker for selecting clients based on attributes of servers and communication links
US6015344A (en) 1996-04-05 2000-01-18 Rlt Acquisition, Inc. Prize redemption system for games
US5846132A (en) 1996-04-10 1998-12-08 William W. Junkin Trust Interactive system allowing simulated or real time participation in a league
US6050898A (en) 1996-05-15 2000-04-18 Vr-1, Inc. Initiating and scaling massive concurrent data transaction
US6175854B1 (en) 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
US5793985A (en) 1996-06-17 1998-08-11 Hewlett-Packard Company Method and apparatus for block-based motion estimation
US5828370A (en) 1996-07-01 1998-10-27 Thompson Consumer Electronics Inc. Video delivery system and method for displaying indexing slider bar on the subscriber video screen
US5878283A (en) 1996-09-05 1999-03-02 Eastman Kodak Company Single-use camera with motion sensor
US6085186A (en) * 1996-09-20 2000-07-04 Netbot, Inc. Method and system using information written in a wrapper description language to execute query on a network
JP2000502276A (ja) 1996-10-01 2000-02-29 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ エージェントによって減少されるマルチプレーヤビデオゲームにおけるラテンシーの影響
US6025801A (en) 1996-10-01 2000-02-15 Philips Electronics North America Corporation Video game with local updates mitigates latency effects in wide area network
TW469148B (en) * 1996-10-09 2001-12-21 Sega Enterprises Kk Game apparatus, method of game processing, game execution method, and game system
US5905988A (en) 1996-11-13 1999-05-18 Imaginon Method and apparatus for database transformation and adaptive playback
US6480541B1 (en) 1996-11-27 2002-11-12 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts
US5974442A (en) 1996-12-31 1999-10-26 Intel Corporation Communication technique for interactive applications over a network with delays
US5899810A (en) 1997-01-24 1999-05-04 Kaon Interactive Corporation Distributed game architecture to overcome system latency
US6039648A (en) 1997-03-04 2000-03-21 Casino Data Systems Automated tournament gaming system: apparatus and method
US6152824A (en) 1997-03-06 2000-11-28 Mpath Interactive, Inc. Online gaming architecture
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6115038A (en) 1997-07-09 2000-09-05 Christofferson Enterprises, Llc Method for creating lower cost real-time 3D graphics in a distributed environment
GB2329810B (en) 1997-09-29 2002-02-27 Science Res Foundation Generation and use of compressed image data
US6606746B1 (en) 1997-10-16 2003-08-12 Opentv, Inc. Interactive television system and method for displaying a graphical user interface using insert pictures
US5884101A (en) 1998-04-17 1999-03-16 I-Cube, Inc. Apparatus for detecting data buffer faults
AU758390B2 (en) 1998-07-27 2003-03-20 Webtv Networks, Inc. Remote computer access
EA199800706A1 (ru) 1998-08-13 1999-02-25 Александр Иванович Силаев Способ игры со ставками (варианты) и устройство для его осуществления
US6697869B1 (en) 1998-08-24 2004-02-24 Koninklijke Philips Electronics N.V. Emulation of streaming over the internet in a broadcast application
US6599194B1 (en) 1998-09-08 2003-07-29 Darren Smith Home video game system with hard disk drive and internet access capability
US6526041B1 (en) * 1998-09-14 2003-02-25 Siemens Information & Communication Networks, Inc. Apparatus and method for music-on-hold delivery on a communication system
US6409602B1 (en) 1998-11-06 2002-06-25 New Millenium Gaming Limited Slim terminal gaming system
US6241612B1 (en) 1998-11-09 2001-06-05 Cirrus Logic, Inc. Voice communication during a multi-player game
US6587109B1 (en) 1998-12-24 2003-07-01 B3D, Inc. System and method for real-time scalability of 3D graphics based on internet bandwidth and CPU speed
US6754241B1 (en) 1999-01-06 2004-06-22 Sarnoff Corporation Computer system for statistical multiplexing of bitstreams
US6665872B1 (en) 1999-01-06 2003-12-16 Sarnoff Corporation Latency-based statistical multiplexing
US6583793B1 (en) 1999-01-08 2003-06-24 Ati International Srl Method and apparatus for mapping live video on to three dimensional objects
US6848997B1 (en) 1999-01-28 2005-02-01 Kabushiki Kaisha Sega Enterprises Network game system, game device terminal used in it and storage medium
US6426748B1 (en) 1999-01-29 2002-07-30 Hypercosm, Inc. Method and apparatus for data compression for three-dimensional graphics
US6416412B1 (en) * 1999-03-16 2002-07-09 Atari Games Corporation System for remotely activating a sound in a game unit
US6665453B2 (en) 1999-03-16 2003-12-16 Intel Corporation Multi-resolution support for video images
IL129345A (en) 1999-04-06 2004-05-12 Broadcom Corp Video encoding and video/audio/data multiplexing device
US7178106B2 (en) 1999-04-21 2007-02-13 Sonic Solutions, A California Corporation Presentation of media content from multiple media sources
US6763371B1 (en) 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
US6792615B1 (en) 1999-05-19 2004-09-14 New Horizons Telecasting, Inc. Encapsulated, streaming media automation and distribution system
US6687663B1 (en) 1999-06-25 2004-02-03 Lake Technology Limited Audio processing method and apparatus
US6415317B1 (en) 1999-10-01 2002-07-02 Joshua Michael Yelon Software system for reducing the appearance of latency in a multi-user environment
EP1228453A4 (en) 1999-10-22 2007-12-19 Activesky Inc AN OBJECT-ORIENTED VIDEO SYSTEM
US7028264B2 (en) 1999-10-29 2006-04-11 Surfcast, Inc. System and method for simultaneous display of multiple information sources
JP2001357312A (ja) * 1999-11-24 2001-12-26 Sega Corp 情報処理装置、ファイルサーバ、課金管理システムおよび課金管理方法並びにプログラムを記録した記録媒体
US6810528B1 (en) 1999-12-03 2004-10-26 Sony Computer Entertainment America Inc. System and method for providing an on-line gaming experience through a CATV broadband network
US6755743B1 (en) 1999-12-08 2004-06-29 Kabushiki Kaisha Sega Enterprises Communication game system and processing method thereof
US20020059637A1 (en) 2000-01-14 2002-05-16 Rakib Selim Shlomo Home gateway for video and data distribution from various types of headend facilities and including digital video recording functions
US20010047401A1 (en) 2000-01-21 2001-11-29 Mcternan Brennan J. System and method for managing connections to servers delivering multimedia content
WO2001065358A2 (en) 2000-02-17 2001-09-07 Acclim Entertainment, Inc. Multi-player computer game system and method
US6539354B1 (en) 2000-03-24 2003-03-25 Fluent Speech Technologies, Inc. Methods and devices for producing and using synthetic visual speech based on natural coarticulation
AU5703701A (en) 2000-04-17 2001-10-30 Igt Reno Nev System and method of capturing a player's image for incorporation into a game
US6711283B1 (en) 2000-05-03 2004-03-23 Aperio Technologies, Inc. Fully automatic rapid microscope slide scanner
US7499453B2 (en) 2000-05-19 2009-03-03 Cisco Technology, Inc. Apparatus and methods for incorporating bandwidth forecasting and dynamic bandwidth allocation into a broadband communication system
DE10033110B4 (de) 2000-07-07 2005-06-16 Siemens Ag Verfahren, und System zur Übertragung digitalisierter Bewegtbilder von einem Sender zu einem Empfänger und zugehöriger Decoder
US7274368B1 (en) 2000-07-31 2007-09-25 Silicon Graphics, Inc. System method and computer program product for remote graphics processing
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US8932136B2 (en) 2000-08-25 2015-01-13 Opentv, Inc. Method and system for initiating an interactive game
EP1312219A2 (en) 2000-08-25 2003-05-21 Intellocity USA, Inc. Method of enhancing streaming media content
JP2002095018A (ja) 2000-09-12 2002-03-29 Canon Inc 画像表示制御装置及び画像表示システム、並びに画像データの表示方法
JP2002207685A (ja) 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US7257832B2 (en) 2000-10-16 2007-08-14 Heartlab, Inc. Medical image capture system and method
JP2002126354A (ja) 2000-10-24 2002-05-08 Murai Associates Corp ネットワーク型ゲームの参加方法ならびにそのサーバシステムおよび同方法がプログラムされ記録された記録媒体
AUPR100600A0 (en) 2000-10-25 2000-11-16 Aristocrat Technologies Australia Pty Limited Gaming graphics
US6884172B1 (en) 2000-10-25 2005-04-26 Ngame Limited Electronic game system
WO2002055163A2 (en) 2000-11-01 2002-07-18 Station Casinos Inc Method and system for remote gaming
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US6918113B2 (en) 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US6959320B2 (en) 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US7043524B2 (en) 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
AU2002226956A1 (en) 2000-11-22 2002-06-03 Leap Wireless International, Inc. Method and system for providing interactive services over a wireless communications network
US20020061062A1 (en) 2000-11-22 2002-05-23 O'brien Royal Filtering system and method for digital interactive streams
US20030177187A1 (en) 2000-11-27 2003-09-18 Butterfly.Net. Inc. Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications
WO2002042921A1 (en) 2000-11-27 2002-05-30 Butterfly.Net, Inc. System and method for synthesizing environments to facilitate distributed, context-sensitive, multi-user interactive applications
US6996742B2 (en) 2000-11-28 2006-02-07 Sedna Patent Services, Llc Method for regenerating and streaming content from a video server using RAID 5 data striping
US20020075382A1 (en) 2000-12-01 2002-06-20 Yoram Cohen Method and apparatus for implementing a thin-client videophone in a cable television network
US7451196B1 (en) 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US6761636B2 (en) 2001-01-16 2004-07-13 Fucom Company, Ltd. Real time data exchange system
US7587520B1 (en) 2001-01-24 2009-09-08 3Dlabs Inc. Ltd. Image display system with visual server
FI109633B (fi) 2001-01-24 2002-09-13 Gamecluster Ltd Oy Menetelmä videokuvan pakkauksen nopeuttamiseksi ja/tai sen laadun parantamiseksi
US7305697B2 (en) 2001-02-02 2007-12-04 Opentv, Inc. Service gateway for interactive television
US20020115487A1 (en) 2001-02-16 2002-08-22 Wells William R. Gaming device network
US20020128067A1 (en) 2001-03-09 2002-09-12 Victor Keith Blanco Method and apparatus for creating and playing soundtracks in a gaming system
US6475090B2 (en) 2001-03-29 2002-11-05 Koninklijke Philips Electronics N.V. Compensating for network latency in a multi-player game
US20020154691A1 (en) 2001-04-19 2002-10-24 Kost James F. System and process for compression, multiplexing, and real-time low-latency playback of networked audio/video bit streams
WO2002089441A1 (en) 2001-05-01 2002-11-07 Meta4Hand Inc. Wireless network computing
US7305691B2 (en) 2001-05-07 2007-12-04 Actv, Inc. System and method for providing targeted programming outside of the home
JP4293740B2 (ja) 2001-05-29 2009-07-08 株式会社リコー 画像圧縮装置
US20020184303A1 (en) 2001-05-31 2002-12-05 Virtaul Media, Inc. Embedded web server capable of managing dynamic content delivery of data stream, audio stream, or video stream
US20020186769A1 (en) 2001-06-12 2002-12-12 O'brien Royal System and method for transcoding
WO2002102050A2 (en) 2001-06-12 2002-12-19 Digital Interactive Streams, Inc. System and method for enhancing digital video
US20030009542A1 (en) 2001-06-14 2003-01-09 Kasal Alpay O. Digital entertainment solution
US6601009B2 (en) 2001-07-12 2003-07-29 Yahoo Inc Method and system of automatic bandwidth detection
US20030130040A1 (en) 2001-07-17 2003-07-10 Jeffrey Thomas Dripps Distributed video game system and method
US7367885B2 (en) 2001-08-09 2008-05-06 Igt 3-D text in a gaming machine
JP2003060638A (ja) 2001-08-15 2003-02-28 Sony Corp コンテンツ提供装置及びコンテンツ提供方法
US6999083B2 (en) * 2001-08-22 2006-02-14 Microsoft Corporation System and method to provide a spectator experience for networked gaming
JP3815278B2 (ja) 2001-08-30 2006-08-30 ソニー株式会社 ネットワークゲームシステム、ネットワークゲームサーバ装置、ネットワークゲーム端末装置、情報処理方法、及び情報処理プログラム
US7791641B2 (en) 2001-09-12 2010-09-07 Samsung Electronics Co., Ltd. Systems and methods for utilizing activity detection information in relation to image processing
US20030048808A1 (en) 2001-09-12 2003-03-13 Stahl Thomas Anthony Method and apparatus for changing received streaming content channels
CN1568466A (zh) 2001-09-26 2005-01-19 交互设备有限公司 用于传递媒体信号的***和方法
US7164238B2 (en) 2001-11-14 2007-01-16 Astral Communications, Inc. Energy savings device and method for a resistive and/or an inductive load and/or a capacitive load
US20030093806A1 (en) 2001-11-14 2003-05-15 Vincent Dureau Remote re-creation of data in a television system
US7297062B2 (en) 2001-11-23 2007-11-20 Cyberview Technology, Inc. Modular entertainment and gaming systems configured to consume and provide network services
KR100446635B1 (ko) 2001-11-27 2004-09-04 삼성전자주식회사 깊이 이미지 기반 3차원 객체 표현 장치 및 방법
US7299487B1 (en) 2001-12-04 2007-11-20 Unisys Corporation Control program, for a co-processor in a video-on-demand system, which uses transmission control lists to send video data packets with respective subgroups of internet protocol headers
GB0219509D0 (en) 2001-12-05 2002-10-02 Delamont Dean Improvements to interactive TV games system
KR100925968B1 (ko) 2001-12-17 2009-11-09 마이크로소프트 코포레이션 컴퓨터 시스템에서 비디오 시퀀스의 복수의 비디오 화상을 처리하는 방법, 시스템 및 컴퓨터 판독가능 매체
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US20030151753A1 (en) 2002-02-08 2003-08-14 Shipeng Li Methods and apparatuses for use in switching between streaming video bitstreams
US7133368B2 (en) 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
AU2003215156A1 (en) 2002-02-12 2003-09-04 Digital Interactive Streams, Inc. System and method for fault tolerant multimedia communication
US7636860B2 (en) 2002-02-13 2009-12-22 Realnetworks, Inc. Scalable and extensible secure rendering of digital content
EP1483741A2 (en) 2002-03-01 2004-12-08 t5 Labs Ltd Centralised interactive graphical application server
US6908390B2 (en) 2002-03-29 2005-06-21 Igt Apparatus and method for a gaming tournament network
US7483487B2 (en) 2002-04-11 2009-01-27 Microsoft Corporation Streaming methods and systems
GB0208317D0 (en) 2002-04-11 2002-05-22 Koninkl Philips Electronics Nv Controlling a home electronics system
US20030228906A1 (en) * 2002-04-19 2003-12-11 Walker Jay S. Methods and apparatus for providing communications services at a gaming machine
US6935959B2 (en) 2002-05-16 2005-08-30 Microsoft Corporation Use of multiple player real-time voice communications on a gaming device
US7023918B2 (en) 2002-05-30 2006-04-04 Ess Technology, Inc. Color motion artifact detection and processing apparatus compatible with video coding standards
US7038676B2 (en) 2002-06-11 2006-05-02 Sony Computer Entertainmant Inc. System and method for data compression
US7064765B2 (en) 2002-06-24 2006-06-20 Hewlett-Packard Development Company, L.P. System and method for grabbing frames of graphical data
JP2004045668A (ja) 2002-07-10 2004-02-12 Ricoh Co Ltd 静電荷像現像用現像剤、画像形成装置及び画像形成方法
US20040022391A1 (en) 2002-07-30 2004-02-05 O'brien Royal Digital content security system and method
US7072693B2 (en) 2002-08-05 2006-07-04 Calamp Corp. Wireless communications structures and methods utilizing frequency domain spatial processing
WO2004015550A2 (en) 2002-08-12 2004-02-19 Digital Interactive Streams, Inc Data streaming system and method
KR20020086835A (ko) 2002-08-12 2002-11-20 김흥호 인터넷망을 이용한 비디오게임의 다중플레이 및 관전법
ATE375187T1 (de) 2002-08-12 2007-10-15 Alcatel Lucent Verfahren und vorrichtungen zur implementerung von hochinteraktiven unterhaltungsdiensten unter verwendung der medienströmungstechnologie, das die bereitstellung auf abstand von virtuelle realitätdiensten ermöglicht
WO2004018060A2 (en) 2002-08-21 2004-03-04 Lime Studios Limited Improvements to interactive tv games system
ATE421809T1 (de) 2002-08-22 2009-02-15 Imec Inter Uni Micro Electr Verfahren zur mimo-übertragung für mehrere benutzer und entsprechende vorrichtungen
US6863612B2 (en) 2002-09-03 2005-03-08 Bidamic Inc. System and method for interactive on-line gaming
US7334043B2 (en) 2002-09-17 2008-02-19 At&T Delaware Intellectual Property, Inc. Extending functionality of workflow applications using instant messaging (IM)
US20040063498A1 (en) 2002-09-30 2004-04-01 Sony Corporation System and method for flexibly implementing a wireless gaming network
JP2004128779A (ja) 2002-10-01 2004-04-22 Sony Corp 放送システム、記録装置、記録方法、プログラム、記録媒体
US7878908B2 (en) 2002-11-14 2011-02-01 Nintendo Co., Ltd. Multiplexed secure video game play distribution
US9061207B2 (en) 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US8711923B2 (en) 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
US8661496B2 (en) 2002-12-10 2014-02-25 Ol2, Inc. System for combining a plurality of views of real-time streaming interactive video
US8832772B2 (en) 2002-12-10 2014-09-09 Ol2, Inc. System for combining recorded application state with application streaming interactive video output
US9756349B2 (en) 2002-12-10 2017-09-05 Sony Interactive Entertainment America Llc User interface, system and method for controlling a video stream
US20090118019A1 (en) 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US9314691B2 (en) 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US8949922B2 (en) 2002-12-10 2015-02-03 Ol2, Inc. System for collaborative conferencing using streaming interactive video
US9192859B2 (en) 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
US9138644B2 (en) 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US20100166056A1 (en) 2002-12-10 2010-07-01 Steve Perlman System and method for encoding video using a selected tile and tile rotation pattern
US7849491B2 (en) 2002-12-10 2010-12-07 Onlive, Inc. Apparatus and method for wireless video gaming
US8366552B2 (en) * 2002-12-10 2013-02-05 Ol2, Inc. System and method for multi-stream video compression
US9003461B2 (en) 2002-12-10 2015-04-07 Ol2, Inc. Streaming interactive video integrated with recorded video segments
US8387099B2 (en) 2002-12-10 2013-02-26 Ol2, Inc. System for acceleration of web page delivery
US20110122063A1 (en) 2002-12-10 2011-05-26 Onlive, Inc. System and method for remote-hosted video effects
US8893207B2 (en) 2002-12-10 2014-11-18 Ol2, Inc. System and method for compressing streaming interactive video
US10201760B2 (en) 2002-12-10 2019-02-12 Sony Interactive Entertainment America Llc System and method for compressing video based on detected intraframe motion
US8054880B2 (en) 2004-12-10 2011-11-08 Tut Systems, Inc. Parallel rate control for digital video encoder with multi-processor architecture and picture-based look-ahead window
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US8840475B2 (en) 2002-12-10 2014-09-23 Ol2, Inc. Method for user session transitioning among streaming interactive video servers
US8549574B2 (en) 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US8526490B2 (en) 2002-12-10 2013-09-03 Ol2, Inc. System and method for video compression using feedback including data related to the successful receipt of video content
US8964830B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US8468575B2 (en) 2002-12-10 2013-06-18 Ol2, Inc. System for recursive recombination of streaming interactive video
US9032465B2 (en) 2002-12-10 2015-05-12 Ol2, Inc. Method for multicasting views of real-time streaming interactive video
US9108107B2 (en) 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using streaming interactive video
US8495678B2 (en) 2002-12-10 2013-07-23 Ol2, Inc. System for reporting recorded video preceding system failures
KR100507780B1 (ko) 2002-12-20 2005-08-17 한국전자통신연구원 고속 마커프리 모션 캡쳐 장치 및 방법
US9177387B2 (en) 2003-02-11 2015-11-03 Sony Computer Entertainment Inc. Method and apparatus for real time motion capture
US7256779B2 (en) 2003-05-08 2007-08-14 Nintendo Co., Ltd. Video game play using panoramically-composited depth-mapped cube mapping
US7798905B2 (en) 2003-05-09 2010-09-21 Microsoft Corporation Method and apparatus for associating data with online game ratings
US6963353B1 (en) 2003-05-14 2005-11-08 Cisco Technology, Inc. Non-causal speaker selection for conference multicast
US7739715B2 (en) 2003-06-24 2010-06-15 Microsoft Corporation Variable play speed control for media streams
US7270605B2 (en) 2003-07-08 2007-09-18 Gt Peer-to-peer gaming system
US7139002B2 (en) 2003-08-01 2006-11-21 Microsoft Corporation Bandwidth-efficient processing of video images
EP1665765A4 (en) * 2003-08-29 2010-03-31 Rgb Networks Inc VIDEO MULTIPLEXER SYSTEM FOR OBTAINING VCR-TYPE EFFECTS AND LOW-LOW PROGRAM CHANGES
US7789748B2 (en) 2003-09-04 2010-09-07 Igt Gaming device having player-selectable music
US8662983B2 (en) 2003-09-09 2014-03-04 Wms Gaming Inc. Electronic game and system having overlayed video images
IL158158A (en) 2003-09-29 2012-05-31 Bamboo Mediacasting Ltd Distribution of multicast data to users
US7418472B2 (en) 2003-09-30 2008-08-26 Microsoft Corporation Systems and methods for determining remote device media capabilities
US7822281B2 (en) 2003-10-31 2010-10-26 Canon Kabushiki Kaisha Digital video compression
US7246183B2 (en) 2003-11-14 2007-07-17 Avocent California Corporation Phase optimization for wireless KVM transmission
US7613344B2 (en) 2003-12-08 2009-11-03 Electronics And Telecommunications Research Institute System and method for encoding and decoding an image using bitstream map and recording medium thereof
WO2005065085A2 (en) 2003-12-21 2005-07-21 Kremen Stanley H System and apparatus for recording, transmitting, and projecting digital three-dimensional images
US20050160465A1 (en) 2004-01-21 2005-07-21 United Video Properties, Inc. Interactive television system with automatic switching from broadcast media to streaming media
US7246923B2 (en) 2004-02-11 2007-07-24 3M Innovative Properties Company Reshaping light source modules and illumination systems using the same
US7227894B2 (en) 2004-02-24 2007-06-05 Industrial Technology Research Institute Method and apparatus for MPEG-4 FGS performance enhancement
US7584248B2 (en) * 2004-02-27 2009-09-01 Alcatel-Lucent Usa Inc. Apparatus and method for fair message exchanges in distributed multi-player games
US7668712B2 (en) 2004-03-31 2010-02-23 Microsoft Corporation Audio encoding and decoding with intra frames and adaptive forward error correction
US7633994B2 (en) 2004-07-30 2009-12-15 Rearden, LLC. System and method for distributed input-distributed output wireless communications
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US20060080702A1 (en) * 2004-05-20 2006-04-13 Turner Broadcasting System, Inc. Systems and methods for delivering content over a network
US20050282636A1 (en) 2004-06-04 2005-12-22 O'brien Royal Gaming on demand system and methodology
US8099755B2 (en) 2004-06-07 2012-01-17 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream
WO2005122025A2 (en) 2004-06-07 2005-12-22 Sling Media, Inc. Personal media broadcasting system
US20050286777A1 (en) 2004-06-27 2005-12-29 Roger Kumar Encoding and decoding images
US7664184B2 (en) 2004-07-21 2010-02-16 Amimon Ltd. Interpolation image compression
KR101238608B1 (ko) 2004-07-30 2013-02-28 익스트림 리얼리티 엘티디. 이미지 프로세싱을 기반으로 한 3d 공간 차원용 시스템 및 방법
US20060048136A1 (en) 2004-08-25 2006-03-02 Vries Jeff D Interception-based resource detection system
US7363397B2 (en) * 2004-08-26 2008-04-22 International Business Machines Corporation System and method for DMA controller with multi-dimensional line-walking functionality
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US7458894B2 (en) * 2004-09-15 2008-12-02 Microsoft Corporation Online gaming spectator system
US8719075B2 (en) 2004-09-23 2014-05-06 Overstock.Com, Inc. System, program product, and methods for online image handling
US20060069796A1 (en) 2004-09-29 2006-03-30 Infinium Labs, Inc. Method for automatic patching of a sparsely streamed application
JP2007065928A (ja) 2005-08-30 2007-03-15 Toshiba Corp 情報記憶媒体、情報処理方法、情報転送方法、情報再生方法、情報再生装置、情報記録方法、情報記録装置、及びプログラム
US7240162B2 (en) 2004-10-22 2007-07-03 Stream Theory, Inc. System and method for predictive streaming
JP2008527468A (ja) 2004-11-13 2008-07-24 ストリーム セオリー,インコーポレイテッド ハイブリッド・ローカル/リモート・ストリーミング
US20060104353A1 (en) 2004-11-16 2006-05-18 Johnson Andrew W Video signal preprocessing to minimize prediction error
US7695369B2 (en) 2004-11-22 2010-04-13 Planetwide Games, Inc. Systems and methods for accessing online content during online gaming
US8425331B2 (en) 2004-12-07 2013-04-23 Microsoft Corporation User interface for viewing aggregated game, system and personal information
US20060149845A1 (en) 2004-12-30 2006-07-06 Xinnia Technology, Llc Managed quality of service for users and applications over shared networks
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US20060168291A1 (en) 2005-01-05 2006-07-27 Van Zoest Alexander Interactive multichannel data distribution system
US20060224761A1 (en) * 2005-02-11 2006-10-05 Vemotion Limited Interactive video applications
US20060205517A1 (en) 2005-03-08 2006-09-14 Malabuyo Paolo V Systems and methods for providing a system level user interface in a multimedia console
EP1875364A2 (en) 2005-03-23 2008-01-09 Stream Theory, Inc. System and method for tracking changes to files in streaming applications
US8024523B2 (en) 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
US20060218225A1 (en) 2005-03-28 2006-09-28 Hee Voon George H Device for sharing social network information among users over a network
WO2006107883A2 (en) 2005-04-01 2006-10-12 Arroyo Video Solutions, Inc. Stream control failover
US20060230428A1 (en) * 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
WO2006124811A2 (en) 2005-05-13 2006-11-23 Professional Interactive Entertainment, Inc. System and method for network interactive game match-up and server selection
US7878907B2 (en) 2005-05-13 2011-02-01 Microsoft Corporation Real-time HD TV/video IP streaming to a game console
US20070254742A1 (en) 2005-06-06 2007-11-01 Digital Interactive Streams, Inc. Gaming on demand system and methodology
WO2007005911A2 (en) 2005-07-05 2007-01-11 White Technologies Group System for multimedia on demand over internet based network
US9061206B2 (en) 2005-07-08 2015-06-23 Activevideo Networks, Inc. Video game system using pre-generated motion vectors
US7936819B2 (en) 2005-07-08 2011-05-03 Tag Networks, Inc. Video encoder with latency control
JP2007080357A (ja) 2005-09-13 2007-03-29 Toshiba Corp 情報記憶媒体、情報再生方法、情報再生装置
US7789757B2 (en) * 2005-09-22 2010-09-07 At&T Intellectual Property I, L.P. Video games on demand with anti-piracy security
US20070099709A1 (en) * 2005-11-03 2007-05-03 Aruze Gaming America, Inc. Game-machine terminal apparatus, game machine, and game method
US7794325B2 (en) 2005-11-17 2010-09-14 Microsoft Corporation Dynamic in-game soundtrack for a console game machine
US8135040B2 (en) 2005-11-30 2012-03-13 Microsoft Corporation Accelerated channel change
WO2007067217A2 (en) * 2005-12-02 2007-06-14 Cyberscan Technology, Inc. In-room gaming
JP2009518103A (ja) 2005-12-05 2009-05-07 フォレー リミテッド ユーザがモバイル機器によって大画面ゲームをプレイできるようにするための方法およびシステム
KR100826871B1 (ko) 2005-12-08 2008-05-06 한국전자통신연구원 휴대용 단말기를 위한 스트리밍 방식 게임 소프트웨어 제공방법 및 시스템
CA2633895A1 (en) 2005-12-27 2007-07-05 Massive Incorporated Streaming media casts, such as in a video game or mobile device environment
US8764566B2 (en) 2006-02-24 2014-07-01 Igt Internet remote game server
US8095400B2 (en) 2006-03-06 2012-01-10 Cbs Interactive, Inc. Online waiting room system, method and computer program product
IL174363A0 (en) 2006-03-16 2006-08-01 Vollee Ltd Method and system for providing video game sounds to a mobile device
US8392821B2 (en) 2006-03-17 2013-03-05 Viddler, Inc. Methods and systems for displaying videos with overlays and tags
EP1837060A1 (en) 2006-03-21 2007-09-26 In Fusio (S.A.) Method for displaying interactive video content from a video stream in a display of a user device
US7693157B2 (en) 2006-04-25 2010-04-06 Microsoft Corporation Quality of service support for A/V streams
CA2649667C (en) 2006-04-29 2014-08-26 Thomson Licensing Seamless handover of multicast sessions in internet protocol based wireless networks using staggercasting
US20070265094A1 (en) * 2006-05-10 2007-11-15 Norio Tone System and Method for Streaming Games and Services to Gaming Devices
US20070266170A1 (en) 2006-05-11 2007-11-15 Mockett Gregory P Interactive, rich-media delivery over an ip network using synchronized unicast and multicast
US20070283265A1 (en) * 2006-05-16 2007-12-06 Portano Michael D Interactive gaming system with animated, real-time characters
WO2008094279A1 (en) 2006-06-06 2008-08-07 Cts Media A method and system for dynamic management of multiple media data streams
US7841946B2 (en) 2006-06-29 2010-11-30 Spawn Labs, Inc. System for remote game access
US8000318B2 (en) 2006-06-30 2011-08-16 Embarq Holdings Company, Llc System and method for call routing based on transmission performance of a packet network
US8628414B2 (en) 2006-07-14 2014-01-14 Valve Corporation Enhanced commentary system for 3D computer entertainment
US20080025390A1 (en) 2006-07-25 2008-01-31 Fang Shi Adaptive video frame interpolation
US8221220B2 (en) 2006-08-11 2012-07-17 Disney Enterprises, Inc. Method and/or system for adaptive gaming experience
EP1901190A1 (en) 2006-09-15 2008-03-19 Sony DADC Austria AG Method and system for managing access to add-on data files
WO2008040123A1 (en) 2006-10-02 2008-04-10 Aftercad Software Inc. Method and system for delivering and interactively displaying three-dimensional graphics
US7818769B2 (en) 2006-10-02 2010-10-19 Mobitv, Inc. Methods and apparatus for implementing dynamic program guides on mobile devices
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
US8261345B2 (en) 2006-10-23 2012-09-04 Endeavors Technologies, Inc. Rule-based application access management
US8825765B2 (en) 2006-11-28 2014-09-02 Verizon Patent And Licensing Inc. Cross platform gaming
US7715481B2 (en) 2006-11-29 2010-05-11 Ipera Technology, Inc. System and method for allocation of resources for processing video
JP2008139423A (ja) 2006-11-30 2008-06-19 Sony Corp コンテンツ再生システム、再生装置、再生切替方法及びプログラム
US7824268B2 (en) 2006-12-19 2010-11-02 Electronic Arts, Inc. Live hosted online multiplayer game
US8187104B2 (en) 2007-01-29 2012-05-29 Sony Online Entertainment Llc System and method for creating, editing, and sharing video content relating to video game events
WO2008092385A1 (en) 2007-01-29 2008-08-07 Chon Fong Kuok Systems and methods for online games
US20090305790A1 (en) 2007-01-30 2009-12-10 Vitie Inc. Methods and Apparatuses of Game Appliance Execution and Rendering Service
US9737812B2 (en) 2007-02-13 2017-08-22 Sizmek Technologies Ltd. Method of interacting with an interactive game program
US8886545B2 (en) 2007-03-07 2014-11-11 Vlingo Corporation Dealing with switch latency in speech recognition
US20080220869A1 (en) 2007-03-08 2008-09-11 Timothy Michael Midgley Method and apparatus for providing game guide data in a gaming environment
US8634943B2 (en) 2007-05-02 2014-01-21 Bleacher League Entertainment Inc. Interactive sports-themed game
US20080284798A1 (en) 2007-05-07 2008-11-20 Qualcomm Incorporated Post-render graphics overlays
WO2008143844A1 (en) * 2007-05-16 2008-11-27 Wms Gaming Inc. Streaming video for electronic gaming machines with real-time interactive control
US20080291208A1 (en) 2007-05-24 2008-11-27 Gary Keall Method and system for processing data via a 3d pipeline coupled to a generic video processing unit
WO2009026391A1 (en) 2007-08-20 2009-02-26 Garagegames, Inc. System and method for communicating game parameters utilizing separate protocols
US8174620B2 (en) 2007-11-06 2012-05-08 Microsoft Corporation High definition media content processing
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
NZ585904A (en) 2007-12-05 2013-06-28 Ol2 Inc Streaming video game or interactive application video data using forward error correction based on the determined communication channel quality
RU2010127309A (ru) 2007-12-05 2012-01-10 Онлайв, Инк. (Us) Система и способ сжатия интерактивного потокового видео
TW200948083A (en) 2007-12-05 2009-11-16 Onlive Inc Method of streaming interactive video integrated with recorded video segments
TW200949567A (en) 2007-12-05 2009-12-01 Onlive Inc Apparatus for combining recorded application state with application streaming interactive video output
NZ585903A (en) 2007-12-05 2013-06-28 Ol2 Inc Compressing and streaming low-latency game or application video streams including mitigating the loss of a packet using other packets
CA2707705A1 (en) 2007-12-05 2009-06-11 Onlive, Inc. System and method for compressing video based on detected intraframe motion
TW200943976A (en) 2007-12-05 2009-10-16 Onlive Inc Method for hoststing and brodcasting virtual events using steaming interactive video
EP2218038A4 (en) 2007-12-05 2013-06-05 Onlive Inc SYSTEM AND METHOD FOR COMPRESSING VIDEO BASED ON DATA RATE DETECTED FROM COMMUNICATION CHANNEL
JP2011507349A (ja) 2007-12-05 2011-03-03 オンライブ インコーポレイテッド ビデオを圧縮するためのタイルベースシステム及び方法
KR20100113503A (ko) 2007-12-05 2010-10-21 온라이브, 인크. 어플리케이션 호스팅 센터 내에 프로그램 코드 및 데이터를 저장하기 위한 시스템 및 방법
KR20100121598A (ko) 2007-12-05 2010-11-18 온라이브, 인크. 통신 채널을 통한 패킷 손실의 초래를 감소시키기 위한 비디오 압축 시스템 및 방법
JP2009141700A (ja) 2007-12-06 2009-06-25 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理プログラムおよび記録媒体
US9211473B2 (en) 2008-12-15 2015-12-15 Sony Computer Entertainment America Llc Program mode transition
US8613673B2 (en) 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
US9498714B2 (en) 2007-12-15 2016-11-22 Sony Interactive Entertainment America Llc Program mode switching
US20090322784A1 (en) 2008-02-27 2009-12-31 Gabriele Sartori System and method for virtual 3d graphics acceleration and streaming multiple different video streams
EP2098994A1 (en) 2008-03-04 2009-09-09 Agfa HealthCare NV System for real-time volume rendering on thin clients via a render server
US7774488B2 (en) 2008-03-12 2010-08-10 International Business Machines Corporation Method and system for switching media streams in a client system based on environmental changes
US7873727B2 (en) 2008-03-13 2011-01-18 Board Of Regents, The University Of Texas Systems System and method for evaluating streaming multimedia quality
US8758140B2 (en) 2008-03-24 2014-06-24 Microsoft Corporation Method for viral invites as game and discovery mechanic
US20090247295A1 (en) 2008-03-31 2009-10-01 Weldon Marcus K Network-Based Methods and Apparatus for Rendering Images to an End User
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US8856268B2 (en) 2008-04-22 2014-10-07 Microsoft Corporation Sharing of console and web-based games and gaming profiles
US20090268821A1 (en) 2008-04-29 2009-10-29 The Hong Kong University Of Science And Technology Block parallel and fast motion estimation in video coding
US20090276402A1 (en) 2008-05-01 2009-11-05 Mobitv, Inc. Search system using media metadata tracks
US8308569B2 (en) 2008-05-12 2012-11-13 Microsoft Corporation Reward for resurrecting teammate in a multiplayer game
US8154553B2 (en) 2008-05-22 2012-04-10 Playcast Media System, Ltd. Centralized streaming game server
US8264493B2 (en) 2008-05-12 2012-09-11 Playcast Media Systems, Ltd. Method and system for optimized streaming game server
US9047236B2 (en) 2008-06-06 2015-06-02 Amazon Technologies, Inc. Client side stream switching
US20100005503A1 (en) 2008-07-01 2010-01-07 Kaylor Floyd W Systems and methods for generating a video image by merging video streams
TWI373945B (en) 2008-07-18 2012-10-01 Ubitus Technology Ltd Multimedia streaming transmission system and method thereof
US20100014825A1 (en) 2008-07-18 2010-01-21 Porto Technology, Llc Use of a secondary device to overlay disassociated media elements onto video content
US8321903B2 (en) 2008-07-28 2012-11-27 Playcast Media Systems, Ltd. External services allocation in closed on-demand systems
US9700791B2 (en) 2008-08-14 2017-07-11 Valve Corporation Overlaying interactive video game play with real-time chat sessions with game switching
US8019899B2 (en) 2008-08-28 2011-09-13 Yahoo! Inc. Delivering partially processed results based on system metrics in network content delivery systems
US8352542B2 (en) 2008-09-08 2013-01-08 Seachange International, Inc. Method and system for providing an interactive application over a network
US20100061443A1 (en) 2008-09-10 2010-03-11 Maman Eran Method and system for video streaming of a graphical display of an application
US20110184805A1 (en) 2008-09-25 2011-07-28 Tictacti Ltd. System and method for precision placement of in-game dynamic advertising in computer games
US20100079676A1 (en) 2008-09-29 2010-04-01 International Business Machines Corporation Providing Multi-User Views
US8090014B2 (en) 2008-10-06 2012-01-03 Hewlett-Packard Development Company, L.P. Managing multiview streaming video data composed of frames
US20100205023A1 (en) 2008-10-08 2010-08-12 Digiboo Llc System and method for distributing digital content
US8687702B2 (en) 2008-10-27 2014-04-01 Advanced Micro Devices, Inc. Remote transmission and display of video data using standard H.264-based video codecs
US8897365B2 (en) 2008-11-19 2014-11-25 Nvidia Corporation Video rate control processor for a video encoding process
US8380808B2 (en) 2008-11-24 2013-02-19 Royal O'Brien Dynamic medium content streaming system
US8926435B2 (en) 2008-12-15 2015-01-06 Sony Computer Entertainment America Llc Dual-mode program execution
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US8499090B2 (en) 2008-12-30 2013-07-30 Intel Corporation Hybrid method for delivering streaming media within the home
US8401075B2 (en) 2008-12-31 2013-03-19 General Instrument Corporation Hybrid video encoder including real-time and off-line video encoders
US8221241B2 (en) 2009-01-13 2012-07-17 Igt Gaming involving devices in multiple locations
US7953883B2 (en) 2009-01-27 2011-05-31 Cisco Technology, Inc. Failover mechanism for real-time packet streaming sessions
US8364024B2 (en) 2009-02-03 2013-01-29 Broadcom Corporation Constructing video frames and synchronizing audio data in a media player from data received via a plurality of diverse protocol stack paths
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US8147340B2 (en) 2009-03-05 2012-04-03 Igt Methods and regulated gaming machines configured for service oriented smart display buttons
US20100317443A1 (en) * 2009-06-11 2010-12-16 Comcast Cable Communications, Llc Distributed Network Game System
US8382591B2 (en) * 2010-06-03 2013-02-26 Ol2, Inc. Graphical user interface, system and method for implementing a game controller on a touch-screen device
KR102288072B1 (ko) * 2010-09-13 2021-08-10 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 부가기능의 관리

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040025190A1 (en) * 2002-07-31 2004-02-05 Bluestreak Technology Inc. System and method for video-on -demand based gaming
US20080207322A1 (en) * 2005-03-21 2008-08-28 Yosef Mizrahi Method, System and Computer-Readable Code For Providing a Computer Gaming Device
US20080234047A1 (en) 2007-03-21 2008-09-25 Igt Wager game license management in a game table

Also Published As

Publication number Publication date
US8840476B2 (en) 2014-09-23
CN103442774B (zh) 2016-08-10
KR20180018845A (ko) 2018-02-21
KR20170129966A (ko) 2017-11-27
KR20170129297A (ko) 2017-11-24
KR20130090898A (ko) 2013-08-14
KR20170129296A (ko) 2017-11-24
WO2012037170A1 (en) 2012-03-22
KR101956639B1 (ko) 2019-03-11
US20120005316A1 (en) 2012-01-05
KR20170129967A (ko) 2017-11-27
CN103442774A (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
KR102003007B1 (ko) 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템
US11471762B2 (en) Program mode transition
US11590419B2 (en) Web-based game controller
US9539508B2 (en) Intelligent game loading
US8926435B2 (en) Dual-mode program execution
US9656160B2 (en) Massive multi-player online (MMO) games server and methods for executing the same
JP6959925B2 (ja) クラウドゲーミングにおけるユーザ保存データ管理方法
EP2621594B1 (en) Dual mode program execution and loading
US20220347565A1 (en) Massive Multi-Player Online (MMO) Games Server and Methods for Executing the Same
KR20190086039A (ko) 부가기능의 관리
CN113226500A (zh) 使用对等流式传输的众包云游戏
US20230039077A1 (en) Program Mode Transition
US20230201714A1 (en) Web-Based Game Controller

Legal Events

Date Code Title Description
A107 Divisional application of patent
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