KR20190086039A - 부가기능의 관리 - Google Patents

부가기능의 관리 Download PDF

Info

Publication number
KR20190086039A
KR20190086039A KR1020197020042A KR20197020042A KR20190086039A KR 20190086039 A KR20190086039 A KR 20190086039A KR 1020197020042 A KR1020197020042 A KR 1020197020042A KR 20197020042 A KR20197020042 A KR 20197020042A KR 20190086039 A KR20190086039 A KR 20190086039A
Authority
KR
South Korea
Prior art keywords
video
game
add
client
logic
Prior art date
Application number
KR1020197020042A
Other languages
English (en)
Other versions
KR102126910B1 (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 KR20190086039A publication Critical patent/KR20190086039A/ko
Application granted granted Critical
Publication of KR102126910B1 publication Critical patent/KR102126910B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • 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/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/241Operating system [OS] processes, e.g. server setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/209Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform characterized by low level software layer, relating to hardware management, e.g. Operating System, Application Programming Interface
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/538Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/552Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/75Media network packet handling
    • H04L65/762Media network packet handling at the source 

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

서버에서 컴퓨터 프로그램을 실행하고 통신 네트워크를 통해 지리적으로 원격지의 클라이언트로 프로그램 출력의 비디오 스트림을 제공하도록 컴퓨팅 시스템이 구성된다. 부가기능 관리자는 컴퓨터 프로그램의 기능성을 확장하기 위한 부가기능의 사용을 용이하게 하기 위해 제공된다. 부가기능 관리자는 클라이언트로부터 수신한 커맨드에 응답하고 개별 부가기능 및 부가기능 데이터를 특정 사용자 계정에 연계시키도록 구성된다. 부가기능은 서버에, 또는 클라이언트로부터 떨어진 다른 원격지에 위치할 수 있다.

Description

부가기능의 관리{Add-on Management}
본 발명은 컴퓨터 시스템 분야에 관한 것으로서, 구체적으로는, 컴퓨터 프로그램의 서버측에서의 실행에 관한 것이다.
<관련 출원의 상호 참조>
본 출원은, 미국 임시 특허출원 제61/382,470호(출원일: 2010. 9. 13., 명칭: "Add-on Management")에 대한 이익 및 우선권을 주장하는 출원이다. 본 출원은 미국 특허출원 제12/826,130호(출원일: 2010. 6. 29., 명칭: "Video Game Overlay") 및 미국 특허출원 제12/826,489호(출원일: 2010. 6. 29., 명칭: "Voice Overlay")에 관련된 것이다. 공동 소유의 상기 모든 특허출원의 개시 사항을 참고자료로서 본 명세서에 포함시킨다.
부가기능(add-on)이란, 기능성을 확장하거나 컴퓨터 프로그램을 강화시키기 위해 사용되는 한 세트의 컴퓨팅 명령(instruction)이다. 부가기능은 다양한 분야에 사용된다. 예를 들어, Adobe Reader® 부가기능은 마이크로소프트 워드(Microsoft Word)를 .pdf 파일로 인쇄하기 위해서, 또는 브라우저로 .pdf 파일을 볼 수 있도록 하는 데 사용할 수 있다. 부가기능은 온라인 비디오 게임에서 많이 사용된다. 예를 들어, 유명한 멀티플레이어 온라인 게임인 월드 오브 워크래프트(World of Warcraft)®는 게임 실연을 향상시키기 위해 사용할 수 있는 수 백 가지의 부가기능을 갖는다. 이러한 부가기능은 일반적으로, 제3자에 의해 제공된다. 컴퓨터 프로그램에 부가기능을 추가하기 위해서 사용자는 웹사이트로부터 부가기능을 다운로드하여 이를 사용자 컴퓨터의 적절한 디렉토리에 설치한다. 여기서 사용한 용어 "부가기능"은, 컴퓨터 프로그램의 기능성을 확대하기 위해 구성된, 특히 컴퓨터 프로그램을 위해서 개발된 옵션으로서의 컴퓨팅 명령(instruction)을 지칭한다. 부가기능은 제3자 또는 컴퓨터 프로그램 개발자에 의해 개발될 수 있다. 일부 컴퓨터 프로그램은 특정 디렉토리에서 부가기능을 찾도록 구성된다. 부가기능들은, 특정 프로그램을 강화시키도록 구성된다는 점에서, 프린터 드라이버 등의 소프트웨어 유틸리티와 구별된다. 부가기능(add-on)은 "플러그인(plug-in)"이라고도 부른다.
부가기능 데이터는 부가기능에 포함되거나 부가기능에 의해 생성되거나 조직화된 데이터이다. 예를 들어, 비디오 게임에서, 부가기능 데이터에는 게임 내에서의 객체의 위치, 재고 정보, 구매 및 판매 기록, 경매 하우스 데이터, 게임자가 아닌 캐릭터의 특징, 지도, 이력 정보, 오디오 데이터, 이벤트 타이밍 정보, 및/또는 그 밖의 것이 포함된다.
컴퓨터 프로그램에는 종종, 컴퓨팅 명령 또는 컴퓨터 프로그램과 부가기능 사이의 통신을 위해 구성된 응용 프로그래밍 인터페이스(API)가 포함된다. 예를 들어, 컴퓨터 프로그램은 부가기능용의 특정 디렉토리 내부를 볼 수 있도록 구성되는 것이 일반적이다. 이 디렉토리는 컴퓨터 프로그램이 저장된 디렉토리의 하위 디렉토리일 수 있다.
본 발명의 목적은, 컴퓨터 프로그램이 서버에서 실행되며 컴퓨터 프로그램의 비디오 스트림 출력이 지리적으로 원격지에 있는 클라이언트에게 제공되는 시스템에서 부가기능을 사용할 수 있게 하는 데에 있다.
본 발명의 일부 실시예는, 컴퓨터 프로그램이 서버에서 실행되는 시스템에서 부가기능(add-on)을 사용하는 시스템 및 방법을 포함하며, 프로그램의 실행 결과로 생성된 스트리밍 비디오가, 원격지 클라이언트로 제공된다. 이 부가기능은 서버 또는 클라이언트에 설치할 수 있다. 부가기능이 서버에 설치되고 컴퓨터 프로그램이 클라이언트에 설치되는 경우에는, 이 부가기능이 마치 컴퓨터 프로그램에 국지적으로 인접하여 서버에 위치하고 있는 것처럼 컴퓨터 프로그램이 동작되도록 응용 프로그래밍 인터페이스(API)가 제공된다. 서버에 있는 API는 통신 네트워크를 통해, 부가기능과 컴퓨터 프로그램 사이의 통신을 하도록 구성된다.
만약 부가기능이 서버에 설치되면, 컴퓨터 프로그램은 클라이언트 또는 클라이언트에서 지리적으로 떨어져 있는 원격지 중의 하나에 설치될 수 있다. 본 발명의 다양한 실시예에는, 예를 들어, 원격으로 부가기능을 설치하도록 구성된 유틸리티, 부가기능의 실행을 위한 가상 환경을 제공하도록 구성된 컴퓨팅 명령; 부가기능 데이터 저장소, 부가기능을 켜고 끄는(온/오프) 기능, 부가기능을 안전하게 실행하는 기능, 승인된 부가기능 목록을 유지하는 기능; 및/또는 그 밖의 것이 포함된다.
본 발명의 다양한 실시예에는, 부가기능에 의해 강화되는 게임 로직을 사용해서 비디오 프레임을 생성하고 이 비디오 프레임을, 비디오 게임의 게임 환경을 기반으로 한 비디오 스트림으로 인코딩하도록 구성된 비디오 소스; 상기 비디오 스트림을 지리적으로 원격지에 있는 클라이언트로 전송하고 이 클라이언트로부터 게임 커맨드를 수신하도록 구성된 I/O 장치; 비디오 게임을 액세스할 수 있는 장소에 부가기능을 저장하고, 이 부가기능을 액세스할 수 있는 장소에 이 부가기능의 부가기능 데이터를 저장하도록 구성된 부가기능 저장소; 비디오 게임에 의한 부가기능의 사용을 위해 구성되는 부가기능 환경을 생성하고, 부가기능을 사용자 계정에 연계하고, 부가기능 데이터를 사용자 계정에 연계하도록 구성된 부가기능 관리자; 그리고, 상기 게임 로직 또는 부가기능 관리자를 실행하도록 구성된 프로세서를 포함하는, 게임 서버 시스템이 포함된다.
본 발명의 다양한 실시예는, 부가기능에 의해 강화되는 게임 로직을 사용해서 비디오 프레임을 생성하고 이 비디오 프레임을, 지리적으로 원격지에 있는 클라이언트로부터 수신한 비디오 게임 상황과 게임 커맨드를 기반으로 한 비디오 스트림으로 인코딩하도록 구성된 비디오 소스; 상기 비디오 스트림을 지리적으로 원격지에 있는 클라이언트로 전송하고 이 클라이언트로부터 게임 커맨드를 수신하도록 구성된 I/O 장치; 상기 게임 로직의 새로운 버전의 수신에 응답하여 상기 부가기능을 자동으로 업데이트하도록 구성된 부가기능 관리자; 그리고,상기 게임 로직 또는 부가기능 관리자를 실행하도록 구성된 프로세서를 포함하는 시스템이 포함된다.
본 발명의 다양한 실시예에는, 제1 컴퓨팅 장치에 설치되며, 비디오 프레임을 생성하도록 구성되며, 이 비디오 프레임을 디스플레이에 표시하는 게임 로직; 상기 제1 컴퓨팅 장치에 설치되며, 상기 제1 컴퓨팅 장치에서 지리적으로 원격지에 있는 제2 컴퓨팅 장치에 설치되고 상기 게임 로직의 기능성을 강화하도록 구성된 부가기능과 상기 게임 로직 사이에서 커맨드를 리디렉션하도록 구성된 제1 API 필터; 제1 컴퓨팅 장치와 제2컴퓨팅 장치 사이에서 커맨드를 전송하도록 구성된 I/O 장치; 그리고, 상기 게임 로직을 실행하도록 구성된 프로세서를 포함하는 시스템이 포함된다.
본 발명의 다양한 실시예에는 부가기능을 실행하는 방법이 포함되는데, 이 방법은, 비디오 스트림을 클라이언트로 제공하도록 구성된 게임 서버 시스템에 부가기능을 설치 - 여기서 비디오 스트림은 게임 로직의 실행 결과이며, 게임 로직의 기능성을 확장하기 위해 구성된 부가 기능에 의해 게임 로직의 기능성이 확장되며, 클라이언트는 게임 서버 시스템으로부터 지리적으로 원격지에 위치함; 게임 로직을 실행; 게임 로직에서 클라이언트로부터 게임 커맨드를 수신; 수신한 게임 커맨드를 게임 로직으로부터 부가기능으로 전달; 부가기능을 사용하여 부가기능 데이터를 생성; 그리고, 클라이언트의 사용자 계정과 연계된 부가기능 데이터를, 클라이언트에서 지리적으로 떨어진 장소에 저장하는 것을 포함한다.
본 발명의 다양한 실시예에는 부가기능을 설치하는 방법이 포함되는데, 이 방법은, 설치할 부가기능을 식별; 컴퓨터 프로그램이 부가기능에 액세스하도록 구성된 부가기능 환경을 구축 - 여기서 컴퓨터 프로그램은 클라이언트를 사용하여 실행되고 클라이언트에서 지리적으로 원격지에 있는 서버에 위치함; 부가기능 환경에 부가기능을 배치; 부가기능을 클라이언트의 사용자 계정에 연계; 부가기능에 의해 생성된 부가기능 데이터를 저장할 저장소를 식별; 그리고, 저장소 또는 부가기능 데이터를 사용자 계정에 연계하는 것을 포함한다.
본 발명의 다양한 실시예에는 부가기능을 자동으로 업데이트하는 방법이 포함되는데, 이 방법은, 지리적으로 원격지에 있는 클라이언트로부터 수신한 게임 커맨드를 기초로 비디오 스트림을 생성하고 이 비디오 스트림을 원격지 클라이언트로 제공하도록 구성된 비디오 소스에서, 게임 로직의 업데이트 버전을 수신; 부가기능이 게임 로직의 기능성을 강화하기 위해 사용되었는지 판단; 부가기능의 업데이트 버전에 대한 요청을 제3자에게 전송 - 이 요청에는 부가기능의 정체성(identity) 및 업데이트를 제공해야 할 주소가 포함됨; 부가기능의 업데이트 버전을 컴퓨팅 네트워크를 통해 수신 - 이 부가기능의 업데이트 버전은 게임 로직의 업데이트 버전을 강화하도록 구성됨; 그리고, 게임 로직이 부가기능을 사용하도록 구성된 부가기능 환경에 부가기능을 자동으로 설치하는 것을 포함한다.
본 발명에 따르면, 컴퓨터 프로그램이 서버에서 실행되며 컴퓨터 프로그램의 비디오 스트림 출력이 지리적으로 원격지에 있는 클라이언트에게 제공되는 시스템에서 부가기능을 사용할 수 있다.
도 1은 본 발명의 다양한 실시예에 따른, 하나 이상의 부가기능에 의해 강화된 컴퓨터 프로그램을 실행하도록 구성된 시스템을 도시한다.
도 2는 본 발명의 다양한 실시예에 따른, 부가기능에 의해 추가된 다수의 비디오 게임을 제공하도록 구성된 비디오 소스의 실시예의 블록 다이어그램이다.
도 3은 본 발명의 다양한 실시예에 따른, 부가기능 관리자의 상세 구성을 도시한다.
도 4는 본 발명의 다양한 실시예에 따른, 클라이언트의 상세 구성을 도시한다.
도 5는 본 발명의 다양한 실시예에 따른, 부가기능의 설치 및/또는 사용 방법을 도시한다.
도 6은 본 발명의 다양한 실시예에 따른, 부가기능을 자동으로 업데이트하는 방법을 도시한다.
컴퓨터 프로그램이 서버에서 실행되며 컴퓨터 프로그램의 비디오 스트림 출력이 지리적으로 원격지에 있는 클라이언트에게 제공되는 시스템이, 앞에서 인용한 공동 소유의 특허 출원에 개시되어 있다. 본 발명의 다양한 실시예는 이 시스템에서 부가기능을 사용할 수 있는 능력을 제공한다. 부가기능은, 서버, 클라이언트, 또는 그 밖의 장소에 위치할 수 있는 부가기능 관리자에 의해서 설치, 실행, 지원, 및 그 밖의 관리가 수행된다. 예를 들어, 부가기능 관리자는, 컴퓨터 프로그램의 API를 통해 부가기능에 액세스할 수 있도록, 서버의 적절한 환경 내에 부가기능을 설치하는 데에 사용될 수 있다. 부가기능에 의해 생성된 부가기능 데이터 및 부가기능 자체는 일반적으로, 특정의 클라이언트, 사용자 계정, 아바타, 및/또는 그 밖의 것과 연계된다. 본 발명의 다른 실시예에서는, 클라이언트에 컴퓨터 프로그램은 설치되지만 부가기능은 설치되지 않는다.
도 1은 본 발명의 다양한 실시예에 따른, 하나 이상의 부가기능에 의해 강화된 컴퓨터 프로그램을 실행하도록 구성된 게임 시스템(100)을 도시한다. 게임 시스템(100)은 네트워크(115)를 통해 하나 이상의 클라이언트(110)에 비디오 스트림을 제공하도록 구성된다. 게임 시스템(100)은 일반적으로, 비디오 서버 시스템(120)과, 선택사항인 게임 서버(125)를 포함한다. 비디오 서버 시스템(120)은 하나 이상의 클라이언트(110)에 최소한의 서비스 품질로 비디오 스트림을 제공하도록 구성된다. 예를 들어, 비디오 서버 시스템(120)은 비디오 게임의 상황(state) 또는 비디오 게임 내에서의 시점(point of view)을 변경하는 게임 커맨드(game 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차원 영상을 형성하도록 구성된 비디오 스트림의 정합된 쌍을 수신하도록 구성할 수 있다.
클라이언트(110)들은 일반적으로, 사용자로부터의 입력을 수신하도록 구성된다. 이들 입력 사항은 비디오 게임의 상황을 변경하도록 또는 그렇지 않으면 게임 실연에 영향을 미칠 수 있도록 구성된 게임 커맨드들(game commands)을 포함할 수 있다. 게임 커맨드는 입력 장치를 사용하여 수신할 수도 있고, 및/또는 자동으로 클라이언트(110)에서 실행되는 컴퓨팅 명령(computing instructions)에 의해서 생성될 수도 있다. 수신된 게임 커맨드는 네트워크(115)를 통해 클라이언트(110)로부터 비디오 서버 시스템(120) 및/또는 게임 서버(125)로 전송된다. 예를 들어, 일부 실시예에서, 게임 커맨드는 비디오 서버 시스템(120)을 통해 게임 서버(125)로 전송된다. 일부 실시예에서는, 클라이언트(110)로부터 게임 서버(125)와 비디오 서버 시스템(120)으로 게임 커맨드의 별도의 사본들이 전송된다. 게임 커맨드의 전송은, 선택에 따라서는, 커맨드의 정체성(identity)에 따라 달라진다. 게임 커맨드는, 선택에 따라서는, 클라이언트(110A)에 오디오 또는 비디오 스트림을 제공하기 위해 사용되는 다른 경로 또는 통신 채널을 통해 클라이언트(110A)로부터 전송된다.
다양한 실시예에서, 클라이언트(110)는, 각 클라이언트(100)와 비디오 서버 시스템(120) 사이, 또는 클라이언트(110)들의 각 구성 클라이언트 사이에서 부가기능 데이터(add-on data)를 통신하도록 구성된다. 예를 들어, 클라이언트들 간의 직접 음성 통신을 가능하게 하는 부가 기능이, 클라이언트 간의 오디오 데이터의 통신에 포함될 수 있다. 서버측 컴퓨터 프로그램의 기능성을 강화시키는 부가기능 데이터는, 서버측 부가기능에 사용되기 위하여 또는 클라이언트측 부가기능에 사용되기 위하여 클라이언트(110) 중 하나에 저장될 수 있다. 부가기능 데이터는 또한, 비디오 서버 시스템(120)에 또는 부가기능 서버(165)에 저장될 수 있고, 클라이언트(110)들 중 하나, 비디오 서버 시스템(120), 또는 부가기능 서버(165)에서의 부가기능에 사용될 수 있다.
게임 서버(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)으로 하여금 비디오, 커맨드, 부가기능, 부가기능 데이터, 정보 요청, 게임상황, 클라이언트 정체성, 게임자 정체성, 게임 커맨드, 보안 정보, 오디오 데이터, 및/또는 그 밖의 것을 전송 및/또는 수신하도록 구성된다. I/O 장치(145)는 일반적으로, 네트워크 카드 또는 모뎀 등의 통신 하드웨어를 포함한다. I/O 장치(145)는 게임 서버(125), 네트워크(115), 및/또는 클라이언트(110)와 통신하도록 구성된다. I/O 장치(145)는 클라이언트(110) 중의 하나 이상으로부터 정보를 수신하도록 구성된다. I/O 장치(145)는, 선택에 따라서는, TCP나 UDP 등의 표준을 사용하여 정보를 패킷으로서 수신하도록 구성된다.
프로세서(150)는 본 명세서에서 설명한 비디오 서버 시스템(120)의 다양한 구성요소에 포함되어 있는 로직(예컨대, 소프트웨어)을 실행하도록 구성된다. 예를 들어, 프로세서(150)는 비디오 소스(130), 게임 서버(125), 및/또는 부가기능 관리자(160)의 기능을 수행하기 위해 소프트웨어 명령어(instruction)들로 프로그래밍할 수 있다. 비디오 서버 시스템(120)은, 선택에 따라서는, 프로세서(150)의 하나 이상의 인스턴스를 포함한다. 프로세서(150)는 또한, 비디오 서버 시스템(120)에 의해 수신된 커맨드(command)를 실행하기 위해, 또는, 본 명세서에서 설명한 게임 시스템(100)의 다양한 구성요소의 기능을 조율하기 위해, 소프트웨어 명령어로 프로그래밍할 수 있다. 프로세서(150)는 하나 이상의 하드웨어 장치를 포함할 수 있다. 프로세서(150)는 전자식 처리기이다.
저장소(155)에는 비일시적 아날로그 및/또는 디지털 저장 장치가 포함된다. 예를 들어, 저장소(155)는 비디오 프레임을 저장하도록 구성된 아날로그 저장 장치를 포함할 수 있다. 저장소(155)는 컴퓨터 판독 가능한 디지털 저장장치, 예를 들어, 하드 드라이브, 광 드라이브, 또는 반도체 저장장치 등을 포함할 수 있다. 저장소(155)는 비디오 프레임, 인공 프레임(artificial frame), 비디오 프레임과 인공 프레임을 포함하는 비디오 스트림, 오디오 프레임, 오디오 스트림, 부가기능, 부가기능 데이터, 및/또는 그 밖의 것을 저장하도록 구성된다(예를 들어, 적절한 데이터 구조 또는 파일 체계로써 구성됨). 저장소(155)는, 선택에 따라서는, 다수의 장치 간에 분산 배치된다. 일부 실시예에서, 저장소(155)는, 본 명세서의 다른 곳에서 논의된 비디오 소스(130)의 소프트웨어 구성부분을 저장하도록 구성된다. 이 구성부분은 필요시에 즉시 준비될 수 있도록 하기 위한 포맷으로 저장될 수 있다.
비디오 서버 시스템(120)은, 선택에 따라서는, 부가기능 관리자(160)를 추가로 포함한다. 부가기능 관리자(160)는 비디오 서버 시스템(120) 및/또는 클라이언트(110)에 있는 컴퓨터 프로그램을 강화시키기 위해 부가기능의 사용이 용이하도록 구성된다. 예를 들어, 일부 실시예에서, 부가기능 관리자(160)는 비디오 소스(130) 내에서 게임 프로그램을 강화하도록 구성된다. 일부 실시예에서, 부가기능 관리자(160)는 클라이언트(110)의 게임 프로그램을 강화하도록 구성된다.
부가기능 관리자(160)가 수행할 수 있는 작업은, 부가기능 설치, 부가기능 업데이트, 부가기능 실행, 부가기능 데이터 저장, 부가기능 데이터의 통신을 포함하지만 이에 국한되지는 않는다. 일부 실시예에서, 부가기능 관리자(160) 에는 부가기능과 관련 컴퓨터 프로그램 사이의 리디렉션(redirection) 통신을 위해 구성된 컴퓨팅 명령(instructions)이 포함된다. 부가기능 관리자(160)는 컴퓨터 프로그램으로부터 메시지를 다른 대체 장소로(원래는 컴퓨터 프로그램에 관련된 특정 위치로 전달됨) 리디렉트할 수 있다. 예를 들어, 비디오 소스(130)에 포함된 컴퓨터 프로그램이 컴퓨터 프로그램에 관련된 특정 디렉토리에 있는 부가기능들 및/또는 부가기능 데이터에 액세스하도록 구성된 경우라면, 이 액세스를, 비디오 서버 시스템(120)의 다른 위치로, 또는 클라이언트(110)들 중 하나로, 또는 별도의 부가기능 서버(165)로 돌리도록(리디렉트) 부가기능 관리자(160)를 구성할 수 있다. 컴퓨터 프로그램이 부가기능에 액세스하도록 구성되어 있는 특정 디렉토리는 컴퓨터 프로그램이 실행되는 디렉토리의 하위 디렉토리일 수 있다. 액세스가 리디렉트되는 대상이 되는 장소는, 선택에 따라서는, 가상 환경이다. 또는 이와 달리, 컴퓨터 프로그램이 클라이언트(110B) 내에 있으며 클라이언트(110B)의 특정 디렉토리 내에 있는 부가기능에 액세스하도록 구성되어 있다면, 이 액세스를 비디오 서버 시스템(120) 및/또는 부가기능 서버(165)에 있는 장소로 리디렉트하도록 부가기능 관리자를 구성할 수 있다. 이와 같이, 클라이언트(110B)의 부가기능은 비디오 서버 시스템(120)에 있는 컴퓨터 프로그램을 강화하는 데 사용할 수 있다(또는 그 반대도 가능함). 마찬가지로, 부가기능 서버(165)의 부가기능은 클라이언트(110) 또는 비디오 서버 시스템(120) 중 하나에 있는 컴퓨터 프로그램을 강화하는 데 사용할 수 있다. 가상 환경은, 소정의 장소 또는 물리적 장치(가령, 저장 장소 또는 경로)를 소프트웨어를 사용하여 시뮬레이션하는 환경을 의미한다.
부가기능 관리자(160)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 부가기능 관리자(160)의 전부 또는 일부는, 선택에 따라서는, 비디오 서버 시스템(120)의 하나 이상의 다른 구성요소와 떨어져 있는 컴퓨팅 장치에 배치된다. 예를 들어, 부가기능 관리자(160)의 전체 또는 일부는, 선택에 따라서는, 클라이언트(110), 또는 부가기능 서버(165), 또는 게임 시스템(100) 내의 다른 위치에 배치된다. 부가기능 관리자(160)에 대한 보다 더 자세한 사항은 본 명세서의 다른 곳에서 설명한다.
옵션사항인 부가기능 서버(165)는 하나 이상의 부가기능의 저장 및/또는 실행을 위해 구성된 시스템이다. 부가기능 서버(165)는 또한, 부가기능 데이터를 저장하는 데 사용될 수 있다. 부가기능 서버(165)와 비디오 서버 시스템(120) 및/또는 클라이언트(110) 사이의 통신은 직접 이루어지거나, 네트워크(115)를 통해 이루어질 수 있다. 부가기능 서버(165)는, 선택에 따라서는, 부가기능의 출시자 또는 개발자에 의해 관리된다. 일부 실시예에서, 컴퓨터 프로그램으로부터의 통신은, 컴퓨터 프로그램에 근접한 장소로부터 부가기능 서버(165)의 위치로 리디렉트된다. 예를 들어, 부가기능 데이터 또는 실행가능한 부가기능에 대한 액세스가 클라이언트(110B) 또는 비디오 서버 시스템(120)에서부터 부가기능 서버(165)로 리디렉트될 수 있다. 게임 시스템(100)은 하나 이상의 비디오 서버 시스템(120) 및/또는 하나 이상의 부가기능 서버(165)를 포함할 수 있다.
부가기능 서버(165)에는 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함된다. 예를 들어, 일부 실시예에서 부가기능 서버(165)에는 컴퓨팅 장치, 디지털 저장소, 전자 프로세서, 및 I/O 장치가 포함된다. 디지털 저장소에 부가기능 실행 코드, 부가기능 데이터, 영상, 부가기능 관리자(160)의 전체 또는 일부, 게임 시스템(100)의 다른 구성요소와의 부가기능 통신을 관리하도록 구성된 컴퓨팅 명령, 및/또는 그 밖의 것을 저장시킬 수 있다.
도 2는 본 발명의 다양한 실시예에 따른, 부가기능에 의해 강화된 다중 비디오 게임을 제공하도록 구성된 비디오 소스(130)의 실시예의 구성 블록도이다. 다중 비디오 게임은 동일한 비디오 게임의 다수의 인스턴스들 및/또는 다른 비디오 게임의 다수의 인스턴스들을 포함할 수 있다. 비디오 게임은, 선택에 따라서는, 멀티플레이어 게임이다. 예를 들어, 비디오 게임 중 하나 이상의 게임상황이 게임 서버(125)의 하나 이상의 인스턴스(각각은 다수의 클라이언트로부터 받은 입력에 기초함)에 의해 유지될 수 있다. 도 2에 도시한 비디오 소스(130)의 구성요소들은, 선택에 따라서는, 프로세서(150)를 사용해 실행된다.
비디오 게임은 게임 로직(210)의 서로 다른 인스턴스(각각 210A, 210B, 210C 등으로 표시해 놓았음)를 사용하여 실행된다. 게임 로직(210)은 게임상황을 사용하여, 게임자에게 표시해주도록 구성된 비디오 스트림으로 렌더링할 수 있는 게임 환경을 결정하도록 구성된다. 게임 환경은 게임내 객체, 아바타, 객체의 위치, 객체의 형상, 질감, 객체 간의 공간 관계, 및 그 밖의 것이 포함된 2차원 또는 3차원의 가상 환경이다. 게임 환경은 정점(vertex) 데이터, 변환(transformation) 데이터 및 질감 데이터, 및/또는 그 밖의 것을 포함할 수 있다.
게임 환경의 렌더링은 일반적으로, 특정 게임자와 관련된 하나 이상의 시점에 기반을 두고 있다. 이들 시점은 위에서 보기, 앞으로 보기 등과 같이 매우 다를 수 있다. 또는, 시점은, 사람의 눈동자 사이의 거리에 의해 대략적으로 서로 다르게 되는 위치로부터 생길 수 있으며, 3D 영상을 만들도록 구성할 수 있다. 비디오 소스(130)는 게임 로직(210)의 1, 2, 3, 5, 7, 15, 또는 31개 이상의 인스턴스를 포함할 수 있다. 게임 로직(210)은, 선택에 따라서는, 게임 서버(125)의 클라이언트이며, 네트워크(115)를 통해 게임 서버(125)와 통신하도록 구성할 수 있다.
게임 로직(210)은 클라이언트(110)의 하나 이상으로부터 게임 커맨드를 수신하고 수신된 커맨드를 한 세트의 게임 규칙에 따라 처리하도록 구성된다. 이 규칙은, 예를 들어, 아바타가 다른 아바타들 또는 게임내 객체들과 상호작용하는 방법, 아바타의 움직임, 게임 인스턴스의 관리, 및/또는 그 밖의 사항을 포괄하고 있다. 게임 로직(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조의 그래픽 계산 코어가 제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로 보내도록 구성된다.
하나 이상의 게임 로직(210)은, 선택에 따라서는, 각각 부가기능 환경(287)과 연계된다. 부가기능 환경(287)은 하드웨어, 펌웨어, 및/또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어가 포함되고, 연계된 게임 로직(210)이 부가기능 및/또는 부가기능 데이터에 액세스하도록 구성된다. 예를 들어, 일부 실시예에서, 부가기능 환경(287)은 부가기능 및/또는 부가기능 데이터를 저장하도록 구성된 디렉토리 구조를 포함한다. 특정 디렉토리 구조는 게임 로직 210A와 게임 로직 210B의 정체성에 따라 달라진다. 예를 들어, 게임 로직(210A)이 "부가기능"이라는 이름의 하위 디렉토리에서 부가기능을 검색하고, 이 부가기능 디렉토리의 하위 디렉토리에서 부가기능 데이터를 검색하도록 구성된 경우에는, 부가기능 환경(287)은 이들 하위 디렉토리 또는 이들 하위 디렉토리의 가상 표시를 포함할 수 있다. 일반적으로, 부가기능 환경(287)은, 게임 로직(210A)이, 마치 부가기능이 게임 로직(210A)에 국지적으로(로컬로) 설치(예컨대, 게임 로직(210A)과 동일한 디렉토리 구조 내에, 또는 동일한 파일 체계로)된 것처럼 동작할 수 있도록 구성된다. 이로써, 동일한 컴퓨팅 장치에서 함께 설치되도록 구성된 게임 로직(210A)의 인스턴스와 부가기능을, 게임 로직(210)과 이에 연계된 부가기능이, 인터넷과 같은 네트워크(115)에 의해 연결된 별도의 컴퓨팅 장치에 설치되는 경우라 하더라도, 사용할 수 있게 된다.
일부 실시예에서, 부가기능 환경(287)에는, 클라이언트(110)들 중 하나에 저장된 부가기능(및 부가기능 데이터)과 게임 로직(210), 부가기능 서버(165), 및/또는 비디오 서버 시스템(120) 내의 다른 장소 간의 통신을 리디렉트하도록 구성된 컴퓨팅 명령이 포함된다. 예를 들어, 부가기능 환경(287)은 게임 로직(210)의 API를 통해서 메시지를 보내고 받는 컴퓨팅 명령 그리고 이 메시지를 리디렉트하는 컴퓨팅 명령을 포함할 수 있다. 부가기능 환경(287)은, 선택에 따라서는, API로부터 어느 메시지를 리디렉트해야 하는지를 식별하고, 필요시에는 특정 메시지를 여러 다른 장소로 리디렉트하도록 구성되는 필터를 포함한다. 이와 유사한 필터는 부가기능에 대한 국지적 위치에 포함될 수도 있다. 이 필터는 또한, 부가기능 환경(287)의 일부로 간주할 수 있으며, 부가기능으로부터 메시지(예를 들어, 데이터 또는 커맨드)를 받고 이 메시지를 게임 로직(210) 중 관련된 게임 로직으로 전달하도록 구성된다. 예를 들어, 부가기능이 게임 로직 210A로부터의 요청 또는 커맨드에 응답시에, 이 요청 또는 커맨드에 대한 응답은 게임 로직 210A로 리디렉트된다. 어느 방향으로든지 리디렉션은 네트워크(115)를 통한 데이터 패킷의 통신을 포함할 수 있다. 부가기능 환경(287)은 일반적으로, 부가기능 관리자(160)에 의해서 생성되거나, 또는, 부가기능 관리자(160)의 일부를 포함한다.
공유 메모리(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)는 메모리에 저장되어 전자식 프로세서에 의해 실행되는 1조의 소프트웨어를 제공할 수 있다.
오디오 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은 본 발명의 다양한 실시예에 따른 부가기능 관리자(160)의 상세 구성을 도시한다. 일반적으로, 부가기능 관리자(160)는, 부가기능의 원격 선택 및 설치가 가능하도록, 부가기능 환경을 사용하여 부가기능의 실행을 용이하게 하고, 부가기능을 관리하고, 부가기능과 부가기능 데이터를 특정 사용자(게임자) 계정이나 아바타와 연계시키고, 및/또는 그 밖의 작용을 하도록 구성된다. 부가기능 관리자(160)는 일반적으로, 컴퓨터 판독 가능한 매체에 저장된 소프트웨어를 포함하지만, 펌웨어 또는 하드웨어도 포함할 수 있다. 부가기능 관리자(160)는 하나의 컴퓨팅 장치에 배치될 수 있거나 하나 이상의 컴퓨팅 장치들 간에 분산 배치될 수도 있다. 예를 들어, 다양한 실시예에서, 부가기능 관리자(160)의 구성부분들은 비디오 서버 시스템(120), 부가기능 서버(165), 및/또는 클라이언트(110B)에 배치될 수 있다.
부가기능 관리자(160)는 부가기능을 컴퓨터 프로그램과 연계하여 설치하도록 구성된 부가기능 설치자(310)를 포함한다. 본 명세서에서 사용한 부가기능과 컴퓨터 프로그램의 연계는, 컴퓨터 프로그램의 기능성을 강화하거나 그렇지 않으면 확장하도록 부가기능이 구성됨을 나타내고자 의도된 것이다. 일반적으로, 부가기능은 특정 컴퓨터 프로그램과 연계되어 구성된다. 선택에 따라서는, 설치는 원격으로 이루어진다. 예를 들면, 비디오 서버 시스템(120)에서의 설치를, 네트워크(115)를 통해 클라이언트(110B)로부터 받은 커맨드에 대한 응답으로서 수행할 수 있다. 이 커맨드는 부가기능 관리자(160)가 수신하여 처리한다.
부가기능 설치자(310)에 의해 수행되는 설치에는, 부가기능의 실행과 호환되는 특징을 갖는 부가기능 환경(287)의 생성이 포함될 수 있다. 본 명세서의 다른 곳에서 설명한 바와 같이, 부가기능 환경(287)은 디렉토리 구조, 통신을 리디렉트하도록 구성된 컴퓨팅 명령 등을 포함할 수 있다. 예를 들어, 상기 설치에는, 게임 로직(210)에 관련된 디렉토리, 하위 디렉토리, 또는 디렉토리 구조의 그 밖의 요소를 생성하는 것이 포함될 수 있다. 일부 실시예에서, 상기 설치에는, 다른 장치로 메시지를 리디렉션하도록 구성된 컴퓨팅 명령을 추가하는 것이 포함된다. 이러한 컴퓨팅 명령의 설치는 게임 로직(210)의 위치에서 그리고/또는 부가기능의 위치에서 수행될 수 있다.
설치의 시작과 제어는 부가기능 인터페이스(320)를 통해서 할 수 있다. 부가기능 인터페이스(320)는 클라이언트(110)의 사용자에게 표시되도록 구성된 사용자 인터페이스, 네트워크(115)를 통해 이 사용자 인터페이스를 생성하고 전송하도록 구성된 컴퓨팅 명령, 그리고/또는 사용자 인테페이스를 통해 사용자가 입력한 커맨드를 수신하도록 구성된 컴퓨팅 명령을 포함한다. 다양한 실시예에서, 사용자 인터페이스는, 사용자로 하여금, 설치하고자 할 부가기능을 선택하고, 부가기능 및 부가기능 데이터 저장 공간에 대한 비용을 지불하고, 특정 아바타에 대해서 어느 부가기능을 활성화해야 하는지를 선택하고, 부가기능을 온/오프하고, 부가기능을 업데이트하도록, 그리고 승인된 부가기능 목록을 관리하도록, 그리고/또는 부가기능의 설치를 해제하도록 구성된다. 커맨드의 선택과 입력은 일반적으로, 부가기능 인터페이스(320)의 사용자에게 표시되는 해당 부분에서 문자 등을 클릭하거나 입력함으로써 수행된다. 이러한 행위의 결과는 부가기능 인터페이스(320)의 다른 부분으로 전송되어 처리된다. 부가기능 인터페이스(320)의 일부는, 선택에 따라서는, 클라이언트(110)에 전송되는 비디오 스트림에 중첩된다.
부가기능 인터페이스(320)를 사용함으로써, 사용자는 비디오 서버 시스템(120) 또는 부가기능 서버(165)에 하나 이상의 부가기능을 원격으로 설치할 수 있고, 그리고/또는 클라이언트(110)로부터 떨어져 있는 부가기능 및 게임 로직(210)의 위치에서의 리디렉션을 위한 적절한 컴퓨팅 명령을 설치할 수 있다. 예를 들어, 사용자는 승인된 부가기능의 목록에서 하나 이상의 부가기능을 선택할 수 있다. 이 승인된 부가기능 목록은, 선택에 따라서는, 저장소(155) 또는 부가기능 서버(165)에 저장된다. 승인된 부가기능은, 게임 출시자, 비디오 서버 시스템(120)의 관리자, 또는 그 밖의 기관에 의해서 게임 로직(210)에의 사용 자격을 인정받은 부가기능을 의미한다. 부가기능 인터페이스(320)를 사용함으로써, 사용자는 또한, 선택에 따라서는, 어느 계정, 아바타, 및/또는 게임의 부가기능이 연계되어야 하는지, 그리고 어디에 부가기능을 저장해야 하는지(예를 들어, 클라이언트 중 하나(110)에, 비디오 서버 시스템(120)에, 및/또는 부가기능 서버(165)에)를 선택할 수 있다. 예를 들어, 사용자는, 하나 이상의 어느 특정 아바타에 대해서만 부가기능을 사용해야 하고 다른 아바타에는 사용해서는 안됨을 지정할 수 있다.
본 발명의 일부 실시예에서, 사용자는, 부가기능의 수, 그리고/또는 사용자가 사용가능한 부가기능 저장소의 크기에 제한을 받는다. 이 제한은 부가기능 관리자(160)에 의해 관리되며, 추가 공간을 구입하여 증설할 수 있다. 예를 들어, 일 실시예에서, 사용자는, 부가기능이 포함될 수 있는 3개의 가상 "슬롯"을 받고, 돈을 지불하거나 소정의 행위(다른 게임자들을 데리고 옴)를 취함으로써 추가 슬롯을 구입할 수 있다.
부가기능 관리자(160)는, 선택에 따라서는, 설치된 부가기능을 사용자가 켜고 끌 수 있도록(온/오프) 구성된다. 예를 들어, 사용자는, 게임 내 특정 활동(예를 들어 게임자대 게임자의 대전)에 대해서만 부가기능을 사용하고 싶을 수 있다. 부가기능을 오프한다는 것이 반드시 설치해제를 의미하는 것은 아니다. 일부 실시예에서, 오프된 부가기능은 부가기능 슬롯을 필요로 하지 않는다. 이러한 실시예에서, 사용자는 사용가능한 슬롯보다 더 많은 부가기능을 설치할 수 있다. 또는 이와 달리, 각 설치된 각 부가기능은, 활성화 여부에 상관없이 슬롯을 필요로 할 수도 있다.
일부 실시예에서, 부가기능 관리자(160)는 부가기능을 업데이트하도록 구성된다. 이러한 업데이트는 수동 및/또는 자동으로 할 수 있다. 수동 업데이트는, 예를 들어, 사용자가 부가기능 관리자(160)에서 부가기능 출시자의 웹주소 또는 부가기능 코드를 입력하는 것을 포함한다. 부가기능 관리자(160)는 출시자 또는 클라이언트(110) 중 하나로부터 부가기능을 검색할 수 있다. 자동 부가기능 업데이트는, 부가기능 출시자 또는 그 밖의 출처로부터 부가기능을 자동으로 검색하는 것을 포함한다. 예를 들어, 부가기능이 구버전인 것으로 감지될 때에, 부가기능 관리자(160)는, 선택에 따라서는, 해당 부가기능의 출시자 또는 그 밖의 출처에 자동으로 업데이트 버전을 요청하고 가능하게 되면 해당 업데이트 버전을 자동으로 설치하도록 구성된다. 이 과정은 게임자에 투명할 수 있다. 어떤 경우에는, 부가기능 관리자(160)는 출처로부터 부가기능이 입수가능해질 때까지 기다린 다음에 업데이트를 수행할 것이다.
수동 또는 자동 부가기능 업데이트를 위해서, 부가기능 관리자(160)는, 선택에 따라서는, 부가기능이 구형 버전임을 감지하고 이를 사용자에게 알려주도록 자동으로 구성된다. 부가기능 관리자(160)는 또한, 부가기능의 새 버전이 입수가능함을 알리는 출시자의 통지를 수신하도록 구성될 수 있다.
부가기능 관리자(160)는, 선택에 따라서는, 클라이언트(110)의 사용자가 부가기능 인터페이스(320)를 통해 부가기능을 관리하도록 구성된다. 부가기능 인터페이스(320)를 통해 수행되는 상기 관리에는, 예를 들어, 부가기능의 업데이트, 부가기능의 구입, 부가기능의 구성, 부가기능의 이동, 설치된 부가기능을 보기, 부가기능의 활성화 및 불활성화, 부가기능의 설치, 부가기능의 설치 해제, 및/또는 그 밖의 기능이 포함될 수 있다. 일부 실시예에서, 부가기능 인터페이스(320)는 클라이언트측 부가기능에서 수행될 수도 있는 임의의 부가기능 관리 기능을 수행하도록 구성된다. 선택에 따라서는, 상기 설치 해제에는, 부가기능과 게임 로직(210) 사이의 메시지를 리디렉션하도록 구성된 컴퓨팅 명령어를 제거하는 것, 그리고/또는 부가기능 환경(287)을 제거하는 것이 포함된다. 다른 곳에서 논의한 것과 같이, 일부 실시예에서 부가기능 관리자(160)는 부가기능을 자동으로 업데이트하도록 구성된다. 업데이트 방식은, 선택에 따라서는, 부가기능 인터페이스(320)를 사용하여 관리된다.
부가기능 관리자(160)는, 선택에 따라서는, 부가기능 및/또는 부가기능 데이터를 클라이언트(110B) 또는 다른 클라이언트(110)의 사용자와의 연계를 관리하도록 구성된 계정 관리자(325)를 추가로 포함한다. 사용자(게임자)가 부가기능을 설치할 때, 계정 관리자는 이 부가기능을 특정 비디오 게임, 사용자, 사용자 계정, 및/또는 아바타에 연계시킨다. 일반적으로, 이 연계는 각 사용자가 설치한 부가기능 목록의 일부로서 저장된다. 사용자가 비디오 게임을 시작하면, 계정 관리자(325)는 이 목록을 읽고 사용자에 연계된 부가기능을 식별하게 된다. 그 다음에, 이들 부가기능 및 이에 해당되는 부가기능 환경이, 게임 로직(210), 비디오 DEP(245A), 및/또는 오디오 DEP(270A)의 준비와 함께 준비된다. 또한, 부가기능은, 선택에 따라서는, 사용자가 아바타를 바꾸거나 부가기능을 활성화 및 불활성화시킴에 따라 준비 또는 준비 취소된다.
계정 관리자(325)는 사용자가 비디오 게임을 실연하지 않는 때에, 사용자와 연계된 부가기능 데이터의 저장을 관리한다. 부가기능 데이터는 저장소(155), 부가기능 서버(165), 및/또는 클라이언트(110)에 저장될 수 있다. 게임 실연이 시작되면 이 데이터는 일반적으로, 해당 부가기능 환경(287)으로 복사되어 하나 이상의 준비된 부가기능에 의해 사용된다. 게임 실연이 완료되면 부가기능 환경(287) 내의 부가기능 데이터 사본을 사용하여 저장된 사본을 업데이트한다. 부가기능 데이터는 데이터베이스, 파일 구조, 또는 그 밖의 장소에 저장되고, 이 부가기능 데이터는 부가기능 데이터가 특정 사용자(즉, 게임자)에게 속해 있음을 식별하기 위한식별 정보(기록 색인 또는 파일명)를 포함한다. 일부 실시예에서 계정 관리자(325)는 어느 부가기능 데이터 파일이 특정 사용자에게 속하는지 그리고/또는 특정 계정이나 아바타에 연계되어 있는지를 나타내도록 구성된 지표(인덱스)를 유지한다.
다양한 실시예에서, 계정 관리자(325)는 부가기능 슬롯 및/또는 각 사용자가 액세스가능한 저장소의 개수를 관리하고, 추가되는 슬롯 및/또는 저장소에 대해서 사용자에게 과금하고, 그리고/또는 사용자에게 별도의 슬롯 또는 저장소를 구매할 것을 제안하도록 구성된다. 예를 들어, 사용자가 자기가 사용가능한 슬롯보다 더 많은 부가기능을 활성화하려고 시도하는 경우, 계정 관리자는 부가기능 인터페이스(320)를 사용하여 사용자에게 슬롯을 더 구입할 수 있는 기회를 제공한다.
부가기능 관리자(160)는, 선택에 따라서는, 부가기능을 업데이트하도록 구성된 부가기능 업데이터(330)를 추가로 포함한다. 업데이트는 부가기능의 새 버전이 입수가능해질 때, 또는 게임 로직(210)의 새 버전에 대한 응답으로서 수행될 수 있다. 예를 들어, 게임 로직(210)의 새 버전이 게임 제작자에 의해 출시되었을 때, 해당 게임에 대한 제3자의 부가기능은 일반적으로, 테스트 및/또는 업데이트 해야 할 필요가 있다. 부가기능 업데이터(330)는 소정 이벤트(예를 들어 부가기능 및 게임 로직(210)의 새로운 버전의 출시)를 모니터링하고, 이에 응해서 업데이트를 수행하도록 구성된다. 일부 실시예에서, 이 프로세스는, 게임 로직(210)의 새로운 버전이 입수가능하게 된 것을 알리는 정보를 수신하고, 부가기능의 업데이트 버전이 필요함을 부가기능 출시자에게 통지하고, 업데이트된 부가기능을 수신하고, 구형 부가기능을 업데이트된 부가기능으로 교체하는 것을 포함한다. 이들 단계의 일부 또는 전부는 자동으로 수행될 수도 있고, 또는 클라이언트(110B)의 사용자로부터의 입력이 관여할 수도 있다. 일부 실시예에서, 부가기능 업데이터(330)는 해당 FTP 서버 또는 웹사이트 등의 제3의 장소에서 부가기능을 자동으로 검색하도록 구성된다.
부가기능 관리자(160)는 부가기능 저장소(335)를 추가로 포함한다. 부가기능 저장소(335)는 데이터, 영상, 및/또는 실행가능 컴퓨팅 명령을 저장하도록 구성된 적어도 하나의 전자식 저장 장치를 포함한다. 예를 들어, 부가기능 저장소(335)는 휘발성 또는 비휘발성 메모리, 하드 드라이브, 및 옵션품 드라이브, 정적 또는 동적 랜덤 액세스 메모리, 및/또는 그 밖의 것을 포함할 수 있다. 부가기능 저장소(335)는, 선택에 따라서는, 비디오 서버 시스템(120), 부가기능 서버(165), 클라이언트(110)를 포함한 다수의 장치들 사이에 분산된다.
부가기능 저장소(335)에는, 선택에 따라서는 부가부(340)들이 포함된다. 부가부(340)들에는 데이터, 영상, 실행가능 코드, 스크립트, 또는 그 밖에, 게임 로직(210)의 기능을 확장하는 데 사용되도록 구성된 그 밖의 게임 컨텐트가 포함된다. 부가부(340)는 비디오 서버 시스템(120), 부가기능 서버(165), 클라이언트(110), 또는 그 밖의 곳에 부가기능으로서 설치될 수 있다. 부가부(340)는, 부가기능의 실행을 위해 제3자 출처로부터 직접 부가기능을 검색하는 실시예에서는 선택사항이다. 부가기능 저장소(355)는, 선택에 따라서는, 승인된 부가부(340)의 승인 목록(345)을 포함한다. 부가부(340)에 있는 컴퓨터 명령어들은, 선택에 따라서는, 하나 이상의 게임자에게 공유된다. 예를 들어, 하나의 부가기능이 준비되면, 이 하나의 부가기능이 게임 로직 210A 및 게임 로직 210B 둘 다와 연계되어, 서로 다른 컴퓨팅 스레드가 독립적으로 컴퓨팅 명령에 액세스할 수 있다.
부가기능 저장소(355)는, 선택에 따라서는, API 필터(350)를 포함한다. API 필터(350)는 본 명세서의 다른 곳에서 설명한 바와 같이, 부가부(340) 중 하나와 게임 로직(210) 사이의 통신을 리디렉션하도록 구성된 컴퓨팅 명령을 포함한다. 이러한 컴퓨팅 명령은, 부가기능 서버(165) 또는 클라이언트(110)들 중 하나에 있는 부가기능이, 비디오 서버 시스템(120)에 있는 게임 로직(210)의 기능성을 확장하는 데 사용할 수 있도록 구성될 수 있다. 또는 이와 달리, API 필터(350)를 사용하여, 비디오 서버 시스템(120)에 있는 또는 부가기능 서버(165)에 있는 부가기능은, 클라이언트(110)들 중 하나에 설치된 게임 로직(210)의 기능성을 확장하는 데 사용될 수 있다. API 필터(350)가 적정한 위치에 설치되어 있을 때에는, 부가기능과 컴퓨터 프로그램이 네트워크(115)을 통해 떨어져 있다 하더라도, 이 부가기능에 의해서 컴퓨터 프로그램의 기능성이 확장될 수 있다.
부가기능 저장소(355)에는, 선택에 따라서는, 부가기능과 함께 포함되거나 부가기능에 의해 생성 또는 조직되는 부가기능 데이터(355)가 포함된다. 부가기능 데이터(355)에는 하나 이상의 부가기능에 의해 생성된 데이터가 포함될 수 있다. 일반적으로, 이 데이터는, 게임이 시작되거나 부가부(340)가 활성화 될 때, 해당되는 부가기능 환경(287)으로 복사된다. 게임 실연이 완료되면 부가기능 환경(287) 내의 부가기능 데이터는, 부가기능 저장소(355)에 저장되어 있는 부가기능 데이터의 사본을 업데이트하는 데 사용된다.
도 4는 본 발명의 다양한 실시예에 따른, 클라이언트의 보다 상세한 구성을 도시한다. I/O(405)는, 클라이언트(110)로 하여금 비디오, 커맨드, 부가기능, 부가기능 데이터, 정보 요청, 게임상황, 클라이언트 정체성, 게임자 정체성, 게임 커맨드, 보안 정보, 오디오 데이터, 및/또는 그 밖의 것을 전송 및/또는 수신하도록 구성된다. 일부 실시예에서, I/O는 모뎀 또는 이더넷 포트를 포함한다.
클라이언트측 저장소(410)에는 비일시적 아날로그 및/또는 디지털 저장 장치가 포함된다. 예를 들어, 클라이언트측 저장소(410)는 비디오 프레임을 저장하도록 구성된 아날로그 저장 장치를 포함할 수 있다. 클라이언트측 저장소(410)는 컴퓨터 판독 가능한 디지털 저장장치, 예를 들어, 하드 드라이브, 광 드라이브, 또는 반도체 저장장치 등을 포함할 수 있다. 클라이언트측 저장소(410)는 비디오 프레임, 인공 프레임(artificial frame), 비디오 프레임과 인공 프레임을 포함하는 비디오 스트림, 오디오 프레임, 오디오 스트림, 부가기능, 부가기능 데이터, 및/또는 그 밖의 것을 저장하도록 구성된다(예를 들어, 적절한 데이터 구조 또는 파일 체계로써 구성됨). 이들 부가기능의 일부는 클라이언트(110B)에 있는 게임 로직(210)의 인스턴스에 연계될 수 있는데, 동일한 게임 로직(210)은 또한, 클라이언트(110B)로부터 지리적으로 원격지에 있는 장치에 설치된 부가기능과도 연계된다.
API 필터(350)는 다른 곳에서 논의한 것과 같이, 통신을 리디렉션하도록 구성된 부가기능 환경(287)의 일부분이다. 프로세서(420)에는 중앙 처리 장치(CPU) 및 적어도 하나의 그래픽 처리 장치(GPU)가 모두 포함된다. 디스플레이(430)는 클라이언트(110B)에서 국지적으로 생성된 비디오 스트림 및/또는 비디오 서버 시스템(120)에 의해 생성된 비디오 스트림을 표시하도록 구성된다.
사용자 입력부(440)는 예를 들어, 키보드, 조이스틱, 포인팅 장치, 전화, 포스 피드백 장치, 움직임 및/또는 위치 감지 장치, 마우스, 터치스크린, 신경 인터페이스, 카메라, 아직 개발되지 않은 입력장치, 및/또는 그 밖의 것을 포함한다.
도 5는 본 발명의 다양한 실시예에 따른, 부가기능의 설치 및/또는 사용 방법을 도시한다. 이 방법은, 부가기능 서버(165), 비디오 서버 시스템(120), 또는 클라이언트(110)들 중 하나에 부가기능이 설치되어있는 실시예, 그리고 게임 로직(210)이 클라이언트(110)들 중 하나 또는 비디오 서버 시스템(120)에 설치되어 있는 실시예에 적용가능하다. 이들 모든 실시예의 공통점은, 부가기능과 이에 연계된 게임 로직(210) 중 적어도 하나는 클라이언트(110)들 중의 한 클라이언트가 아닌 다른 곳에 설치되고 사용되며, 네트워크(115)를 통해 클라이언트(110)들 중 상기 클라이언트와 분리되어 있다는 것이다. 예를 들어, 게임 로직(210)이 클라이언트 110B에 설치되어 있는 경우, 적어도 하나의 관련 부가기능은, 클라이언트(110)들 중의 다른 클라이언트, 부가기능 서버(165), 비디오 서버 시스템(120), 또는 제3의 장소에 설치되고 사용된다. 게임 로직(210)이 클라이언트 110B 이외의 장소에 설치되어 있는 경우에는, 부가기능은 클라이언트 110B 또는 본 명세서에서 설명한 다른 장소에 설치할 수 있다. 선택에 따라서는, 부가기능의 설치에 관한 도 5의 상기 절차들은, 설치된 부가기능을 사용하는 것이 포함된 상기 절차들과는 별도로 수행된다. 부가기능의 설치 및 실행은 모두 클라이언트(110) 중 하나를 사용하여 게임자에 의해 시작될 수 있거나, 또는 게임 로직(210)에 대한 기본(디폴트) 설정의 일부로서 지정될 수 있다. 일부 실시예에는 하나 이상의 부을 설치하는 것이 포함된다.
게임 로직(210)이 비디오 서버 시스템(120)에 설치된 실시예를 먼저 고려하면, 이 설치 과정은 부가기능 식별 단계 510에서 시작할 수 있다. 이 단계에서, 설치하고자 할 부가기능은 일반적으로, 클라이언트(110) 중 하나를 사용하는 게임자에 의해 식별된다. 이 식별은 부가기능 인터페이스(320)를 사용하여 게임자에게 제공되는 부가기능 목록에서 이루어질 수도 있고, 저장 장소 또는 제3자 출처로부터 부가기능을 게임자가 선택할 수도 있다.
일부 실시예에서는 승인된 부가기능만을 식별할 수 있다. 이 실시예에서는, 선택에 따라서는, 식별된 부가부(340)가 부가기능의 승인 목록에 포함되어 있는지를 확인하기 위해 부가기능 확인 단계 515가 이용된다. 여기서의 확인에는, 승인된 목록에서 부가기능의 이름(또는 다른 식별자)을 찾는 과정, 또는 체크섬, URL, 또는 승인된 부가기능의 다른 싸인을, 선택된 부가기능의 해당 특징과 비교하는 과정이 포함될 수 있다.
환경 개설 단계 520에서는, 부가기능 관리자(160)를 사용하여, 식별한 부가기능의 실행을 위한 부가기능 환경(287)의 인스턴스를 개설한다. 다양한 실시예에서, 부가기능 환경(287)은 비디오 서버 시스템(120), 부가기능 서버(165), 또는 클라이언트(110) 중 하나에 개설된다. 예를 들어, 비디오 소스에(130) 부가기능 환경(287)을 개설하는 것에는, 연계된 게임 로직(210)에 의해 예상되는 장소에 부가기능이 설치될 수 있도록 적절한 디렉토리 구조를 생성하는 과정이 포함될 수 있다. 좀 더 구체적인 예로서, 게임 로직(210)이, 게임 로직(210)의 디렉토리에 관련된, "부가기능"이라는 이름의 하위 디렉토리를 검색하도록 구성된 경우에는, 환경 개설 단계 520에는, 이 하위 디렉토리를 적절한 위치에 생성하는 과정이 포함될 수 있다.
서버(165) 또는 클라이언트(110)들 중 하나에 부가기능 환경(287)을 개설하는 것에는 일반적으로, 게임 로직(210)과 부가기능 사이의 통신을 적절한 장소에 리디렉션하도록 구성돈 컴퓨팅 명령을 배치하는 것이 포함된다. 예를 들어, 제1 API 필터(350)를 게임 로직(210)의 API에 설치할 수 있고, 제2 API 필터(350)를 부가기능이 실행될 API에 설치할 수 있다. 이들 API 필터(350)는 서로에게 메시지를 리디렉션함으로서, 동일한 컴퓨팅 장치에서 함께 동작하도록 구성된 부가기능 및 이에 연계된 게임 로직(210)이 네트워크(115)를 통해서 서로 통신함에 의해 대신해서 동작하도록 구성된다. 부가기능 환경(287)의 설정은, 선택에 따라서는, 각 API 필터(350)를 구성하되, 이들이 어디에 설치되어 있는지 관계없이 상호 통신할 수 있도록 구성하는 것을 포함한다. 예를 들어, 각 API 필터(350)를, 이에 대응되는 API 필터(350)의 IP 주소 또는 URL을 갖도록 구성할 수 있다.
부가기능 수신 단계 525에서, 설치하고자 하는 부가기능을 저장소(155), 부가기능 저장소(335), 클라이언트(110)들 중 하나, 또는 제3의 장소로부터 수신한다. 부가기능은, 선택에 따라서는, 네트워크(115)를 통해 수신한다. 부가기능은, 실행되어야 할 장소, 예컨대, 환경 개설 단계 520에서 개설된 부가기능 환경(287)에서 수신된다. 부가기능 수신 단계 525의 일부 실시예에는, 부가기능을 부가기능 저장소(335), 클라이언트(110B), 또는 제3자의 장소로부터 비디오 서버 시스템(120)으로 전송하는 것이 포함된다. 부가기능 수신 단계 525의 일부 실시예에는 부가기능을 부가기능 저장소(335), 저장소(155), 또는 제3의 장소로부터 클라이언트(110B)로 전송하는 것이 포함된다.
배치 단계 530에서는, 수신된 부가기능을 환경 개설 단계 520에서 개설된 부가기능 환경(287)에 설치/배치한다. 이 설치는, 비디오 소스(130)의 디렉토리 구조 내에서, 또는 부가기능 서버(165), 비디오 소스(130), 및/또는 클라이언트(110)에 설치된 API 필터(350)의 위치에서 일어날 수 있다. 이 설치에는, 부가기능의 컴퓨팅 명령을 준비하는 것, 그리고, 선택사항으로서, 기본적인(디폴트) 부가기능을 준비하는 것이 포함될 수 있다. 환경 개설 단계 520은, 선택에 따라서는, 배치 단계 530 이후에 또는 이와 동시에 수행된다. 예를 들어, API 필터(350)는 부가기능이 설치된 다음에 설치될 수 있다. 배치 단계 520은, 선택에 따라서는, 부가기능과 함께 부가기능 데이터를 준비하는 것이 포함된다. 부가기능을 데이터 또는 부가기능 등의 위치에서 수도 있고 그렇지 않을 수도 있다. 부가기능 데이터는 부가기능과 동일한 장소로부터 올 수도 있고 그렇지 않을 수도 있다. 예를 들어, 부가기능 데이터는 클라이언트(110B)로부터 받는 반면에, 부가기능은 부가기능 서버(165)로부터 받을 수 있다. 수신된 부가기능 데이터는 기본(디폴트) 부가기능 데이터일 수도 있고, 게임자의 행위에 의해 수정된 부가기능 데이터일 수도 있다.
선택사항인 연계 단계 535에서, 배치 단계 530에서 설치된 부가기능, 그리고 선택사항으로서, 준비된 부가기능 데이터는 클라이언트(110)들 중 하나와 또는 클라이언트(110)들 중 하나의 사용자(즉, 게임자)와 연계된다. 이 연계에는, 사용자에게 할당된 부가기능의 목록에 부가기능의 식별자를 삽입하는 것, 또는 사용자에게 할당된 디렉토리 내로 부가기능을 복사해 넣는 것이 포함된다. 사용자와의 연계는, 사용자 계정, 사용자, 특정 비디오 게임, 하나 이상의 특정 아바타, 및/또는 그 밖의 것에 특정될 수 있다. 연계 단계 535는, 부가기능이 클라이언트(110)들 중 하나에 설치되거나 또는 계정이나 사용자 등과 이미 연계되어 있는 위치에 설치되는 때에는 선택사항이 될 수 있다. 이러한 경우에, 위치, 장치, 주소 등과의 연계는, 특정 사용자와의 연계 대신에 또는 이에 추가하여 수행될 수 있다.
일단 부가기능이 계정, 사용자, 또는 장소 등과 연계되면, 이는 사용자가 게임 로직(210)의 실행을 요청할 때마다 준비 및/또는 사용될 수 있다. 예를 들어, 사용자와 연계된 하나 이상의 부가기능이 게임 로직(210A) 및 비디오 DEP(245A)와 거의 동시에 준비될 수 있다. 준비 과정에는 여기서 설명한 것과 같이 단계 510 내지 530의 변형이 포함될 수 있다. 예를 들어, 부가기능이 사전에 설치된 후에 부가기능을 준비될 할 때에, 부가기능 식별 단계 510은 단순히, 사전에 사용자 또는 장소 등에 연계되어 있는 부가기능의 목록을 구문 분석(parsing)하는 것을 포함할 수 있다. 부가기능 수신 단계 525는 단순히, 하나 이상의 저장 위치(가령, 저장소(155), 부가기능 저장소(335), 또는 클라이언트측 저장소(410))에서 부가기능 및관련 부가기능 데이터를 검색하는 것을 포함한다.
일단 부가기능 및 모든 관련 부가기능 데이터가 준비되면, 부가기능은 게임 실행 단계(540)에서 사용하기 시작할 수 있다. 이 단계에서, 게임 로직(210)은 일반적으로, 클라이언트(110) 중 하나로부터 받은 요청에 응답함으로써 실행된다. 선택에 따라서는, 이 실행에는, 멀티플레이어 비디오 게임의 상황이 비디오 서버 시스템(120)에 유지되도록 하기 위한, 비디오 서버 시스템(120)과 게임 서버(125) 사이의 통신이 포함될 수 있다.
커맨드 수신 단계 545에서, 게임 커맨드는 게임 로직(210) 중 하나에 의해 클라이언트(110)들 중 하나로부터 수신된다. 이는, 일반적으로, 네트워크(115)를 통해 수행된다. 게임 커맨드는 부가기능의 제어를 위해 또는 부가기능에 의한 사용을 위해 구성된 커맨드이다. 예를 들어, 게임 커맨드를, 부가기능이 특정 정보를 표시하도록, 특정 기능을 수행하도록 구성할 수 있고, 또는 게임 커맨드에는 부가기능에 의해 처리된 데이터가 포함될 수 있다.
커맨드 전달 단계 550에서는, 커맨드 수신 단계 550에서 받은 게임 커맨드가 부가기능을 위한 커맨드인지 식별하고 부가기능으로 전달한다. 부가기능이 커맨드를 받은 게임 로직(210)과 동일한 컴퓨팅 장치에 설치되어 있는 실시예에서는, 커맨드를 이 게임 로직(210)의 API로부터 부가기능의 API로 직접 전달할 수 있다. 예를 들어, 게임 커맨드를 게임 로직(210A) API에 의해서 부가기능 API의 메모리 장소로 전달할 수 있다.
부가기능이 실행된 게임 로직(210)과 다른 컴퓨팅 장치에 설치되어 있는 실시예에서는, 수신된 커맨드를 게임 로직(210)과 부가기능 사이에서 전송하기 위하여 API 필터(350)가 사용된다. 예를 들어, 커맨드는 먼저, 게임 로직(210A)으로부터 비디오 소스(130)에 있는 제1 API 필터(350)로 전송될 수 있다. 이 제1 API 필터(350)는 게임 로직(210A) API의 관점에서 볼 때 부가기능 API로 보이도록 구성된다. 따라서 게임 로직(210A)으로부터 제1 API 필터(350)로의 전송은, 커맨드(또는 커맨드를 가리키는 포인터)를 제1 API 필터(350)의 메모리 위치로 제공함으로써 수행될 수 있다. 제1 API 필터(350)는 부가기능이 있는 위치(예를 들어, 클라이언트(110B) 또는 부가기능 서버(165) 중 하나)에서 제 2API 필터(350)로 커맨드를 전송하도록 구성된다. 이 통신은 TCP/IP, UDP/IP, 또는 그 밖의 통신 표준을 사용하여 네트워크(115)을 통해 수행할 수 있다. 제2 API 필터(350)는, 커맨드를 수신시에 부가기능으로 커맨드를 전달하도록 구성된다. 제2 API 필터(350)는 부가기능의 관점에서 볼 때, 게임 로직 API로 보이도록 구성된다. 따라서, 제2 API 필터(350)로부터 부가기능으로의 통신은 커맨드(또는 커맨드를 가리키는 포인터)를 부가기능의 메모리 위치로 제공함으로써 수행될 수 있다.
커맨드 처리 단계 555에서, 커맨드는 부가기능을 사용하여 처리된다. 이 처리에는 부가기능 데이터를 생성하는 것이 포함될 수 있다. 예를 들어, 커맨드에는 사용자에 의해 제공된 데이터 또는 게임 로직(210A)에서 제공한 데이터가 포함될 수 있다. 커맨드는 부가기능이 기록되도록 할 수 있고, 또는 게임에서 이벤트를 감지하여 이 이벤트에 따라 부가기능 데이터를 생성하도록 할 수 있다. 커맨드는 부가기능으로 하여금, 비디오 서버 시스템(120)에 의해 생성된 오디오 또는 비디오 스트림에 포함시키기 위한 오디오 또는 영상 데이터를 클라이언트(210)들 중 하나로 제공하도록 할 수 있다. 커맨드는 영상을 여러가지 포맷 간에 변환될 수 있도록 할 수 있다. 예를 들어, pdf 파일로 변환하는 경우를 들 수 있다. 이 오디오 또는 영상 데이터, 또는 커맨드 처리 단계 555에서 결과로서 출력된 임의의 데이터는, 선택에 따라서는, 예컨대 네트워크(115)를 통해, 비디오 서버 시스템(120) 또는 클라이언트(110) 중 하나로 전송된다. 커맨드는 현재 존재하는 부가기능 기술에서 공지된 그 밖의 결과를 낳을 수 있다.
선택적 단계인 저장 단계 560에서는 , 커맨드 처리 단계 550에서 생성된 데이터가 저장된다. 이 저장 동작은 부가기능에 인접해서 이루어질 수 있거나, 또는 이와 달리, 네트워크(115)를 통해 부가기능과 통신되는 위치에 인접해서 이루어질 수 있다. 예를 들어, 부가기능이 어디에 위치하는지에 관계없이, 데이터를 비디오 서버 시스템(120), 부가기능 서버(165), 및/또는 클라이언트(110)들 중 하나에 저장할 수 있다. 저장은 실시간으로 또는 소정의 지연 시간 후에 이루어질 수 있다. 예를 들어, 일부 실시예에서는, 부가기능에 국지적인(로컬) 부가기능 데이터의 작업 사본이, 게임 로직(210A)의 특정 실행 중에 사용되고, 이 실행이 종료되면 부가기능 데이터는 다른 곳에 저장된다.
선택적 단계인 생성 단계 565에서, 부가기능이 게임 커맨드를 처리한 결과로서 비디오 데이터가 생성된다. 예를 들어, 게임 커맨드는, 부가기능 데이터, 위치, 지도, 텍스트, 통지, 아이템, 및/또는 그 밖의 항목을 게임자에게 표시(또는 게임자에게 소리로서 제공)되도록 하는 요청을 대표할 수 있다. 비디오 데이터는 2차원 또는 3차원 영상을 포함할 수 있다. 예를 들어, 리소스의 위치를 나타내기 위하여, 2차원 영상/기호를 저장소에서 독출하여, 중첩으로서 적용될 비디오 데이터로 변환할 수 있다. 중첩을 사용하는 것에 대해서는 미국 특허출원 제12/826,130(출원일: 2010년 6월 29일, 명칭: Video Game Overlay)에 자세히 설명되어 있다. 이 특허 출원의 개시 내용을 참고문헌으로서 본 명세서에 포함시킨다. 또는 이와 달리, 비디오 데이터는, 부가기능이 2차원 또는 3차원 객체를 게임 환경에 부가하고 GPU(235)를 사용하여 비디오 데이터를 렌더링한 결과일 수 있다.
선택적 단계인 제공 단계 570에서는, 생성 단계 560에서 생성된 비디오 데이터가 비디오 스트림의 일부로서 클라이언트(110) 중 하나 이상으로 제공된다. 일반적으로, 이들 클라이언트(110)에는, 커맨드 수신 단계 545에서 수신된 게임 커맨드를 전송한 클라이언트(110)들이 포함되며, 이 비디오 스트림은 네트워크(115)를 통해 제공된다. 예를 들어, 게임 커맨드가 클라이언트 110B로부터 수신된 경우에는, 비디오는 클라이언트 110B 뿐만 아니라, 클라이언트 110A와 제3의 목적지로 제공될 수 있다. 이 제3의 목적지는 저장 장소, 웹사이트, 소셜 네트워킹 사이트, 텔레비전, 전화, 및/또는 그 밖의 것일 수 있다.
이제, 게임 로직(210)이 클라이언트(110B)에 설치되고 적어도 하나의 부가기능이 사용시에 클라이언트(110B)의 외부 있게 되는 실시예를 고려해보자. 이러한 실시예에서, 비디오 서버 시스템에서(120)은, 게임 환경이 게임상황에 기초하여 생성될 수 있고, 게임 환경이 비디오로 렌더링될 수 있고, 비디오가 모든 클라이언트(110B)에서 표시될 수 있기 때문에, 선택사항이다. 게임상황은, 게임 서버(125)로부터 받은 상황 정보를 기반으로 할 수 있고, 클라이언트(110)들 중의 다른 클라이언트로부터 받은 상황 정보를 기반으로 할 수 있고, 그리고/또는 전적으로 클라이언트(110B) 내의 정보를 기반으로 할 수 있다. 도 5에 도시된 단계들은 다음과 같이 변형될 수 있다.
환경 개설 단계 520에서, 게임 로직(210)과 부가기능은 필수적으로 서로 다른 컴퓨팅 장치에 있다. 그 이유는, 논의할 실시예에서, 게임 로직(210)은 클라이언트(110B)에 있으며, 게임 로직(210)과와 부가기능 중 적어도 하나는 네트워크(115)를 통해 떨어져 있는 서로 다른 컴퓨팅 장치에 있기 때문이다. 따라서 환경 개설 단계 520은 게임 로직(210)의 위치 및 부가기능의 위치 모두에서 API 필터(350)를 준비하는 것을 포함한다. 일부 실시예에서, 하나의 게임 로직(210)과 하나의 부가기능은 모두가 클라이언트(110B)에 있으며, 반면에, 적어도 하나의 다른 부가기능은 서로 다른 다른 컴퓨팅 장치, 예컨대, 부가기능 서버(165) 및/또는 비디오 서버 시스템(120)에 있다. 이 실시예에서, 환경 개설 단계 520은 서로 다른 컴퓨팅 장치에 있는 부가기능(들)에 대한 부가기능 환경(287)을 생성하는 과정으로 이동한다.
부가기능 수신 단계 525에서, 부가기능은 부가기능서버(165), 비디오 서버 시스템(120), 서로 다른 클라이언트(110), 또는 제3의 장소(예컨대, 부가기능 개발자에 의해 제어되는 웹서버, 파일 서버, 또는 그 밖의 위치)에서 수신된다. 배치 단계 530에서, 부가기능은 클라이언트(110)가 아닌 다른 위치, 즉, 부가기능에 의해서 강화될 게임 로직(210)의 인스턴스가 설치된 곳에 설치된다. 예를 들어, 게임 로직(210)이 클라이언트 210B에 배치되어 있는 경우라면, 부가기능은 클라이언트 210C, 부가기능 서버(165), 비디오 서버 시스템(120), 또는 제3의 장소에 설치될 수 있다. 배치 단계 530는, 선택에 따라서는, 부가기능을, 클라이언트(210B), 부가기능 서버(165), 또는 비디오 서버 시스템(120)으로부터 부가기능이 설치된 장소로 전송하는 것을 포함한다.
부가기능 연계 단계 535에서, 부가기능의 연계가 저장된 부가기능 목은, 선택에 따라서는, 클라이언트(210B)에 저장된다. 게임 실행 단계(540)와 커맨드 수신 단계 545는, 선택에 따라서는, 클라이언트(110B) 내로 국한된다. 예를 들어, 커맨드 수신 단계 545는, 네트워크(115)을 통해 커맨드를 전송하는 것이 아니라, 사용자 입력부(440)로부터 프로세서(420)로 커맨드를 전송하는 것을 포함할 수 있다. 커맨드 전달 단계 550는, 커맨드 수신 단계 544에서 수신한 커맨드를 클라이언트(110B)로부터 부가기능의 위치로 전달한다. 선택에 따라서는, 처리 단계 555에서 나오는 모든 데이터는 클라이언트(210B)로 되돌려 전송된다.
선택적 단계인 프로세스 저장 단계 560에서는, 커맨드 처리단계 550에서 생성된 데이터가 클라이언트(110B), 부가기능 위치, 및/또는 그 밖의 위치에 저장된다. 제공 단계 570는 생성 단계 560에서 생성된 비디오 데이터를 프로세서(420)로부터 디스플레이(430)로 단순히 출력하는 것을 포함할 수 있다. 그러나 일부 실시예에서는, 이 비디오 데이터가 클라이언트(110)를 구성하고 있는 다른 클라이언트 또는 본 명세서에서 설명한 제3의 장소로 제공될 수 있다.
이제, 게임 로직(210)이 클라이언트(110) 또는 비디오 서버 시스템(120) 중 하나에 배치될 수 있는 보다 일반적인 경우에 대해 살펴보자. 도 6은 본 발명의 다양한 실시예에 따른, 부가기능을 자동으로 업데이트하는 방법을 도시하고 있다. 부가기능은 일반적으로, 게임 로직(210)의 업데이트 버전을 수신함으로써 이에 대한 응답으로 업데이트된다. 도 6에 도시된 단계의 어떠한 조합이라도 자동으로 수행될 수 있다. 게임 로직(210)의 업데이트 버전을 실행하라는 요청을 받기 전에 업데이트된 부가기능에 대한 요청을 하는 것이 가능하다. 선택에 따라서는, 도 6에 도시된 방법은, 하나의 업데이트된 게임 로직(210)의 수신에 대한 응답으로서 하나 이상의 부가기능을 업데이트하는 데 사용된다.
게임 로직 업데이트 수신 단계 610에서, 비디오 소스(130) 또는 클라이언트(210B)에서는 게임 로직(210)의 새 버전을 수신한다. 이 새로운 버전은 일반적으로, 관련 비디오 게임의 출시자 또는 그 중개인으로부터 수신된다. 새 버전은, 선택에 따라서는, 네트워크(115)를 통해 수신된다. 게임 로직(210)의 새 버전은 이전 버전을 대체하도록 구성된다. 게임 로직 업데이트 수신 단계 610는, 선택에 따라서는, 구 버전의 부가기능을 무력화시키는 것을 포함한다.
부가기능 사용 판단 단계 615에서는, 부가기능이 게임 로직(210)의 구 버전의 기능성을 강화시키기 위해 사용되었는지 여부를 판단한다. 부가기능 사용 판단 단계 615는, 예를 들어, 특정 게임 로직(210), 비디오 게임, 사용자, 사용자 계정, 클라이언트(110) 등에 연계된 부가기능의 목록을 조사하는 것을 포함할 수 있다. 이 목록은 계정 관리자(325)에 의해 유지될 수 있다. 또는 이와 달리, 부가기능 사용 판단 단계 615가, 부가기능을 저장하도록 구성된 저장 장소를 조사하여 게임 로직(210)의 강화를 위해 구성된 부가기능을 찾을 수 있다.
요청 전송 단계 620에서는, 업데이트된 부가기능의 요청이 수행된다. 이 요청은 일반적으로, 부가기능의 출시자 또는 그 중개인과 같은 제3자에 대해 이루어진다. 요청에는, 업데이트가 제공되어야 할 주소가 포함되고, 선택에 따라서는, 부가기능의 정체성 그리고 부가기능과 호환성이 있어야 하는 게임 로직(210)의 새로운 버전의 정체성이 포함된다. 예를 들어, 이 요청은, "월드 오브 워크래프트 버전 6.542"의 게임 로직(210)을 위한 부가기능인 "Deadly Boss Mods"의 새로운 버전이 비디오 서버(120), 부가기능 서버(165), 또는 클라이언트(110B)로 전송됨을 나타낼 수 있다. 이 요청은, 선택에 따라서는, 네트워크(115)를 통해 전송된다. 요청 전송 단계 620은, 게임 로직(210)의 업데이트 버전이 게임 로직 업데이트 수신 단계 610에서 수신된 때 및 게임 로직(210)의 업데이트 버전을 실행하라는 요청이 최초 수신된 때 사이에서 수행될 수 있다. 요청 전송 단계 620은 게임 로직 업데이트 수신 단계 610에서 게임 로직(210)의 새 버전을 수신함에 대한 응답으로 자동으로 수행될 수 있다. 선택에 따라서는, 업데이트된 부가기능이 수신될 때까지 요청 전송 단계 620은 반복된다. 예를 들어, 이 요청은 처음에는 10분 간격으로 전송하고 나중에는 1시간마다 전송할 수 있다.
부가기능 업데이트 수신 단계 625에서는, 요청 전송 단계 620에서 제공된 주소로, 업데이트된 부가기능이 수신된다. 업데이트된 부가기능은 게임 로직 업데이트 수신 단계 610에서 수신한 새 버전의 게임 로직(210)을 강화시키도록구성되고, 네트워크(115)를 통해 수신할 수 있다. 부가기능 업데이트 수신 단계 625는, 선택에 따라서는, 게임 로직(210)의 업데이트 버전이 게임 로직 업데이트 수신 단계 610에서 수신된 때 및 게임 로직(210)의 업데이트 버전을 실행하라는 최초 요청이 수신된 때 사이에서 수행될 수 있다.
설치 단계 630에서는, 게임 로직 업데이트 수신 단계 610에서 수신한 업데이트된 부가기능이 설치된다. 이 설치는 부가기능 저장소(335) 또는 클라이언트측 저장소(410) 등의 저장소에 있는 부가기능에서 이루어질 수 있다. 또는 이와 달리, 이 설치는 더 이상의 준비없이 사용될 수 있는 부가기능 환경(287)에서 이루어질 수 있다. 선택적 단계로서, 설치 과정은 도 5와 관련하여 논의한 배치 단계 530과 유사하다. 설치 단계 630은, 선택에 따라서는, 자동으로, 가령, 게임자가 설치를 주문하지 않고도 실행된다.
실행 요청 수신 단계 635에서, 게임 로직 업데이트 수신 단계 610에서 수신한 새 버전의 게임 로직(210)을 실행하라는 요청이 수신된다. 이 요청은 클라이언트(110) 중 하나를 통해 게임자로부터 수신되며, 선택에 따라서는, 네트워크(115)를 통해 비디오 소스(130)가 수신한다. 실행 요청 수신 단계 635는 요청 전송 단계 620, 부가기능 업데이트 수신 단계 625, 및 설치 단계 630 중 어느 하나 이전에 또는 이후에 수행될 수 있다.
선택적 단계인 기부 요청 단계 640에서는, 부가기능의 출시자에 대한 기부 요청이 게임자에게 표시된다. 일반적으로, 이 게임자는 실행 요청 수신 단계 635에서 실행 요청을 한 게임자가 된다. 기부 요청은, 선택에 따라서는, 비디오 서버 시스템(120)을 사용하여 생성된 비디오 스트림에 중첩되어 표시된다.
선택적 단계인 사용자 통지 단계 645에서, 실행 요청 수신 단계 635에서 실행 요청을 한 게임자는 새 버전의 부가기능이 수신되었음을 통지받는다. 이 통지는, 선택에 따라서는, 비디오 서버 시스템(120)을 사용하여 생성된 비디오 스트림에 중첩되어 표시된다.
본 명세서에서 여러 실시예를 구체적으로 도시 및/또는 설명하였다. 그러나, 이에 대한 수정 및 변형은, 본 발명의 사상과 의도된 범위를 벗어나지 않고, 상술한 설명에 의해서 그리고 첨부한 청구범위의 범위 내에 포함됨을 이해할 것이다. 예를 들어, 여기서 논의한 시스템과 방법은 컴퓨터 게임에 관한 것이지만, 다른 실시예에서는 설명한 시스템 및 방법을 다른 유형의 컴퓨터 프로그램에도 적용할 수 있다. 이러한 컴퓨터 프로그램의 다른 유형으로는, 그래픽 프로그램, 스프레드시트, 워드프로세서, 데이터베이스 프로그램, 회계 프로그램, 프로젝트 관리 프로그램, 비디오 편집 프로그램, 영상 편집 프로그램, 웹사이트 개발 프로그램, 재고관리 프로그램, 전자 메일 프로그램, 파일 관리 프로그램, 문서 관리/보기 프로그램, 도면작성/CAD 프로그램, 프리젠테이션 프로그램, 및/또는 그 밖의 것을 들 수 있다. 또한, 대부분의 예시 설명에서는 하나의 부가기능을 참조하여 설명하였지만, 여기서 개시한 시스템과 방법은 부가기능의 그룹에 대해서도 적용할 수 있다. 이들 그룹은 부가기능 패키지로서 취급될 수 있다.
여기서 설명된 실시예들은 본 발명을 예시하는 것들이다. 본 발명의 이러한 실시예들을 도면을 참조하여 설명하였는바, 설명된 방법 및/또는 특정 구조의 다양한 수정 또는 적용은 발명이 속한 기술 분야에서 통상의 지식을 사람들에게 자명해질 수 있다. 본 발명의 개시 내용에 의존하는 이러한 모든 수정, 적용, 또는 변형과, 이를 통해 본 발명의 개시 내용이 기술을 진보시키는 것은, 본 발명의 사상 및 범위 내에 있는 것으로 간주된다. 따라서 본 발명이 설명된 실시예에만 한정되는 것이 전혀 아님을 이해할 수 있는 바, 본 설명 및 도면을 제한적인 의미로 간주해서는 안된다.
여기서 언급한 컴퓨팅 시스템은 집적 회로, 마이크로 프로세서, 개인용 컴퓨터, 서버, 분산 컴퓨팅 시스템, 통신 장치, 네트워크 장치, 또는 그 밖의 것, 그리고 이들의 조합을 포함할 수 있다. 컴퓨팅 시스템은 또한, 랜덤 액세스 메모리(RAM) 등의 휘발성 및/또는 비휘발성 메모리, 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 자기 매체, 광 매체, 나노 매체, 하드 드라이브, 컴팩트 디스크, 디지털 다용도 디스크(DVD), 및/또는 그 밖에, 가령 데이터베이스에 아날로그 또는 디지털 정보를 저장하도록 구성된 장치를 포함하는 하나 이상의 컴퓨터 판독 가능한 매체들을 포함할 수 있다. 앞에서 나타낸 로직의 다양한 예로서는, 하드웨어, 펌웨어, 또는 컴퓨터 판독 가능한 매체에 저장된 소프트웨어, 또는 이들의 조합을 들 수 있다. 여기서 사용한 컴퓨터 판독 가능 매체에서는 종이는 명시적으로 제외한다. 여기서 설명한 본 방법의 컴퓨터에 의한 실현 단계는 컴퓨터 판독 가능한 매체에 저장된 명령어 세트를 포함할 수 있다. 이들 명령어가 실행되면 컴퓨팅 시스템이 각 단계를 수행할 수 있다. 프로그램 소프트웨어의 명령어에 관련된 특정 기능을 수행하도록 프로그램된 컴퓨팅 시스템은, 이러한 특정 기능들을 수행하기 위한 특수 목적 컴퓨팅 시스템이다. 이들 특정 기능을 수행시에 특수 목적 컴퓨팅 시스템에 의해 취급되는 데이터는 컴퓨팅 시스템의 버퍼에 최소한 전자식으로 저장되어, 이 특수 목적 컴퓨팅 시스템을 어느 한 상태에서 다음 상태로(이때 각 상태마다 저장된 데이터는 변경된다) 물리적으로 변화시킨다.

Claims (20)

  1. 게임 서버 시스템으로서, 상기 시스템은,
    비디오 프레임을 생성하고 상기 비디오 프레임을 비디오 스트림으로 인코딩하기 위한 게임 로직을 이용하도록 구성된 비디오 소스;
    상기 비디오 스트림을 지리적으로 원격지에 있는 클라이언트에 전송하고 상기 클라이언트로부터 게임 커맨드를 수신하도록 구성된 I/O 장치;
    중첩(overlay)에 액세스하여 상기 중첩을 상기 비디오 스트림의 상기 비디오 프레임의 일부분에 적용하기 위한 중첩 로직;
    상기 비디오 소스가 상기 중첩을 갖는 상기 비디오 프레임을 인코딩하여 상기 중첩을 갖는 상기 비디오 스트림을 상기 클라이언트에 전송하게 하기 위해, 상기 게임 로직 및 상기 중첩 로직을 실행하도록 구성된 프로세서를 포함하고,
    상기 비디오 스트림은 비디오 게임의 게임 환경을 기반으로 하며,
    상기 게임 로직은 상기 중첩에 의해 강화되는 것을 특징으로 하는 게임 서버 시스템.
  2. 제1항에 있어서, 상기 중첩은 영상 데이터 또는 오디오 데이터 중 하나를 포함하는 것을 특징으로 하는 게임 서버 시스템.
  3. 제1항에 있어서, 상기 중첩은 영상 데이터이며, 상기 영상 데이터는 투명도와 관련된 것을 특징으로 하는 게임 서버 시스템.
  4. 제1항에 있어서, 상기 중첩은 영상 데이터이며, 상기 영상 데이터는 상기 비디오 프레임의 일부분에 적용되기 이전에 크기가 재조정되도록 구성되고, 상기 비디오 프레임의 상기 일부분은 픽셀 위치와 관련된 것을 특징으로 하는 게임 서버 시스템.
  5. 제1항에 있어서, 상기 중첩은 정지 영상 또는 동영상인 것을 특징으로 하는 게임 서버 시스템.
  6. 제1항에 있어서, 상기 중첩은 상기 비디오 게임에 대한 제어를 제공하기 위해 인터페이스될 수 있는 입력 제어의 그래픽 영상을 제공하는 것을 특징으로 하는 게임 서버 시스템.
  7. 제1항에 있어서, 상기 중첩은 상기 비디오 게임의 상기 비디오 프레임의 영상 데이터에 추가될 수 있는 영상 데이터를 제공하는 것을 특징으로 하는 게임 서버 시스템.
  8. 제1항에 있어서, 상기 중첩은 상기 비디오 게임의 오디오 데이터에 추가되는 오디오 데이터인 것을 특징으로 하는 게임 서버 시스템.
  9. 제1항에 있어서, 상기 중첩은 상기 비디오 게임의 하나 이상의 비디오 프레임을 갖는 중첩 영상을 포함하는 것에 연관된 정보와 관련된 영상 데이터인 것을 특징으로 하는 게임 서버 시스템.
  10. 제1항에 있어서, 상기 비디오 소스는 상기 비디오 게임의 플레이 요청에 응답하여 할당된 다이나믹 인코딩 파이프라인(dynamic encoding pipeline)을 포함하는 것을 특징으로 하는 게임 서버 시스템.
  11. 하나 이상의 게임 서버에 의해 비디오 게임을 스트리밍하기 위한 컴퓨터 실행 가능한 방법으로서, 상기 방법은:
    상기 하나 이상의 서버의 게임 로직에 의해, 비디오 스트림을 생성하도록 인코딩된 비디오 프레임을 생성하는 단계;
    상기 하나 이상의 서버에 의해, 중첩 로직을 처리하는 단계; 및
    중첩을 포함하는 상기 비디오 스트림을, 인코딩 이후에, 지리적으로 원격지에 있는 클라이언트에 전달하는 단계를 포함하고,
    상기 비디오 스트림은 비디오 게임의 게임 환경을 기반으로 하며,
    상기 게임 로직은 상기 중첩에 액세스하여 상기 중첩을 상기 비디오 스트림의 상기 비디오 프레임의 일부분에 적용하기 위한 상기 중첩 로직과 통신하도록 구성되고,
    상기 게임 로직은 상기 비디오 게임의 플레이 중에 상기 클라이언트로부터 게임 커맨드를 수신하도록 구성되는 것을 특징으로 하는 방법.
  12. 제11항에 있어서, 상기 중첩은 영상 데이터 또는 오디오 데이터 중 하나를 포함하는 것을 특징으로 하는 방법.
  13. 제11항에 있어서, 상기 중첩은 영상 데이터이며, 상기 영상 데이터는 투명도와 관련된 것을 특징으로 하는 방법.
  14. 제11항에 있어서, 상기 중첩은 영상 데이터이며, 상기 영상 데이터는 상기 비디오 프레임의 일부분에 적용되기 이전에 크기가 재조정되도록 구성되고, 상기 비디오 프레임의 상기 일부분은 픽셀 위치와 관련된 것을 특징으로 하는 방법.
  15. 제11항에 있어서, 상기 중첩은 정지 영상 또는 동영상인 것을 특징으로 하는 방법.
  16. 제11항에 있어서, 상기 중첩은 상기 비디오 게임에 대한 제어를 제공하기 위해 인터페이스될 수 있는 입력 제어의 그래픽 영상을 제공하는 것을 특징으로 하는 방법.
  17. 제11항에 있어서, 상기 중첩은 상기 비디오 게임의 상기 비디오 프레임의 영상 데이터에 추가될 수 있는 영상 데이터를 제공하는 것을 특징으로 하는 방법.
  18. 제11항에 있어서, 상기 중첩은 상기 비디오 게임의 오디오 데이터에 추가되는 오디오 데이터인 것을 특징으로 하는 방법.
  19. 제11항에 있어서, 상기 중첩은 상기 비디오 게임의 하나 이상의 비디오 프레임을 갖는 중첩 영상을 포함하는 것에 연관된 정보와 관련된 영상 데이터인 것을 특징으로 하는 방법.
  20. 제11항에 있어서, 상기 하나 이상의 서버는 상기 비디오 게임의 플레이 요청에 응답하여 할당된 다이나믹 인코딩 파이프라인과 관련된 것을 특징으로 하는 방법.
KR1020197020042A 2010-09-13 2011-09-13 부가기능의 관리 KR102126910B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US38247010P 2010-09-13 2010-09-13
US61/382,470 2010-09-13
US13/231,751 2011-09-13
US13/231,751 US10039978B2 (en) 2010-09-13 2011-09-13 Add-on management systems
PCT/US2011/051461 WO2012037165A2 (en) 2010-09-13 2011-09-13 Add-on management

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137008011A Division KR102000618B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207017830A Division KR102230426B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리

Publications (2)

Publication Number Publication Date
KR20190086039A true KR20190086039A (ko) 2019-07-19
KR102126910B1 KR102126910B1 (ko) 2020-06-25

Family

ID=45807247

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020137008011A KR102000618B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리
KR1020217007786A KR102288072B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리
KR1020207017830A KR102230426B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리
KR1020197020042A KR102126910B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020137008011A KR102000618B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리
KR1020217007786A KR102288072B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리
KR1020207017830A KR102230426B1 (ko) 2010-09-13 2011-09-13 부가기능의 관리

Country Status (5)

Country Link
US (7) US10039978B2 (ko)
EP (1) EP2609520B1 (ko)
KR (4) KR102000618B1 (ko)
CN (2) CN110336850B (ko)
WO (1) WO2012037165A2 (ko)

Families Citing this family (104)

* 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
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
US9077991B2 (en) * 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US8549574B2 (en) 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US8888592B1 (en) 2009-06-01 2014-11-18 Sony Computer Entertainment America Llc Voice overlay
US9349201B1 (en) 2006-08-03 2016-05-24 Sony Interactive Entertainment America Llc Command sentinel
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10058778B2 (en) * 2007-12-05 2018-08-28 Sony Interactive Entertainment America Llc Video compression system and method for reducing the effects of packet loss over a communication channel
US8968087B1 (en) 2009-06-01 2015-03-03 Sony Computer Entertainment America Llc Video game overlay
US9498714B2 (en) 2007-12-15 2016-11-22 Sony Interactive Entertainment America Llc Program mode switching
US8613673B2 (en) * 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US9723319B1 (en) * 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
US9426502B2 (en) 2011-11-11 2016-08-23 Sony Interactive Entertainment America Llc Real-time cloud-based video watermarking systems and methods
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8676591B1 (en) 2010-08-02 2014-03-18 Sony Computer Entertainment America Llc Audio deceleration
KR20170129967A (ko) * 2010-09-13 2017-11-27 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 게임 서버를 포함하는 컴퓨터 게임 시스템에서 통신 네트워크를 통해 클라이언트들 간에 게임 세션을 이송하는 방법
KR102000618B1 (ko) 2010-09-13 2019-10-21 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 부가기능의 관리
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US9873045B2 (en) * 2012-05-25 2018-01-23 Electronic Arts, Inc. Systems and methods for a unified game experience
US20140004944A1 (en) * 2012-06-28 2014-01-02 Zynga Inc. Integrating online games with online feeds
US9135030B2 (en) * 2012-06-29 2015-09-15 M-Files Oy Method, an apparatus and a computer program product for extending an application in a client device
US8961302B2 (en) 2012-07-20 2015-02-24 Microsoft Technology Licensing, Llc Game browsing
US9381432B2 (en) 2012-08-24 2016-07-05 Microsoft Technology Licensing, Llc Game migration
EP2904591A1 (en) * 2012-10-02 2015-08-12 DR Gaming Technology Europe NV Controller for gaming devices
US20140171204A1 (en) * 2012-12-13 2014-06-19 Microsoft Corporation Asynchronous cloud rendered video delivery
US9526980B2 (en) 2012-12-21 2016-12-27 Microsoft Technology Licensing, Llc Client side processing of game controller input
US9717982B2 (en) 2012-12-21 2017-08-01 Microsoft Technology Licensing, Llc Client rendering of latency sensitive game features
CN103916432A (zh) * 2013-01-04 2014-07-09 云联(北京)信息技术有限公司 一种基于云计算的游戏实现方法及系统
KR20240132105A (ko) 2013-02-07 2024-09-02 애플 인크. 디지털 어시스턴트를 위한 음성 트리거
US9564102B2 (en) 2013-03-14 2017-02-07 Microsoft Technology Licensing, Llc Client side processing of player movement in a remote gaming environment
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US9694277B2 (en) 2013-03-14 2017-07-04 Microsoft Technology Licensing, Llc Client side processing of character interactions in a remote gaming environment
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
KR101772152B1 (ko) 2013-06-09 2017-08-28 애플 인크. 디지털 어시스턴트의 둘 이상의 인스턴스들에 걸친 대화 지속성을 가능하게 하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스
US9027032B2 (en) * 2013-07-16 2015-05-05 Damaka, Inc. System and method for providing additional functionality to existing software in an integrated manner
DE112014003653B4 (de) 2013-08-06 2024-04-18 Apple Inc. Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen
US9661269B2 (en) 2013-10-03 2017-05-23 Polycom, Inc. System for enabling communications and conferencing between dissimilar computing devices including mobile computing devices
US10391403B2 (en) * 2013-11-14 2019-08-27 Sony Interactive Entertainment LLC Game extensions in a gaming environment
CN110797019B (zh) 2014-05-30 2023-08-29 苹果公司 多命令单一话语输入方法
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10315108B2 (en) * 2015-08-19 2019-06-11 Sony Interactive Entertainment America Llc Local application quick start with cloud transitioning
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
US10595169B2 (en) 2016-06-12 2020-03-17 Apple Inc. Message extension app store
US10785175B2 (en) * 2016-06-12 2020-09-22 Apple Inc. Polling extension application for interacting with a messaging application
US10852912B2 (en) 2016-06-12 2020-12-01 Apple Inc. Image creation app in messaging app
US10552480B1 (en) * 2017-02-21 2020-02-04 Amazon Technologies, Inc. Package management for asset processing
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US10964423B2 (en) * 2017-09-12 2021-03-30 AebeZe Labs System and method for labeling a therapeutic value to digital content
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US10668383B2 (en) * 2018-07-11 2020-06-02 Zygna Inc. GPU authentication
KR101950001B1 (ko) * 2018-08-31 2019-02-20 넷마블 주식회사 게임 어플리케이션 이외의 어플리케이션을 통한 제어에 기초하여 게임 서비스를 제공하는 서버 및 방법
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11449920B1 (en) * 2019-12-12 2022-09-20 Amazon Technologies, Inc. Providing add-ons for network applications
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
US11771999B2 (en) * 2020-03-20 2023-10-03 Valve Corporation Personalized game notifications
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11038934B1 (en) 2020-05-11 2021-06-15 Apple Inc. Digital assistant hardware abstraction
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
WO2022024195A1 (ja) * 2020-07-27 2022-02-03 株式会社Vrc サーバ及び情報処理方法
US11902343B1 (en) 2021-04-19 2024-02-13 Damaka, Inc. System and method for highly scalable browser-based audio/video conferencing
US11770584B1 (en) 2021-05-23 2023-09-26 Damaka, Inc. System and method for optimizing video communications based on device capabilities
US11868788B2 (en) 2021-11-04 2024-01-09 Here Global B.V. Method and apparatus for application plug-in management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224761A1 (en) * 2005-02-11 2006-10-05 Vemotion Limited Interactive video applications
US20100134692A1 (en) * 2006-09-04 2010-06-03 Michael Costello Displaying Video
WO2010095411A1 (ja) * 2009-02-19 2010-08-26 パナソニック株式会社 記録媒体、再生装置、集積回路

Family Cites Families (373)

* 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
AU2471995A (en) 1994-05-05 1995-11-29 Catapult Entertainment, Inc. Network architecture for real-time video games
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
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
AU4158496A (en) 1994-11-14 1996-06-06 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
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
US5707286A (en) 1994-12-19 1998-01-13 Mikohn Gaming Corporation 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
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
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
US5738583A (en) 1996-02-02 1998-04-14 Motorola, Inc. Interactive wireless gaming system
US5828843A (en) 1996-03-21 1998-10-27 Mpath Interactive, Inc. Object-oriented method for matching clients together with servers according to attributes included in join request
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
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
JP2000502276A (ja) 1996-10-01 2000-02-29 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ エージェントによって減少されるマルチプレーヤビデオゲームにおけるラテンシーの影響
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
US6112212A (en) * 1997-09-15 2000-08-29 The Pangea Project Llc Systems and methods for organizing and analyzing information stored on a computer network
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
MXPA01000893A (es) 1998-07-27 2002-06-04 Webtv Networks Inc Acceso remoto a computadora.
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
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
US6665872B1 (en) 1999-01-06 2003-12-16 Sarnoff Corporation Latency-based statistical multiplexing
US6754241B1 (en) 1999-01-06 2004-06-22 Sarnoff Corporation Computer system for statistical multiplexing of bitstreams
US6583793B1 (en) 1999-01-08 2003-06-24 Ati International Srl Method and apparatus for mapping live video on to three dimensional objects
KR20060100478A (ko) 1999-01-28 2006-09-20 가부시키가이샤 세가 네트워크 게임 시스템
US6426748B1 (en) 1999-01-29 2002-07-30 Hypercosm, Inc. Method and apparatus for data compression for three-dimensional graphics
US6036601A (en) * 1999-02-24 2000-03-14 Adaboy, Inc. Method for advertising over a computer network utilizing virtual environments of games
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
US6716103B1 (en) 1999-10-07 2004-04-06 Nintendo Co., Ltd. Portable game machine
CA2388095A1 (en) 1999-10-22 2001-05-03 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
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
US20010029523A1 (en) 2000-01-21 2001-10-11 Mcternan Brennan J. System and method for accounting for variations in client capabilities in the distribution of a media presentation
US20010044339A1 (en) 2000-02-17 2001-11-22 Angel Cordero 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
EP1290571A4 (en) 2000-04-17 2005-11-02 Igt Reno Nev SYSTEM AND METHOD FOR DETECTING THE PICTURE OF A PLAYER TO INTEGRATE IT 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 仮想世界システム、サーバコンピュータおよび情報処理装置
WO2002033641A2 (en) 2000-10-16 2002-04-25 Cardionow, 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
AU2002243209A1 (en) 2000-11-01 2002-07-24 Station Casinos, Inc. Method and system for remote gaming
US7043524B2 (en) 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6918113B2 (en) 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US6959320B2 (en) 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US20020083461A1 (en) 2000-11-22 2002-06-27 Hutcheson Stewart Douglas 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
US7708205B2 (en) * 2003-11-13 2010-05-04 Metrologic Instruments, Inc. Digital image capture and processing system employing multi-layer software-based system architecture permitting modification and/or extension of system features and functions by way of third party code plug-ins
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
AU2002219857A1 (en) 2000-11-27 2002-06-03 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
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
JP4315414B2 (ja) 2001-05-01 2009-08-19 メタ4ハンド インク. 無線ネットワークコンピューティング
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 コンテンツ提供装置及びコンテンツ提供方法
JP3815278B2 (ja) 2001-08-30 2006-08-30 ソニー株式会社 ネットワークゲームシステム、ネットワークゲームサーバ装置、ネットワークゲーム端末装置、情報処理方法、及び情報処理プログラム
US20030048808A1 (en) 2001-09-12 2003-03-13 Stahl Thomas Anthony Method and apparatus for changing received streaming content channels
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
WO2003027876A1 (en) 2001-09-26 2003-04-03 Jodie Lynn Reynolds System and method for communicating media signals
US20030093806A1 (en) 2001-11-14 2003-05-15 Vincent Dureau Remote re-creation of data in a television system
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
US7297062B2 (en) 2001-11-23 2007-11-20 Cyberview Technology, Inc. Modular entertainment and gaming systems configured to consume and provide network services
KR100450823B1 (ko) 2001-11-27 2004-10-01 삼성전자주식회사 깊이 이미지 기반 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
WO2003053066A1 (en) 2001-12-17 2003-06-26 Microsoft Corporation Skip macroblock coding
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
AU2003208477A1 (en) 2002-03-01 2003-09-16 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
GB0208317D0 (en) 2002-04-11 2002-05-22 Koninkl Philips Electronics Nv Controlling a home electronics system
US7483487B2 (en) 2002-04-11 2009-01-27 Microsoft Corporation Streaming methods and systems
US20030228906A1 (en) 2002-04-19 2003-12-11 Walker Jay S. Methods and apparatus for providing communications services at a gaming machine
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
AU2003259828A1 (en) 2002-08-12 2004-02-25 Digital Interactive Streams, Inc Data streaming system and method
DE60222890T2 (de) 2002-08-12 2008-02-07 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
KR20020086835A (ko) 2002-08-12 2002-11-20 김흥호 인터넷망을 이용한 비디오게임의 다중플레이 및 관전법
AU2003259338A1 (en) 2002-08-21 2004-03-11 Lime Studios Limited Improvements to interactive tv games system
EP1392004B1 (en) 2002-08-22 2009-01-21 Interuniversitair Microelektronica Centrum Vzw Method for multi-user MIMO transmission and apparatuses suited therefore
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
US9032465B2 (en) 2002-12-10 2015-05-12 Ol2, Inc. Method for multicasting 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
US8468575B2 (en) 2002-12-10 2013-06-18 Ol2, Inc. System for recursive recombination of streaming interactive video
US9061207B2 (en) 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US20110122063A1 (en) 2002-12-10 2011-05-26 Onlive, Inc. System and method for remote-hosted video effects
US9108107B2 (en) 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using 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
US8949922B2 (en) 2002-12-10 2015-02-03 Ol2, Inc. System for collaborative conferencing using streaming interactive video
US9756349B2 (en) 2002-12-10 2017-09-05 Sony Interactive Entertainment America Llc User interface, system and method for controlling a video stream
US7849491B2 (en) 2002-12-10 2010-12-07 Onlive, Inc. Apparatus and method for wireless video gaming
US8387099B2 (en) 2002-12-10 2013-02-26 Ol2, Inc. System for acceleration of web page delivery
US8893207B2 (en) 2002-12-10 2014-11-18 Ol2, Inc. System and method for compressing 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
US8549574B2 (en) 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US8840475B2 (en) 2002-12-10 2014-09-23 Ol2, Inc. Method for user session transitioning among streaming interactive video servers
US20100166056A1 (en) 2002-12-10 2010-07-01 Steve Perlman System and method for encoding video using a selected tile and tile rotation pattern
US9227139B2 (en) * 2002-12-10 2016-01-05 Sony Computer Entertainment America Llc Virtualization system and method for hosting applications
US9138644B2 (en) * 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
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
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US20090118019A1 (en) 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US9003461B2 (en) 2002-12-10 2015-04-07 Ol2, Inc. Streaming interactive video integrated with recorded video segments
US8366552B2 (en) 2002-12-10 2013-02-05 Ol2, Inc. System and method for multi-stream video compression
US8495678B2 (en) 2002-12-10 2013-07-23 Ol2, Inc. System for reporting recorded video preceding system failures
US8661496B2 (en) 2002-12-10 2014-02-25 Ol2, Inc. System for combining a plurality of views of real-time streaming interactive video
US8964830B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US8711923B2 (en) 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
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
US8090618B1 (en) * 2002-12-12 2012-01-03 Massive Incorporated Online game commerce system
KR100507780B1 (ko) 2002-12-20 2005-08-17 한국전자통신연구원 고속 마커프리 모션 캡쳐 장치 및 방법
US7729946B2 (en) 2003-01-24 2010-06-01 Massive Incorporated Online game advertising system
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
CN101065963B (zh) 2003-08-29 2010-09-15 Rgb网络有限公司 提供低延迟类vcr效果和节目改变的视频多路复用器系统
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
KR100969966B1 (ko) * 2003-10-06 2010-07-15 디즈니엔터프라이지즈,인크. 비디오 플레이어의 재생 및 특징을 제어하는 방법 및 시스템
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
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
ATE385646T1 (de) * 2004-04-14 2008-02-15 Telecom Italia Spa Eine methode und ein system zur bedienung der zustellung eines inhalts in computernetzen
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US20050282636A1 (en) 2004-06-04 2005-12-22 O'brien Royal Gaming on demand system and methodology
EP1769399B1 (en) 2004-06-07 2020-03-18 Sling Media L.L.C. Personal media broadcasting system
US8099755B2 (en) 2004-06-07 2012-01-17 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream
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
KR101183000B1 (ko) 2004-07-30 2012-09-18 익스트림 리얼리티 엘티디. 이미지 프로세싱을 기반으로 한 3d 공간 차원용 시스템 및방법
US20060048136A1 (en) 2004-08-25 2006-03-02 Vries Jeff D Interception-based resource detection system
KR100456962B1 (ko) * 2004-08-27 2004-11-10 엔에이치엔(주) 게임 아이템 기능이 결합된 캐릭터 서비스 방법 및 시스템
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
EP1825390A2 (en) 2004-11-13 2007-08-29 Stream Theory, Inc. Hybrid local/remote streaming
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
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US20060149845A1 (en) 2004-12-30 2006-07-06 Xinnia Technology, Llc Managed quality of service for users and applications over shared networks
US20060168291A1 (en) 2005-01-05 2006-07-27 Van Zoest Alexander Interactive multichannel data distribution system
US20080207322A1 (en) 2005-03-21 2008-08-28 Yosef Mizrahi Method, System and Computer-Readable Code For Providing a Computer Gaming Device
WO2006102621A2 (en) 2005-03-23 2006-09-28 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
US7721117B2 (en) 2005-04-01 2010-05-18 Sherer W Paul Stream control failover utilizing an attribute-dependent protection mechanism
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
US7878907B2 (en) 2005-05-13 2011-02-01 Microsoft Corporation Real-time HD TV/video IP streaming to a game console
US20060258463A1 (en) 2005-05-13 2006-11-16 Professional Interactive Entertainment, Inc. System and method for network interactive game match-up and server selection
US20070254742A1 (en) 2005-06-06 2007-11-01 Digital Interactive Streams, Inc. Gaming on demand system and methodology
US20070011712A1 (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
US8875196B2 (en) * 2005-08-13 2014-10-28 Webtuner Corp. System for network and local content access
US20110157196A1 (en) * 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
JP2007080357A (ja) 2005-09-13 2007-03-29 Toshiba Corp 情報記憶媒体、情報再生方法、情報再生装置
US8135040B2 (en) 2005-11-30 2012-03-13 Microsoft Corporation Accelerated channel change
US7596540B2 (en) * 2005-12-01 2009-09-29 Exent Technologies, Ltd. System, method and computer program product for dynamically enhancing an application executing on a computing device
WO2007067217A2 (en) 2005-12-02 2007-06-14 Cyberscan Technology, Inc. In-room gaming
WO2007066329A2 (en) 2005-12-05 2007-06-14 Vollee Ltd. Method and system for enabling a user to play a large screen game by means of a mobile device
KR100826871B1 (ko) 2005-12-08 2008-05-06 한국전자통신연구원 휴대용 단말기를 위한 스트리밍 방식 게임 소프트웨어 제공방법 및 시스템
JP5399077B2 (ja) 2005-12-27 2014-01-29 マッシブ・インコーポレーテッド ビデオゲームまたはモバイル機器環境などにおけるストリーミングメディアキャスト
US8738639B1 (en) * 2006-02-23 2014-05-27 Verizon Data Services Llc Methods and systems for an information directory providing audiovisual content
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
BRPI0621618B1 (pt) 2006-04-29 2019-10-22 Interdigital Ce Patent Holdings método e dispositivo móvel para recuperar perda de um pacote de dados quando o dispositivo móvel é transferido de controle entre células
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
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
US7818769B2 (en) 2006-10-02 2010-10-19 Mobitv, Inc. Methods and apparatus for implementing dynamic program guides on mobile devices
EP2084671A4 (en) 2006-10-02 2011-02-09 Aftercad Software Inc METHOD AND SYSTEM FOR DELIVERING AND INTERACTIVE DISPLAYS OF THREE-DIMENSIONAL GRAPHICS
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 コンテンツ再生システム、再生装置、再生切替方法及びプログラム
US20080147424A1 (en) * 2006-12-15 2008-06-19 Rowan Michael J System and method for multiplayer computerized game environment with non-intrusive, co-presented computerized ratings
US7824268B2 (en) 2006-12-19 2010-11-02 Electronic Arts, Inc. Live hosted online multiplayer game
WO2008092385A1 (en) 2007-01-29 2008-08-07 Chon Fong Kuok Systems and methods for online games
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
US20090305790A1 (en) 2007-01-30 2009-12-10 Vitie Inc. Methods and Apparatuses of Game Appliance Execution and Rendering Service
US8020099B1 (en) * 2007-02-13 2011-09-13 Vitie Inc. Methods and apparatus of setting up interactive session of graphical interactive application based on video
US9737812B2 (en) 2007-02-13 2017-08-22 Sizmek Technologies Ltd. Method of interacting with an interactive game program
GB0703974D0 (en) * 2007-03-01 2007-04-11 Sony Comp Entertainment Europe Entertainment device
US8898325B2 (en) 2007-03-06 2014-11-25 Trion Worlds, Inc. Apparatus, method, and computer readable media to perform transactions in association with participants interacting in a synthetic environment
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
US20080220854A1 (en) * 2007-03-08 2008-09-11 Timothy Michael Midgley Method and apparatus for collecting user game play data and crediting users in an online gaming environment
US20080234047A1 (en) 2007-03-21 2008-09-25 Igt Wager game license management in a game table
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
CA2689526A1 (en) * 2007-06-19 2008-12-24 Wms Gaming Inc. Plug-in architecture for a wagering game network
US8612972B2 (en) * 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US20090006192A1 (en) * 2007-06-29 2009-01-01 Yahoo! Inc. Point of Presence Sponsorship Mechanism for Digital Content Objects
EP2191404A1 (en) 2007-08-20 2010-06-02 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
JP2011507348A (ja) 2007-12-05 2011-03-03 オンライブ インコーポレイテッド 検出されたイントラフレームモーションに基づいてビデオを圧縮するシステム及び方法
CN101919242A (zh) 2007-12-05 2010-12-15 生命力有限公司 用于对通信信道的带宽限制进行补偿的视频压缩系统及方法
JP2011509547A (ja) 2007-12-05 2011-03-24 オンライブ インコーポレイテッド 通信チャンネルを経て送信されるある形式のマルチメディアデータを保護するシステム及び方法
US9067140B2 (en) * 2007-12-05 2015-06-30 Verizon Patent And Licensing Inc. Method and apparatus for providing customized games
TW200941232A (en) 2007-12-05 2009-10-01 Onlive Inc Video compression system and method for reducing the effects of packet loss over a communication channel
CN101918936A (zh) 2007-12-05 2010-12-15 生命力有限公司 流动交互式视频客户端装置
WO2009073826A1 (en) 2007-12-05 2009-06-11 Onlive, Inc. System and method for storing program code and data within an application hosting center
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
EP2708268A3 (en) 2007-12-05 2014-05-14 OL2, Inc. Tile-based system and method for compressing video
JP2011507346A (ja) 2007-12-05 2011-03-03 オンライブ インコーポレイテッド 検出されたイントラフレームモーション又はシーンの複雑さに基づいてタイルサイズを調整することによりビデオを圧縮するシステム及び方法
CN101918933A (zh) 2007-12-05 2010-12-15 生命力有限公司 用于智能地将客户端请求分配到服务器中心的系统和方法
TW200952494A (en) 2007-12-05 2009-12-16 Onlive Inc Method for multicasting views of real-time streaming interactive video
JP2009141700A (ja) 2007-12-06 2009-06-25 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理プログラムおよび記録媒体
US8613673B2 (en) 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
US9211473B2 (en) 2008-12-15 2015-12-15 Sony Computer Entertainment America Llc Program mode transition
US9498714B2 (en) 2007-12-15 2016-11-22 Sony Interactive Entertainment America Llc Program mode switching
TW200948088A (en) 2008-02-27 2009-11-16 Ncomputing Inc 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
US8264493B2 (en) 2008-05-12 2012-09-11 Playcast Media Systems, Ltd. Method and system for optimized streaming game server
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
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
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
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
US9723319B1 (en) * 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
US20100317443A1 (en) 2009-06-11 2010-12-16 Comcast Cable Communications, Llc Distributed Network Game System
CN101604371B (zh) * 2009-07-22 2012-02-08 阿里巴巴集团控股有限公司 插件权限的控制方法及系统
US20110028194A1 (en) * 2009-07-31 2011-02-03 Razer (Asia-Pacific) Pte Ltd System and method for unified-context mapping of physical input device controls to application program actions
US8401973B1 (en) * 2009-11-19 2013-03-19 Adobe Systems Incorporated Method and system for managing a license for an add-on software component
US8803892B2 (en) * 2010-06-10 2014-08-12 Otoy, Inc. Allocation of GPU resources across multiple clients
KR102000618B1 (ko) 2010-09-13 2019-10-21 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 부가기능의 관리

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224761A1 (en) * 2005-02-11 2006-10-05 Vemotion Limited Interactive video applications
US20100134692A1 (en) * 2006-09-04 2010-06-03 Michael Costello Displaying Video
WO2010095411A1 (ja) * 2009-02-19 2010-08-26 パナソニック株式会社 記録媒体、再生装置、集積回路
KR20110126518A (ko) * 2009-02-19 2011-11-23 파나소닉 주식회사 기록매체, 재생장치 및 집적회로

Also Published As

Publication number Publication date
WO2012037165A3 (en) 2012-08-02
KR102230426B1 (ko) 2021-03-22
CN103403694A (zh) 2013-11-20
US10039978B2 (en) 2018-08-07
CN110336850B (zh) 2022-08-09
US20180154256A1 (en) 2018-06-07
EP2609520A4 (en) 2014-02-12
US9878240B2 (en) 2018-01-30
US20200197800A1 (en) 2020-06-25
EP2609520A2 (en) 2013-07-03
US10835819B2 (en) 2020-11-17
US11596861B2 (en) 2023-03-07
US11583766B2 (en) 2023-02-21
EP2609520B1 (en) 2018-05-30
CN110336850A (zh) 2019-10-15
KR102126910B1 (ko) 2020-06-25
CN103403694B (zh) 2019-05-21
US20120064975A1 (en) 2012-03-15
US20120064976A1 (en) 2012-03-15
KR20200075908A (ko) 2020-06-26
US20180326300A1 (en) 2018-11-15
US12011660B2 (en) 2024-06-18
KR20210032023A (ko) 2021-03-23
US10617947B2 (en) 2020-04-14
US20200197798A1 (en) 2020-06-25
KR20130095277A (ko) 2013-08-27
KR102000618B1 (ko) 2019-10-21
WO2012037165A2 (en) 2012-03-22
KR102288072B1 (ko) 2021-08-10
US20230218991A1 (en) 2023-07-13

Similar Documents

Publication Publication Date Title
US12011660B2 (en) Augmenting video games with add-ons
US11077363B2 (en) Video game overlay
KR101956639B1 (ko) 비디오 서버 및 게임 서버를 포함하는 컴퓨터 게임 시스템에서 컴퓨터 게임을 제공하는 방법 및 시스템
US9940647B2 (en) Qualified video delivery advertisement
US9937423B2 (en) Voice overlay
US9349201B1 (en) Command sentinel
CN103902489B (zh) 生成并执行计算机应用的Miniapp的方法和系统

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)