KR102322941B1 - 기계 학습 주도 리소스 할당 - Google Patents

기계 학습 주도 리소스 할당 Download PDF

Info

Publication number
KR102322941B1
KR102322941B1 KR1020190158872A KR20190158872A KR102322941B1 KR 102322941 B1 KR102322941 B1 KR 102322941B1 KR 1020190158872 A KR1020190158872 A KR 1020190158872A KR 20190158872 A KR20190158872 A KR 20190158872A KR 102322941 B1 KR102322941 B1 KR 102322941B1
Authority
KR
South Korea
Prior art keywords
game
online
resource allocation
engine
processing
Prior art date
Application number
KR1020190158872A
Other languages
English (en)
Other versions
KR20200067109A (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 KR20200067109A publication Critical patent/KR20200067109A/ko
Application granted granted Critical
Publication of KR102322941B1 publication Critical patent/KR102322941B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/335Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/40Features 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 platform network
    • A63F2300/407Data transfer via internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/531Server assignment
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

온라인 게임을 위한 자원을 프로비저닝하기 위한 분산 게임 엔진은 복수의 관리 노드 및 복수의 처리 노드를 포함한다. 관리 노드는 분산된 게임 엔진의 기능 부분을 복수의 처리 노드에 분산시키도록 구성된다. 자원 할당 모드는 온라인 게임의 사용자 입력 게임 상태 및 게임 플레이 훈련 데이터에 포함된 성공 기준으로 구성된다. 자원 할당 에이전트는 자원 할당 모델에 의해 지시된 자원 할당에 기초하여 온라인 게임에 대한 기능적 부분 중 특정 부분을 처리하는데 필요한 처리 노드를 식별하기 위해 자원 할당 모델에 액세스하고 구성 에이전트와 통신하는데 사용된다. 프로세스 동기화 계층은 처리 노드 및 관리 노드와 인터페이싱하여 사용자의 클라이언트 장치에서 렌더링하기 위한 비디오 프레임을 생성하기 위해 온라인 게임을 위한 기능 부분을 실행하기 위한 자원을 프로비저닝한다.

Description

기계 학습 주도 리소스 할당 {machine learning driven resource allocation}
본 발명은 온라인 게임을 위한 리소스 할당, 보다 구체적으로 인공 지능(AI) 모델을 구축하고 AI 모델을 사용하여 온라인 게임을 위한 리소스를 식별 및 할당하는 것에 관한 것이다.
온라인 게임은 게임 세계에서 매우 대중화되었다. 온라인 게임, 특히 대규모 멀티 플레이어 온라인(MMO) 게임은 수많은 사용자가 컴퓨터 네트워크를 통해 동시에 게임에 참여한다. 결과적으로, MMO 게임은 사용자에게 만족스러운 게임 플레이 경험을 제공하기 위해 온라인 게임의 게임 로직을 실행하기 위한 리소스들의 많은 조정을 필요로 한다. 일부 경우에, 온라인 게임은 게임 콘솔 네트워크를 사용하여 플레이되며, 각 게임 콘솔은 특정 사용자에게 전용된다. 게임 플레이 세션 동안, 온라인 게임의 요구에 따라 다수의 게임 콘솔이 스핀-업 또는 스핀-다운된다. 각 게임 콘솔은 해당 사용자에게 온라인 게임에 사용 가능한 리소스를 제공한다. 개별 게임 콘솔의 리소스는 독립적으로 제어되며 사용자간에 공유되지 않는다.
대안적인 예에서, 온라인 게임은 게임 클라우드 시스템의 리소스를 사용하여 게임 클라우드에서 실행되며, 사용자는 클라우드 서버에서 실행되는 온라인 게임에 연결할 수 있다. 게임 클라우드 상에서 온라인 게임을 실행하면 게임 실행에 필요한 리소스가 중앙 집중화된다는 이점이 있다. 그러나, 온라인 게임을 하는 플레이어의 수가 동시에 증가함에 따라, 게임 클라우드 시스템 리소스는 점점 더 긴장되어 온라인 게임 사용자에게 수용 가능한 서비스 품질을 제공하는 것을 어렵게 한다. 리소스에 대한 부담은 온라인 게임을 위해 생성된 데이터의 양으로 인한 것일 수 있다. 예를 들어, MMO 게임에서 각 플레이어는 자신의 인식에 기반한 게임 데이터를 제공 받아야 한다. 부담을 피하기 위해 게임 개발자는 게임 플레이 세션에서 동시에 플레이할 수 있는 사용자 수에 제한을 설정한다. 제한이 설정되어 있어도 리소스에 부담이 가해지면 대기 시간이 발생하여, 특히 게임 데이터를 사용자에게 신속하게 배포하여 다음 단계를 전략화할 수 있도록 하는 속도가 빠른 게임에서, 사용자의 게임 플레이 경험에 심각한 영향을 줄 수 있다. 또한, 사용자의 분포에 기초하여 클라우드 서버에서 실행되는 온라인 게임에 리소스를 할당하는 것은 매우 복잡하다.
이러한 맥락에서 본 개시의 실시예들이 발생한다.
본 개시의 실시예는 온라인 게임을 위한 리소스를 프로비저닝하기 위한 시스템 및 방법에 관한 것이다. 온라인 게임은 복수의 관리 노드 및 처리 노드를 포함하는 분산 게임 엔진을 사용하여 실행된다. 관리 노드는 분산 게임 엔진의 기능 부분을 식별하여 처리를 위해 복수의 처리 노드로 분배하는데 사용된다. 기능 부분은 온라인 게임의 특정 기능을 처리하는 분산 게임 엔진의 게임 엔진 작업과 관련이 있다. 기능 부분은 리소스 할당 모델을 사용하여 처리 노드에 분배된다. 리소스 할당 모델은 기계 학습 알고리즘을 사용하여 구축되며, 사용자(예: 플레이어, 개발자)로부터 받은 입력, 과거 게임 플레이에서 얻은 온라인 게임의 게임 상태 및 성공 기준을 포함하는 게임 플레이 훈련 데이터로 학습된다. 리소스 할당 모델은 온라인 게임에 필요한 게임 엔진의 기능 부분, 상기 기능 부분을 처리하는 데 필요한 리소스, 및 식별된 기능 부분을 처리하는 데 필요한 리소스를 제공할 수 있는 클라우드 게임 시스템 내의 특정 처리 노드를 식별한다. 할당 에이전트는 구성 에이전트와 통신하여 처리를 위해 식별된 기능 부분을 처리 노드 중 특정 노드에 할당하는 데 사용된다.
기계 학습 알고리즘은 온라인 게임 개발자로부터의 초기 입력을 사용하여 할당 모델을 생성한다. 그런 다음 생성된 할당 모델은 서버 네트워크에서 수집된 과거 및 현재 게임 플레이에 대한 온라인 게임의 게임 상태, 사용자(플레이어, 관중 등)의 입력을 사용하여 학습된다. 기계 학습 알고리즘은 온라인 게임에 대해 정의된 성공 기준에 대해 게임 상태를 분석하여, 온라인 게임을 위한 게임 엔진의 기능 부분을 처리하기 위한 리소스를 갖는 적절한 처리 노드의 최적의 양을 식별한다. 생성된 리소스 할당 모델은 복수의 상호 연결된 처리 노드를 포함하며, 하나 이상의 처리 노드는 게임 엔진의 특정 기능 부분을 처리하도록 할당된다. 각 처리 노드는 서버에 의해 표시된다. 서버는 독립형 물리적 서버 또는 데이터 센터의 일부인 물리적 서버, 가상 클라우드 시스템의 일부인 가상 서버 또는 컨테이너 서버 또는 이들의 조합 일 수 있다. 데이터 센터 내의 물리적 서버는 단일 서버이거나 랙 라우터의 상단과 같은 랙 라우터를 통해 액세스되는 데이터 센터 내의 서버 랙의 일부일 수 있다.
분산 게임 엔진은 리소스 할당 모델로부터 식별된 처리 노드 중 대응하는 처리 노드에, 온라인 게임에 대한 게임 엔진 작업 중 특정 작업(즉, 기능 부분)을 할당하는 과정을 관리하고, 특정 게임 엔진 작업을 처리를 위해 적절한 처리 노드에 분배하며, 처리된 결과를 처리 노드들 간에, 그리고 처리 노드와 구성 에이전트 간에 라우팅하고, 게임 엔진 작업의 처리를 위한 프로세스 타이밍을 고려하면서 게임 엔진 작업의 큐를 관리함으로써 처리 노드 사이에 분배된 게임 엔진 작업의 처리를 동기화하도록 구성된다.
처리 노드의 리소스를 사용하여 처리된 기능 부분은 게임 물리학, 그래픽, 오디오, 로직, 인공 지능(AI), 스크립팅, 애니메이션, 네트워킹, 스트리밍, 최적화, 메모리 관리, 스레딩, 로컬화 지원 등과 같은 온라인 게임의 특정 핵심 영역을 포함할 수 있다. 전술한 기능 부분들은 단순한 예로서 제공되며 철저한 것으로 간주되어서는 안된다. 분산 게임 엔진의 리소스 할당 모델은 온라인 게임의 생명을 얻는 데 사용되는 온라인 게임의 핵심 특징을 처리하기 위해 다수의 재사용 가능한 구성요소(즉, 처리 노드)가 식별되는 프레임 워크를 제공한다. 리소스 할당 모델은 온라인 게임 실행으로부터 시간이 지남에 따라 수집된 사용자 입력(즉, 훈련 데이터의 일부)에 따라 지속적으로 업데이트된다. 수집된 사용자 입력은 할당 모델을 업데이트하기 전에 성공 기준에 따라 분석된다. 할당 모델에 대한 업데이트는 게임 엔진의 기능 부분(즉, 게임 엔진 작업)을 처리하기 위해 필요할 수 있는 리소스의 수 및 유형에 대한 조정을 포함할 수 있다. 사용자가 온라인 비디오 게임에 액세스하는 한, 입력 수집 및 리소스 할당 모델 업데이트가 진행 중이다.
일 실시예에서, 온라인 게임을 위한 리소스를 프로비저닝하기 위한 분산 게임 엔진이 개시된다. 분산 게임 엔진은 분산 게임 엔진의 기능 부분을 복수의 처리 노드에 분산시키도록 구성된 복수의 관리 노드를 포함한다. 분산 게임 엔진에는 게임 플레이 훈련 데이터로부터 구성된 리소스 할당 모델도 포함되어 있다. 훈련 데이터에는 사용자로부터 받은 입력, 온라인 게임의 게임 상태 및 성공 기준이 포함된다. 분산 게임 엔진은 리소스 할당 모델에 액세스하고 구성 에이전트와 통신하여 온라인 게임을 위한 기능 부분 중 특정 부분을 처리하는데 필요한 복수의 처리 노드를 식별하기 위한 리소스 할당 에이전트를 더 포함하며, 여기서 기능 부분들 각각을 처리하는데 필요한 처리 노드들의 수 및 유형이 리소스 할당 모델에 의해 지시된 리소스 할당에 기초한다. 분산 게임 엔진은 복수의 처리 노드들 각각 및 복수의 관리 노드들 각각과 인터페이스하여 사용자의 클라이언트 장치에서 렌더링하기 위한 비디오 프레임을 생성하는 온라인 게임을 실행하기 위한 처리 노드의 리소스를 제공하는 프로세스 동기화 계층을 포함한다.
다른 실시예에서, 온라인 게임을 위한 리소스를 프로비저닝하는 방법이 개시된다. 이 방법은 온라인 게임에 대한 훈련 데이터를 수신하는 단계를 포함한다. 훈련 데이터는 온라인 게임의 사용자 입력, 게임 상태 및 성공 기준을 식별한다. 이 방법은 또한 훈련 데이터로부터 온라인 게임을 위한 리소스 할당 모델을 생성하는 단계를 포함한다. 생성된 리소스 할당 모델은 온라인 게임에 사용되는 분산 게임 엔진의 기능 부분을 처리하도록 구성된 복수의 처리 노드를 식별한다. 복수의 처리 노드 중 선택 처리 노드는 분산 게임 엔진의 특정 기능 부분을 처리하기 위한 처리 리소스를 제공하도록 구성된다. 복수의 처리 노드는 리소스 할당 모델에 의해 지시된 리소스 할당에 따라 온라인 게임을 위한 기능 부분을 처리하도록 할당되며, 각 기능 부분은 특정 게임 엔진 작업을 식별한다. 할당은 온라인 게임에 대해 특정 기능 부분과 관련된 게임 엔진 작업 중 선택 게임 엔진 작업을 처리하도록 선택 처리 노드의 할당을 관리하는 단계, 처리를 위해 게임 엔진 작업 중 선택 게임 엔진 작업을 선택 처리 노드에 분배하는 단계, 처리된 결과를 선택 처리 노드들 및 복수의 처리 노드들 중 나머지 처리 노드 사이에서, 그리고 처리 노드들에 대한 리소스들을 프로비저닝하기 위해 사용되는 구성 에이전트와 선택 처리 노드 사이에서, 라우팅하는 단계; 및 복수의 처리 노드들 간에 분배된 게임 엔진 작업들의 처리를 동기화하는 단계를 포함한다.
본 개시의 다른 양태는 예로서 본 개시의 원리를 예시하는 첨부 도면과 함께 다음의 상세한 설명으로부터 명백해질 것이다.
본 개시는 첨부 도면과 관련하여 취해진 다음의 설명을 참조하여 가장 잘 이해될 수 있다.
도 1은 본 개시의 일 구현예에 따른 리소스 프로비저닝에 사용되는 게임 클라우드 시스템의 단순화된 물리적 뷰를 도시한다.
도 2는 본 개시의 일 구현예에 따른, 온라인 게임을 위한 리소스를 프로비저닝하기 위해 게임 클라우드 시스템 내에 채용된 분산 게임 엔진의 단순화된 블록도를 도시한다.
도 3은 본 개시의 일 구현예에 따른, 온라인 게임을 위한 리소스의 프로비저닝에 사용되는 분산 게임 엔진의 다양한 구성요소를 도시한다.
도 3a는 본 개시의 일 구현예에 따른, 온라인 게임을 위한 리소스의 프로비저닝에 사용되는 리소스 할당 모델을 생성하고 훈련하는데 사용되는 훈련 데이터의 구성요소를 도시한다.
도 4a는 본 개시의 일 구현예에 따른, 분산 게임 엔진의 기능 부분을 처리하기 위한 리소스를 갖는 할당된 처리 노드의 단순화된 블록도를 도시한다.
도 4b는 본 개시의 일 구현예에 따른, 분산 게임 엔진의 기능 부분을 처리하기 위해 할당된 처리 노드의 대안적인 구현을 도시한다.
도 4c는 본 개시의 일 구현예에 따른, 분산 게임 엔진의 기능 부분을 처리하기 위해 사용된 처리 노드의 구성에 대한 업데이트를 도시하는 간략화된 블록도를 도시한다.
도 5는 본 개시의 일 구현예에 따라, 온라인 게임을 위한 리소스를 프로비저닝하기 위해 분산 게임 엔진을 관여시키는 게임 클라우드 시스템의 로직 구조의 단순화된 블록도를 도시한다.
도 6a 내지 6c는 본 개시의 일 구현예에 따른, 온라인 게임을 위한 분산 게임 엔진의 기능 부분을 처리하기 위한 리소스를 제공하기 위해 사용되는 다양한 유형의 처리 노드 서버를 도시한다.
도 7은 본 개시의 일 구현예에 따라, 리소스를 프로비저닝하기 위해 사용될 수 있는 데이터 센터 내의 서버 랙의 단순화된 블록도를 도시한다.
도 8은 본 개시의 일 구현예에 따라, 온라인 게임을 실행하고 클라우드 게임 네트워크를 통해 게임 데이터의 프레임을 하나 이상의 클라이언트 장치에 제공하기 위해 사용되는 클라우드 게임 시스템의 시스템 다이어그램을 도시한다.
도 9는 본 개시의 일 구현예에 따른, 리소스 할당 모델을 사용하여 온라인 게임을 위한 리소스를 프로비저닝하는 방법의 흐름도를 도시한다.
도 10은 본 개시의 일 구현예에 따른, 모델러를 사용하여 리소스 할당 모델(인공 지능(AI) 모델)을 구축하고 훈련하는데 사용되는 예시적인 컴퓨팅 장치의 구성요소를 도시한다.
하기의 상세한 설명은 예시의 목적으로 많은 특정 세부 사항을 포함하지만, 당업자는 다음의 세부 사항에 대한 많은 변형 및 변경이 본 개시의 범위 내에 있음을 이해할 것이다. 따라서, 이하에 설명되는 본 개시의 양태는 이 설명을 따르는 청구 범위에 대한 일반성의 손실 및 제한을 부과하지 않고 제시된다.
일반적으로 말하면, 본 발명의 다양한 실시예는 온라인 게임에 의해 제공되는 훈련 데이터를 사용하여 게임 애플리케이션에 대한 리소스 할당 모델(즉, AI 모델)을 구축하기 위해 기계 학습 알고리즘을 구현하는 시스템 및 방법을 설명한다. 훈련 데이터에는 온라인 게임을 위해 사용자가 제공한 입력, 사용자 입력에 의해 영향을 받는 게임 상태, 및 온라인 게임에 대해 정의된 성공 기준이 포함된다. 사용자 입력은 플레이어에 대한 지식없이 백엔드 서버(예: 게임 콘솔, 게임 서버 등)의 네트워크를 통해 수집되며, 인공 지능(AI) 기반 알고리즘을 활용하는 기계 학습을 사용하여 AI 모델을 구축 및 훈련하는 데 사용된다. 훈련된 AI 모델은 게임 데이터 처리 방법을 포함하여 온라인 게임의 복잡성을 학습하는 데 사용된다. 예를 들어, 주어진 게임 데이터에 대해 훈련된 AI 모델의 출력을 분석하여, 온라인 게임에 대해 정의된 성공 기준을 충족하는 데 필요했던 리소스를 식별할 수 있다.
일부 구현들에서, 성공 기준들은 사용자들에게 최적의 게임 경험을 제공하기 위해 게임 관련 데이터를 처리하기 위한 충분한 리소스들을 프로비저닝하는 것으로 정의될 수 있다. 성공 기준은 사용자 입력, 사용자 유형(플레이어, 관중 등) 및 플레이되는 게임 유형에 기초할 수 있다. 예를 들어, 성공 기준은 최소 대기 시간, 또는 고품질의 이미지 또는 오디오, 또는 효율적인 메모리 관리, 또는 보다 큰 통신 대역폭 등을 포함하도록 정의될 수 있다. 이러한 구현예에서, 기계 학습 알고리즘은 훈련 데이터를 분석하여, 온라인 게임에 대해 규정된 성공 기준을 충족시키는 출력으로 귀결되는 게임 관련 데이터를 처리하도록 할당된 리소스를 식별하기 위해 주어진 입력 세트와 상관된 출력을 찾아낼 수 있다. 따라서 알고리즘은 AI 모델을 생성 및/또는 훈련하기 위해 규정된 성공 기준을 위해 사용자 입력에 출력 패턴을 매핑할 수 있다. 훈련된 AI 모델의 매핑을 사용하여, 온라인 게임의 후속 게임 플레이 동안 발생하는 일련의 입력 세트에 대해, 리소스에 대한 예측된 수요가 결정될 수 있다. AI 모델은 다른 성공 기준을 충족시키는 사용자 입력에 다른 출력의 매핑을 제공하도록 훈련될 수 있으며, 알고리즘은 다른 매핑을 사용하여 정의된 성공 기준과 관련된 온라인 게임에 대한 리소스 수요를 예측할 수 있다.
예를 들어, 고강도 게임의 경우, 성공 기준은 온라인 게임을 하는 사용자가 다음 진행을 전략화하기 위해 게임 데이터를 적시에 수신할 수 있도록 게임 데이터에 대한 더 빠른 처리 및 더 높은 전송 속도로 정의될 수 있다. 게임 데이터 전송시 지연이 발생하면 사용자의 게임 플레이에 심각한 영향을 줄 수 있다. 이 예에서 알고리즘은 훈련된 AI 모델을 사용하여 필요한 처리 속도와 클라이언트 장치로의 프레임 전송(즉, 지정된 성공 기준)을 달성하는 데 필요한 리소스 유형을 식별한다. 결과적으로, 훈련된 AI 모델 내의 매핑을 사용하여, 알고리즘은 하나 이상의 이전 게임 플레이(들)가 게임 데이터를 처리하고, 게임 데이터를 인코딩하며 게임 데이터를 더 빠르고 효율적인 방식으로 프레임 내로 조립하는 보다 빠른 CPU로 처리 리소스들 중 소정의 리소스들을 이용하였음을 식별할 수 있다. 프레임을 클라이언트 장치로 전송하기 위해 더 높은 대역폭을 제공한 추가 리소스가 식별될 수 있다. 이 정보에 기초하여, 알고리즘은 처리 리소스를 식별할 수 있고, 이러한 게임 플레이에서 이들 리소스가 클라이언트 장치에 매우 작은 지연만으로 게임 데이터를 제공하여야 함을 예상하여 이들 처리 리소스를 프로비저닝할 수 있다. 온라인 게임에 프로비저닝하기 위한 알고리즘에 의해 식별될 수 있는 리소스는 온라인 게임에 이전에 할당된 동일한 리소스, 또는 유사하거나 더 나은 기능을 갖는 리소스일 수 있다.
기계 학습 알고리즘은 분류기 엔진을 사용하여 온라인 게임의 상이한 특징을 처리하는데 사용되는 게임 엔진의 다양한 기능 부분을 식별하고, 특징과 출력 사이의 관계를 정의하는 규칙을 학습하며, 하나 이상의 노드가 일 특징(a feature)을 식별하도록, 계층구조 방식으로 상호연결된 상이한 계층들에 배치된 복수의 노드를 갖는 AI 모델을 구축할 수 있다. 노드는 또한 이러한 특징을 처리하는 데 사용된 리소스를 식별한다. AI 모델의 노드 내의 각각의 특징은 규칙에 의해 정의된 관계 파라미터를 이용하여 다른 계층의 다른 노드의 하나 이상의 특징과 링크될 수 있다. 생성된 AI 모델은 게임 플레이 중 사용자로부터 수신한 입력을 기반으로 각 노드의 특징을 수정하여 추가 학습된다. 훈련된 AI 모델은 성공 기준에 의해 정의된 규칙에 따라 입력을 상이한 출력에 매핑한다. 사용자가 후속 게임 플레이를 시작하면 훈련된 AI 모델을 사용하여 현재 게임 상태 및 온라인 게임에 대해 정의된 성공 기준에 따라 원하는 결과를 제공하는 데 필요한 리소스를 식별할 수 있다. AI 모델은 다양한 성공 기준을 충족시키기 위한 다양한 결과를 식별하도록 훈련된다. 따라서 AI 모델은 특정 성공 기준을 충족하기 위해, 특정 유형의 리소스에 대한 수요를 예측하는데 사용되어, 성공 기준을 충족시키기 위해, 적절한 유형 및 양의 리소스가 온라인 게임의 후속 실행 중에 신속하게 프로비저닝될 수 있다.
AI 모델에 기초한 처리 리소스의 초기 할당 후, 사용자 입력은 지속적으로 게임 플레이로부터 계속하여 지속적으로 수집되고 AI 모델을 훈련하는데 사용된다. 훈련된 AI 모델의 노드에 제공된 정보는 온라인 게임에 할당된 리소스를 조정하는 데 사용된다. 예를 들어, 온라인 게임의 복수의 사용자 각각이 그들 자신의 속도로 진행함에 따라, 리소스에 대한 예측된 수요가 변경될 수 있다. 이는 각 사용자의 입력으로 생성된 게임 데이터 및 온라인 게임의 결과적인 게임 상태가 변경 되었기 때문일 수 있다. 결과적으로, 정제된 AI 모델은 온라인 게임에 필요한 리소스를 식별하고 예측적으로 프로비저닝하는 데 사용된다.
다양한 실시예들의 상기 일반적인 이해에 의해, 다양한 도면들을 참조하여 실시예들의 예시적인 세부 사항들이 이제 설명될 것이다.
도 1은 기계 학습 알고리즘을 사용하여 훈련된 리소스 할당 모델을 사용하여 온라인 게임을 위한 리소스를 프로비저닝하는데 사용되는 시스템의 단순화된 물리적 도면이다. 시스템은 인터넷과 같은 네트워크(200)를 통해 게임 클라우드 시스템(GCS)(300)에 액세스하는 사용자(1-n)와 관련된 복수의 클라이언트 장치(100)를 포함한다. 게임 클라우드 시스템은 본 개시의 일 구현예에 따라 하나 이상의 온라인 게임 애플리케이션의 인스턴스를 실행하는 백엔드 서버의 네트워크를 포함한다. 백엔드 서버는 하나 이상의 게임의 인스턴스를 하나 이상 실행하도록 구성된 게임 서버이다. 게임 서버는 게임 클라우드 시스템에서 이용 가능한 임의의 유형의 서버 컴퓨팅 장치 일 수 있다. 예를 들어, 게임 서버는 호스트에서 사용자를 위한 온라인 게임의 인스턴스를 실행하는 게임 프로세서를 지원하는 가상 머신을 관리할 수 있다. 클라이언트 장치는 네트워크(200)에 액세스함으로써 백엔드 서버와 상호 작용하기 위한 메모리, 프로세서 및 네트워크 인터페이스를 포함하는 휴대 전화, 태블릿 컴퓨터, 개인용 컴퓨터 등과 같은 임의의 컴퓨팅 장치 일 수 있거나, 또는 계산 기능을 제공하도록 백엔드 서버와 상호 작용하기 위한 인터페이스를 제공하는 씬 클라이언트(thin client )일 수 있다.
일부 구현예에서, 온라인 게임은 게임 클라우드 시스템의 복수의 서버에 의해 원격으로 실행될 수 있고, 게임 데이터는 네트워크(200)를 통해 플레이어의 클라이언트 장치로 스트리밍될 수 있으며, 여기서 플레이어는 게임의 게임 플레이에 참여한 사용자이다. 온라인 게임의 게임 플레이는 클라이언트 장치에 제공된 제어 옵션을 사용하거나 클라이언트 장치에 통신 가능하게 연결된 제어기를 사용하여 플레이어에 의해 제어된다. 다른 구현예에서, 온라인 게임은 클라이언트 장치에서 로컬로 실행될 수 있고, 실행중인 온라인 게임으로부터의 메타 데이터는 게임 상태에 영향을 미치기 위해, 그리고 AI 모델의 생성 및 훈련을 목적으로 훈련 데이터로 이용하기 위해, 네트워크(200)를 통해 백엔드 서버로 전송된다.
AI 모델을 훈련시키기 위해 사용된 훈련 데이터는 특정 게임 플레이 시점에서의 온라인 게임의 게임 상태를 포함한다. 게임 상태는 온라인 게임의 게임 플레이의 복잡성을 제공한다. 따라서, 게임 상태는 예를 들어 게임 캐릭터, 게임 객체, 게임 객체 속성, 게임 속성, 게임 객체 상태, 그래픽 오버레이 등을 포함할 수 있다. 게임 상태는 또한 게임 플레이 데이터의 생성 및 렌더링에 사용되는 CPU, GPU, 메모리, 레지스터 값, 프로그램 카운터 값, 프로그램 가능 DMA 상태, DMA용 버퍼 데이터, 오디오 칩 상태, CD-ROM 상태, 사용 가능한 통신 대역폭, 등과 같은 온라인 게임의 인스턴스 실행에 사용되는 서버의 네트워크의 모든 장치 또는 모듈 또는 구성요소의 상태를 포함한다. 게임 상태는 현재 렌더링중인 실행 코드 부분과, 계속적인 게임 플레이를 위해 로드해야 하는 실행 코드 부분을 식별한다. 게임 상태에 포함된 플레이어에 대한 사용자 저장 데이터는 플레이어의 사용자 프로파일, 게임 객체에 대한 사용자 커스터마이제이션, 게임 유형, 플레이어에 의해 선택된 게임 레벨/난이도, 게임 툴의 양/승점/포인트/현금/수상, 등을 포함할 수 있다. 게임 상태는 또한 온라인 게임의 게임 플레이와 관련된 게임 세부 사항을 이해하는데 유용한 랜덤하게 생성된 특징 또는 AI 오버레이 또는 게임 복잡성을 포함할 수 있다.
게임 클라우드 시스템 상에서 실행되는 온라인 게임은 대규모 멀티 플레이어 온라인(MMO) 게임일 수 있고, 게임 서버는 온라인 게임의 게임 로직과 통신하여 플레이어(즉, 사용자)와 게임 로직과의 상호 작용과, 각각의 플레이어 내 대응하는 게임 환경 내의 플레이어들 간의 상호작용을 허용하는 멀티 플레이어 분산 게임 엔진(310)을 포함할 수 있다. 게임 로직은 MMO 게임 세션 동안 각 플레이어의 게임 상태를 관리하도록 구성된다. 게임 상태는 특정 시점에서 각 플레이어에 대한 게임 플레이의 게임 상태, 및 온라인 게임을 위해 플레이어에 의해 제공된 임의의 게임 커스터마이제이션을 포함하는 각 플레이어의 저장된 데이터를 포함한다. 게임 상태를 사용하는 멀티 플레이어 분산 게임 엔진(310)은 MMO 게임 세션에 참여하는 플레이어의 각각의 게임 환경에 객체 및 캐릭터를 오버레이/삽입할 수 있다.
분산 게임 엔진(310)은 몇가지 거명하자면 사용자 계정 모듈(310a), 게임 타이틀 모듈(310b), 사용자 메트릭 모듈(310c) 및 게임 상태 메트릭(310d)과 같은 복수의 모듈과 상호 작용한다. 사용자 계정 모듈(310a)은 온라인 게임의 게임 플레이를 위해 GCS(300)에 액세스하는 사용자를 인증하기 위해 사용된다. 게임 타이틀 모듈(310b)은 무료 게임, 사용자에 의해 구매된 게임 등을 포함하여 게임 플레이를 위해 GCS(300)에서 사용자 계정과 연관된 사용자에게 이용 가능한 게임 타이틀을 결정하는데 사용된다. 분산 게임 엔진(310)은 게임 플레이를 위한 사용자의 게임 선택에 응답하여 GCS(300) 내의 복수의 서버상에서 게임의 인스턴스를 실행한다. 사용자가 온라인 게임을 플레이할 때 사용자 입력이 수집되어 사용자 및 게임 메트릭을 업데이트하는 데 사용된다. 사용자 입력은 게임의 게임 상태에 영향을 미치고 사용자의 클라이언트 장치로 전송하기 위한 게임 플레이 데이터를 생성하기 위해 게임 로직에 의해 처리된다. 온라인 게임의 게임 상태는 사용자의 사용자 메트릭 및 온라인 게임의 게임 상태 메트릭을 식별하기 위해 분석된다. 사용자 메트릭 모듈(310c)은 사용자의 사용자 메트릭으로 업데이트된다. 사용자 메트릭 모듈(310c)로 업데이트되는 일부 사용자 메트릭은 게임 식별자, 사용자가 온라인 게임에 액세스한 시간, 사용자가 게임을 플레이한 시간의 양, 플레이한 게임 레벨, 각 게임 레벨에서 보낸 시간, 각 게임 레벨 내에서 극복한 과제의 수, 각각의 과제를 극복하기 위한 시도 횟수, 게임 스코어/승수, 사용자의 스킬 레벨, 등을 포함한다. 유사하게, 게임 상태 메트릭 모듈(310d)은 온라인 게임의 게임 플레이 데이터로부터 온라인 게임의 게임 상태 메트릭을 추출한다.
분산 게임 엔진(310)은 게임의 최적의 게임 플레이를 제공하는데 필요한 리소스(320a-320m)를 식별하기 위해 리소스 할당 에이전트(315)와 상호 작용한다. 리소스 할당 에이전트(315)는 온라인 게임의 실행에 필요한 리소스의 유형 및 각 유형의 리소스의 양을 예측하기 위해, 기계 학습 알고리즘을 사용하여 생성된 리소스 할당 모델을 지칭한다. 예측은 온라인 게임의 상태, 사용자 입력 및 온라인 게임에 대해 정의된 성공 기준을 기반으로 한다. 성공 기준에 의해 지시된 바와 같이 상이한 유형의 리소스에 대한 예측된 수요에 기초하여, 리소스 할당 에이전트는 온라인 게임이 효율적으로 수행될 수 있도록 온라인 게임을 위한 리소스(320-320m)을 프로비저닝하도록 구성 에이전트에게 n 신호를 보낸다.
도 2는 게임 플레이 동안 수신된 사용자의 입력에 응답하여, 온라인 게임을 위해 생성된 게임 데이터의 특징과 관련된 분산 게임 엔진의 기능 부분을 처리하기 위해 물리적 리소스를 사용하는 분산 게임 엔진의 구현예를 도시한다. 온라인 게임은 복수의 사용자에 의해 액세스되는 대규모 멀티 플레이어 온라인(MMO) 게임일 수 있다. 복수의 사용자는 팀의 일부 또는 소셜 연락처일 수 있고, 또는, 하나의 도시에 걸친 지리적 영역, 또는 여러 도시, 국가들 또는 전 지구에 걸쳐 온라인 게임에 액세스하고 있는 독립 사용자 일 수 있다. 사용자가 온라인 게임에 효율적으로 액세스할 수 있도록 온라인 게임은 지리적 영역에 분산된 서버/시스템 리소스의 네트워크를 사용하여 온라인 게임의 게임 로직 및 게임 엔진의 인스턴스를 실행하는 분산 게임 엔진을 사용하여 실행된다.
일반적으로 말하면, 게임 엔진은 MMO 게임과 같은 게임의 기초 역할을 하며 온라인 게임을 개발하는데 사용되는 프레임 워크를 제공하는 소프트웨어 계층이다. 게임 엔진은 모든 게임에 필요한 일반적인 관련 작업(예: 게임 엔진 작업)에 대한 세부 정보를 추상화하는 반면 온라인 게임 개발자는 온라인 게임의 실행 방법에 대한 세부 정보를 제공하는 게임 로직을 제공한다. 게임 엔진 프레임 워크는 온라인 게임에 생명을 불어 넣는 온라인 게임을 위한 몇몇 기능 부분(즉, 핵심 특징)을 처리하기 위한 복수의 재사용 가능한 구성요소를 포함한다. 게임 엔진에 의해 처리되는 기본 핵심 특징은 물리학(예를 들어, 충돌 감지, 충돌 응답, 궤적, 중력, 마찰 등에 기초한 객체의 움직임), 그래픽, 오디오, 인공 지능, 스크립팅, 애니메이션, 네트워킹을 포함할 수 있다. 스트리밍, 최적화, 메모리 관리, 스레딩, 현지화 지원 등이 있다. 재사용 가능한 구성요소에는 온라인 게임에 대해 식별된 핵심 기능을 처리하는 데 사용되는 프로세스 엔진이 포함된다. 게임 런타임 동안, 게임 엔진은 온라인 게임의 게임 로직을 관리하고, 게임 엔진의 기능 부분의 할당 및 동기화를 관리하여 최적의 방식으로 게임 데이터를 처리하고, 다시 전송되는 게임 데이터의 프레임을 생성한다 렌더링할 클라이언트 장치 현재 이용 가능한 다양한 게임 엔진은 다른 핵심 기능을 제공하며 온라인 게임을 실행하기 위해 이용 가능한 기능에 기초하여 적절한 게임 엔진이 선택될 수 있다.
도 2에 도시된 구현예에서, 게임 엔진 및 게임 로직의 인스턴스는 각각의 서버가 게임 엔진의 특정 기능 부분을 실행하면서 복수의 서버에 분산된다. 다른 서버들은 다른 인스턴스들을 동시에 실행함으로써 게임 데이터를 병렬로 처리할 수 있다. 이러한 방식으로, 분산 게임 엔진은 게임 데이터의 보다 빠르고 효율적인 처리를 가능하게 한다. 게임 엔진은 온라인 게임에 생명을 불어 넣기 위해 필요한 복수의 기능 부분을 처리하도록 구성될 수 있다. 일부 구현예들에서, MMO 게임 환경을 위해 개발된 각각의 온라인 게임은 온라인 게임이 기능하는데 필요한 게임 엔진의 상이한 기능 부분들을 식별할 수 있다. 다른 구현예에서, MMO 게임 환경을 위해 개발된 모든 온라인 게임은 각각의 온라인 게임에 생명을 불어넣기 위해 동일한 유형의 기능 부분을 요구할 수 있다. 모든 온라인 게임이 동일한 유형의 기능 부분을 식별하는 구현예에서, 온라인 게임 중 일부는 다른 부분보다 기능 부분 중 선택된 하나를 강조할 수 있으며, 온라인 게임에 액세스하는 사용자의 유형, 게임 유형, 온라인 게임의 게임 상태 및 온라인 게임에 대해 정의된 성공 기준에 기초하여 강조가 이루어질 수 있다. 예를 들어, 사용자는 플레이어 유형 또는 관중 유형일 수 있다. 따라서, 온라인 게임이 플레이어에 의해 액세스될 때, 빠르고 효율적인 방식으로 게임 데이터를 제공할 수 있는 기능 부분(즉, 게임 데이터를 최소 대기시간으로 클라이언트 장치에 제공하기 위해 물리학, 조립/인코딩 및 대역폭과 관련된 기능 부분)에 강조가 이루어질 수 있다. 관중이 온라인 게임에 액세스할 때, 관중이 따르기 위해 선택하는 특정 플레이어의 게임 플레이 또는 일반적으로 온라인 게임에 대한 액세스를 제공할 수 있는 기능 부분(예를 들어, 고품질 게임 데이터를 제공하기 위해 물리학, 오디오, 스크립팅, 및 장면 그래프)에 강조가 이루어질 수 있다. 대안으로서, 온라인 게임은 고강도 유형 또는 저 강도 유형 일 수 있다. 따라서 온라인 게임이 고강도 유형 인 경우, 강조는 물리학, 빠른 처리, 조립 및 전송에 중점을 둘 수 있지만, 저 강도 게임의 경우 강조는 물리학, 텍스처링, 음영 처리, 애니메이션, 장면 그래프, 스크립팅 및/또는 소리에 놓일 수 있다. 유사하게, 플레이어는 고레벨 플레이어이거나 초보자 또는 중간 레벨 플레이어 일 수 있다. 따라서, 플레이어가 고레벨 플레이어인 경우, 더 빠른 처리, 조립/인코딩 및 대역폭에 중점을 둘 수 있는 반면, 중간 또는 초보자 수준 플레이어에 대한 강조는 상이한 기능 부분에 있을 수 있다. 다른 구현예에서, 상이한 MMO 게임은 상이한 유형의 기능 부분을 강조할 수 있다.
기능 부분은 온라인 게임의 개발자에 의해 식별될 수 있거나 온라인 게임의 게임 로직을 분석함으로써 결정될 수 있다. 온라인 게임의 사양 요건에 기초하여, 게임 엔진 및 게임 로직의 인스턴스는 복수의 서버(즉, 처리 노드)에서 실행될 수 있고, 각 게임 엔진 인스턴스는 정의된 성공 기준에 따라 온라인 게임의 게임 플레이에서 생성된 게임 데이터의 특정 기능과 관련된 기능 부분을 처리하기 위해 특정 프로세스 엔진과 결합하는 서버에서 실행된다. 도 2에 예시된 단순화된 구현예에서, 온라인 게임 게임 1의 게임 로직인 게임 엔진 인스턴스는 6 개의 서버(서버 1-6)에서 인스턴스화되며, 각 서버는 온라인 게임 게임 1에 대한 게임 데이터의 특정 기능에 관련된 게임 엔진의 특정 기능 부분을 처리하는데 사용된다. 예를 들어, 서버 1(즉, 처리 노드 1)은 온라인 게임의 게임 데이터의 게임 물리적 특징을 처리하도록 물리학 엔진을 결합하는데 사용될 수 있고, 서버 2(즉, 처리 노드 1)는 텍스처링을 처리하는데 사용될 수 있으며, 서버 3(즉, 처리 노드 1)은 음영처리를 위해 사용될 수 있고, 등등이다. 게임 엔진의 인스턴스는 제 1 서버로부터의 출력(즉, 기능 부분의 처리 결과)이 제 2 서버에 대한 입력으로서 작용하고, 제 2 서버로부터의 출력이 제 3 서버(또는 제 1 서버)에 대한 입력으로서, 등등과 같이 작용함으로써 게임 데이터의 반복 처리를 제공한다. 도 2에 도시된 구현예에서, 게임 엔진의 특정 기능 부분을 처리하는 데 사용되는 게임 엔진 및 게임 로직의 인스턴스를 실행하기 위해 단일 서버(즉, 처리 노드)가 할당된다. 다른 구현예에서, 각각 게임 엔진 및 게임 로직의 인스턴스를 실행하는 복수의 서버는 성공 기준 및 사용자 입력에 의해 지시된 바와 같은 처리에 대한 예측된 수요에 기초하여, 특정 기능 부분을 처리하도록 할당될 수 있다. 게임 엔진 및 게임 로직이 온라인 게임에 생명을 불어 넣는 데 필요한 게임 엔진의 상이한 기능 부분을 처리하기 위해 복수의 서버상에서 인스턴스화되기 때문에, 게임 엔진은 "분산된다"고 한다. 따라서, 본 출원에서 사용되는 분산 게임 엔진에 대한 언급은 게임 엔진 및 게임 로직의 대응 부분이 다수의 서버에서 인스턴스화되는 이러한 구성을 지칭한다.
상이한 서버들로부터 출력된 게임 데이터는 렌더링을 위해 클라이언트 장치들 각각에 동기화, 조립, 인코딩 및 전송된다. 게임 엔진은 또한 동기화 엔진(도시되지 않음)을 포함하며, 이러한 동기화 엔진을 이용하여, 상이한 서버들에 대해 게임 엔진의 다양한 기능 부분의 분포를 동기화하고, 상이한 서버에 할당된 게임 엔진의 상이한 기능 부분의 처리를 동기화하며, 서버들 간의 그리고 서버와 구성 에이전트 간에 처리된 결과를 라우팅할 수 있다. 분산 게임 엔진의 구성 에이전트(표시되지 않음)를 이용하여, 게임 엔진의 특정 유형의 기능 부분을 처리하는 데 사용되는 서버와, 특정 유형의 기능 부분을 처리하도록 할당된 서버의 유형 및 수를 추적할 수 있다. 구성 에이전트는 분산 게임 엔진의 리소스 할당 에이전트(315)와 상호 작용하여, 온라인 게임에 대해 규정된 성공 기준에 기초하여, 게임 엔진의 기능 부분의 특정 유형(들)을 처리하기 위해 추가 서버(즉, 처리 리소스(320))를 프로비저닝할 수 있다.
처리 리소스의 할당은 게임 플레이를 위해 온라인 게임에 액세스하는 사용자보다 먼저 수행될 수 있으며, 이러한 할당은 기계 학습 알고리즘을 사용하여 개발된 AI 모델로부터 결정된 리소스에 대한 예측된 수요에 기초한다. 사용자가 게임 플레이를 위해 온라인 게임에 액세스하면, 클라이언트 장치로부터 수신된 사용자 입력이 모니터링되어 온라인 게임의 게임 상태에 영향을 미치는데 사용된다. 온라인 게임의 사용자 입력 및 게임 상태는 분산 게임 엔진에 의해 이용되어 AI 모델을 생성하고, AI 모델의 정보를 사용하여 온라인 게임의 최적의 게임 플레이 경험을 제공하도록 추가 처리 리소스를 프로비저닝해야 하는지 여부를 결정할 수 있다.
도 3은 온라인 게임을 위한 리소스를 프로비저닝하기 위해 사용되는 분산 게임 엔진의 다양한 구성요소를 식별하는 예시적인 구현예를 도시한다. 온라인 게임은 사용자가 상이한 지리적 위치로부터 온라인 게임에 액세스할 수 있도록 게임 클라우드 시스템(300)의 다수의 서버상에서 인스턴스화될 수 있는 대규모의 멀티플레이어 온라인 게임일 수 있다. 분산 게임 엔진(310)은 게임 클라우드 시스템(300)의 일부이며, 온라인 게임에 생명을 불어넣는 데 필요한 기능 부분을 포함하며, 기능 부분은 별도의 서버에서 실행될 수 있다. 분산 게임 엔진(310)은 온라인 게임(예를 들어, 게임 1)의 게임 플레이 동안 네트워크 인터페이스를 사용하여 네트워크(200)를 통해 복수의 사용자의 클라이언트 장치(100)와 통신하고, 온라인 게임에 대한 사용자의 입력을 수신한다. 사용자의 입력에 응답하여, 게임 데이터의 비디오 프레임이 생성, 인코딩, 및 렌더링을 위해 클라이언트 장치(100)로 리턴된다. 분산 게임 엔진(310)에 포함되는 글루 로직(306)은 상이한 클라이언트 장치로부터 상이한 사용자의 입력을 수신하고, 이에 응답하여 각각의 클라이언트 장치에 대해 타겟팅될 게임 데이터의 프레임을 식별하고, 게임 데이터를 함께 묶고, 게임 데이터의 프레임을 사용자의 클라이언트 장치에 전달하는 글루 로직(306)을 포함한다.
게임 엔진은 게임 클라우드 시스템(300)의 하나 이상의 백엔드 서버에서 실행된다. 백엔드 서버는 기계 학습 엔진을 제공하여, 예를 들어, 사용자로부터 수신된 입력에 응답하여 생성된 게임 데이터를 분석할 수 있고, 사용자에 의해 게임 플레이를 위해 선택된 온라인 게임에 대한 리소스 할당 모델(AI 모델)(315)을 훈련시킬 수 있다. AI 모델은 처음에는 온라인 게임 개발자가 제공한 입력의 처리로부터 나타나는 게임 데이터에서 생성된다. 개발자에 의해 제공되는 입력은 개발자에 의해 수행된 시뮬레이션된 게임 플레이로부터 또는 온라인 게임을 하는 제어된 사용자 그룹으로부터 획득된 입력으로부터의 것일 수 있다. 그런 다음 생성된 AI 모델은 다른 사용자의 게임 플레이 입력을 사용하여 지속적으로 훈련된다. 사용자의 입력은 온라인 게임의 게임 상태를 유도하는 데 사용된다. AI 모델은 상호 연결된 노드의 계층을 사용하여 생성되며, 각 노드는 게임 데이터의 상이한 특징과 관련된다. AI 모델의 노드는 특징으로 채워지고 온라인 게임의 복잡한 게임 플레이를 이해하기 위해 상호 관계가 설정된다. AI 모델에 입력된 게임 데이터는 온라인 게임에 대해 정의된 상이한 성공 기준에 기초하여, 다양한 리소스 구성 출력을 식별하며, 상이한 성공 기준에 대한 출력은 AI 모델의 상이한 상호 관계 경로에 따라 식별된다. 예를 들어, 특정 성공 기준, 게임 입력 및 게임 상태가 입력으로 제공되는 경우, AI 모델은 온라인 게임의 게임 상태에 대한 특정 성공 기준을 달성하는 데 필요한 특정 리소스 구성을 식별하는 데 사용될 수 있다.
도 3에 도시된 분산 게임 엔진은 온라인 게임을 위해 생성된 게임 데이터를 처리하는데 사용되는 복수의 관리 노드(302) 및 복수의 처리 노드(308)를 포함한다. 처리된 게임 데이터의 정보는 AI 모델을 구축 및 훈련하고 AI 모델을 사용하여 온라인 게임에 필요한 특정 리소스 구성을 예측하는 데 사용된다. 복수의 관리 노드(302) 및 처리 노드(308) 각각은 온라인 게임의 게임 엔진 및 게임 로직의 인스턴스를 실행한다. 각각의 처리 노드 또는 관리 노드는 온라인 게임의 게임 엔진 및 게임 로직의 인스턴스를 실행하도록 구성된 별개의 서버 인 것으로 간주될 수 있다. 관리 노드(302)는, 상이한 처리 노드상에서 실행되어야 하는 게임 엔진 작업을 식별하고, 할당된 게임 엔진 작업을 처리하는데 필요한 리소스를 제공하는 적절한 처리 노드에 대한 게임 엔진 작업의 할당을 관리하며, 처리를 위해 게임 엔진 작업을 처리 노드(즉, 서버)에 배포하고, 처리된 게임 엔진 작업의 정보를 사용하여 AI 모델을 구축하며, AI 모델을 기반으로 다양한 처리 노드에 대한 리소스 할당을 관리하고, 처리된 결과를 일 처리 노드로부터 다른 처리 노드로 라우팅하기 위한, AI 모델(315)을 지칭한다. 적어도 하나의 처리 노드는 다양한 처리 노드에 의해 출력된 다양한 게임 엔진 작업의 결과를 어셈블링하고, 처리 노드로부터의 결과를 인코딩하여 렌더링을 위해 각각의 클라이언트 장치로 계속 전송하기 위한 스트리밍 게임 데이터(135)의 비디오 프레임을 생성하도록 구성된다. 적어도 하나의 처리 노드는 비디오 프레임이 사용자의 다른 클라이언트 장치에 대해 호환 가능한 형식이 되도록 비디오 프레임을 포매팅하도록 추가로 구성된다. 일부 구현예들에서, 비디오 프레임들은 비디오 프레임들을 전송하는데 사용되는 이용 가능한 대역폭 및 프로토콜을 결정하기 위해 처리 노드에 의해 수행된 테스트에 기초하여 포매팅된다. 스트리밍 게임 데이터(135)의 비디오 프레임은 글루 로직(306)에 의해 처리되어, 그에 따라 비디오 프레임을 라우팅하기 위해 각각의 클라이언트 장치를 대상으로 하는 비디오 프레임을 식별한다. 다른 처리 노드(즉, 서버)에 할당된 게임 엔진 작업의 동기화를 조정하고 및/또는 게임 엔진 작업의 큐를 관리하기 위해, 추가 노드(예를 들어, 마스터 서버 노드(304))가 분산 게임 엔진(310)에 제공될 수 있다. 신규 사용자가 게임 클라우드 시스템에 참여함에 따라, 분산 게임 엔진은 또한 게임 클라우드 시스템의 처리 노드에서 실행되는 온라인 게임의 인스턴스로 신규 사용자를 라우팅하도록 구성된다.
일 구현예에서, 복수의 관리 노드(302) 각각은 특정 관리 작업을 수행하기 위해 사용된다. 예를 들어, 구성 에이전트(311)가 장착된 제 1 관리 노드(노드 m1)(302-m1)는, 온라인 게임을 실행하는 처리 노드 서버로부터 시스템 입력을 수신하고, 시스템 입력을 분석하여 현재 리소스 구성을 식별하며, 온라인 게임의 리소스 구성을 관리하도록 구성된다. 시스템 입력은 사용자의 게임 플레이로부터 수신된 게임 입력의 처리로 인한 온라인 게임의 게임 상태와, 시스템 구성 정보를 제공한다. 데이터 수집 엔진이 구비된 제 2 관리 노드(노드 m2)(302-m2)는 온라인 게임을 하는 복수의 사용자(즉, 플레이어)로부터 사용자 입력을 수신하고 구성 에이전트(311)로부터 시스템 입력을 수신하고, 게임 데이터를 생성하도록 입력을 처리하며, 처리된 게임 데이터로부터 리소스 할당 모델(AI 모델)을 훈련시키기 위한 훈련 데이터를 생성하도록 처리된다. 리소스 할당 에이전트(313)가 장착된 제 3 관리 노드(노드 m3)(302-m3)는 온라인 게임에 대한 리소스 할당을 최적화하도록 구성된다. 구체적으로, 리소스 할당 에이전트(313)는 온라인 게임을 위해 최적 양의의 리소스가 제공되었는지 여부, 및 특정 리소스가 스핀-업 또는 스핀-다운되어야 하는 시기 및 경우를 결정할 수 있다. 리소스 할당 에이전트를 이용하여, 현재 제공되는 온라인 게임에 대한 리소스의 유형 및 양과, 성공 기준을 달성하는 데 필요한 리소스의 유형 및 양을 결정할 수 있고, "탄력적인 계산"(elastic compute) 개념에 따라 온라인 게임에 대한 변화하는 수요에 부응하기 위한 특정 리소스를 스케일 업 또는 스케일 다운하도록 구성 에이전트에게 신호할 수 있다. 리소스 할당 에이전트는 게임 진행 중 어느 시점에서든 게임 상태 및 성공 기준에 따라 리소스의 프로비저닝 및 디프로비저닝을 제어하여 워크로드 변경에 적응할 수 있는 유연성을 제공하여, 시스템은 시스템 리소스의 현재 수요에 가장 가깝게 매칭하기에 충분한 리소스를 가질 수 있다. 하나 이상의 분류기 엔진(314)을 갖는 제 4 관리 노드(노드 m4)(302-m4)는 사용자 입력 및 시스템 입력을 포함하는 훈련 데이터를 사용하여 온라인 게임에 대해 정의된 성공 기준에 따라 온라인 게임에 대한 리소스 할당 모델(315)을 생성하고 훈련 시키도록 구성된다. 리소스 할당 모델(315)은 리소스 할당 에이전트에 의해 사용되어, 구성 에이전트에게 온라인 게임에 할당된 리소스를 조정하도록 시그널링한다.
도 3a는 리소스 할당 모델(315)을 훈련하는데 사용된 예시적인 훈련 데이터의 다양한 구성요소를 도시한다. 도시된 바와 같이, 훈련 데이터는 게임 플레이 동안 수신된 복수의 사용자로부터의 사용자 입력(312a), 사용자 입력에 의해 영향받는 복수의 사용자 각각에 대한 온라인 게임의 게임 상태(312b), 및 성공 기준(312c)을 포함한다. 물론, 전술한 훈련 데이터의 구성요소는 단순한 예로서 제공되며, 리소스 할당 모델(315)을 훈련시키기 위해 다른 유형의 입력이 또한 고려될 수 있다. 입력을 제공하는 사용자는 플레이어, 관중 및/또는 개발자일 수 있다. 리소스 할당 모델(315)은 각 유형의 사용자에 대한 적절한 리소스를 식별하도록 설계된다.
리소스 할당 모델(315)은 기계 학습 알고리즘을 사용하여 모델(315)을 훈련시킨다. 기계 학습 알고리즘은 리소스 할당 모델(315)을 생성 및 훈련시키도록 하나 이상의 분류 엔진을 포함하기 위해 구체적으로 구성될 수 있는 기계 학습 서버(즉, ML 프로세서)(302-m4) 상에 제공될 수 있다. 훈련된 모델(315)은 사용자 입력에 대한, 온라인 게임에 대해 정의된 성공 기준을 만족하는 출력의 매핑을 제공하며, 여기서 사용자 입력은 온라인 게임의 게임 상태에 영향을 미치기 위해 처리되었다. 기계 학습 알고리즘은 게임 로직에 의해 생성된 게임 데이터를 사용자의 입력에 응답하여 분석하여, 온라인 게임의 상이한 성공 기준을 달성하기 위해 특정 특징들을 처리하는데 사용되는 시스템 리소스 및 게임 데이터의 특정 특징을 처리하는데 사용되는 게임 엔진의 다양한 기능 부분을 식별할 수 있다. 게임 데이터의 특징은 물리학, 텍스쳐링, 음영처리, 어셈블링/인코딩, 오디오 프로세싱, 스크립팅, 애니메이션, 메모리 관리, 장면 그래픽 등을 포함할 수 있으며, 게임 엔진의 기능 부분은 특정 특징들 각각을 처리하도록 결합되는 특정 구성요소(즉, 엔진 또는 모듈)들을 식별할 수 있다. 훈련된 모델(315)은 분산 게임 엔진에 의해 사용되어, 게임 데이터의 상이한 특징을 처리하는데 필요한 게임 엔진의 상이한 기능 부분뿐만 아니라, 상이한 특징을 처리하기 위해 필요한 각 유형의 리소스의 유형 및 양을 결정한다. 리소스의 유형 및 각 유형의 양은 온라인 게임의 게임 플레이의 상이한 시점에 대해 정의된 성공 기준에 의해 결정되며, 성공 기준은 사용자 유형, 사용자들의 사용자 메트릭 중 특정 유형, 온라인 게임의 게임 상태, 등에 따라 달라진다. 예를 들어, 온라인 게임을 하는 플레이어에 대해 정의된 성공 기준은 특정 플레이어의 게임 플레이 또는 일반적으로 온라인 게임의 게임 플레이에 이어지는 관중에 대해 규정된 성공 기준과 다를 수 있다. 유사하게, 숙련되거나 고도로 숙련된 플레이어에 대해 정의된 성공 기준은 초보자 또는 중간 레벨 플레이어에 대해 정의된 성공 기준과 다를 수 있다.
리소스 할당 모델(315)은 리소스 할당 모델(AI 모델)(315)의 상호 연결된 노드의 네트워크 내에 다양한 노드를 채우도록 게임 데이터의 특징을 식별 및 분류하는데 사용되는 분류기 엔진을 사용하여 구축/훈련된다. 각 분류기 엔진은 게임 데이터의 특징 중 특정 특징을 식별 및 분류하기 위해 미리 정의되어있다. 예를 들어, 리소스 할당 모델(315)이 온라인 게임의 최적 성능을 지정하는 성공 기준에 대해 훈련되는 경우, 성능에 영향을 미치는 특징들 중 특정 특징들(예를 들어, 대기 시간, 이미지 품질, 대역폭 등과 같은 특징)을 식별 및 분류하기 위해 분류기 엔진들 중 특정 엔진이 제공될 수 있다. AI 모델을 구축/훈련하는 데 사용되는 분류 엔진은 학습을 통해, 처리된 게임 데이터에서 해당 특징을 식별하고, 게임 엔진의 기능 부분을 사용하여 처리된 게임 데이터의 특징들을 분석하며(여기서 AI 모델에 사용된 게임 데이터는 과거이력 사용자 입력 및 게임 상태를 처리하여 생성되었음), 분석에서 얻은 정보로 상호 연결된 노드 계층 내의 노드를 업데이트하고, 상호 연결을 사용하여 특정 성공 기준에 대한 출력을 도출할 수 있다. 성공 기준은 허용 가능한 대기 시간, 또는 각 서버의 허용 가능한 부하, 또는 선호하는 대기열 길이, 또는 대기열 타이밍, 또는 게임 데이터 품질, 또는 전송 속도 등 또는 이들의 임의의 조합을 포함할 수 있다. 상기 언급된 상이한 성공 기준의 목록은 단순한 예로서 제공되었으며 철저한 것으로 간주되어서는 안된다. 앞서 언급한 바와 같이, 게임 엔진의 기능 부분에 의해 처리되는 게임 데이터의 일부 예시적인 특징은 몇가지 거명하자면, 물리학, 텍스쳐링, 음영처리, 어셈블링/인코딩, 오디오, 스크립팅, 애니메이션, 메모리 관리, 장면 그래프를 포함한다. 물론, 게임 데이터에서 처리하기 위해 식별될 수 있는 특징들의 수가 더 적거나 더 많을 수 있다. 따라서, 게임 엔진의 기능 부분은 게임 데이터에서 식별된 특징을 처리하는 관련 게임 엔진 작업을 실행한다. 결과적으로, 전술한 게임 데이터 특징을 실행하기 위해 사용될 수 있는 게임 엔진의 일부 기능 부분은 물리 엔진, 텍스쳐링 모듈/엔진, 음영처리 모듈/엔진, 어셈블링 모듈, 오디오 엔진, 스크립팅 엔진, 애니메이션 엔진, 등을 포함할 수 있다. 전술한 기능 부분들은 단순한 예로서 제공되었으며 철저한 것으로 간주되어서는 안된다.
AI 모델은 게임 데이터를 처리함으로써, 그리고, 게임 데이터로부터 추출된 특징 및 이러한 특징의 처리에 사용되는 리소스의 세부사항과 함께 AI 모델의 각각의 노드를 채움으로써, 구축된다. 언급했듯이 AI 모델을 채우는 데 사용된 게임 데이터는 게임 플레이 히스토리에서 얻는다. 그 후, 생성된 AI 모델은 현재 또는 미래의 게임 플레이 세션에서 얻은 추가 게임 플레이 데이터로 실시간 업데이트된다. AI 모델의 노드는 게임 데이터 처리의 정보로 채워지며 AI 모델의 노드를 채우는 순서는 게임 데이터가 게임 엔진의 기능 부분에 의해 처리될 때 수행된 것과 동일한 순서를 따를 수 있다. 즉, 제 1 노드로부터의 처리된 출력은 추가 처리를 위해 게임 데이터와 함께 상호 연결된 제 2 노드로 전송되며, 여기서 제 1 및 제 2 노드는 게임 데이터의 처리 동안 후속 시퀀스에 기초하여 식별된다. 예를 들어, 게임 데이터는 물리 구성요소를 처리하기 위해 먼저 물리 엔진에 의한 처리를 먼저 받았을 수 있다. 물리 엔진 프로세싱으로부터의 정보는 제 1 노드에 업로드될 수 있고, 처리된 물리 구성요소를 갖는 게임 데이터는 텍스처링과 관련된 연결된 제 2 노드에 입력으로서 제공될 수 있고, 물리 및 텍스처링 구성요소를 갖는 게임 데이터가 음영처리를 위해 연결된 제 3 노드에 제공될 수 있고, 등등이다. 게임 데이터가 여러 계층의 상호 연결된 노드를 통해 진행됨에 따라, 처리된 각 특징의 지식이 수집되고 출력이 생성된다. 생성된 출력은 특정 성공 기준과 관련이 있다. 입력 노드로부터의 출력 노드로의 경로는 특정 성공 기준과 상관되는 하나 이상의 미리 정의된 규칙에 의해 결정될 수 있다. 리소스 할당 모델(315)은 입력 노드와 출력 노드 사이에서 AI 모델의 상호 연결된 노드의 서로 다른 경로를 따라 여러 출력을 생성할 수 있으며, 각 출력은 특정 성공 기준을 만족 시키도록 정의된 대응하는 미리 정의된 규칙에 의해 구동된다. 분류기 엔진의 출력은 출력(즉, 리소스 할당)이 온라인 게임에 대해 정의된 사전 정의된 성공 기준을 충족하는지 여부를 결정하는 데 필요한 정보를 제공한다. 예를 들어, 리소스 할당 모델(315)로부터 출력된 정보는 사용자 X가 레벨 J에서 게임 1을 플레이하고 x 레벨의 성능, y 레벨의 대기 시간 및 z 레벨의 품질을 수신하였음을 식별할 수 있다. 또한, 성공 기준은 최소 대기시간으로 정의될 수 있는데, 이는 게임 데이터가 실시간으로 클라이언트 장치에 제공되는 것으로 보이도록 게임 데이터가 신속하게 처리되고, 빠르게 조립 및 인코딩되어 전송되어야 한다는 것을 의미한다. 리소스 할당 모델(315)로부터의 출력은 성공 기준을 정의하는 미리 정의된 규칙에 따라, 리소스 할당 에이전트에 의해 분석될 수 있어서, 성공 기준을 충족시키기 위해 사용된 리소스 구성의 유형을 결정할 수 있다. 이 정보를 이용하여, 제공되거나 식별된 리소스 구성이 온라인 게임의 특정 게임 상태 및 수신된 게임 입력에 기초하여, 후속 게임 플레이 세션에 대해 미세 조정될 필요가 있는지 여부를 포함하여, 상이한 리소스에 대한 예측이 온라인 게임에 대해 이루어질 수 있다. 미세 조정은 온라인 게임이 성공 기준을 달성하기 위해 "언제" 및 어떤 유형의 리소스(들)을 조정(즉, 탄력적으로 확장 또는 축소)해야 하는지를 결정하는 것을 포함할 수 있다.
간단히 말해서, 기계 학습은 리소스 할당 모델(즉, AI 모델)을 사용하여 사용자의 입력을 해석함으로써 사용자로부터의 원시 입력 데이터를 이해하는데 사용된다. 예를 들어, 사용자의 입력은 사용자의 게임 상태 메트릭 및 사용자 메트릭을 식별하는 데 사용된다. 게임 상태 메트릭 및 사용자의 사용자 메트릭은 기계 학습 알고리즘에서 사용되어, 게임 플레이 중 다양한 리소스에 부과되는 스트레스를 특성화할 수 있고, 이러한 스트레스는 온라인 게임의 게임 상태에 따라 변경될 수 있다. 기계 학습 알고리즘은 노드들의 신경망으로 AI 모델을 생성하고 이 노드들을 온라인 게임의 다양한 게임 플레이 단계에서 사용되는 리소스로 채워, (a) 게임 데이터의 여러 기능이 하나와 어떻게 관련되어 있는지와, (b) 할당된 리소스를 사용하여 다른 기능을 처리하여 생성된 출력이 온라인 게임에 대해 정의된 성공 기준과 어떤 관련이 있는지를 학습할 수 있다. 분류기 엔진은 상이한 특징들을 식별하고 AI 모델의 상이한 노드를 채우는 데 사용된다. 할당된 리소스를 사용하여 상이한 특징을 처리할 때, 대응하는 노드는 게임 데이터의 특정 특징의 처리의 출력으로 업데이트된다. 기계 학습은 다양한 특징의 처리 결과를 분석하여 처리 과정에서 발생하는 패턴을 식별하고, AI 모델의 결과를 온라인 게임에 정의된 성공 기준과 연관시킨다. 성공 기준을 정의하는 사전 정의된 규칙을 사용하여 분석이 수행된다. 분석을 기반으로, 기계 학습은 현재 할당이 최적인지 또는 특정 특징을 처리하기 위해 할당된 리소스 중 선택 리소스가 전체 패턴을 개선하도록 그리고 그 출력을 성공 기준에 더 낫게 정렬시키도록 확장(업/다운)해야 하는지 결정한다.
현재 리소스 할당이 최적 인 것으로 보여 질 때(즉, 출력은 게임 상태 및 사용자 입력에 기초하여 온라인 게임에 대해 정의된 성공 기준과 정렬됨) 시스템은 현재 리소스 할당을 유지하도록 선택할 수 있다. 반면, AI 모델의 분석에서, 출력이 성공 기준을 충족했지만 유휴 상태로 남아있는 특정 리소스가 과도하게 할당된 것으로 판단할 수 있다. 처리 리소스가 비싸기 때문에 온라인 게임 플레이에 제공되는 각각의 모든 리소스를 최적화하는 것이 중요하다. 결과적으로, 리소스 할당 에이전트는 분석의 결과를 이용하여 특정 특징을 처리하기 위해 초과 할당된 것으로 표시된 리소스 중 특정 리소스를 스케일-백하기 위해 구성 에이전트에 신호를 전송할 수 있다. 기계 지능은 출력을 성공 기준에 맞추는 데 사용되는 리소스 할당 모델을 생성하고 훈련시키기 위해 지도 학습, 비-지도 학습, 반-지도 학습 또는 기타 기계 학습을 사용할 수 있다.
일 구현예에서, 미리 정의된 규칙은 고려될 파라미터로서 게임 데이터의 각각의 특징을 포함하도록 정의될 수 있고, 출력은 게임 데이터의 각각의 파라미터에 할당된 가중치를 사용함으로써 생성될 수 있다(즉, 어떤 파라미터가 다른 것보다 더 가중되어야 하는가). 리소스 할당 에이전트는 하나 이상의 사전 정의된 규칙에 따라 AI 모델 출력의 분석을 사용하여, 현재 리소스 할당이 성공 기준을 충족시키기에 충분한 지 여부를 결정하고, 특징 처리를 위해 할당된 하나 이상의 리소스가 최적이 아니라고 판단될 때 시스템 리소스를 사전에 조정하도록 구성 에이전트에 신호를 보낼 수 있다. 예를 들어, 성공 기준은 온라인 게임의 후속 게임 플레이 동안 최소한의 대기시간으로 온라인 게임의 플레이어(즉, 게임 플레이에 관여하는 사용자)에게 게임 데이터가 제공되어야 함을 명시할 수 있다. 지정된 성공 기준에 따라, 리소스 할당 모델의 다른 출력을 분석하여, 게임의 게임 상태에 대해 지정된 성공 기준을 이전에 충족한 시스템 리소스 구성으로 게임 입력 세트에 대해 정의된 출력을 식별한다. 리소스 할당 모델에 의해 제공된 정보를 사용하여, 리소스 할당 에이전트는 현재 게임 플레이 동안 리소스의 할당이 지정된 성공 기준을 충족시키기에 충분한 지 또는 시스템 리소스를 스케일 업 또는 다운해야 하는지 여부를 결정한다. 현재 게임 플레이에 대한 리소스 할당이 성공 기준을 달성하기 위한 예측된 요구를 충족시키기에 충분하지 않다고 결정되면, 신호를 리소스 할당 에이전트에 의해 구성 에이전트에 전송하여, 예측된 리소스 수요에 기초하여, 온라인 게임을 위한 현재 게임 플레이 세션을 위한 시스템 리소스의 플레이어들 중 특정 시스템 리소스를 미리 스케일-업 또는 다운할 수 있다. 플레이어의 현재 게임 플레이 세션에 대한 성공 기준이 게임 데이터의 프레임 품질에 상관없이 상위 레벨 플레이어에 대한 최소 대기 시간을 지정하는 위의 예에서, 일치하는 게임 입력에 대한 최소 대기 시간의 성공 기준을 충족하는 출력 상위 레벨 플레이어의 게임 입력은 리소스 할당 모델에서 식별되며, 현재 리소스 할당을 결정하는 데 사용된다. 현재 리소스 할당을 결정하면, 기계 학습 알고리즘은 온라인 게임에 할당된 리소스(예를 들어, 게임에 할당된 CPU 리소스의 양 및 통신 대역폭)가 동일한 성공 기준을 충족시키도록 현재 게임에 대해 조정될 필요가 있는지를 결정하기 위해 출력을 추가로 분석할 수 있다. 유사하게, 성공 기준이 클라이언트 장치에 반환된 게임 데이터의 품질을 특정하면, 게임 데이터의 품질에 대응하는 출력은 온라인 게임의 현재 세션에 할당된 리소스 중 특정 리소스가 성공 기준을 충족시키기 위해 확장 또는 축소되어야 하는지를 결정하는데 사용될 수 있다. 이러한 결정에 기초하여, 리소스 할당 에이전트는 신호를 생성하고 구성 에이전트에 전달하여 온라인 게임에 할당된 리소스를 조정할 수 있다.
임의의 조정이 필요한지를 결정하기 위해, 리소스 할당 에이전트(313)는 구성 에이전트(311)와 상호작용하여 현재 시스템 리소스 할당을 결정할 수 있고, 현재 시스템 리소스 할당이 게임의 게임 상태에 대한 성공 기준을 만족시킨 리소스 할당 모델(315)로부터의 리소스 할당과 일치하지 않을 때, 구성 에이전트(311)에 신호를 보낼 수 있다. 구성 에이전트(311)로의 신호는 온라인 게임에 대해 규정된 성공 기준을 달성하기 위해 이루어져야 하는 리소스 유형 및 조정 유형(확장, 축소, 신규 프로비저닝, 기존 디-프로비저닝, 등)을 식별할 수 있다. 구성 에이전트(311)는 리소스 할당 에이전트(313)로부터의 신호에 응답하여 리소스를 적절히 탄력적으로 조정하도록 구성된다.
도 3은 현재 게임 세션으로부터 게임 데이터의 특정 특징을 처리하도록 할당된 다양한 처리 노드(노드 p1 내지 p8)(308)를 도시한다. 각각의 처리 노드는 게임 엔진의 특정 기능 부분을 처리하기 위한 게임 엔진 및 게임 로직의 인스턴스를 포함한다. 처리 노드는 게임 엔진의 특정 기능 부분을 처리하기 위해 필요한 리소스를 제공하도록 구성된 서버, 게임 콘솔, 또는 컴퓨팅 장치 일 수 있다. 간략화를 위해, 도 3에 도시된 각각의 처리 노드는 게임 엔진의 특정 기능 부분을 처리하도록 구성되는 반면, 실제로는 하나보다 많은 처리 노드가 특정 기능 부분을 처리하기 위해 관여될 수 있으며, 도 4A-4C를 참조하여 더 상세히 논의된다.
마스터 노드(304)는 게임 데이터의 다양한 특징의 처리를 동기화하는데 사용될 수 있다. 마스터 노드의 프로세스 동기화 계층(304a)은 게임 데이터의 다양한 특징 처리를 위해 게임 엔진의 기능 부분을 실행하기 위한 리소스의 할당을 관리하도록 복수의 처리 노드 각각과 복수의 관리 노드 각각 사이에 통신 인터페이스를 제공한다. 게임 엔진의 각 기능 부분은 게임 엔진 작업을 나타내고, 프로세스 동기화 계층(304a)은 관리 노드의 리소스 할당 모델에 의해 제공된 정보에 기초하여 게임 엔진 작업의 기능 부분을 관리하기 위한 가상 버스로서 작용한다. 구체적으로, 프로세스 동기화 계층(304a)은 상이한 처리 노드로의 게임 엔진 작업의 할당을 관리하고, 게임 엔진 작업 중 특정 작업을 선택 처리 노드에 분배하며, 처리된 결과를 선택 처리 노드(즉, 상호 연결된 노드)들 사이와, 선택 처리 노드 및 구성 에이전트 사이에서 라우팅한다. 구성 에이전트에 제공된 결과는 게임 엔진 작업 처리에 할당된 리소스를 탄력적으로 조정하여 출력이 성공 기준을 충족시키는 데 사용된다. 탄성 스케일링은 특정 특징을 처리하기 위해 추가 처리 노드(예를 들어, 추가 서버)를 추가하거나, 프로비저닝된 처리 노드 내에서 리소스를 스케일링(예를 들어, 서버 노드의 추가 CPU 코어를 추가 또는 제거)하는 것을 포함할 수 있다. 게임 엔진 작업의 동기화에는 각 게임 엔진 작업의 프로세스 타이밍을 고려하여 작업 대기열 관리가 포함된다.
도 4a는 온라인 게임에 대해 정의된 성공 기준을 충족시키기 위해 게임 데이터를 처리하기 위한 리소스를 할당하는데 사용될 수 있는 처리 노드의 예시적인 구현을 도시한다. 각 처리 노드에는 게임 엔진이 장착되어 있으며 특정 게임 엔진 작업을 처리하는 데 필요한 리소스가 포함되어 있다. 도 4a에 도시된 구현은 각 처리 노드에 처리를 위한 특정 게임 엔진 작업이 할당된 매우 기본적인 형태의 리소스 할당을 도시한다. 따라서 노드 p1은 서버 1의 리소스를 사용하여 게임 데이터의 물리 구성요소를 처리하는 데 사용되고, 노드 p2는 서버 2의 리소스를 사용하여 게임 데이터의 텍스처링 구성요소를 처리하는 데 사용되며, 노드 p3은 서버 3의 리소스를 사용하여 음영 처리 구성요소를 처리하는 데 사용되고, 노드 p4는 서버 k의 리소스를 사용하여 상이한 처리 노드로부터 수신된 게임 데이터를 어셈블링 및 인코딩하는데 사용되고, 노드 p5는 서버 m의 리소스를 사용하여 오디오 구성요소(즉, 사운드)를 처리하는 데 사용되고, 노드 p6은 서버 m + 1의 리소스를 사용하여 스크립팅 구성요소를 처리하는데 사용되고, 노드 p7은 서버 m + 2의 리소스를 사용하여 애니메이션 구성요소를 처리하는 데 사용되고, 노드 p8은 서버 p의 리소스를 사용하여 메모리 관리를 수행하는 데 사용되며, 노드 p9는 서버 p + 1의 리소스를 사용하여 장면 그래프 구성요소를 처리하는 데 사용된다. 도 4a에서 식별된 게임 엔진 작업의 유형은 설명을 위해 제공되며, 철저하거나 제한적인 것으로 간주해서는 안된다. 더 적거나 더 많은 게임 엔진 작업의 유형들이 상이한 서버에서 실행되는 게임 엔진 인스턴스를 사용하여 식별 및 처리될 수 있다. 처리 노드들 각각은 다른 처리 노드들과 상호 작용할 수 있으며, 이러한 상호 작용은 가상 버스로서 작용하는 프로세스 동기화 계층을 통해 이루어질 수 있다. 유사하게, 각각의 관리 노드는 서로 가상 버스를 통해 또는 직접 상호 작용할 수 있다. 또한, 각각의 관리 노드는 프로세스 동기화 계층을 통해 하나 이상의 처리 노드와 상호 작용할 수 있다. 도 4a에 도시된 예에서, 각 서버는 하나의 게임 엔진 작업만을 수행하도록 구성된다. 대안적인 예에서, 하나보다 많은 게임 엔진 작업이 단일 서버에 의해 수행될 수 있다. 유사한 라인을 따라, 하나보다 많은 서버가 게임 엔진 작업을 수행하도록 관여될 수 있다.
도 4b는 그러한 하나의 예를 도시한다. 리소스 할당 에이전트는 게임 데이터의 특정 특징을 처리하기 위해 추가 리소스가 필요하다는 것을 표시할 수 있고, 이에 응답하여 구성 에이전트(311)는 특정 특징을 처리하기 위해 추가 처리 노드를 프로비저닝할 수 있다. 따라서, 도 4b에 도시된 예에서, 복수의 물리 노드는 게임 데이터의 물리 구성요소를 처리하기 위해 필요한 처리 리소스를 제공하도록 프로비저닝되고, 복수의 텍스처링 노드는 텍스처링 구성요소를 처리하기 위해 필요한 처리 리소스를 제공하도록 프로비저닝되며, 복수의 스크립팅 노드는 스크립팅 처리를 위해 필요한 처리 리소스를 제공하도록 프로비저닝된다. 처리 노드들 각각은 단일 코어 프로세서 또는 멀티 코어 프로세서, 정의된 대역폭, 또는 각각의 구성요소들을 처리하기 위한 단일 서브 구성요소 또는 다수의 서브 구성요소들을 포함할 수 있다. 게임 데이터의 나머지 구성요소는 각각의 단일 처리 노드와 연관된 서버의 처리 리소스를 사용하여 처리될 수 있다.
도 4c는 게임에 대해 정의된 성공 기준에 대한, 리소스 할당 모델(315)의 출력을 분석한 후 리소스 할당 에이전트에 의해 생성될 수 있는 신호를 도시한다. 성공 기준은 게임 유형, 게임의 게임 상태, 생성된 게임 데이터의 양 등과 같은 하나 이상의 게임 상태 메트릭과, 사용자 유형(개발자, 플레이어, 또는 관중), 사용자의 전문성 레벨, 등과 같은 하나 이상의 사용자 메트릭에 의해 구동될 수 있다. 예를 들어, 전문가 플레이어에 의해 플레이되는 고강도 게임의 경우, 성공 기준은 최소 대기시간으로 게임 데이터를 프로비저닝하는 것으로 정의될 수 있다. 관중의 경우, 성공 기준은 온라인 게임의 게임 플레이를 보기 위해 모든 관중에게 제공되는 공통보기 창, 또는 게임 플레이의 게임 장면을 독립적으로 탐색하기 위한 맞춤형 보기 창, 또는 관중이 전문가 플레이어의 게임 플레이에 독립적으로 따르게 하는 별도의 보기 창, 전문가 플레이어가 관중으로 행동하고 초보자 플레이어의 게임 플레이를 따르며 안내 등을 제공할 수 있는 별도의 보기 창을 제공하는 것일 수 있다. 성공 기준에 따라, 출력은 할당 모델(315)로부터 식별되고 시스템의 리소스는 온라인 게임의 각 사용자에게 원하는 게임 플레이 경험을 제공하도록 조정된다. 도 4c에 도시된 예에서, 리소스 할당 에이전트는 리소스 할당 모델(315)의 출력을 분석하여 온라인 게임의 현재 구성(370)을 획득하고, 현재의 구성(370) 및 온라인 게임의 현재 게임 상태에 기초하여, 온라인 게임에 대해 정의된 성공 기준을 충족시키기 위해 구성 업데이트(372)를 갖는 신호를 제공할 수 있다. 도시된 바와 같이, 리소스 할당 에이전트(313)에 의해 구성 에이전트(311)로 통신된 신호는 물리 구성요소, 스크립팅 구성요소, 애미네이션 구성요소, 및 어셈블링을 처리하는데 사용되는 처리 노드가 더 확장될 필요가 있고, 음영처리, 사운드, 메모리 관리 및 장면 그래프에 할당된 처리 노드의 수는 현재 수준으로 유지되어야 하며, 텍스처링 구성요소를 처리하는 데 사용되는 처리 노드의 수는 축소되어야 한다. 리소스 할당 에이전트에 의해 전송되는 신호는 성공 기준에 기초하여 AI 모델의 분석으로부터 식별된 상이한 리소스에 대한 예측된 수요를 바탕으로 하며, 예측된 수요를 예상하여, 필요한 리소스가 온라인 게임에 적시에 프로비저닝되도록 보장하는데 사용되고, 사용자가 온라인 게임과 상호 작용할 때, 사용자의 사용자 메트릭 및 온라인의 게임 상태 메트릭에 대해 정의된 성공 기준에 따라, 할당된 리소스를 사용하여 게임 데이터가 처리되고, 제시된 사용자의 클라이언트 장치로 복귀한다.
도 5는 온라인 게임의 사전 게임 플레이 동안 수집된 훈련 데이터의 분석에 기초하여, 예측된 수요를 예상하여 온라인 게임을 위한 리소스를 프로비저닝하기 위해 사용되는 게임 클라우드 시스템의 예시적인 로직 구조를 도시한다. 온라인 게임은 다수의 사용자가 동시에 플레이하는 대규모 멀티 플레이어 온라인(MMO) 게임이다. 게임은 게임 클라우드 시스템에서 실행되며 인터넷과 같은 네트워크(200)를 통해 액세스된다. 온라인 게임에 액세스하는 사용자는 사용자 계정(310a)에서 유지되는 대응하는 사용자 프로파일에 대해 검증된다. 검증은 사용자가 액세스할 수 있는 온라인 게임(310b)의 게임 타이틀을 식별하기 위해 사용된다. 확인이 끝나면 사용자는 온라인 게임을 통해 게임을 즐길 수 있다. 사용자는 상이한 지리적 위치에서 온라인 게임에 액세스할 수 있으며 게임 클라우드 시스템은 지리적으로 분산된 서버 네트워크를 통해 온라인 게임을 인스턴스화하여 온라인 게임에 대한 액세스를 제공한다. 분산 게임 엔진(310)은 온라인 게임의 게임 로직을 실행하는 데 사용된다. 온라인 게임을 인스턴스화하는 것은 서버 네트워크 각각에서 게임 엔진(310e) 및 게임 로직(310f)의 인스턴스를 실행하는 것을 포함한다. 게임 엔진은 게임 엔진의 상이한 기능 부분을 처리하기 위해 필요한 엔진/모듈을 제공하며, 각 기능 부분은 게임 데이터의 대응하는 특징을 처리하도록 구성된다. 예를 들어, 게임 데이터의 물리 구성요소를 처리하기 위해 물리 엔진이 제공될 수 있고, 음영처리 구성요소를 처리하기 위해 음영처리 엔진이 제공될 수 있고, 등등이다.
온라인 게임의 게임 플레이 동안의 사용자 입력은 복수의 사용자로부터 수집되어, 게임의 게임 상태에 영향을 미치고 렌더링을 위해 클라이언트 장치로 복귀하기 위한 게임 데이터를 생성하는데 사용된다. 사용자의 입력은 사용자의 사용자 메트릭(310c)을 업데이트하는 데 사용되고 게임의 게임 상태는 게임 상태 메트릭(310d)으로 업데이트된다. 사용자의 사용자 메트릭(310c) 및 게임 상태 메트릭(310d)은 분산 게임 엔진(310)에 의해 리소스 할당 모델(315)(AI 모델)을 생성하는데 사용된다. 리소스 할당 모델(315)은 온라인 게임에 대한 리소스에 대한 수요를 예측하고, 리소스가 온라인 게임의 게임 플레이 중에 사용될 것으로 예상하여 사전에 필요한 리소스를 사전에 스케일링하는데 사용된다. 예상 수요는 확장해야 하는 리소스와 축소해야 하는 리소스를 식별한다.
전술한 바와 같이, 분산 게임 엔진은 게임 클라우드 시스템에서 실행되는 게임의 결과에 영향을 미치는 게임 로직을 관리하고, 온라인 게임에 생명을 불어넣는 데 사용되는 온라인 게임의 특정 핵심 특징을 처리하기 위해 복수의 재사용 가능한 구성요소를 제공한다. 게임 엔진의 재사용 가능한 구성요소로 처리되는 핵심 특징에는 그래픽, 오디오, 물리, 인공 지능, 스크립팅, 애니메이션, 네트워킹, 스트리밍, 최적화, 메모리 관리, 스레딩, 현지화 지원 등이 있다. 게임 로직은 사용자로부터 수신된 입력에 기초하여 게임의 게임 상태(즉, 결과)를 결정한다. 온라인 게임의 실행으로 생성된 게임 데이터에는 게임의 결과는 물론 게임의 생명을 가져 오는 처리된 특징이 포함된다.
분산 게임 엔진은 온라인 게임의 핵심 특징을 처리하는 것 외에, 기계 학습 알고리즘을 사용하여 온라인 게임의 게임 데이터를 사용하여 AI 모델(315)의 노드의 신경망을 갱신한다. 기계 학습 알고리즘에는 리소스 할당 모델을 생성/정련하기 위한 출력을 제공하는 데 사용되는 분류기가 포함된다. 각각의 분류기는 게임 데이터의 특정 특징을 식별 및 처리하고, 특징의 처리와 관련된 정보 및 특징을 처리하는데 사용되는 리소스로 AI 모델의 대응 노드를 업데이트하도록 구성된 엔진/모듈을 갖는다. 처리된 정보는 추가 처리를 위해 게임 데이터 다운 스트림과 함께 다른 분류기로 전달된다. 예를 들어, 물리 특성의 품질을 결정하기 위해 분류기가 구축될 수 있다. 음영처리의 품질을 결정하기 위해 다른 분류기가 구축될 수 있다. 또 다른 하나는 스레딩을 관리하기 위해 구축될 수 있다(즉, 존재하는 서로 다른 기능을 처리하는 게임 조각 수와 상호 연결 방식, 서로 다른 기능과 관련된 게임 조각의 처리 시간, 대기열의 특정 기능에 대한 게임 조각 수, 등을 식별). 텍스처링, 메모리 관리, 스크립팅, 장면 그래프, 애니메이션의 품질을 식별하기 위해 다른 분류기를 구축할 수 있다.
신경망은 에지를 통해 연결된 2 개의 연속 노드를 갖는 복수의 노드를 포함한다. 노드는 상이한 에지를 통해 다른 노드에 연결될 수 있다. 입력 노드로부터 일련의 상호 연결된 노드를 통해 출력 노드로 이어지는 에지는 경로를 구획한다. 상호 연결 에지에 따라 입력 노드와 출력 노드 사이에 정의된 많은 경로가 있을 수 있다. AI 모델을 사용하여 온라인 게임의 게임 플레이 중 사용자 입력에 응답하여 생성된 게임 데이터는 입력 노드를 출력 노드에 연결하는 상호 연결된 노드(즉, 숨겨진 노드)의 네트워크를 통해 처리된다. 각 노드는 게임 데이터를 분석하여 게임 데이터의 특정 특징을 처리하는 효과를 결정하고 게임 데이터를 처리하여 실현된 패턴의 일관성을 결정하는 데 사용된다. 예를 들어, 패턴은 물리 또는 텍스쳐링 또는 음영처리의 품질이 최적인지 여부, 오디아고 일관되게 깨끗한지 여부, 게임 슬라이스 스레딩에서 대기시간의 허용가능 여부, 등을 표시할 수 있다. 리소스 할당 에이전트(313)는 사전 정의된 분석기 규칙 세트(313a)를 사용하여 AI 모델의 분류 자에 의해 제공된 패턴을 분석하여 출력을 도출한다. 출력은 특정 성공 기준이 충족되었는지 여부와 제공된 리소스가 충분하거나 확장/축소해야 하는지 여부를 나타낸다. AI 모델은 상호 연결된 노드의 상이한 경로를 따라 패턴을 식별하여 게임 데이터를 상이한 출력에 매핑한다. 상이한 경로로부터의 출력은 게임 상태에 대해 충족되거나 충족되지 않은 온라인 게임의 성공 기준과 관련될 수 있다. 또한, 각각의 출력은 각각의 경로를 따라 처리된 게임 데이터의 각 특징을 처리하기 위해 제공된 리소스의 유형 및 각 유형의 양을 식별한다. 분석에 기초하여, 리소스 할당 에이전트는 분산 게임 엔진 구성 에이전트(311)에 신호를 생성하여 리소스를 스핀 업 또는 스핀 다운한다.
구성 에이전트는 온라인 게임을 위한 리소스의 할당을 관리하기 위해 리소스 관리 서비스(330)를 관여시킬 수 있다. 리소스 관리 서비스(330)는 하드웨어 스케줄러(332)와 상호 작용하여 게임 클라우드 시스템에서 이용 가능한 각각의 하드웨어 리소스(320)의 상태를 결정한다. 하드웨어 스케줄러(332) 내의 스케줄러 캐시(332a)는 리소스 중 어느 것이 작업(즉, 게임 엔진 작업)을 수행하기 위해 현재 할당되어 있는지, 어느 리소스가 작업을 할당받도록 편성되어 있는지, 어느 리소스가 프리한지, 리소스 능력, 등을 식별할 수 있다. 하드웨어 스케줄러(332)로부터 획득된 정보에 기초하여, 리소스 관리 서비스(330)는 게임 엔진 작업을 수행하기 위해 할당 가능한 리소스 중 특정 리소스를 식별할 수 있다. 구성 에이전트(311)는 리소스 관리 서비스(330)가 공유한 정보를 이용하여, 온라인 게임을 위한 게임 데이터의 특징 중 특정 특징을 처리하기 위한 리소스를 할당할 수 있다. 새로운 사용자가 게임 세션에 참여하면, 온라인 게임 사용자가 만족스러운 게임 플레이 경험을 가질 수 있도록 분산 게임 엔진 시스템 구성이 새로운 사용자를 라우팅하는 데 사용된다.
도 6a-6c는 일부 예시적인 구현예에서, 게임 엔진 및 게임 로직을 인스턴스화하고 온라인 게임을 위해 생성된 게임 데이터의 특징을 처리하기 위해 프로비저닝될 수 있는 다양한 유형의 서버를 도시한다. 도 6a에 도시된 바와 같이, 서버는 물리적 서버(308a) 일 수 있다. 서버(308a)는 독립형 서버 일 수 있고, 또는, 게임 클라우드 시스템 내의 데이터 센터의 일부일 수 있다. 데이터 센터의 서버는 데이터 센터 내의 독립 서버이거나 랙의 일부일 수 있으며 각 랙에는 여러 서버 컴퓨팅 장치가 포함된다. 서버 랙에 대한 자세한 내용은 도 7을 참조하여 설명된다. 물리적 서버에는 운영 체제, 메모리, 하나 이상의 응용 프로그램 및/또는 게임 엔진의 하나 이상의 기능 부분을 실행하기 위한 마이크로 프로세서와 같은, 필요한 리소스가 포함된다. 게임 엔진의 애플리케이션 또는 기능 부분은 메모리에 저장되고 마이크로 프로세서를 사용하여 처리되며 운영 체제에 의해 관리된다.
게임 세계에서, 사용자는 임의의 지리적 위치로부터 MMO 게임에 액세스하여 플레이할 수 있지만 하나의 가상 게임 공간에서 함께 모일 수 있다. 복수의 서버는 게임 플레이를 위해 사용자에게 온라인 게임에 대한 빠른 액세스를 제공하기 위해 관여될 수 있다. 상이한 서버에서 실행되는 온라인 게임의 게임 플레이로 인한 게임 상태는 가상 게임 공간에 있거나 가상 게임 공간의 게임 플레이를 보는 사용자가 실질적으로 실시간으로 게임 장면을 자체(즉, 각 사용자 고유의) 시선을 제공받도록 빠르고 효율적인 방식으로 서버간에 공유되어야 한다. 일 구현예에서, 게임 데이터에 대한 빠른 액세스를 제공하기 위해, 분산 게임 엔진의 인스턴스는 단일 데이터 센터의 일부인 상이한 서버에서 실행될 수 있다. 이 구성은 많은 대기 시간없이 데이터 센터 내의 상이한 서버간에 데이터를 교환할 수 있으므로 효율적으로 작동한다. 단일 데이터 센터의 서버들 사이에서 데이터를 교환하는데 사용되는 네트워크 아키텍처의 세부 사항은 도 7을 참조하여 보다 상세하게 논의될 것이다. 대안적인 구현예에서, 분산 게임 엔진 및 게임 로직의 인스턴스를 실행하는 복수의 서버는 지리적으로 분산된 복수의 데이터 센터 중 일부일 수 있다. 이러한 구현예에서, 온라인 게임의 게임 플레이로 인한 게임 상태는 상이한 서버의 서버들 사이에서 교환되어, 사용자에게 게임 장면에 대한 자신의 관점을 제공할 수 있다. 게임 상태를 교환하는 동안 약간의 대기 시간이 있을 수 있지만 대기 시간을 줄이기 위해 리소스가 제공될 수 있다.
도 6b에 도시된 바와 같이, 서버는 게임 클라우드 시스템의 일부인 가상 머신 일 수 있다. 게임 클라우드 시스템은 호스트 머신의 하이퍼바이저에서 실행되는 복수의 가상 머신(VM)(308b)을 포함할 수 있고, 하나 이상의 가상 머신은 호스트의 하이버파이저에 이용가능한 하드웨어 리소스를 이용하여 온라인 게임의 인스턴스를 실행하는 게임 프로세서를 지원하도록 구성된다. 복수의 가상 머신과 관련된 복수의 게임 프로세서가 온라인 게임의 인스턴스를 실행할 때, 사용자의 입력은 수집되고, 게임 클라우드 시스템의 하나 이상의 백엔드 서버(즉, 물리적 서버 또는 가상 서버)에 의해 조직되어, 온라인 게임의 게임 상태에 영향을 미치도록 처리된다. 사용자의 입력에 응답하여 온라인 게임에 의해 생성된 게임 데이터는 렌더링을 위해 게임 데이터의 스트리밍 프레임으로서 사용자의 클라이언트 장치에 조립, 인코딩 및 전달된다. 사용자 입력은 또한 온라인 게임의 리소스를 관리하는 데 사용되는 AI 모델을 훈련하기 위한 훈련 데이터를 생성하는 데 사용된다. 각각의 가상 머신은 하나 이상의 애플리케이션(예를 들어, 하나 이상의 온라인 게임 애플리케이션)을 포함할 수 있으며, 이는 호스트 머신의 가상화 계층(즉, 하이퍼바이저)에 이용 가능한 하드웨어 리소스를 사용하여 운영 체제에 의해 실행된다.
도 6c는 일 구현예에서, 온라인 게임을 위한 리소스를 프로비저닝하기 위해 사용될 수 있는 서버의 다른 예를 도시한다. 서버는 온라인 게임 애플리케이션과 같은 애플리케이션 및 온라인 게임 애플리케이션을 실행하는 데 필요한 모든 종속 항목, 라이브러리 및 구성 파일을, 애플리케이션 실행을 위해 컨테이너 내에 할당된 리소스들을 이용하여 애플리케이션과 함께 가상 컨테이너 내에 묶을 수 있는 클라우드 컨테이너(308c)의 일부일 수 있다. 컨테이너는 전체 운영 체제없이 작동하므로 운영 체제 수준의 가상화를 제공한다. 컨테이너는 온라인 게임을 위한 게임 엔진 및 게임 로직의 인스턴스를 실행하는 것과 같은 작업을 수행하기 위해 최소량의 리소스로 작동할 수 있으며, 여기서 리소스(즉, 물리적 하드웨어 리소스)가 가상화된다. 클라우드 컨테이너는 다른 서버에 완전히 배포할 수 있으므로 이식성이 뛰어나다. 일 구현예에서, 컨테이너는 컨테이너 호스트와 커널을 공유함으로써 프로세스 및 네임 스페이스 격리 기술을 통해 애플리케이션 격리를 제공한다. 대안적인 구현예에서, 컨테이너 호스트의 커널은 공유되지 않으므로, 컨테이너화된 애플리케이션을 가상 머신으로부터 실행함으로써 강화된 격리를 제공한다. 위에서 언급한 유형의 서버는 단순한 예로 제공되며 제한적인 것으로 간주해서는 안된다. 게임 엔진 및 게임 로직을 인스턴스화하기 위한 리소스를 제공하는 다른 형태의 서버 또는 컴퓨팅 장치가 사용될 수도있다.
도 7은 일 구현예에서 온라인 게임을 실행하는데 사용되는 서버가 위치된 예시적인 데이터 센터를 도시한다. 서버는 대규모 멀티 플레이어 온라인(MMO) 게임과 같은 온라인 응용 프로그램을 실행하기 위해 필요한 컴퓨팅 성능을 제공하기 위해 함께 네트워크로 연결된 복수의 서버(308-r11 ~ 308-r1m, 308-r21 ~ 308-r2m, 308-r31 ~ 308-r3m 등)의 일부일 수 있다. 데이터 센터는 복수의 랙(또는 타워)의 서버 및/또는 스토리지 장비를 포함한다. 도 7은 3 개의 랙/타워(랙 1-3)를 보여준다. 그러나 데이터 센터에는 3 개보다 많은 랙과 때로는 수백 개의 서버/스토리지 장비가 포함될 수 있다. 데이터 센터의 랙은 TOR(top-of-rack) 디자인 또는 EOR(end-of-row) 디자인을 사용하여 네트워크로 연결할 수 있다.
TOR 설계에서, 각각의 랙/타워는 각 랙의 상단에 배치된 랙 라우터(랙 1의 경우 라우터(350-a), 랙 2의 경우 라우터(350-b), 랙 3의 경우 라우터(350-c), 등)를 포함하고, 각 랙의 컴퓨티 장치(즉, 서버/스토리지 장비)는 각자의 랙 라우터에 연결된다. 각각의 랙 라우터는 차례로 집계 스위치(360)에 연결된다. 데이터 센터 내의 상이한 랙에 있는 서버 사이에서 교환된 데이터는 각각의 랙 라우터(350-a 내지 350-c)를 통해 흐르면서, 상이한 데이터 센터 내의 서버 사이에서 그리고 데이터 센터와 다른 컴퓨팅 장치 사이에서 교환되는 데이터는 각자의 랙 라우터(350-a 내지 350-c) 및 대응하는 집합 스위치(360)를 통해 흐른다. 예를 들어, 온라인 게임의 게임 플레이로부터 생성되는 다른 데이터에 더 가까워지기 위해, 온라인 게임을 위한 게임 데이터의 처리가 데이터 센터 내에서 랙 1의 서버 1(308-r11)로부터 랙 3의 서버 3(308-r33)으로 이동할 필요가 있을 때(빨간색 실선으로 표시), 전송 프로세스는 다음과 같이 이루어진다: (a) 아직 스핀업되지 않은 경우 서버(308-r33)가 스핀 업되고, (b) 랙 1의 서버 1(308-r11)에 있는 데이터가 랙 3의 서버 3(308-r33)에 전달되고, 데이터가 서버 1(308-r11)과 서버 3(308-r33) 사이에서 동기화되며, 데이터의 전송 및 동기화는 각각의 랙-오버 라우터(350-a 및 350-c)를 통해 처리되고, 데이터의 전송 및 동기화는 각자의 탑-오브-랙 라우터(350-a, 350-c)를 통해 취급되며, (c) 제어는 서버 3으로 넘겨진다(도 7의 빨간 점선 참조). 탑 오브 랙 설계 방식의 장점 중 하나는 특정 랙의 모든 서버가 특정 랙의 해당 탑 오브 랙 라우터에 연결되고 제한된 수의 케이블만 다른 랙 및 집계 스위치에 연결되도록 확장되므로, 케이블 연결 복잡성이 최소화된다는 것이다. 더 적은 양의 케이블을 필요로 하는 점, 각 데이터 센터 랙에 내장 케이블이 제공될 때 데이터 센터 랙의 모듈식 배치와 같은, 다른 이점은 당업자에 의해 입증될 수 있다.
다른 한편으로, EOR 네트워크 설계에서, 개별 랙의 각 서버는 공통 EOR 집계 스위치에 직접 연결된다. 즉, 연결은 직접적이고 개별 랙의 개별 TOR 라우터를 통하지 않는다. 결과적으로 데이터 흐름은 EOR 집계 스위치를 통해 이루어진다. 이 접근 방식의 일부 장점은 데이터 센터에서 서버를 쉽게 확장할 수 있고, 서버 랙 제약 조건을 고려하지 않고 서버 배치를 독립적으로 수행할 수 있으며, 데이터가 보다 적은 개수의 라우터/스위치를 통과함에 따라 대기시간이 최소화된다는 것이다. 이 설계 구현의 다른 장점은 당업자에 의해 구상될 수 있다.
일부 구현예들에서, 사용자는 세계 어디에서나 클라우드 게임 시스템의 온라인 게임 애플리케이션에 연결할 수 있다. 온라인 게임 응용 프로그램은 전 세계에 분산된 상이한 데이터 센터의 상이한 서버 상에서 여러 게임 인스턴스를 시작하여 이러한 연결을 가능하게 한다. 온라인 게임의 게임 플레이 중에 각 클라이언트 장치에서 생성된 사용자 입력 데이터는 서버 네트워크로부터 수집되고 게임 데이터 프레임은 네트워크 모델 중 하나를 사용하여 각 클라이언트 장치로 반환된다. 이 애플리케이션에 설명된 게임 클라우드 시스템의 서버 간 통신에 사용될 수 있는 네트워크 모델의 일부 예로는 TCP/IP 네트워크 모델 또는 ISO(International Organization of Standardization) 기반 OSI(Open System Interconnection) 네트워크 아키텍처가 있다. 분산 서버들 간의 데이터 처리 및 통신은 복수의 기존 프로토콜 중 임의의 프로토콜을 따를 수 있다. ISO 모델에는 일련의 응용 프로그램 계층(응용 프로그램 계층, 프레젠테이션 계층, 세션 계층) 및 데이터 흐름 계층(전송 계층, 네트워크 계층, 데이터 링크 계층 및 물리 계층)이 포함된다. 애플리케이션 계층은 각각의 엔티티에 의해 이해되는 방식으로 송신 및 수신 엔티티를 식별하고, 송신 및 수신 엔티티 사이에서 온라인 게임과 같은 애플리케이션의 데이터를 전송하고, 최소한의 데이터 손실로 송신 및 수신 엔티티 간에 통신을 관리 및 동기화하도록 구성된다. 데이터 흐름 계층들은 데이터 전송이 순차적 또는 병렬 경로로 수행되어야 하는지, 데이터를 패킷화하고, 패킷화된 데이터를 프레임으로 조립하고, 바람직한 경로를 따라 데이터 프레임을 전송하기 위해 필요한 프로토콜을 결정하도록 구성된다. 상기 언급된 설명은 온라인 게임을 위한 서버의 네트워크를 통해 데이터를 통신하는데 사용되는 ISO 모델의 개요만을 제공하고 다양한 층의 역할의 세부 사항은 당업자에 의해 이해된다는 점에 유의해야 한다. 따라서 더 상세히 설명되지 않는다.
도 8은, 본 개시의 일 구현예에 따라 훈련 데이터를 업데이트하고 업데이트된 훈련 데이터를 이용하여 온라인 게임의 게임 플레이에 관한 리소스 할당 모델을 구축 및/또는 훈련하기 위해 사용자 입력의 수집을 지원하는 예시적인 시스템(300a)의 개요를 도시한다. 특히, 시스템 다이어그램(300A)은 게임 클라우드 시스템(GCS)(300)에 저장된 비디오 게임의 액세스 및 재생을 가능하게 한다. 일반적으로, 게임 클라우드 시스템(GCS)(300)은 대응하는 게임 플레이를 통해 온라인 게임 애플리케이션을 플레이하는 복수의 플레이어를 지원하도록 네트워크(200)를 통해 동작하는 클라우드 컴퓨팅 시스템 일 수 있다. 이러한 게임 플레이와 관련된 데이터는 온라인 게임 애플리케이션의 게임 플레이와 관련된 AI 모델을 구축 및/또는 훈련에 사용되는 훈련 데이터로서 제공될 수 있다. 특히, 시스템(300A)은 GCS(300), 하나 이상의 소셜 미디어 제공자(240) 및 클라이언트 장치(100)를 포함하고, 이들 모두는 네트워크(200)(예를 들어, 인터넷)를 통해 연결된다. 복수의 사용자와 관련된 복수의 클라이언트 장치는 GCS(300) 및 소셜 미디어 제공자(240)에 의해 제공되는 서비스에 액세스하기 위해 네트워크(200)에 연결될 수 있다. 사용자는 특정 플레이어 또는 온라인 게임의 게임 플레이를 따르는 플레이어 또는 관중 일 수 있다.
일 실시예에서, 게임 클라우드 시스템(300)은 게임 서버(205), 비디오 레코더(271), 태그 프로세서(273) 및 사용자 프로파일 매니저를 포함하는 계정 매니저(274), 게임 선택 엔진(즉, 게임 선택기)(275), 게임 세션 매니저(285), 사용자 액세스 로직(280), 네트워크 인터페이스(290) 및 소셜 연결 매니저(295)를 포함한다. GCS(300)는 일반적으로 데이터스토어(260)에 저장될 수 있는 게임 상태 저장소, 사용자 계정, 사용자 데이터 저장소, 등과 같은 복수의 저장 시스템을 더 포함할 수 있다. 다른 게임 저장 시스템은 게임 코드 저장소(261), 레코딩된 게임 저장소(262), 태그 데이터 저장소(263), 비디오 게임 타이틀 저장소(264) 및 게임 네트워크 사용자 저장소(265)를 포함할 수 있다. 일 실시예에서, GCS(300)는 온라인 게임 애플리케이션, 서비스, 게임 관련 디지털 콘텐츠 및 시스템, 애플리케이션, 사용자 및 소셜 네트워크 간의 상호 연결성을 제공할 수 있는 시스템이다. GCS(300)는 네트워크 인터페이스(290)를 통해 소셜 연결 매니저(295)를 따라 사용자 장치(100) 및 소셜 미디어 제공자(240)와 통신할 수 있다. 소셜 연결 매니저(295)는 하나 이상의 친구를 관련시키도록 구성될 수 있다. 일 실시예에서, 각각의 소셜 미디어 제공자(240)는 사용자 소셜 네트워크 연결을 나타내는 적어도 하나의 소셜 그래프(245)를 포함한다.
플레이어(즉, 사용자)는 게임 세션 매니저(285)를 통해 GCS(300)에 의해 제공되는 서비스에 액세스할 수 있다. 예를 들어, 계정 매니저(274)는 플레이어에 의해 GCS(300)상의 게임 타이틀에 대한 인증 및 액세스를 가능하게 한다. 계정 매니저(274)는 사용자(플레이어, 관중)에 대한 정보를 저장하고, 각 사용자의 사용자 프로필을 관리한다. 사용자 정보는 인증을 위해 계정 매니저(274)에 의해 사용될 수 있다. 또한, 사용자가 소유한 게임 타이틀은 계정 매니저(274)에 의해 관리될 수 있다. 예를 들어, 게임 타이틀 스토어(264)에 저장된 비디오 게임은 그 비디오 게임을 소유하거나 그에 대한 액세스를 제공받은 사용자가 이용할 수 있게된다.
일 실시예에서, 사용자는 네트워크(200)를 통한 연결을 통해 클라이언트 장치(100)를 이용하여 GCS(300) 및 소셜 미디어 제공자(240)에 의해 제공되는 서비스에 액세스할 수 있다. 클라이언트 장치(100)는 프로세서 및 메모리를 가진 임의의 유형의 장치를 포함할 수 있고, 이는 유선 또는 무선, 휴대형 또는 비-휴대형일 수 있다. 일 실시예에서, 클라이언트 장치(100)는 휴대용 폼 팩터에서 터치 스크린 기능을 제공하는 스마트 폰, 태블릿 컴퓨터 또는 하이브리드 형태 일 수 있다. 하나의 예시적인 클라이언트 장치는 운영 체제를 실행하고 네트워크(200)를 통해 획득될 수 있고 로컬 휴대용 장치(예를 들어, 스마트 폰, 태블릿, 랩톱, 데스크톱) 상에서 실행될 수 있는 다양한 애플리케이션(앱)에 대한 액세스를 제공하는 휴대용 전화 장치를 포함할 수 있다.
클라이언트 장치(100)는 사용자가 입력 명령(236)을 전송하고 GCS(300) 및 소셜 미디어 제공자(240)로부터 수신된 데이터 및/또는 정보(135)를 디스플레이하기 위한 인터페이스로서 작용하는 디스플레이(132)를 포함한다. 디스플레이(132)는 터치 스크린으로서 구성될 수 있고, 또는 평판 디스플레이, 음극선 관(CRT) 또는 디스플레이를 렌더링할 수 있는 다른 장치에 의해 통상적으로 제공되는 디스플레이로 구성될 수 있다. 대안으로서, 클라이언트 장치(100)는 데스크탑 컴퓨터 또는 랩톱 컴퓨터와 유사하게, 디스플레이(132)를 장치와 분리할 수 있다.
일 실시예에서, 클라이언트 장치(100)는 사용자(플레이어)가 비디오 게임을 플레이할 수 있도록 GCS(300)와 통신하도록 구성된다. 예를 들어, 플레이어는 게임 선택 엔진(275)을 통해 게임 타이틀 데이터 저장소(264)에서 이용 가능한 비디오 게임을(예를 들어, 게임 타이틀 등으로) 선택할 수 있다. 일 실시예에서, 선택된 비디오 게임이 인에이블되며, 비디오 게임의 인스턴스가 CGS(300) 상에서 게임 서버(205)에 의한 실행을 위해 로딩된다. 일 실시예에서, 게임 플레이는 주로 GCS(300)에서 실행되어, 클라이언트 장치(100)는 GCS(300)로부터 게임 비디오 프레임(135)의 스트림을 수신하고, 게임 플레이를 구동하기 위한 사용자 입력 명령(236)이 GCS(300)로 다시 전송된다. 스트리밍 게임 플레이로부터 수신된 비디오 프레임(135)은 클라이언트 장치(100)의 디스플레이(132) 상에 렌더링된다.
일 실시예에서, 플레이어가 이용 가능한 게임 타이틀을 선택한 후, 선택된 게임 타이틀에 대한 게임 세션은 게임 세션 매니저(285)를 통해 플레이어에 의해 개시될 수 있다. 게임 세션 매니저(285)는 먼저 데이터 저장소에서 게임 상태 저장소(260)에 액세스하여, 해당될 경우, (선택된 게임에 대해) 플레이어가 마지막으로 플레이한 세션의 저장된 게임 상태를 불러들여서, 플레이어가 이전 게임 플레이 정지 점으로부터 게임 플레이를 재시작할 수 있도록한다. 재개점 또는 시작점이 식별되면, 게임 세션 매니저(285)는 게임 코드 저장소(261)로부터 선택된 게임 타이틀의 게임 코드를 실행하도록 게임 서버(205)의 게임 실행 엔진에 알릴 수 있다. 게임 세션이 시작된 후, 게임 세션 매니저(285)는 네트워크 인터페이스(290)를 통해 게임 비디오 프레임(135)(즉, 스트리밍 비디오 데이터)을 클라이언트 장치, 예를 들어 클라이언트 장치(100)로 전달할 수 있다.
게임 플레이 동안, 게임 세션 매니저(285)는 게임 서버(205), 비디오 레코더(271)의 레코딩 엔진 및 태그 프로세서(273)와 통신하여 게임 플레이 또는 게임 플레이 세션의 레코딩(예를 들어, 비디오)을 생성 또는 저장한다. 일 실시예에서, 게임 플레이의 비디오 레코딩은 게임 플레이 중에 입력되거나 제공된 태그 콘텐츠 및 다른 게임 관련 메타 데이터를 포함할 수 있다. 태그 내용은 스냅 샷을 통해 저장될 수도 있다. 게임 플레이의 비디오 레코딩은 그 게임 플레이에 대응하는 임의의 게임 메트릭과 함께, 레코딩된 게임 스토어(262)에 저장될 수 있다. 임의의 태그 콘텐츠가 태그 데이터 스토어(263)에 저장될 수 있다.
게임 플레이 동안, 게임 세션 매니저(285)는 게임 서버(205)와 통신하여 비디오 게임의 대응하는 게임 플레이의 결과에 영향을 주는 데 사용되는 사용자 입력 명령(236)을 전달 및 획득할 수 있다. 플레이어에 의해 입력된 입력 명령(236)은 클라이언트 장치(100)로부터 GCS(300)의 게임 세션 매니저(285)로 전송될 수 있다. 게임 재생을 구동하기 위해 사용되는 입력 명령, 및 태그 내용(예: 텍스트, 이미지, 비디오 녹화 클립 등)과 같은 사용자 대화형 입력을 포함하는 입력 명령(예를 들어, 제어기 입력 또는 사용자 입력)(236), 게임 입력 명령 및 사용자 플레이 메트릭(사용자가 게임을 하는 기간, 등)은 게임 네트워크 사용자 저장소에 저장될 수 있다. 비디오 게임을 위한 게임 플레이와 관련된 선택 정보는 사용자가 이용할 수 있는 다수의 특징을 가능하게 하는 데 사용될 수 있다.
따라서, 본 발명은 다양한 실시예에서, 하나 이상의 게임 플레이를 지원하는 온라인 게임 애플리케이션의 인스턴스를 실행하는 서버의 네트워크로부터 수집된 훈련 데이터를 사용하여 AI 모델을 구축하기 위해 기계 학습(심층 학습이라고도 함) 알고리즘을 구현하는, 그리고, 훈련된 AI 모델을 이용하여 온라인 게임 애플리케이션 및/또는 온라인 게임 애플리케이션의 게임 플레이에 관한 다양한 기능들을 제공하는, 시스템 및 방법을 설명 하였다.
앞서 언급한 바와 같이, AI 모델은 상호 연결된 노드의 네트워크를 사용하여 구축된다. 각 노드는 AI 모델에 입력으로 제공되는 게임 데이터에서 일부 정보를 학습한다. 상호 연결을 통해 네트워크 내 여러 노드간에 지식이 교환된다. AI 모델에 입력된 게임 데이터는 네트워크의 초기 노드 세트를 활성화한다. 이 초기 노드 세트는 다른 노드를 활성화하여 게임 입력에 대한 지식을 일 노드에서 다음 노드로 전파한다. 이 활성화 프로세스는 다른 노드에서 반복되어 지식을 기반으로 출력을 제공한다. 출력은 주어진 게임 데이터 세트에 대한 예상 또는 예측된 결과를 나타내며, 주어진 훈련 데이터 세트는 온라인 게임의 특정 사용자 입력 및 게임 상태 세트를 포함한다. AI 모델로부터의 출력은 이후 온라인 게임의 후속 실행 동안 성공 기준을 충족시키기 위해 처리 노드(즉, 게임 데이터의 특정 특징을 처리하기 위한 서버 리소스)의 할당을 개선하는데 사용될 수 있다. AI 모델을 훈련시키는 데 사용되는 게임 데이터가 온라인 게임의 게임 플레이와 관련이 있기 때문에 AI 모델은 온라인 게임의 상이한 성공 기준과 관련된 게임 플레이의 상이한 출력을 얻는 데 사용될 수 있는 모든 가능한 리소스 구성을 학습하도록 훈련된다. 따라서, AI 모델에 온라인 게임의 후속 게임 플레이와 관련된 일련의 게임 데이터 세트(예를 들어, 사용자의 입력, 게임 상태 등)가 주어지면, AI 모델은 해당 게임 플레이에 대한 성공 기준과 가장 잘 정렬되는 출력을 제공할 수 있다. AI 모델은 심화 학습(즉, 기계 학습), 강화 학습, 지도 학습, 비-지도 학습, 반-지도 학습, 증분 학습, 보상 기반 학습 등을 포함한 다양한 기계 학습(즉, AI) 알고리즘을 통해 생성될 수 있다. 위에 나열된 AI 알고리즘의 유형은 설명을 위해 제공된 것이며 철저하거나 제한적인 것은 아니다. 분류기 엔진은 AI 모델의 노드에 대한 특징을 식별하는 데 사용되며, 규칙은 노드와 연관된 특정 특징 세트를 특정 출력에 연결한다. 예를 들어, 지도 학습 환경에서, 주어진 특징 세트에 대해 출력이 미리 결정되고, 심화 학습 엔진은 특징 세트를 출력에 연동하는 규칙을 학습하며, 여기서 각 규칙은 출력과 연관되고, 성공 기준은 규칙을 규정하기 위해 적용된다. 비-지도 학습 환경에서. 주어진 특징 세트는 자동으로 출력에 연결되지 않지만 규칙은 유사성, 또는 다른 유사한 특징 세트와 관련된 데이터 포인트들의 클러스터를 찾음으로써 학습될 수 있다. 심화 학습은 지도 학습을 사용하여 초기 AI 모델을 구축하고, 비지도 학습을 사용하여 AI 모델을 개선할 수 있다. 훈련된 AI 모델은 온라인 게임에 대한 현재 리소스 할당을 결정하고, 주어진 성공 기준에 대해 예측된 리소스 할당을 결정하며, 온라인 게임의 게임 플레이 동안 원하는 결과를 얻기 위해 온라인 게임에 할당된 리소스를 탄력적으로 조정하는데 사용된다.
도 9는 일 구현예에 따른, 온라인 게임의 게임 플레이를 위한 리소스를 프로비저닝하기 위한 방법의 샘플 흐름 동작을 도시한다. 방법은 온라인 게임을 위한 훈련 데이터가 수신되는 동작(910)에서 시작한다. 온라인 게임은 복수의 플레이어가 온라인 게임에 액세스하여 게임 플레이 세션에 참여하는 멀티 플레이어 게임이다. 플레이어는 온라인 게임에 액세스하여 어디서나 게임을 즐길 수 있다. 결과적으로, 온라인 게임의 게임 엔진 및 게임 로직을 포함하는 복수의 온라인 게임 인스턴스가 복수의 서버상에서 실행되고 온라인 게임의 실행으로부터 생성된 온라인 게임으로부터의 게임 데이터가 플레이어의 각자의 클라이언트 장치에 전달된다. 플레이어들 이외에도, 복수의 관중은 온라인 게임에 액세스하여 특정 플레이어의 게임 플레이 또는 온라인 게임의 게임 플레이를 따를 수 있다. 게임 플레이 중 사용자의 입력은 게임 클라우드 시스템의 게임 서버에 의해 복수의 플레이어로부터 수집되어, 온라인 게임의 게임 상태에 영향을 미치고 게임 데이터를 생성하도록 처리된다. 훈련 데이터에는 온라인 게임에 대해 정의된 성공 기준뿐만 아니라 온라인 게임의 사용자 입력 및 게임 상태가 포함된다.
동작(920)에 도시된 바와 같이, 훈련 데이터를 사용하여 리소스 할당 모델이 생성된다. 리소스 할당 모델은 기계 학습 알고리즘에 관여하는 인공 지능(AI) 모델러를 사용하여 생성된다. 모델러는 온라인 게임을 위해 생성된 게임 데이터의 특정 특징을 처리하는 데 사용되는 분산 게임 엔진의 기능 부분을 식별하고 기능 부분과 관련된 정보를 상호 연결된 AI 모델의 복수의 노드 중 특정 노드에 업로드한다. 노드에 업로드된 정보는 온라인 게임의 게임 상태 및 사용자 입력에 기초하여 게임 데이터의 특정 특징을 처리하는데 사용되는 게임 엔진의 기능 부분, 특정 특징을 처리하는데 사용된 리소스의 유형 및 양, 온라인 게임의 게임 상태에 대해 정의된 성공 기준이 충족되었는지의 여부를 포함할 수 있다.
리소스 할당 모델에 의해 제공된 정보를 사용하여, 동작(930)에 도시된 바와 같이, 온라인 게임을 위한 기능 부분을 실행하기 위해 리소스가 할당된다. 기능 부분은 게임 데이터의 특징 중 특정 특징과 관련된 게임 엔진 작업 중 하나를 선택한다. 할당된 리소스는 각각의 게임 엔진 작업을 처리하기에 충분한 리소스를 제공하고, 기능 부분을 실행하기 위해 할당된 리소스의 유형 및 양은 리소스 할당 모델에 의해 지시된다.
리소스 할당은 식별된 처리 노드 중 선택 처리 노드의 할당을 관리하는 과정을 포함하여, 특정 게임 엔진 작업을 처리할 수 있고, 처리를 위해 특정 처리 엔진 작업을 선택 처리 노드에 분배할 수 있으며, 처리된 결과를 선택 처리 노드와 복수의 처리 노드 중 나머지 처리 노드 사이에서 그리고 선택 처리 노드와 구성 에이전트 사이에서 라우팅할 수 있고, 복수의 처리 노드 사이에 분산 게임 엔진 작업의 처리를 동기화할 수 있다. 처리 노드의 할당은 온라인 게임 사용자가 만족스러운 게임 플레이 경험을 갖도록 온라인 게임에 대해 정의된 성공 기준을 충족시키기 위해 게임 데이터를 성공적으로 처리하기 위한 최적의 리소스를 제공하기 위해 수행된다.
도 10은 본 개시의 다양한 실시예의 양태를 수행하는데 사용될 수 있는 예시적인 장치(600)의 구성요소를 도시한다. 예를 들어,도 10은 본 개시의 일 실시예에 따라 온라인 게임 및/또는 온라인 게임의 게임 플레이와 관련하여 다양한 기능을 수행할 수 있는 AI 모델을 훈련시키기에 적합한 예시적인 하드웨어 시스템을 도시한다. 이 블록도는 퍼스널 컴퓨터, 서버 컴퓨터, 게임 콘솔, 모바일 장치 또는 다른 디지털 장치를 포함할 수 있거나 그 자체일 수 있는 장치(600)를 도시하며, 이들 각각은 본 발명의 일 실시예를 실시하기에 적합하다. 대안으로서, 장치의 기능은 물리적 서버 또는 가상 머신 또는 컨테이너 서버에서 구현될 수 있다. 장치(600)는 소프트웨어 애플리케이션 및 선택적으로 운영 체제를 실행하기 위한 중앙 처리 장치(CPU)(602)를 포함한다. CPU(602)는 하나 이상의 동종 또는 이종 처리 코어로 구성될 수 있다.
다양한 실시예에 따르면, CPU(602)는 하나 이상의 처리 코어를 갖는 하나 이상의 범용 마이크로 프로세서이다. 추가 실시예는 심화 학습, 콘텐츠 분류 및 사용자 분류를 위해 구성된 애플리케이션의 미디어 및 대화형 엔터테인먼트 애플리케이션과 같이, 고도로 병렬 및 계산 집약적인 애플리케이션에 특히 적합한 마이크로 프로세서 아키텍처를 갖는 하나 이상의 CPU를 사용하여 구현될 수 있다. 예를 들어, CPU(602)는 온라인 게임 및/또는 온라인 게임의 게임 플레이와 관련하여 다양한 기능(예를 들어, 예측)을 제공하는 것과 관련하여 학습 동작을 지원 및/또는 수행하도록 구성된 AI 엔진을 포함하도록 구성될 수 있다. 심화 학습 엔진은 온라인 게임 및/또는 온라인 게임의 게임 플레이와 관련된 다양한 기능을 제공하도록 구성된 AI 모델을 구축 및/또는 훈련하도록 구성된 모델러(120)를 포함할 수 있다. 또한, CPU(602)는 AI 모델을 생성 및 훈련하도록 구성된 분석기(140)를 포함한다. 훈련된 AI 모델은 특정 사용자 입력 세트에 응답하여 출력을 제공하며, 여기서 출력은 훈련된 AI 모델의 사전 정의된 기능에 의존한다. 훈련된 AI 모델은 온라인 게임에 대해 정의된 성공 기준을 충족시키기 위해 게임 플레이 동안 구현될 리소스 할당을 결정하는데 사용될 수 있다. 분석기(140)는 주어진 입력(예를 들어, 제어기 입력, 게임 상태 데이터, 성공 기준)에 대한 훈련된 AI 모델(160)로부터의 출력을 분석하는 것을 포함하여, 온라인 게임 및/또는 온라인 게임의 게임 플레이와 관련하여 다양한 기능을 수행하도록 구성되며, 응답을 제공한다.
메모리(604)는 CPU(602)에 의해 사용하기 위한 애플리케이션 및 데이터를 저장한다. 스토리지(606)는 비 휘발성 스토리지 및 애플리케이션 및 데이터를 위한 다른 컴퓨터 판독 가능 매체를 제공하며, 고정 디스크 드라이브, 이동식 디스크 드라이브, 플래시 메모리 장치 및 CD-ROM, DVD-ROM, 블루-레이, HD-DVD 또는 기타 광 저장 장치와 신호 전송 및 저장 매체를 포함할 수 있다. 사용자 입력 장치(608)는 하나 이상의 사용자로부터 장치(600)로 사용자 입력을 전달하는데, 그 예는 키보드, 마우스, 조이스틱, 터치 패드, 터치 스크린, 스틸 또는 비디오 레코더/카메라, 게임 제어기 및/또는 마이크를 포함할 수 있다. 네트워크 인터페이스(614)는 장치(600)가 전자 통신 네트워크를 통해 다른 컴퓨터 시스템과 통신할 수 있게 하며, 근거리 네트워크 및 인터넷과 같은 광역 네트워크를 통한 유선 또는 무선 통신을 포함할 수 있다. 오디오 프로세서(612)는 CPU(602), 메모리(604) 및/또는 스토리지(606)에 의해 제공된 명령어 및/또는 데이터로부터 아날로그 또는 디지털 오디오 출력을 생성하도록 구성된다. CPU(602), 메모리(604), 데이터 스토리지(606), 사용자 입력 장치(608), 네트워크 인터페이스(610) 및 오디오 프로세서(612)를 포함하는 장치(600)의 구성요소들이 하나 이상의 데이터 버스(622)를 통해 연결된다.
그래픽 서브시스템(613)은 데이터 버스(622) 및 장치(600)의 구성요소와 더 연결된다. 그래픽 서브시스템(613)은 GPU(graphics processing unit)(616) 및 그래픽 메모리(618)를 포함한다. 그래픽 메모리(618)는 출력 이미지의 각 화소에 대한 화소 데이터를 저장하는데 사용되는 디스플레이 메모리(예를 들어, 프레임 버퍼)를 포함한다. 그래픽 메모리(618)는 GPU(616)와 동일한 장치에 통합될 수 있고, GPU(616)와 별도의 장치로서 연결될 수 있으며, 및/또는, 메모리(604) 내에 구현될 수 있다. 화소 데이터는 CPU(602)로부터 직접 그래픽 메모리(618)에 제공될 수 있다. 대안으로서, CPU(602)는 원하는 출력 이미지를 형성하는 데이터 및/또는 명령어를 GPU(616)에 제공하며, 이로부터 GPU(616)는 하나 이상의 출력 이미지의 화소 데이터를 생성한다. 원하는 출력 이미지를 형성하는 데이터 및/또는 명령어는 메모리(604) 및/또는 그래픽 메모리(618)에 저장될 수 있다. 일 실시예에서, GPU(616)는 기하구조, 조명(lighting), 음영처리, 텍스처링, 모션, 및/또는 장면의 카메라 파라미터를 형성하는 명령어 및 데이터로부터 출력 이미지를 위한 화소 데이터를 생성하기 위한 3D 렌더링 기능을 포함한다. GPU(616)는 셰이더 프로그램을 실행할 수 있는 하나 이상의 프로그램 가능한 실행 유닛을 더 포함할 수 있다. 일 실시예에서, GPU(616)는 AI 또는 심화 학습 기능과 같은 추가적인 처리 능력을 제공하기 위해 AI 엔진 내에 구현될 수 있다.
그래픽 서브시스템(613)은 그래픽 메모리(618)로부터 이미지에 대한 화소 데이터를 주기적으로 출력하여 디스플레이 장치(610) 상에 디스플레이하거나 프로젝션 시스템(640)에 의해 투영한다. 디스플레이 장치(610)는 CRT, LCD, 플라즈마 및 OLED 디스플레이를 포함하는 장치(600)로부터의 신호에 응답하여 시각적 정보를 디스플레이할 수 있는 임의의 장치일 수 있다. 장치(600)는 예를 들어 디스플레이 장치(610)에 아날로그 또는 디지털 신호를 제공할 수 있다.
본 명세서에 정의된 다양한 실시예는 본 명세서에 개시된 다양한 특징을 사용하여 특정 구현으로 결합되거나 조립될 수 있음을 이해해야 한다. 따라서, 제공된 예는 다양한 요소를 조합하여 더 많은 구현을 정의함으로써 가능한 다양한 구현에 제한없이 가능한 일부 예일 뿐이다. 일부 예들에서, 일부 구현들은 개시된 또는 동등한 구현들의 사상을 벗어나지 않고 더 적은 요소들을 포함할 수 있다.
본 발명의 실시예는 핸드 헬드 장치, 마이크로 프로세서 시스템, 마이크로 프로세서 기반 또는 프로그램 가능한 소비자 전자 제품, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성으로 실시될 수 있다. 본 개시의 실시예는 또한 유선 기반 또는 무선 네트워크를 통해 연결된 원격 처리 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다.
상기 실시예를 염두에두고, 본 개시의 실시예는 컴퓨터 시스템에 저장된 데이터를 포함하는 다양한 컴퓨터 구현 동작을 이용할 수 있음을 이해해야 한다. 이러한 작업은 물리적 수량을 물리적으로 조작해야 하는 작업이다. 본 개시의 실시예들의 일부를 형성하는 본 명세서에 설명된 임의의 동작은 유용한 기계 동작이다. 본 개시의 실시예는 또한 이들 동작을 수행하기 위한 장치 또는 장치에 관한 것이다. 장치는 필요한 목적을 위해 특별히 구성될 수 있거나, 장치는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 구성되는 범용 컴퓨터 일 수 있다. 특히, 다양한 범용 기계가 본 명세서의 교시에 따라 작성된 컴퓨터 프로그램과 함께 사용될 수 있거나, 요구된 동작을 수행하기 위해보다 전문화된 장치를 구성하는 것이 더 편리할 수 있다.
본 개시는 또한 컴퓨터 판독 가능 매체상의 컴퓨터 판독 가능 코드로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 데이터를 저장할 수 있는 임의의 데이터 저장 장치이며, 그 후 컴퓨터 시스템에 의해 판독될 수 있다. 컴퓨터 판독 가능 매체의 예는 하드 드라이브, NAS(Network Attached Storage), 읽기 전용 메모리, 랜덤 액세스 메모리, CD-ROM, CD-R, CD-RW, 자기 테이프 및 기타 광학 및 비 광학 데이터 저장 장치를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 코드가 저장되고 분산 방식으로 실행되도록 네트워크 결합 컴퓨터 시스템을 통해 분배된 컴퓨터 판독 가능 유형 매체를 포함할 수 있다.
방법 동작이 특정 순서로 설명되었지만, 다른 하우스 키핑 동작이 동작 사이에서 수행될 수 있거나, 동작이 약간 다른 시간에 발생하거나 시스템에 분산될 수 있도록 조정될 수 있음을 이해해야 한다 이는 오버레이 동작의 처리가 원하는 방식으로 수행되는 한, 처리와 관련된 다양한 간격으로 처리 동작의 발생을 허용한다.
전술한 개시가 이해의 명확성을 위해 일부 상세하게 설명되었지만, 특정 변경 및 수정이 첨부된 청구 범위의 범주 내에서 실시될 수 있음이 명백할 것이다. 따라서, 본 실시예는 예시적이고 비 제한적인 것으로 간주되어야 하고, 본 개시의 실시예는 본 명세서에 제공된 세부 사항으로 제한되지 않고 첨부된 청구 범위의 범위 및 등가물 내에서 수정될 수 있다.

Claims (20)

  1. 분산 게임 엔진-여기서 상기 분산 게임 엔진은 온라인 게임을 위한 리소스를 프로비저닝하도록 구성됨-이 구현된 게임 클라우드 시스템 내의 컴퓨팅 장치에 있어서, 상기 분산 게임 엔진은:
    상기 분산 게임 엔진의 기능 부분들을 복수의 처리 노드들에 분배하도록 구성된 복수의 관리 노드;
    게임 플레이 훈련 데이터로부터 구성된 리소스 할당 모델-상기 게임 플레이 훈련 데이터는 성공 온라인 게임의 게임 상태, 및 온라인 게임의 게임 플레이로부터 사용자로부터 수신된 입력을 포함-; 및
    리소스 할당 모델에 의해 지시된 리소스 할당에 기초하여, 리소스 할당 모델에 액세스하고, 구성 에이전트와 통신하여 온라인 게임을 위한 기능 부분 중 특정 부분을 처리하는데 필요한 복수의 처리 노드 각각의 리소스를 식별하기 위한 리소스 할당 에이전트를 포함하며,
    상기 분산 게임 엔진은, 상기 복수의 처리 노드들 각각 및 상기 복수의 관리 노드들 각각과 인터페이스하여 사용자의 클라이언트 장치들에서 렌더링하기 위한 비디오 프레임들을 생성하는 온라인 게임을 위한 기능 부분들을 실행하기 위한 리소스들을 제공하는 프로세스 동기화 계층을 포함하는, 컴퓨팅 장치.
  2. 제 1 항에 있어서, 상기 리소스 할당 모델은 상기 분산 게임 엔진의 기능 부분 중 특정 부분을 처리하는데 필요한 처리 노드의 유형 및 각 유형의 처리 노드의 수를 식별하는, 컴퓨팅 장치.
  3. 제 2 항에 있어서, 상기 입력은 상기 사용자의 게임 플레이로부터 연속적으로 수집되고, 상기 리소스 할당 모델은 상기 수집된 입력 및 성공 기준에 기초하여 실시간으로 업데이트되며, 상기 업데이트는 상기 유형을 온라인 게임의 게임 상태에 기초하여, 분산 게임 엔진의 기능 부분 중 특정 부분을 처리하는데 필요한 처리 노드의 유형 및 각 유형의 처리 노드의 수를 조정하는 과정을 포함하는, 컴퓨팅 장치.
  4. 제 1 항에 있어서, 각각의 기능 부분은 상기 분산 게임 엔진의 특정 게임 엔진 작업을 식별하고, 상기 프로세스 동기화 계층은 가상 버스를 포함하며, 상기 가상 버스는,
    온라인 게임을 위한 게임 엔진 작업 중 특정 게임 엔진 작업을 처리하기 위해 복수의 처리 노드 중 선택 처리 노드의 할당을 관리하고;
    게임 엔진 작업 중 특정 작업을 처리를 위해 선택 처리 노드에 분배하며;
    선택 처리 노드와 복수의 처리 노드 중 나머지 하나 사이에서, 그리고, 선택 처리 노드와 구성 에이전트 사이에서, 처리된 결과를 라우팅하고; 그리고
    복수의 처리 노드들 사이에 분배된 게임 엔진 작업들의 프로세싱을 동기화하며, 상기 동기화는 게임 엔진 작업들 각각의 프로세스 타이밍들에 따라 게임 엔진 작업들의 큐를 관리하는 과정을 포함하는, 컴퓨팅 장치.
  5. 제 1 항에 있어서, 상기 처리 노드 중 적어도 하나는 상기 복수의 처리 노드로부터 게임 데이터를 조립하고, 상기 게임 데이터를 처리하며, 상기 게임 데이터를 압축하고, 상기 게임 데이터를 인코딩하여 사용자의 클라이언트 장치로 전송하기 위한 비디오 프레임을 생성하도록 구성되며,
    상기 압축 및 인코딩은 비디오 프레임들을 전송받는 사용자의 클라이언트 장치들 각각과 호환되도록 비디오 프레임을 포매팅하도록 수행되고, 상기 비디오 프레임의 포매팅은 클라이언트 장치 각각에 전송하는데 사용되는 가용 대역폭 및 전송 프로토콜을 결정하기 위해 수행되는 테스트에 기초하여 이루어지는, 컴퓨팅 장치.
  6. 제 1 항에 있어서, 상기 복수의 관리 노드 각각과 상기 복수의 처리 노드 각각은 실행을 위해 별개의 개별 서버에 할당되는, 컴퓨팅 장치.
  7. 제 6 항에 있어서, 서버는 단일 데이터 센터 내에 또는 지리적으로 분산된 복수의 데이터 센터에 분산되어있는, 컴퓨팅 장치.
  8. 제 6 항에 있어서, 서버는 독립형 물리적 서버, 또는 하나 이상의 데이터 센터의 일부인 물리적 서버, 또는 가상 서버, 또는 컨테이너 서버 또는 이들의 임의의 조합인, 컴퓨팅 장치.
  9. 제 1 항에 있어서, 사용자로부터 수신된 입력은 게임 개발자로부터 수신된 입력 및 게임 플레이 동안 획득된 플레이어로부터 수신된 입력을 포함하는, 컴퓨팅 장치.
  10. 제 1 항에 있어서, 상기 리소스 할당 모델은 기계 학습 알고리즘을 사용하여 구성되는, 컴퓨팅 장치.
  11. 제 1 항에 있어서, 상기 리소스 할당 모델은 온라인 게임에 액세스하는 사용자의 유형에 기초하여 리소스 할당을 식별하도록 구성되는, 컴퓨팅 장치.
  12. 제 11 항에 있어서, 상기 사용자 유형은 플레이어, 관중, 또는 플레이어와 관중의 조합을 포함하는, 컴퓨팅 장치.
  13. 제 1 항에 있어서, 상기 분산 게임 엔진의 기능 부분은 온라인 게임의 실행 동안 수행될 특정 게임 엔진 작업에 대응하는 게임 로직을 포함하는, 컴퓨팅 장치.
  14. 온라인 게임을 위한 리소스를 프로비저닝하는 방법으로서,
    온라인 게임에 대한 훈련 데이터를 수신하는 단계 - 상기 훈련 데이터는 온라인 게임에 대한 성공 기준, 게임 상태, 및 온라인 게임의 게임 플레이 동안 수신된 사용자 입력을 식별함;
    상기 훈련 데이터를 사용하여 온라인 게임에 대한 리소스 할당 모델을 생성하는 단계 - 상기 리소스 할당 모델은 분산 게임 엔진의 기능 부분을 처리하도록 구성된 복수의 처리 노드를 식별 하고, 상기 복수의 처리 노드 중 선택 처리 노드는 분산 게임 엔진의 특정 기능 부분을 처리하기 위한 처리 리소스를 제공하도록 구성됨; 및,
    리소스 할당 모델에 의해 지시된 리소스 할당에 따라, 온라인 게임을 위한 기능 부분을 처리하도록 복수의 처리 노드를 할당하는 단계 - 상기 특정 기능 부분은 게임 엔진 작업 중 선택 게임 엔진 작업을 실행하고, 상기 할당은 할당된 리소스의 탄성적 조정을 포함함 - 를 포함하며,
    상기 방법의 동작은 클라우드 게임 시스템의 서버의 프로세서에 의해 수행되는, 방법.
  15. 제 14 항에 있어서, 상기 할당은,
    특정 기능 부분과 관련된 게임 엔진 작업 중 선택 게임 엔진 작업을 처리하기 위해 선택 처리 노드의 할당을 관리하는 단계;
    게임 엔진 작업들 중 선택 게임 엔진 작업을 처리를 위해 선택 처리 노드들에 분배하는 단계;
    처리 노드에 할당된 리소스를 탄력적으로 조정하는데 사용되는 구성 에이전트와 선택 처리 노드 사이에서 그리고 선택 처리 노드와 복수의 처리 노드 중 나머지 처리 노드 사이에서 처리 결과를 라우팅하는 단계; 및
    복수의 처리 노드들간에 분배된 게임 엔진 작업들의 처리를 동기화하는 단계를 포함하는, 방법.
  16. 제 15 항에 있어서, 상기 할당은 상기 분산 게임 엔진의 특정 기능 부분을 처리하기 위해 선택 처리 노드에 프로비저닝되어야 하는 리소스의 유형 및 해당 유형의 리소스의 양을 식별하는 단계를 포함하는 방법.
  17. 제 15 항에 있어서, 훈련 데이터를 수신하는 단계는,
    온라인 게임의 게임 플레이 동안 복수의 사용자로부터 사용자 입력을 연속적으로 수집하는 단계 - 사용자 입력은 훈련 데이터를 업데이트함; 및
    업데이트된 훈련 데이터 및 성공 기준에 기초하여 리소스 할당 모델을 실시간으로 업데이트하는 단계 - 업데이트는 온라인 게임을 위한, 분산 게임 엔진의 특정 기능 부분을 처리하기 위해 선택 처리 노드에 프로비저닝되어야 하는 리소스의 유형 및 해당 유형의 리소스의 양을 동적으로 조정하는 과정을 포함함 - 를 포함하는, 방법.
  18. 제 14 항에 있어서, 상기 복수의 처리 노드 각각은 별개의 서버에 할당되고, 상기 별개의 서버는 할당된 대응하는 기능 부분을 처리하는데 필요한 리소스를 제공하는, 방법.
  19. 제 14 항에 있어서, 사용자 입력은 온라인 게임 개발자로부터의 입력, 또는 온라인 게임 플레이어로부터의 입력, 또는 온라인 게임의 게임 플레이를 관찰하는 관중으로부터의 입력을 개별적으로 또는 조합하여 포함하는 방법.
  20. 제 14 항에 있어서, 상기 리소스 할당 모델은 온라인 게임에 액세스하는 사용자의 유형에 기초하여 리소스 할당을 식별하고, 상기 사용자의 유형은 플레이어, 또는 관중, 또는 플레이어와 관중의 조합을 포함하는 방법.
KR1020190158872A 2018-12-03 2019-12-03 기계 학습 주도 리소스 할당 KR102322941B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/208,461 US11077362B2 (en) 2018-12-03 2018-12-03 Machine learning driven resource allocation
US16/208,461 2018-12-03

Publications (2)

Publication Number Publication Date
KR20200067109A KR20200067109A (ko) 2020-06-11
KR102322941B1 true KR102322941B1 (ko) 2021-11-08

Family

ID=69646028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190158872A KR102322941B1 (ko) 2018-12-03 2019-12-03 기계 학습 주도 리소스 할당

Country Status (7)

Country Link
US (2) US11077362B2 (ko)
EP (1) EP3891607A1 (ko)
JP (2) JP7259033B2 (ko)
KR (1) KR102322941B1 (ko)
CN (1) CN111249724A (ko)
TW (1) TWI716201B (ko)
WO (1) WO2020117442A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020232467A1 (en) * 2019-05-10 2020-11-19 Slovak Christopher Artificial intelligence based video game state detection
CN111951366B (zh) * 2020-07-29 2021-06-15 北京蔚领时代科技有限公司 一种云原生3d场景游戏方法和系统
US20220129295A1 (en) * 2020-10-25 2022-04-28 Meta Platforms, Inc. Server-side hosted environment for a cloud gaming system
US11018938B1 (en) 2020-11-06 2021-05-25 Salesforce.Com, Inc. Auditing metadata representation of a cloud-computing platform based datacenter
US11609794B2 (en) 2020-11-10 2023-03-21 Oracle International Corporation Techniques for modifying cluster computing environments
US11420125B2 (en) * 2020-11-30 2022-08-23 Sony Interactive Entertainment Inc. Clustering audience based on expressions captured from different spectators of the audience
KR102484455B1 (ko) * 2020-12-04 2023-01-02 손동우 클라우드 게이밍 시스템 및 이를 제어하는 방법
US20220214917A1 (en) * 2021-01-07 2022-07-07 Quanta Computer Inc. Method and system for optimizing rack server resources
CN113368504B (zh) * 2021-06-09 2023-10-17 咪咕互动娱乐有限公司 云游戏服务系统、交互方法、存储介质
CN113730902A (zh) * 2021-08-13 2021-12-03 许磊 一种用于游戏的免下载运行方法
US11826644B2 (en) 2021-10-05 2023-11-28 Sony Interactive Entertainment Inc. Bifurcation of gameplay between mobile and non-mobile play with intelligent game state saving, and startups
US11848842B2 (en) * 2021-12-08 2023-12-19 Sony Interactive Entertainment Inc. Network storage game allocation based on artificial intelligence
CN114880107A (zh) * 2021-12-09 2022-08-09 许磊 一种高效低成本的云游戏系统
KR20230087319A (ko) * 2021-12-09 2023-06-16 국민대학교산학협력단 인공지능 기반 클라우드 학습장치 및 방법
US11745109B2 (en) * 2022-02-08 2023-09-05 Sony Group Corporation Methods for controlling use of computing resources, such as virtual game consoles
CN114760639A (zh) * 2022-03-30 2022-07-15 深圳市联洲国际技术有限公司 资源单元分配方法、装置、设备及存储介质
CN114826917B (zh) * 2022-04-25 2023-12-08 中国农业银行股份有限公司 一种基于博弈的网络资源分配方法及装置
CN115473905A (zh) * 2022-09-29 2022-12-13 中国农业银行股份有限公司 资源配置方法、装置、电子设备、存储介质及程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140228108A1 (en) 2013-02-12 2014-08-14 Microsoft Corporation Dynamic allocation of computing resources in remote gaming environment
US20180024868A1 (en) 2016-07-25 2018-01-25 Accenture Global Solutions Limited Computer resource allocation to workloads in an information technology environment
WO2018187032A1 (en) 2017-04-03 2018-10-11 Sony Interactive Entertainment America Llc Systems and methods for using a distributed game engine

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8840475B2 (en) * 2002-12-10 2014-09-23 Ol2, Inc. Method for user session transitioning among streaming interactive video servers
US9138644B2 (en) 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US20100113159A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
US20120102185A1 (en) * 2010-10-20 2012-04-26 Sony Computer Entertainment America Inc. Resource management of server hosts in online game environment
CN102262534B (zh) 2011-07-12 2013-10-02 红石娱动网络科技(北京)有限公司 基于互联网b/s结构的计算机网络游戏开发系统及方法
US20130254417A1 (en) 2012-03-21 2013-09-26 Jason Nicholls System method device for streaming video
US9628332B2 (en) * 2013-05-20 2017-04-18 Microsoft Technology Licensing, Llc Resource allocation to game titles in a remote gaming environment
KR20160092014A (ko) * 2013-12-01 2016-08-03 인터디지탈 패튼 홀딩스, 인크 정책 기반 결정 엔진을 사용하는 경험 품질 최적화
CN105830031B (zh) * 2013-12-18 2020-12-11 瑞典爱立信有限公司 用于选择媒体处理单元的方法和网络节点
US10296391B2 (en) * 2014-06-30 2019-05-21 Microsoft Technology Licensing, Llc Assigning a player to a machine
US9354937B2 (en) 2014-07-18 2016-05-31 Thomson Reuters Global Resources System and method for electronic work prediction and dynamically adjusting server resources
US9675889B2 (en) 2014-09-10 2017-06-13 Zynga Inc. Systems and methods for determining game level attributes based on player skill level prior to game play in the level
CN104363277A (zh) * 2014-11-13 2015-02-18 上海交通大学 云游戏分布式系统中带宽资源分配管理系统及其管理方法
CN104598292B (zh) * 2014-12-15 2017-10-03 中山大学 一种应用于云游戏系统的自适应流适配和资源优化方法
JP6526826B2 (ja) * 2015-03-06 2019-06-05 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー クラウド上のアプリケーションのための予測的なインスタントプレイ技術
US10200261B2 (en) * 2015-04-30 2019-02-05 Microsoft Technology Licensing, Llc Multiple-computing-node system job node selection
KR101892739B1 (ko) 2016-09-30 2018-08-28 한국전자통신연구원 게임 운영 시나리오 생성 장치 및 그 방법
US11003499B1 (en) * 2017-06-14 2021-05-11 Amazon Technologies, Inc. Resource allocation based on agent behavior in a simulation environment
US10579494B2 (en) * 2018-01-05 2020-03-03 Nec Corporation Methods and systems for machine-learning-based resource prediction for resource allocation and anomaly detection
US10841236B1 (en) * 2018-03-30 2020-11-17 Electronic Arts Inc. Distributed computer task management of interrelated network computing tasks
US10918941B2 (en) * 2019-03-27 2021-02-16 Electronic Arts Inc. Predictive execution of distributed game engines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140228108A1 (en) 2013-02-12 2014-08-14 Microsoft Corporation Dynamic allocation of computing resources in remote gaming environment
US20180024868A1 (en) 2016-07-25 2018-01-25 Accenture Global Solutions Limited Computer resource allocation to workloads in an information technology environment
WO2018187032A1 (en) 2017-04-03 2018-10-11 Sony Interactive Entertainment America Llc Systems and methods for using a distributed game engine

Also Published As

Publication number Publication date
US20210362049A1 (en) 2021-11-25
JP7259033B2 (ja) 2023-04-17
CN111249724A (zh) 2020-06-09
US11077362B2 (en) 2021-08-03
WO2020117442A1 (en) 2020-06-11
TW202023665A (zh) 2020-07-01
KR20200067109A (ko) 2020-06-11
JP2023089076A (ja) 2023-06-27
EP3891607A1 (en) 2021-10-13
JP2022509882A (ja) 2022-01-24
US20200171382A1 (en) 2020-06-04
TWI716201B (zh) 2021-01-11

Similar Documents

Publication Publication Date Title
KR102322941B1 (ko) 기계 학습 주도 리소스 할당
Hong et al. Placing virtual machines to optimize cloud gaming experience
EP3897892B1 (en) Massive multi-player compute
CN113811372A (zh) 用于视频游戏指导和匹配的ai建模
US11185781B2 (en) Cognitive user experience optimization
CN113710335A (zh) 事务存储器同步
US20220280867A1 (en) Server load prediction and advanced performance measures
WO2024026205A1 (en) Impaired player accessability with overlay logic providing haptic responses for in-game effects

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant