KR20230136128A - 클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들 - Google Patents

클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들 Download PDF

Info

Publication number
KR20230136128A
KR20230136128A KR1020237025746A KR20237025746A KR20230136128A KR 20230136128 A KR20230136128 A KR 20230136128A KR 1020237025746 A KR1020237025746 A KR 1020237025746A KR 20237025746 A KR20237025746 A KR 20237025746A KR 20230136128 A KR20230136128 A KR 20230136128A
Authority
KR
South Korea
Prior art keywords
rate
input
game
consumption rate
information
Prior art date
Application number
KR1020237025746A
Other languages
English (en)
Inventor
크리스토프 누만
샤를스 살몬-레가그노이어
프랑크 오몬트
샬린 타이비
Original Assignee
인터디지털 씨이 페이튼트 홀딩스, 에스에이에스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터디지털 씨이 페이튼트 홀딩스, 에스에이에스 filed Critical 인터디지털 씨이 페이튼트 홀딩스, 에스에이에스
Publication of KR20230136128A publication Critical patent/KR20230136128A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/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/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법들, 장치들, 시스템들 등이 본 명세서에 개시되어 있다. 일 실시예에서, 게임 서버 상에서 실행되는 게임의 소비 레이트가 (예컨대, 클라이언트 디바이스에 의해) 획득될 수 있다. 예를 들어, 소비 레이트는 (예컨대, 클라이언트 디바이스의) 적어도 하나의 입력 디바이스와 연관될 수 있다. 예를 들어, 소비 레이트는 게임 서버가 (예컨대, 연관된) 입력 디바이스의 사용자 입력들을 프로세싱할 수 있는 레이트를 표현할 수 있다. 예를 들어, (예컨대, 사용자 입력들이 게임 서버로 송신될 수 있는) 입력 레이트는 입력 레이트를 소비 속도에 동기화함으로써 적응될 수 있다.

Description

클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들
본 개시내용은 게임 스트리밍으로 또한 지칭될 수 있는 클라우드 게이밍 분야에 관한 것이다.
클라우드 게이밍에서, 최종 사용자 디바이스가 게임 실행가능 프로그램을 실행하지 않을 수 있고, 이는 서버(예컨대, 인스턴스) 상에서 실행될 수 있다. 사용자 입력들은 최종 사용자 디바이스에 의해 캡처되고 네트워크를 통해 서버(예컨대, 인스턴스)로 전송될 수 있다. 게임의 결과적인 사용자 경험은 예컨대, 네트워크 레이턴시, 서버 부하 및 게임 복잡도와 같은 상이한 인자들에 따라 달라질 수 있다. 본 개시내용은 전술한 내용을 염두에 두고 설계되었다.
클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법들, 장치들, 시스템들 등이 본 명세서에 개시되어 있다. 예를 들어, 클라우드 서버 상에서 실행되는 게임의 비디오 프레임들은 클라이언트 디바이스에 의해 수신될 수 있다. 일 실시예에서, 게임 서버 상에서 실행되는 게임과 연관된 소비 레이트(consumption rate) 정보는 클라이언트 디바이스에 의해 획득될 수 있다(예컨대, 수신될 수 있음). 예를 들어, 소비 레이트 정보는 (예컨대, 클라이언트 디바이스의) 적어도 하나의 입력 디바이스(예컨대, 그로부터의 수신된 입력 정보)와 연관될 수 있다. 예를 들어, 소비 레이트 정보는, 게임 서버가 (예컨대, 연관된) 입력 디바이스(예컨대, 그로부터의 수신된 입력 정보)의 사용자 입력들에 반응할 수 있는(예컨대, 이들을 프로세싱할 수 있는) 속도(예컨대, 레이트)를 표현할 수 있다. 예를 들어, (예컨대, 사용자 입력들이 게임 서버로 송신될 수 있는) 입력 레이트는 수신된 소비 레이트 정보에 기초하여(예컨대, 입력 레이트를 소비 레이트에 동기화함으로써) 적응될 수 있다.
장치, 시스템, 디바이스 등 및/또는 이들의 임의의 요소가 동작, 프로세스, 알고리즘, 기능 등 및/또는 이들의 임의의 부분을 수행하도록 구성되는 다양한 실시예들이 본 명세서에 기술되고/되거나 청구되지만, 본 명세서에 기술되고/되거나 청구된 임의의 실시예들은, 임의의 장치, 시스템, 디바이스 등 및/또는 이들의 임의의 요소가 임의의 동작, 프로세스, 알고리즘, 기능 등 및/또는 이들의 임의의 부분을 수행한다고 가정한다는 것(그리고 그 반대도 성립된다는 것)이 이해되어야 한다.
첨부 도면들과 관련하여 예로서 주어지는 다음의 설명으로부터 더 상세한 이해가 이루어질 수 있다. 그러한 도면들에서의 도면들은 상세한 설명과 같은 예들이다. 그와 같이, 도면들 및 상세한 설명은 제한하는 것으로 간주되지 않아야 하고, 다른 동일하게 효과적인 예들이 가능하고 가능성이 있다. 또한, 도면들에서의 유사한 참조 부호들은 유사한 요소들을 나타낸다.
- 도 1은 게임 스트리밍의 하이 레벨 아키텍처의 일례를 예시하는 시스템도(system diagram)이다.
- 도 2는 각각 독립형 및 클라우드 게이밍 시스템의 2개의 시스템 아키텍처 예들을 예시하는 시스템도이다.
- 도 3은 조이스틱 입력 상태의 일례를 예시하는 도면이다.
- 도 4는 클라우드 서버 인스턴스에서 입력 관리의 일례를 예시하는 시스템도이다.
- 도 5는 2개의 상이한 시간들에서의 게임의 성능들의 2개의 예들을 예시하는 도면이다.
- 도 6은 사용자 액션 큐잉의 일례를 예시하는 도면이다.
- 도 7은 입력 관리 시스템에 설치될 수 있는 소프트웨어 프로브들의 일례를 예시하는 도면이다.
- 도 8은 클라이언트 디바이스 입력 레이트 적응의 일례를 예시하는 도면이다.
- 도 9a는 적어도 하나의 입력 디바이스의 입력 레이트를 적응시키기 위한 클라이언트 디바이스의 일례를 예시하는 도면이다.
- 도 9b는 도 9a 및 도 도 9c의 클라이언트 디바이스의 아키텍처의 일례를 표현한다.
- 도 9c는 클라이언트 디바이스와 상호작용하여 게임을 실행하도록 구성된 클라우드 서버의 일례를 예시하는 도면이다.
- 도 10은 클라이언트 디바이스의 적어도 하나의 입력 디바이스의 입력 레이트를 적응시키기 위한 방법의 일례를 예시하는 도면이다.
- 도 11은 클라이언트 디바이스에서 구현되는 방법의 일례를 예시하는 도면이다.
- 도 12는 클라우드 서버의 인스턴스에서 구현되는 방법의 일례를 예시하는 도면이다.
도면(들)은 본 개시내용의 개념들을 예시하기 위한 목적들을 위한 것이며, 반드시 본 개시내용을 예시하기 위한 유일한 가능한 구성이 아님을 이해해야 한다.
도면에 도시된 요소들은 다양한 형태들의 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다는 것을 이해해야 한다. 바람직하게는, 이들 요소들은 프로세서, 메모리 및 입력/출력 인터페이스들을 포함할 수 있는, 하나 이상의 적절하게 프로그래밍된 범용 디바이스들 상에서 하드웨어와 소프트웨어의 조합으로 구현된다. 본 명세서에서, 용어 "상호접속된"은 하나 이상의 중간 컴포넌트들에 직접 접속되거나 이를 통해 간접적으로 접속되는 것을 의미하도록 정의된다. 그러한 중간 컴포넌트들은 하드웨어 및 소프트웨어 기반 컴포넌트들 둘 모두를 포함할 수 있다. 용어 "상호접속된"은 유선 상호접속에 제한되지 않으며, 무선 상호접속을 또한 포함한다.
본 명세서에 언급된 모든 예들 및 조건적 언어는 독자가 본 발명의 원리들 및 본 발명자가 기술 발전에 기여한 개념들을 이해하는 것을 돕기 위한 교육적 목적들을 위해 의도된 것이며, 그러한 구체적으로 언급된 예들 및 조건들에 제한이 없는 것으로 해석되어야 한다.
게다가, 당업자는, 본 명세서에 제시된 블록도들이 본 개시내용의 원리들을 구현하는 예시적인 회로부의 개념도들을 표현한다는 것을 이해할 것이다. 유사하게, 임의의 흐름 차트들, 흐름도들, 상태 전이 도면들, 의사코드 등은, 컴퓨터 판독가능 매체에 실질적으로 표현될 수 있으며, 이에 따라, 컴퓨터 또는 프로세서가 명시적으로 도시되어 있는지 여부에 관계없이, 그러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스들을 표현하는 것임이 이해될 것이다.
도면에 도시된 다양한 요소들의 기능들은 적절한 소프트웨어와 연관하여 소프트웨어를 실행할 수 있는 하드웨어뿐만 아니라 전용 하드웨어를 사용하여 제공될 수 있다. 프로세서에 의해 제공될 때, 기능들은 단일 전용 프로세서에 의해, 단일 공유 프로세서에 의해, 또는 복수의 개별의 프로세서들에 의해 제공될 수 있으며, 이들 중 일부는 공유될 수 있다. 게다가, 용어 "프로세서" 또는 "제어기"의 명시적 사용은 소프트웨어를 실행할 수 있는 하드웨어만을 배타적으로 지칭하는 것으로 해석되어서는 안되며, 제한 없이, 디지털 신호 프로세서(digital signal processor, DSP) 하드웨어, 소프트웨어를 저장하기 위한 판독 전용 메모리(read only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 및 비휘발성 저장소를 암시적으로 포함할 수 있다.
종래의 그리고/또는 맞춤형의, 다른 하드웨어가 또한 포함될 수 있다. 유사하게, 도면에 도시된 임의의 스위치들은 단지 개념적인 것이다. 그들의 기능은 프로그램 로직의 동작을 통해, 전용 로직을 통해, 프로그램 제어와 전용 로직의 상호작용을 통해, 또는 심지어 수동으로 수행될 수 있으며, 특정 기법은 문맥으로부터 더 구체적으로 이해되는 바와 같이 구현자에 의해 선택가능하다.
본 발명의 청구범위에서, 특정 기능을 수행하기 위한 수단으로서 표현되는 임의의 요소는, 예를 들어, a) 그러한 기능을 수행하는 회로 요소들의 조합 또는 b) 임의의 형태의 소프트웨어(이에 따라, 기능을 수행하기 위해 그러한 소프트웨어를 실행하기 위한 적절한 회로부와 조합된 펌웨어, 마이크로코드 등을 포함함)를 포함하는 그러한 기능을 수행하는 임의의 방식을 포함하도록 의도된다. 그러한 청구범위에 의해 정의된 바와 같은 본 개시내용은, 다양한 언급된 수단에 의해 제공되는 기능성들이 청구범위가 요구하는 방식으로 서로 조합되고 합쳐진다는 사실에 있다. 따라서, 그들 기능성들을 제공할 수 있는 임의의 수단은 본 명세서에 도시된 것들과 동등하다고 간주된다.
예를 들어, "A/B", "A 및/또는 B" 및 "A 및 B 중 적어도 하나"의 경우들에서 다음의 "/", "및/또는", 및 "적어도 하나" 중 임의의 것의 사용은 제1 열거된 옵션(A) 단독의 선택, 또는 제2 열거된 옵션(B) 단독의 선택, 또는 옵션들(A 및 B) 둘 모두의 선택을 포함하도록 의도됨을 이해해야 한다. 또 다른 예로서, "A, B 및/또는 C" 및 "A, B 및 C 중 적어도 하나"의 경우들에서, 그러한 어구는 제1 열거된 옵션(A) 단독의 선택, 또는 제2 열거된 옵션(B) 단독의 선택, 또는 제3 열거된 옵션(C) 단독의 선택, 또는 제1 및 제2 열거된 옵션들(A 및 B) 단독의 선택, 또는 제1 및 제3 열거된 옵션들(A 및 C) 단독의 선택, 또는 제2 및 제3 열거된 옵션들(B 및 C) 단독의 선택, 또는 3개의 모든 옵션들(A, B 및 C)의 선택을 포함하도록 의도된다. 이는, 본 명세서에 기술된 바와 같은 많은 항목들에 대해, 본 명세서 및 관련 분야의 당업자에게 명백한 바와 같이 확장될 수 있다.
또한, 본 출원은 다양한 피스들의 정보에 "액세스하는 것"을 언급할 수 있다. 정보에 액세스하는 것은, 예를 들어 정보를 수신하는 것, (예를 들어, 메모리로부터) 정보를 검색하는 것, 정보를 저장하는 것, 정보를 이동하는 것, 정보를 복사하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것 중 하나 이상을 포함할 수 있다.
또한, 본 출원은 다양한 피스들의 정보를 "수신하는 것"을 언급할 수 있다. 수신하는 것은 "액세스하는 것"과 마찬가지로 광의의 용어인 것으로 의도된다. 정보를 수신하는 것은, 예를 들어, 정보에 액세스하는 것, 또는 (예를 들어, 메모리로부터) 정보를 검색하는 것 중 하나 이상을 포함할 수 있다. 또한, "수신하는 것"은 전형적으로, 예를 들어 정보를 저장하는 동작, 정보를 프로세싱하는 동작, 정보를 송신하는 동작, 정보를 이동하는 동작, 정보를 복사하는 동작, 정보를 소거하는 동작, 정보를 계산하는 동작, 정보를 결정하는 동작, 정보를 예측하는 동작, 또는 정보를 추정하는 동작 동안 어떤 방식으로든 수반된다.
본 명세서에 기술된 실시예들은 게임 스트리밍으로 또한 지칭될 수 있는 클라우드 게이밍과 관련이 있다. 클라우드 게이밍은, 본 명세서에서 게임 서버 및 클라우드 서버 중 임의의 것으로 지칭될 수 있는 일정 (예컨대, 원격) 서버 상에서 게임을 실행하고, 그 결과를 비디오 스트림으로서, 본 명세서에서 클라우드 게이밍 클라이언트, 신(thin) 클라이언트 디바이스, 클라이언트 게임 디바이스, 집합적으로 클라이언트 디바이스 중 임의의 것으로 지칭될 수 있는 최종 사용자 디바이스로 전송하는 개념으로 볼 수 있다. 게임 서버 및 클라이언트 디바이스는 임의의 유형의 네트워크를 통해 상호접속될 수 있다. 예를 들어, 서버는 클라우드에 위치될 수 있고, 게임은 서버의 임의의 (예컨대, 유형의) 인스턴스 상에서 실행될 수 있다. 용어들 게임 서버, 클라우드 서버 및 클라우드 서버의 인스턴스는 클라이언트 디바이스와 상호작용하여 게임을 실행하는 데 사용될 수 있는 (예컨대, 컨테이너화된) 프로세싱 환경(예컨대, 회로부)을 지정하기 위해 본 명세서에 기술된 실시예들 전체에 걸쳐 상호교환가능하게 사용될 수 있다.
도 1은 게임 스트리밍의 하이 레벨 아키텍처의 일례를 예시하는 시스템도이다. 클라이언트 디바이스(11)가 게임 실행파일(game executable)을 실행하지 않을 수 있고, 이는 게임 서버(12) 상에서 실행될 수 있다. 클라이언트 디바이스(11)는, 예컨대, 마우스 이벤트들, 키패드 커맨드들 및 눌려졌을 수 있는 키보드 키들 중 임의의 것과 같은, 사용자 입력들을 수신(예컨대, 캡처)할 수 있다(예컨대, 수신할 수 있는 신 클라이언트 애플리케이션을 실행할 수 있음). 본 명세서에 기술된 실시예들 전체에 걸쳐, 용어들 "사용자 입력들" 및"수신된 입력 정보"는, 클라이언트 디바이스(11)의 입력 디바이스로부터 수신될 수 있고, 게임 서버(12) 상에서 실행되는 게임과 연관될(예컨대, 그에 지향될) 수 있는 임의의 종류의 입력 정보를 지정하기 위해 상호교환가능하게 사용될 수 있다. 클라이언트 디바이스(11)는 이러한 사용자 입력들을 게임 서버(12)로 송신할 수 있다(예컨대, 스트리밍할 수 있음). 클라이언트 디바이스(11)는 게임 서버(12)로부터 수신될 수 있는 비디오 스트림의 비디오 프레임들을 디코딩하고 디스플레이할 수 있다. 클라이언트 디바이스(11)는, (예컨대, 단지) 이러한 적은 수의 동작들을 수행하는 것에 의해, 경량일 수 있다(제한된 프로세싱 리소스들을 포함할 수 있음). 용어 "비디오 스트림"은 예컨대, 전송 계층 오버헤드 및 (예컨대, 대응하는) 메타데이터 중 임의의 것을 포함하여, 게임 서버에 의해 클라이언트 디바이스로 송신될 수 있는 게임의 비디오 (예컨대, 인코딩된) 프레임들의 세트를 지정하는 데 사용된다.
예를 들어, 일정 (예컨대, 각각의) 클라이언트 디바이스에 대해, 일정 (예컨대, 전용) 서버 인스턴스가 게임 실행파일을 실행할 수 있다. 서버 인스턴스는, 예를 들어, (예컨대, 클라우드 제공자 및 운영자 중 임의의 것에 의해 동작될 수 있는) 데이터 센터(data centre)에서 실행될 수 있다. 서버 인스턴스는 (예컨대, 성능에 맞는, 특정) 하드웨어와 연관될 수 있고(예컨대, 하드웨어가 장착될 수 있음), 예를 들어, 그래픽 프로세싱 유닛(graphics processing unit, GPU)에 액세스할 수 있다. 예를 들어, 게임 서버 상에서 실행되는 게임 실행파일(122)은 사용자 입력 프로세싱 모듈(121)에 의해 이전에 수신되었을 수 있는 사용자 입력들을 일정 (예컨대, 내부, 게이밍) 폴링 레이트로 폴링할 수 있다. 예를 들어, 게임 상태는 수신된 사용자 입력들에 기초하여 업데이트될 수 있고, 장면은 그에 따라 렌더링될 수 있다. 서버는 예컨대, GPU에 의해 렌더링된 장면을 규칙적으로 획득(예컨대, 캡처)할 수 있고, 이는, 클라이언트 디바이스로 전송될 수 있는 일정 (예컨대, 라이브) 비디오 스트림으로 인코딩될 수 있는 (예컨대, 비압축된) 이미지들의 흐름을 초래할 수 있다.
실시예들에 따르면, 게임에 의한 입력 커맨드들의 소비는 예측하기 복잡할 수 있고, 예를 들어, 내부 게임 엔진, 게임 자체, 및 플레이어가 일정 (예컨대, 주어진) 시간에 위치될 수 있는 장면 중 임의의 것에 의존할 수 있다. 예를 들어, 장면 복잡도(예컨대, 및 밀도)는 다를 수 있으며, 서버 상의 프로세싱은 이러한 시간에 이용가능할 수 있는 리소스들(예컨대, 디스크 I/O 액세스들, CPU, GPU, 메모리, … 중 임의의 것)에 의존할 수 있다. 이용가능한 리소스들은 예컨대, 다른 서비스들(예컨대, 다른 게임 인스턴스들, 비디오 스트리밍, … 중 임의의 것)에 대한 리소스 할당에 따라 가변적일 수 있다.
게임 환경에서, 게임의 경험 품질(quality of experience, QoE)은 임의의 수의 파라미터들에 의해 영향을 받을 수 있다. 경험 품질은 저하될 수 있고, 인간의 뇌에 불편해질 수 있다. QoE에 영향을 미치는 파라미터들 중 하나는 사용자의 커맨드들에 반응하는 시스템의 응답성(이는 본 명세서에서 인지된 레이턴시로 또한 지칭될 수 있음)일 수 있다. 이러한 파라미터는, 예를 들어, 클라우드 게이밍 시스템에서보다 로컬 독립형 시스템에서의 게임의 경우에 더 결정론적일 수 있는 입력 관리 프로세스에 의존할 수 있다.
게임 서버 및 클라이언트 디바이스가 동일한 장소에 로컬화되지 않을 수 있는 클라우드 게이밍 시스템에서는, 제어 커맨드들이 "적절한 순간에 도달"하여 게임의 현재 상태에 따라 프로세싱되기 위해 게임에 의해 수집(ingest)될 수 있게 하는 것을 가능하게 하는 것이 달성하기 복잡할 수 있다. 예를 들어, (예컨대, 신) 게임 클라이언트 디바이스 상에서의, 사용자로부터의 입력 커맨드들의 수집은, 서버 상에서 게임 실행파일에 의해 수행될 수 있는 입력들의 폴링으로부터 분리될 수 있다. 예를 들어, 클라이언트 디바이스에서의 입력 커맨드 프로세싱은 게임 서버에서의 입력 커맨드 프로세싱과 비동기화될 수 있고 그 프로세싱과 동일한 폴링 레이트로 수행되지 않을 수 있다. 이는 지터를 유발할 수 있다. 지터는 또한, 네트워크에 의해 유발될 수 있는데, 이는 독립형 디바이스(예컨대, 콘솔, 모바일 디바이스, 및 게이밍 PC 중 임의의 것) 상에서 게임이 플레이되는 경우에는 발생하지 않을 수 있다.
도 2는 각각 독립형 및 클라우드 게이밍 시스템의 2개의 시스템 아키텍처 예들을 예시하는 시스템도이다. 더 정확하게는, 도 2는 각각 독립형 및 클라우드 게이밍 시스템의 입력 관리에 수반될 수 있는 엔티티들(예컨대, 소프트웨어 모듈들)을 도시한다.
저레벨 입력 이벤트 관리의 예
도 2에 예시된 바와 같이, 저레벨 입력 이벤트 관리는 독립형 시스템(21) 및 클라우드 게이밍 시스템(22) 중 임의의 것의 입력 드라이버(211, 221) 및 입력 애플리케이션 프로그래밍 인터페이스(application programming interface, API)(212, 222) 중 임의의 것의 입력을 수반할 수 있다.
예를 들어, 입력 드라이버(211, 221)는 임의의 수의 (예컨대, 물리적) 입력 디바이스(들)(201, 202, 203)(예컨대, 조이스틱, 마우스, 키보드 중 임의의 것)에 인터페이싱할 수 있다(예컨대, 그에 대한 인터페이스를 제공함). 입력 드라이버(211, 221)는, 예를 들어, 물리적 링크(예컨대, 125 ㎐ 내지 500 ㎐) 및 입력 디바이스(들)(201, 202, 203)의 하드웨어 능력들 중 임의의 것에 의존할 수 있는 일정 (예컨대, 가변) 물리적 디바이스 레이트로 입력 디바이스 상태를 (예컨대, 지속적으로) 폴링할 수 있고, 이는 예컨대, 상이한 입력 지연(input lag)을 생성할 수 있다. 예를 들어, 게이밍(예컨대, steelseries) 마우스는 1 내지 2밀리초 사이의 입력 지연을 가질 수 있다. 다른 예에서, 일정 (예컨대, 일반적인 Microsoft 유선) 키보드(예컨대, 600)는 33ms의 입력 지연을 가질 수 있다. 또 다른 예에서, 조이스틱(예컨대, steelseries stratus duo)은 1밀리초 미만의 입력 지연을 가질 수 있다.
예를 들어, 입력 API(212, 222)는 드라이버에 의해 수신되었을 수 있는 (예컨대, 마지막) 입력 상태를 획득(예컨대, 수집, 검색)하고 이를 애플리케이션에 이용가능하게 하는 것을 허용할 수 있다. Xinput은 x360 조이스틱을 위한 입력 시스템 API의 일례일 수 있다. 예를 들어, 입력 API(212, 222)는, 예컨대, 심플 다이렉트 미디어 계층(simple direct media layer, SDL)과 같은 일정 (예컨대, 제3자) 상위 레벨 추상화 API, 예컨대, win32/64, Linux 및 Android 중 임의의 것 상에서 이용가능한 다중 플랫폼 API에 패키징될 수 있다.
도 3은 예를 들어, 상태(예컨대, 임의의 조이스틱 버튼의 눌림 및 해제 중 임의의 것)를 포함하는 구조를 포함할 수 있는 조이스틱 입력 상태의 일례를 예시하는 도면이다. 조이스틱 입력 상태는 4개의 축 LX, LY, RX, RY 값들 및 (예컨대, L/R) 트리거 디지털 값들(예컨대, 0 내지 255)을 포함할 수 있다.
게임 엔진, 입력 및 렌더링 스레드들의 예
예를 들어, 게임 엔진은, 예컨대, 입력 스레드를 통해 입력 디바이스들로부터 입력들을 획득하도록(예컨대, 수집하도록) 구성될 수 있다. 입력들은 폴링 모델 및 이벤트 모델 중 임의의 것에서 획득될 수 있다. 폴링 모델에서, 입력 스레드는, 예컨대, 일정 (예컨대, 고정) 게임 폴링 레이트로 일정 (예컨대, 유저랜드(userland) 시스템) 입력 API(222)를 호출함으로써 입력 디바이스들의 상태를 획득할 수 있다. 이벤트 모델에서, 입력 스레드는 운영 체제(예컨대, 입력 API(222))에 의해 게시될 수 있는 입력 이벤트들을 대기할 수 있다.
예를 들어, 게임 엔진은 렌더링 스레드 내에서 일정 (예컨대, 무한) 루프를 수행하도록 구성될 수 있다. 일정 (예컨대, 각각의) 루프 반복에서, 게임 상태는, 예컨대, 입력 스레드에 의해 획득되었을 수 있는 마지막 입력들에 기초하여 업데이트될 수 있다. 장면은, 예컨대, GPU를 통해, 예를 들어, 프레임 버퍼에서(예컨대, 그에) 렌더링될 수 있다(예컨대, 그리고/또는 복사될 수 있음). 제1 예에서, 렌더링된 장면은 독립형 시스템의 스크린 상에 디스플레이될 수 있다. 제2 예에서, 렌더링된 장면은 클라우드 시스템에서 일정 (예컨대, 신) 클라이언트 디바이스에 의해 디스플레이되기 위해 네트워크를 통해 송신될 수 있다. 초당 수행될 수 있는 반복들의 수는, 본 명세서에서 초당 프레임 수(frame per second, FPS)로 지칭될 수 있는 일정 (예컨대, 변화하는) 프레임 레이트를 생성할 수 있다. FPS는, GPU 파워, 게임 장면의 (예컨대, 현재) 복잡도, 독립형 시스템에 대한 디스플레이 주파수와의 동기화(이는 본 명세서에서 VSYNC로 지칭될 수 있음) 및 게임 설정들(예컨대, 타깃팅된 FPS) 중 임의의 것에 따라, 예컨대, 초당 5개 프레임들 내지 200개 프레임들 사이로 구성될 수 있다.
일정 (예컨대, 특정) 게임 엔진 아키텍처 예에서, 입력 폴링은 렌더링 스레드에 (예컨대, 직접) 포함될 수 있다. 게임 엔진에 대해 일정 (예컨대, 단일) 렌더링 스레드를 사용하는 것이 설계 선택사항일 수 있으며, 이는, 렌더링 루프의 일정 (예컨대, 각각의) 반복에서, 예를 들어, 프레임을 컴퓨팅하기 전에, 입력 상태들을 (예컨대, 한 번) 폴링할 수 있다. 이러한 설계 선택사항은, 렌더링 레이트보다 더 큰 레이트로의 비동기 폴링이, 사용자가 이러한 더 높은 레이트로 그의 커맨드들에 대한 더 많은 시각적 피드백을 스크린 상에 갖지 않을 수 있기 때문에, 추가적인 이점을 제공하지 않을 수 있다는 사실에 의해 동기부여될 수 있다. 임의의 게임 엔진 설계 선택사항(예컨대, 렌더링 프레임당 한 번 입력 상태를 폴링하는 것으로 제한되지 않음)은 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
클라우드 레벨 입력 이벤트 관리의 예
(예컨대, 게임 편집기에 의해 제공되는) 게임 실행파일은, 서버 인스턴스에서, 예를 들어, (예컨대, 그것이 독립형 디바이스에서 실행될 수 있기 때문에) 수정되지 않은 방식으로, 실행될 수 있다. 예컨대, 게임 엔진 관점에서 보여지는, 저레벨 입력 이벤트 관리는, 독립형 시스템에 대한 것과 동일한 입력 API(예컨대, XINPUT API)에 기초할 수 있다.
예를 들어, 저레벨 입력 이벤트 관리는, 네트워크로부터 (예컨대, 원격) 이벤트들을 수신하기 위해 그리고 이들을 (예컨대, 실행되는) 게임에 주입하기 위해 인스턴스에 일정 (예컨대, 신규) 입력 프로세싱 모듈 및 인젝터 모듈(들)을 포함할 수 있다. 일정 (예컨대, 가상) 입력 디바이스는 푸시 모델 및 풀 모델 중 임의의 것에 따라 일정 (예컨대, 주어진) 서버 인스턴스에 대해 에뮬레이션될 수 있다.
푸시 모델 예에서, 입력 API 인젝터 모듈은, 예를 들어, Win32 이벤트 API를 사용하여, 기본 운영 체제 메시지 루프에 이벤트들을 게시할 수 있다. 예를 들어, 서버 인스턴스는 이벤트들을 일정 (예컨대, 서버 수집) 레이트로 운영 체제에, 이러한 이벤트들이 예컨대, 입력 API의 호출을 통해 게임 실행파일에 의해 프로세싱될(예컨대, 효과적으로 소비될) 수 있을 때를 알지 않고서(예컨대, 그리고 이를 제어하지 않고서), 푸시(예컨대, 전송)할 수 있다.
풀 모델 예에서, 입력 API 인젝터 모듈은 게임 실행파일에 의해 호출될 수 있는 입력 API(예컨대, 그의 일부)를 가로챌 수 있고, 시스템 호출의 결과들을 반환할 수 있다(예컨대, 반환된 결과들을 위조할 수 있음). 풀 모델은, 예를 들어, 게임 실행파일의 입력 폴링 레이트에 연계될 수 있다. (예컨대, Microsoft Detours 인터셉션 라이브러리와 같은) 우회(detouring) 메커니즘들은 입력 드라이버에 대한 호출들을 바이패스하는 것을 허용할 수 있어서, 입력 API가 더 이상 어떠한 (예컨대, 물리적) 입력 디바이스에도 액세스할 수 없도록 할 수 있다.
도 4는 클라우드 서버 인스턴스에서 입력 관리의 일례를 예시하는 시스템도이다. 사용자 입력 프로세싱(411) 엔티티(예컨대, 모듈)는 네트워크로부터의 입력 커맨드들(예컨대, 정보)(예컨대, 이들의 도달)을 청취할 수 있고, 이들을 예컨대, 내부(예컨대, 선입선출(first in first out, FIFO)) 큐에 푸시할 수 있다. 게임 입력 스레드(413)는, 독립형 시스템에서 진행될 수 있으므로 예컨대, 입력 API(414)를 사용하여 입력 커맨드들을 폴링(예컨대, 폴링하는 것을 계속)할 수 있다. 일정 (예컨대, 각각의) 폴링에서, 입력 API는 (예컨대, 레거시 이벤트 전송 함수들 및 API 인터셉션 중 임의의 것을 통해) 입력 API 인젝터 모듈(412)과 상호작용할 수 있다. 입력 API 인젝터 모듈(412)은 (예컨대, FIFO) 큐로부터 입력 커맨드를 팝핑(예컨대, 획득, 수신, 추출)할 수 있고, 푸시 및 풀 모델 중 임의의 것에 기초하여 이를 시스템에 재주입할 수 있다.
일정 (예컨대, 신) 클라이언트 디바이스의 예
실시예들에 따르면, (예컨대, 신) 클라이언트 디바이스는 독립형 클라이언트 디바이스(예컨대, 도 2의 좌측 부분)의 입력 관리 모듈과 유사할 수 있는 입력 관리 모듈을 포함할 수 있다. (예컨대, 신) 클라이언트 디바이스(예컨대, 실행파일)는 일정 (예컨대, 고정된) 폴링 레이트로 임의의 수의 입력 디바이스들(예컨대, 조이스틱)로부터의 입력들을 폴링할 수 있다. 하나 초과의 입력 디바이스들이 존재하는 경우에, 입력 디바이스들은 동일한 폴링 레이트 및 상이한 폴링 레이트들 중 임의의 것으로 폴링될 수 있다. 실시예들에 따르면, 입력 디바이스(들)로부터 획득(예컨대, 캡처)되었을 수 있는 입력 상태들은 네트워크를 통해(예컨대, 전송 제어 프로토콜(TCP) 및 사용자 데이터그램 프로토콜(UDP) 소켓 중 임의의 것을 통해) 클라우드 서버 인스턴스의 사용자 입력 프로세싱 모듈로 전송될 수 있다. 상이한 클라우드 게이밍 제공자들은 상이한 폴링 레이트들을 사용할 수 있다. 예를 들어, GeForceNow가 초당 60개 이벤트들의 평균 레이트로 입력들을 폴링하고, Stadia가 초당 200개 이벤트들의 평균 레이트로 입력들을 폴링하고, Blacknut Stadia가 초당 100개 이벤트들의 평균 레이트로 입력들을 폴링하는 것이 측정될 수 있다.
네트워크 전송 프로토콜 예들
클라우드 시스템에서, 게임에 의해 로컬로 프로세싱(예컨대, 소비)되지 않는 (예컨대, 사용자) 입력들은 (예컨대, TCP, UDP, … 중 임의의 것과 같은) 임의의 유형의 전송 프로토콜을 사용함으로써 게임을 실행하는 클라우드 서버 인스턴스로 (예컨대, 신) 클라이언트 디바이스에 의해 전송될 수 있다.
예를 들어, TCP는, 예컨대, 송신 동안 사용자 입력의 어떠한 손실도 회피함으로써, 신뢰할 수 있는 송신을 가능하게 하기 위해 사용될 수 있다. 성능 저하된 네트워크(degraded network)에서, TCP는 재송신으로 인해 추가적인 레이턴시 문제들을 도입할 수 있다. 예를 들어, TCP는 비결정론적 성능들을 가질 수 있으며, 이는 인지된 레이턴시에 영향을 미칠 수 있다.
다른 예에서는, UDP가 더 결정론적인 레이턴시를 제공하는 데 사용될 수 있다. 예를 들어, 일부 패킷들/커맨드들은 손실될 수 있으며, 이는 또한 게임 경험에 영향을 미칠 수 있다. 패킷들의 응용적 재송신들 및 순방향 에러 정정(forward error correction, FEC) 중 임의의 것은 신뢰성을 개선하는 것을 허용할 수 있지만, 레이턴시를 또한 도입할 수 있고, 처리량(예컨대, 초당 패킷들의 수)을 증가시킬 수 있다.
도 5는 2개의 상이한 시간들에서의 게임의 성능들의 2개의 예들을 예시하는 도면이다. 도 5에 성능들이 예시되어 있는 게임은 클라우드 게이밍 플랫폼 상에서 실행되는 ACO(Assassin'Creed Odyssey)이다. 용어들 "게임 프레임 레이트", "FPSgame", "FPS", 집합적으로 "FPS"는 게임 서버 상에서 게임 엔진에 의해 (예컨대, GPU 상에서) 초당 렌더링될 수 있는 게임의 프레임들의 수를 지칭하기 위해 본 명세서에 기술된 실시예들에서 상호교환가능하게 사용될 수 있다. 게이밍 세션에서 FPS는 시간의 경과에 따라 일정하지 않을 수 있다. 상단(51)에 도시된 바와 같이, 장면이 GPU를 요구하지 않은 경우에, GPU는 초당 60개 이미지들(그래프 상의 Im/s 상단 라인)의 안정된 FPS(510)를 유지하는 데 성공할 수 있다. 하단(52)에 도시된 바와 같이, 장면이 (예컨대, 더 복잡한 장면들에서) 더 많은 GPU를 요구하는 경우에, 사용자 포지션, 눈의 방향 및 세계 장면 라이브 이벤트들 중 임의의 것에 따라, FPS(520)는 불안정할 수 있고, 예컨대, 초당 27개 이미지들 이하로 강하할 수 있다(521).
ACO에서, 게임 엔진 설계에 따라, 게임 서버에서의 조이스틱 입력(예컨대, 폴링) 레이트는 게임의 (예컨대, 현재) FPS를 뒤따를 수 있다. 조이스틱 응답성이 FPS 변화들에 민감할 수 있다는 것이 관찰될 수 있다(예컨대, 측정될 수 있음). 게임 FPS가 낮아지는 경우(도 5의 하단(52)), 사용자는 더 많은 입력 지연을 경험할 수 있다. 조이스틱이 해제될 때, 아바타가 예컨대, 수백 밀리초 동안 스크린 상에서 여전히 움직이고 있을 수 있다. 입력 지연은 일정하지 않을 수 있으며, 이는 사용자 경험을 추가로 저하시킬 수 있다. 예를 들어, 변화하는 입력 지연은 사용자가 움직임들 및 근육 기억 중 임의의 것을 예측하는 어려움을 증가시킬 수 있다.
네트워크는 또한, 예컨대, 변화하는 FPS로 인한 입력 지연 변화보다 (예컨대, 훨씬) 덜 현저할 수 있는 (예컨대, 5 내지 30ms의) 전송 지연을 추가함으로써, 입력 지연에 기여할 수 있다.
게임 엔진 입력 소비와 최종 사용자의 액션들 사이의 시간적 불일치의 예
ACO 예에서 예시된 바와 같이, 클라우드 게이밍 시스템에서는, 최종 사용자의 액션들이 생성될 수 있는 시간과 그들이 게임 엔진에 의해 처리될 수 있는 시간 사이에 불일치들(예컨대, 비동기화, 변화들)이 있을 수 있다. 이러한 불일치는 서버 인스턴스에서 입력 이벤트들의 큐잉과 관련될 수 있다.
도 6은 사용자 액션 큐잉의 일례를 예시하는 도면이다. 예를 들어, 사용자 액션들에 기초하여, 클라이언트 디바이스는 일정 (예컨대, 60 ㎐) 고정된 레이트로 입력 이벤트들(61)(예컨대, 상태들)을 전송할 수 있다. 입력 이벤트들(61)은 서버 프로토콜 스택에 의해 수신될 수 있고, 예컨대, 동일한 레이트로 일정 (예컨대, 내부) 큐(62)에 삽입될 수 있다. 게임 엔진은, 예를 들어, (예컨대, 60에서 30 ㎐로 변화하는) 게임 프레임 레이트에 동기화될 수 있는 더 낮은 레이트로 입력 이벤트들을 프로세싱할 수 있으며(예컨대, 소비할 수 있음), 이는 큐(62)의 오버플로우를 초래할 수 있다. 예를 들어, 게임 엔진이, 예컨대, 큐(62)에 더 이상 계류 중인 이벤트가 없을 수 있을 때까지, 그 버퍼링된 입력 이벤트들을 프로세싱(예컨대, 모두 소비)하는 경우에 시간적 정렬의 부족이 발생할 수 있다. 예를 들어, 이벤트가 엔진에 제시될 수 있는 시간은 이벤트가 큐(62)에서 보냈을 수 있는 시간의 양만큼 시프트될 수 있다. 변화하는(예컨대, 불규칙한) 큐잉 시간은 사용자 액션들 및 게임에서의 그들의 제시 시간(presentation time)이 유사한 방식으로 거동하는(예컨대, 변화하는) 것을 방지할 수 있다. 변화하는(예컨대, 불규칙한) 큐잉 시간은, 예컨대, 수백 밀리초만큼 인지된 레이턴시를 (예컨대, 상당히) 증가시킬 수 있으며, 이는 사용자 경험에 방해가 될 수 있다. 본 명세서에 기술된 실시예들에서, 이러한 문제는 시간적 불일치로 지칭될 것이다.
게임 엔진 입력 소비 변화의 예
입력 소비는 다양한 이유들로 달라질 수 있다. ACO 예에 예시된 바와 같이, 입력 소비는, 예컨대, 장면 복잡도의 변동과 같은 게임 로직에 관련된 내부 인자들에 기초하여 달라질 수 있다. 더 대체적으로, 입력 오버플로우가 클라우드 인스턴스 활동을 제한할 수 있는 어떤 이유로든 발생할 수 있다. 전개된 클라우드 게이밍 인프라구조에서, 입력 소비 변화들의 원인들은 상이한 인스턴스들 사이의 리소스 공유, 서버 상의 동시 접속된 플레이어들의 수 및 물리적 리소스들(예컨대, 메모리, GPU 코어들, CPU 사용률, I/O 병목현상들, 사용자당 이용가능한 네트워크 대역폭 등 중 임의의 것)의 관리 중 임의의 것을 포함할 수 있다.
클라이언트 디바이스로부터의 게임 서버 상의 입력 이벤트들의 수신은 예를 들어, 네트워크 제약들(예컨대, 성능들)에 의존할 수 있으며, 이는 안정되지(예컨대, 일정하지) 않을 수 있다. 변화하는 네트워크 성능들은, 예를 들어, 네트워크 혼잡으로 인해, 레이턴시, 지터, 및 패킷들의 손실 중 임의의 것을 도입할 수 있다. 예를 들어, 패킷들의 버스트들은 입력 큐의 오버플로우를 유발할 수 있다. 다른 예에서, 패킷들의 늦은 도달은 입력 큐 언더플로우(예컨대, 사용자 액션들에 대한 게임의 응답성의 부족)를 유발할 수 있다.
클라우드 게이밍에서의 사용자 입력의 적응
본 명세서에 기술된 실시예들은 게임의 입력 소비 레이트에 대응할 수 있는(예컨대, 그와 정렬, 동기화될 수 있는), 제시 시간에 게임에 의해 프로세싱(예컨대, 그에 대해 수집)되기 위해 게임 서버로 제어 커맨드들(예컨대, 사용자 액션들, 입력 이벤트들, 수신된 입력 정보)을 전달하는 것을 허용할 수 있다. 예를 들어, 제시 시간은 렌더링된 프레임에 대응할 수 있다. 본 명세서에 기술된 실시예들은 인지된 레이턴시를 감소시키고 안정화하는 것을 허용할 수 있다. 예를 들어, 제어 커맨드 버퍼링은 제한된 상태로 유지될 수 있고, (예컨대, 사용자 입력들이 폴링될 수 있는) 입력 레이트는 게임 세션 동안 게임 엔진 소비 레이트와 유사한 방식으로 (예컨대, 그에 따라) 시간의 경과에 따라 거동할 수 있다(예컨대, 달라질 수 있음).
실시예들에 따르면, (예컨대, 신) 클라이언트 디바이스 입력 레이트는 게임 서버(예컨대, 그 상에서 실행되는 게임)의 소비 레이트(예컨대, 값)에 적응될 수 있다. 소비 레이트(예컨대, 정보, 값)는 (예컨대, 클라이언트 디바이스의) 임의의 수의 입력 디바이스들 중 하나와 연관될 수 있다. 예를 들어, 소비 레이트(예컨대, 정보, 값)는, 게임 서버(예컨대, 게임 서버에서 실행되는 게임)가 입력 디바이스의 (예컨대, 그로부터 수신된) 사용자 입력들에 반응할 수 있는(예컨대, 이들을 프로세싱할 수 있는) 속도(예컨대, 레이트)를 표현할 수 있다. 예를 들어, (예컨대, 신) 클라이언트 디바이스는 그의 입력 (예컨대, 폴링) 레이트 및 전송 레이트(예컨대, 대응하는 정보가 게임 서버로 전송될 수 있는 레이트) 중 임의의 것을 소비 레이트(예컨대, 값)와 동기화할 수 있다. 동기화는, 예를 들어, 입력 이벤트들이, 그들이 클라이언트 입력 디바이스 상에서 생성될 수 있는 것과 동일한 속력(예컨대, 레이트)으로 게임 실행파일에 의해 소비될 수 있음을 허용할 수 있다. 동기화는, 예를 들어, 서버 측에서 이벤트 버퍼의 크기를 (예컨대, 상대적으로) 제한된 상태로 유지하는 것을 허용할 수 있다. 동기화는, 예를 들어, 큐잉 지연 및 관련 인지된 레이턴시를 감소(예컨대, 최소화)하는 것을 허용할 수 있다.
소비 레이트(예컨대, 값)에 대한 입력 레이트의 적응은 여러 이유들로 획득하기 복잡할 수 있다. 예를 들어, 게임 서버의 소비 레이트는 게임 세션 동안 달라질 수 있다. 다른 예에서, 게임 엔진의 내부로부터 소비 레이트와 관련된 임의의 메트릭을 획득(예컨대, 측정)하는 것을 허용할 수 있는 게임의 코드에 이용가능한 액세스가 없을 수 있다(예컨대, 게임 실행파일은 블랙 박스로 보일 수 있음). 또 다른 예에서, 소비 레이트의 진화(예컨대, 변화)는 일정 (예컨대, 큰) 세트의 (예컨대, 다양한) 파라미터들(예컨대, 인자들)로부터 생성될 수 있고, 예측하기 복잡할 수 있다.
실시예들에 따르면, 입력 레이트는 게임 엔진에서 사용될 수 있는 낮은(예컨대, 최소) 프레임 레이트에 대응할 수 있는 고정 값으로 설정될 수 있다. 이는 (예컨대, 내부) 입력 큐의 임의의 오버플로우를 방지하는 것을 허용할 수 있다. 예를 들어, 게임의 낮은(예컨대, 최소) 프레임 레이트는 초당 30개 프레임(fps)만큼 낮을 수 있다. 초당 30개 이벤트의 일정한 값으로 입력 레이트를 설정하는 것은 낮은 입력 레이트들에 기초한 간단한 게임들에 허용가능할 수 있지만, 더 높은 입력 레이트들이 게임 경험을 개선할 게임들의 게이밍 경험을 저하시킬 수 있으므로 더 복잡한 게임들에는 덜 허용가능할 수 있다.
시간적 정렬에 기초한 사용자 입력 적응의 예
실시예들에 따르면, 게임(예컨대, 실행파일)의 소비 레이트(예컨대, 정보, 값)는, 예컨대, 게임 서버(예컨대, 인스턴스)에 의해 획득될 수 있다(예컨대, 모니터링될 수 있음). 예를 들어, 소비 레이트와 관련된(예컨대, 이를 표시하는) 정보는 클라이언트 디바이스로 (예컨대, 명시적으로) 송신될 수 있다. 제1 예에서, 이러한 정보는, 예컨대, 비디오 (예컨대, 전송) 스트림에서 메타데이터에 캡슐화될 수 있다. 다른 예에서, 게임의 소비 레이트를 표시하는 정보는 (예컨대, 전용) 독점 및 표준 프로토콜 중 임의의 것에 의해 (예컨대, 신) 클라이언트 디바이스로 (예컨대, 직접) 전송될 수 있다. 예를 들어, 게임의 소비 레이트를 표시하는 정보는 규칙적으로 송신될 수 있다. 다른 예에서, 게임의 소비 레이트를 표시하는 정보는 (예컨대, 단지) (예컨대, 게임 서버가 사용자 입력들을 프로세싱할 수 있는 레이트에 영향을 미치는 임의의 메트릭의) 변경이 검출되었던 경우에 송신될 수 있다. 소비 레이트를 표시하는 정보는 본 명세서에서 소비 레이트 정보로 지칭될 수 있다.
실시예들에 따르면, 게임의 소비 레이트를 표시하는 정보는, 예를 들어, 게임 서버에 의해 클라이언트로 전송될 수 있다. 다른 예에서, 게임 서버는 소비 레이트와 관련된 임의의 정보를 다른(예컨대, 모니터링, 프로덕션) 서버로 송신할 수 있으며, 이는 클라이언트 디바이스로 게임의 소비 레이트를 표시하는 정보를 (예컨대, 프로세싱하고 그리고) 송신할 수 있다.
실시예들에 따르면, 게임의 소비 레이트를 표시하는 정보는 클라이언트 디바이스로 전송되기 위해 서버에 의해 획득될 수 있는 임의의 입력 소비 메트릭들, 클라이언트로 서버에 의해 반환(예컨대, 송신)될 수 있는 FPS 메트릭을 포함할 수 있다(예컨대, 표시할 수 있다).
실시예들에 따르면, 클라이언트 디바이스의 (예컨대, 입력 디바이스의) 입력 레이트는 수신된 정보에 기초하여 게임의 소비 레이트(예컨대, 값)에 동기화될 수 있다. 예를 들어, (입력 디바이스의 입력 레이트가 동기화될 수 있는) 게임의 소비 레이트(예컨대, 값)는, 클라이언트 디바이스에서, 소비 레이트 정보에 포함되고 클라우드 서버 및 모니터링 서버 중 임의의 것으로부터 수신된 메트릭들에 기초하여, 결정될 수 있다. 다른 예에서, (입력 디바이스의 입력 레이트가 동기화될 수 있는) 게임의 소비 레이트(예컨대, 값)는, 클라우드 서버 및 모니터링 서버 중 임의의 것에서 결정될 수 있고, 예를 들어, 소비 레이트 정보에서, 클라이언트 디바이스로 송신될 수 있다.
실시예들에 따르면, 클라이언트 디바이스는, 예컨대, 게임 서버로부터 소비 레이트에 대한 어떠한 명시적 정보도 수신하지 않고서, 입력 디바이스의 입력 (예컨대, 폴링) 레이트를 게임 프레임 레이트와 동기화할 수 있다. 예를 들어, 클라이언트 디바이스는 클라우드 서버로부터 수신된 비디오 프레임들을 수신 및 디코딩하는 것에 기초하여 (입력 디바이스의 입력 레이트가 동기화될 수 있는) 게임의 소비 레이트(예컨대, 값)를 결정할 수 있다. 이러한 동기화는 게임 엔진 프레임 레이트의 임의의 변화를 고려하기 위해 (예컨대, 연속적으로, 규칙적으로) 수행될 수 있다. 예를 들어, 클라이언트 디바이스는, 입력 (예컨대, 폴링) 레이트를 예컨대, 게임의 비디오 스트림의 전송 패킷 내의 프레임 시작 표시자와 동기화할 수 있다. 다른 예에서, 클라이언트 디바이스는 비디오 디코더로부터 FPS 정보를 획득(예컨대, 추출)할 수 있고, 그의 입력 (예컨대, 폴링) 레이트를 획득된 FPS 정보와 동기화할 수 있다. 비디오를 수신하는(예컨대, 디코딩하는) 비디오 디코더로부터 FPS 정보를 획득하기 위한 임의의 기법이 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
예측에 기초한 사용자 입력 적응의 예
실시예들에 따르면, 클라이언트 디바이스와 게임 서버 사이의 레이턴시는 임의의 수의 변화하는 파라미터들(예컨대, 네트워킹, 프로세싱(예컨대, 캡처, 인코딩, 디코딩) 및 렌더링)로 인해 (예컨대, 시간의 경과에 따라) 달라질 수 있다. 레이턴시 변화가 큰 경우에, 게임 서버 내의 내부 이벤트 큐는, 클라이언트 디바이스가 입력 (예컨대, 폴링) 레이트 및 전송 레이트 중 임의의 것을 적응시킬 수 있기 전에 가득 채워지고 비워지는 것 중 임의의 것일 수 있다.
본 명세서에 기술된 실시예들은 게임(예컨대, 엔진)의 소비 레이트 변화를 (예컨대, 추적하고 그리고) 예상함으로써 사용자 입력들과 소비 레이트 사이의 시간적 정렬의 강건성을 개선하는 것을 허용할 수 있다. 예를 들어, 입력 (예컨대, 폴링) 및 전송 레이트들 중 임의의 것은 소비 레이트의 예상된 (예컨대, 추정된) 변화에 기초하여 클라이언트 디바이스에 의해 적응될 수 있다.
실시예들에 따르면, 게임 실행파일의 입력 폴링 레이트는, 예컨대, 과거 데이터 및 크라우드 소싱된(예컨대, 경험) 데이터 중 임의의 것에 기초하여, 예를 들어, 입력 소비 레이트 메트릭들, FPS 메트릭들 및 기계 학습 알고리즘들 중 임의의 것을 사용하여 예측될 수 있다. 예를 들어, 소비 레이트(예컨대, 변화)는, 예컨대, 신경 네트워크에서 (예컨대, 생성된) 게임(예컨대, 비디오) 프레임들을 프로세싱함으로써 획득될 수 있다(예컨대, 예측될 수 있음).
실시예들에 따르면, 예측(예컨대, 모듈)은, 예컨대, 정확도를 개선하기 위해, 클라이언트 디바이스 및 게임 서버 중 임의의 것 상에서 실행될 수 있다. 소비 레이트 변화가 게임 서버에 의해 예측되는 경우에, 예측된(예컨대, 예상된) 소비 레이트(예컨대, 변화, 강하, 증가)는, 예를 들어, (예컨대, 실제) 변화의 시간에 앞서 클라이언트 디바이스로 송신될 수 있다. 클라이언트 디바이스로 송신될 수 있는 메시지는, 예를 들어, 일정 (예컨대, 예측된) 입력 폴링 레이트 및 소비 레이트의 예상된 값에 따른 일정 (예컨대, 가능성 있는, 미래) 변화(예컨대, 강하/증가)의 표시(예컨대, 경고) 중 임의의 것을 포함할 수 있다(예컨대, 표시할 수 있음). 예를 들어, 게임 서버는 이러한 메시지를 변화보다 적어도 하나의 왕복 시간(round trip time, RTT) 앞서 전송할 수 있다.
실시예들에 따르면, 예측된 소비 레이트(예컨대, 변화)의 표시를 수신한 후에, 클라이언트 디바이스는 입력 폴링 레이트 및 전송 레이트 중 임의의 것을 적응시킬 수 있다(예컨대, 변화, 증가, 감소시킬 수 있음). 실시예들에 따르면, 클라이언트 디바이스는 소비 레이트 변화의 일정 (예컨대, 로컬) 예측을 수행할 수 있고, 이에 따라 입력 폴링 레이트 및 전송 레이트 중 임의의 것을 조정할 수 있다.
실시예들에 따르면, 클라이언트 디바이스는, 예컨대, GPU, CPU 및 디스크 부하 중 임의의 것과 같은, (예컨대, 추가적인, 성능) 메트릭들을 게임 서버로부터 수신할 수 있다. 예를 들어, 클라이언트 디바이스는 이러한 정보를 사용하여 게임 소비 예측을 개량할 수 있다. 다른 예에서, 클라이언트 디바이스는 일부 정보를 게임 서버로 전송하여 그의 예측 알고리즘을 개선할 수 있다.
실시예들에 따르면, 개량 프로세스 및 예측들 중 임의의 것은, 예를 들어, 게임 클라이언트들 및 게임 서버들 중 임의의 것으로 배포될 수 있는 사전 훈련된 모델에 기초할 수 있다.
본 명세서에 기술된 실시예들은 (예컨대, 전체) 게임 세션 동안, 클라이언트 디바이스에서의 입력(예컨대, 폴링) 및 전송 레이트들 중 임의의 것이 서버 측에서의 (예컨대, 입력) 소비 레이트와 유사한 방식으로 거동하게(예컨대, 변화하게) 유지하는 것을 허용할 수 있다. 본 명세서에 기술된 실시예들은 서버에서의 입력 커맨드 버퍼가 오버플로우 없이도(어떠한 커맨드 손실 없이도) 일정 (예컨대, 적절한) 레벨로 유지되게 할 수 있다.
게임 실행파일의 범주에서의 이벤트 모니터링의 예
실시예들에 따르면, 클라이언트 디바이스는 게임 서버에서 실행되는 게임의 소비 레이트를 나타내는 일정 (예컨대, 명시적) 정보를 수신할 수 있다. 실시예들에 따르면, 클라이언트 디바이스는 수신된 (예컨대, 명시적) 정보에 기초하여 소비 레이트(예컨대, 값)를 획득할 수 있다(예컨대, 결정할 수 있음).
실시예들에 따르면, 게임 서버(예컨대, 인스턴스)는 (예컨대, 블랙 박스로 보일 수 있는) 일정 (예컨대, 수정되지 않은) 게임 실행파일의 FPS 및 입력 소비 레이트 중 임의의 것을 모니터링할 수 있다. 예를 들어, 게임 편집기는 이러한 피스의 정보를 노출시키기 위한 라이브러리를 제공할 수 있다. 그러한 라이브러리가 이용가능하지 않은 경우에, 인터셉션 기법(예컨대, Microsoft Detour SDK)이 운영 체제 API 상에서 사용되어, 예컨대 게임 코드를 수정하지 않고서, 이러한 정보를 획득할 수 있다(예컨대, 수집할 수 있음).
도 7은 입력 관리 시스템에 설치될 수 있는 소프트웨어 프로브들의 일례를 예시하는 도면이다. 예를 들어, 초기화 시에, 일정 (예컨대, 수정되지 않은) 게임 실행파일이 (예컨대, 게임 서버 인스턴스에 의해) 메모리에서 개시될 수 있다. 예를 들어, 소프트웨어 프로브들(71, 72, 73)은 시스템 공유 라이브러리들로부터의 API 함수들(예컨대, 이들의 목록) 상에 설치될 수 있으며, 이는 예컨대, 실행 동안, 게임에 의해 정적으로 또는 동적으로 로딩될 수 있다. (예컨대, 소프트웨어 프로브(71, 72, 73)가 설치되었을 수 있는) API 함수가 호출되는(예컨대, 트리거링되는) 경우에, 게임 서버 인스턴스는 소프트웨어 프로브들(71, 72, 73)에 의해 통지받을 수 있다. 게임 서버 인스턴스는 API 함수 호출의 시간을 기록하여 일정 (예컨대, 평균) 레이트를 컴퓨팅하고 예컨대, 추세를 획득할 수 있다.
실시예들에 따르면, 적어도 입력 소비 레이트(이는 본 명세서에서 consumption_rate game 로 지칭될 수 있음) 및 게임 프레임 레이트(이는 본 명세서에서 FPS game 로 지칭될 수 있음)는 게임의 실행으로부터 획득될 수 있다(예컨대, 게임 서버에 의해 획득되고 클라이언트 디바이스로 송신될 수 있음).
예를 들어, 입력 소비 레이트(consumption_rate game )는 입력 이벤트(예컨대, 수신된 입력 정보)가 예컨대, 입력 API(75)를 통해 게임에 의해 소비될 수 있는(예컨대, 프로세싱될 수 있는) 빈도(frequency)(예컨대, 레이트)일 수 있다. 이러한 빈도는 게이머에 의해 사용될 수 있는 입력 디바이스(예컨대, 조이스틱, 키보드, 마우스) 및 게임 엔진 아키텍처(예컨대, 설계 선택사항들)에 의존할 수 있다. 실시예들에 따르면, 입력 소비 레이트(consumption_rate game )는 게임 엔진들에 대해 획득될 수 있으며, 그 게임 엔진들의 입력 관리는 폴링 및 이벤트 기반 모델 중 임의의 것을 뒤따를 수 있다. 서버 인스턴스는 입력 폴링 API(예컨대, XINPUT) 및 시스템 메시징 함수들(예컨대, 입력 이벤트 및 원시 입력 디바이스 이벤트 중 임의의 것을 피킹(peeking)할 수 있는 시스템 함수들) 중 임의의 것 상에서 소프트웨어 프로브들(72)을 사용할 수 있다. 제3자 추상화 API가 사용되는 경우에(예컨대, SDL), 소프트웨어 프로브들은 이러한 API 내의 메시징 함수들에 배치될 수 있다.
예를 들어, 게임 프레임 레이트(FPS game )는, 예컨대, 게임 렌더링 스레드에 의해 GPU 상에서, 초당 렌더링된 프레임들의 수일 수 있다. 예를 들어, 게임 프레임 레이트(FPS game )는 스크린 상의 전방 버퍼로 후방 버퍼의 콘텐츠를 스왑할 수 있는 하드웨어 가속화 API 함수(예컨대, DirectX 및 OpenGL 중 임의의 것) 상에서 설정될 수 있는 소프트웨어 프로브(71)를 통해 획득될 수 있다. 렌더 루프의 (예컨대, 각각의) 반복에서 (예컨대, 한 번), 예컨대, 프레임당 한 번 호출될 수 있는 이러한 함수는 게임 프레임 레이트를 획득하는 것을 허용할 수 있다.
서버 프레임 레이트를 모니터링하는 예
실시예들에 따르면, 서버 프레임 레이트(이는 본 명세서에서 FPS server 로 지칭될 수 있음)는 게임 서버(예컨대, 인스턴스)에 의해 획득될 수 있다(예컨대, 모니터링될 수 있음). 서버 프레임 레이트(FPS server )는 비디오 인코더 관점에서 초당 프레임들의 수일 수 있다. 예를 들어, 인코딩될 프레임들을 캡처하기 위해 일정 (예컨대, 캡처) API가 사용될 수 있다(예컨대, DXGI API). 캡처 API는, 예를 들어, 시스템 상의 캡처 및 GPU 통지 이벤트 중 임의의 것을 트리거링할 수 있다. 캡처의 (예컨대, 현재) 시간은, 예를 들어, 서버 프레임 레이트의 척도로서 사용될 수 있다.
게임 서버에 의해 클라이언트 디바이스로 전달된 정보의 예
실시예들에 따르면, 게임 서버가 입력 디바이스의 (예컨대, 사용자) 입력들에 반응할 수 있는 속도(예컨대, 레이트)를 표시하는(예컨대, 표현하는) 일정 (예컨대, 소비 레이트) 정보가 게임 서버로부터 클라이언트 디바이스에 의해 수신될 수 있다. 예를 들어, (예컨대, 소비 레이트) 정보는 게임과 연관될 수 있는 입력 소비 레이트(consumption_rate game ), 게임 프레임 레이트(FPS game ), 서버 프레임 레이트(FPS server ) 및 입력 큐의 채움 비율(filing ratio)(IQ_FILL_RATIO) 중 임의의 것을 포함할 수 있다(예컨대, 표시할 수 있음). 예를 들어, (예컨대, 소비 레이트) 정보는 시간 값(예컨대, 일정 (예컨대, 마지막) 입력 이벤트 프로세싱 및 일정 (예컨대, 마지막) 프레임 렌더링 중 임의의 것의 시간을 표시하는 타임스탬프)을 포함할 수 있다. 예를 들어, (예컨대, 소비 레이트) 정보는 예컨대, 슬라이딩 윈도우에 걸쳐 대응하는 메트릭(예컨대, consumption_rate game , FPS game , FPS server , IQ_FILL_RATIO) 중 임의의 것의 값(예컨대, 함수)을 포함할 수 있다(예컨대, 표시할 수 있음). 예를 들어, 값(예컨대, 함수)은 메트릭들 중 임의의 것의 (예컨대, 시간 간격 및 슬라이딩 윈도우 중 임의의 것에 걸친) 조합, 평균, 중앙값(median), 최댓값(maximum), 최솟값(minimum) 및 백분위수(percentiles) 중 임의의 것일 수 있다. 예를 들어, (예컨대, 소비 레이트) 정보는 상기 언급된 메트릭(예컨대, consumption_rate game , FPS game , FPS server, IQ_FILL_RATIO) 중 임의의 것에 대한 예측된 값을 포함할 수 있다. 예측된 값은 예를 들어, 회귀 분석을 통해 획득될 수 있다. 이전의 값들의 세트에 기초하여 값을 예측하기 위한 임의의 기법이 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
실시예들에 따르면, (예컨대, 소비 레이트) 정보는 규칙적으로, 주기적으로, 비주기적으로(예컨대, 값 변경 후에)… 중 임의의 것으로 송신될 수 있다. 예를 들어, 2개의 후속하는 (예컨대, 소비 레이트) 정보 송신들 사이의 시간 간격은 프레임 지속기간(예컨대, 60 fps에 대해 16 ms) 미만일 수 있다. (예컨대, 소비 레이트) 정보는 예를 들어, TCP 및 UDP 패킷 중 임의의 것에 캡슐화될 수 있다(예컨대, 송신될 수 있음). 정보의 볼륨이 제한된 상태로 유지될 수 있음을 고려하면(예컨대, 초당 60개 IP 패킷들), 정보를 송신하기 위한 처리량은 200 kbit/s 미만으로 유지될 수 있다.
실시예들에 따르면, (예컨대, 소비 레이트) 정보는 (예컨대, 단지) 소비 레이트 정보(예컨대, 그에 포함될 수 있는 임의의 메트릭)가 변화하는 경우에 송신될 수 있다. 예를 들어, 송신은, 예컨대, 클라이언트 디바이스를 향해 너무 많은 메시지들을 생성하는 것을 회피하기 위해, 히스테리시스에 기초할 수 있다.
실시예들에 따르면, (예컨대, 소비 레이트) 정보는 상이한 기법들에 의해 클라이언트 디바이스로 송신될 수 있다. 예를 들어, 정보는, 예컨대, UDP 및 TCP 데이터 스트림(예컨대, 접속) 중 임의의 것에서 클라이언트 디바이스로 (예컨대, 직접) 전송될 수 있다. 다른 예에서, 정보는 (예컨대, 전송) 비디오 스트림의 메타데이터에 캡슐화될 수 있다. 예를 들어, 프레임 타임스탬프는 인코딩된 프레임을 반송할 수 있는 전송 패킷 포맷(예컨대, 실시간 프로토콜(RTP) 헤더)의 메타데이터에 삽입될 수 있다. 또 다른 예에서, 정보는 (예컨대, 실시간 제어 프로토콜(RTCP) 리포트들과 같은) 패킷 카운트에 의존할 수 있는 다른 제어 메시지 리포트들과 피기백될 수 있다(예컨대, 그에 포함, 추가될 수 있음).
실시예들에 따르면, (예컨대, 사용자 액션) 커맨드들은, 예를 들어, SRT(secure reliable transport) 프로토콜의 경우에, (예컨대, 각각의) 수신된 비디오 패킷에 대해 전송될 수 있는 확인응답 메시지(ack message)들에 피기백될 수 있다(예컨대, 그에 포함, 추가될 수 있음).
클라이언트 디바이스 입력 레이트의 적응의 예
도 8은 클라이언트 디바이스 입력 레이트 적응의 일례를 예시하는 도면이다. 실시예들에 따르면, 결정 모듈(811)은 클라이언트 디바이스(81) 상에서, (예컨대, 네트워크를 통해) 게임 서버(82)로부터 수신될 수 있는 메트릭들(812)을 청취하고 있을 수 있다. 정보(812)는 예를 들어, 특정 데이터 스트림, 리포트 스트림, 및 비디오(예컨대, 전송) 스트림의 임베딩된 메타데이터 중 임의의 것에서 수신될 수 있다.
예를 들어, 결정 모듈(811)은 수신된 정보에 기초하여 일정 (예컨대, 타깃) 소비 레이트(이는 본 명세서에서 Consumption_rate target 으로 지칭될 수 있음)를 획득할 수 있다(예컨대, 계산할 수 있음). 예를 들어, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 수신된 레이트 정보 중 임의의 하나(예컨대,Consumption_rate game , FPS game , 및 FPS server 중 임의의 것)와 동일할 수 있다. 다른 예에서, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 수신된 (예컨대, 레이트) 정보 중 임의의 하나(예컨대, Consumption_rate game , FPS game , 및 FPS server, IQ_FILL_RATIO 중 임의의 것)의 함수로서 획득될 수 있다. 예를 들어, 상이한 레이트 정보(예컨대, 값들)가 동일한 레이트 메트릭(예컨대, Consumption_rate game , FPS game , 및 FPS server 중 임의의 것)에 대해 수신될 수 있고, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 상이한 값들, 예컨대, 상이한 값들의 평균, 중앙값, 최댓값, 최솟값, 및 백분위수 중 임의의 것의 함수일 수 있다. 또 다른 예에서, 상이한 (예컨대, 레이트) 정보(예컨대, 값들)가 각각 상이한 메트릭들(예컨대, Consumption_rate game , FPS game , FPS server , IQ_FILL_RATIO 중 임의의 것)에 대해 수신될 수 있고, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 상이한 메트릭들의 상이한 값들, 예컨대, 상이한 값들의 평균, 일정 (예컨대, 선형) 조합, 중앙값, 최댓값, 최솟값, 및 백분위수 중 임의의 것의 함수일 수 있다. 본 명세서에 기술된 실시예들 전체에 걸쳐, 용어들 "소비 레이트 값" 및 "Consumption_ratetarget"은, 클라우드 서버가 수신된 입력 정보를 프로세싱할 수 있고 입력 디바이스의 입력 레이트가 동기화될 수 있는 (예컨대, 추정된) 레이트를 지정하기 위해 상호교환가능하게 사용될 수 있다.
다른 예에서(예시되지 않음), 결정 모듈은 클라우드 서버 및 모니터링 서버 중 임의의 것에 위치될 수 있다. 예를 들어, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 클라우드 서버 및 모니터링 서버 중 임의의 것에서 결정될 수 있다. 예를 들어, (예컨대, 타깃) 소비 레이트(Consumption_rate target )는 (예컨대, 클라우드 서버 및 모니터링 서버 중 임의의 것에 의해) 클라이언트 디바이스로 송신될 수 있는 소비 레이트 정보에 포함될 수 있다.
실시예들에 따르면, 클라이언트 디바이스의 전송 레이트 및 (예컨대, 입력 디바이스의) 입력 폴링 레이트 중 임의의 것은 (예컨대, 타깃) 소비 레이트(Consumption_rate target )로 조정될 수 있다.
예를 들어, 클라이언트 디바이스의 (예컨대, 입력 디바이스의) 입력 레이트는, 폴링 모델에 따라, 예컨대, 클라이언트 디바이스에 일정 (예컨대, 입력) 스레드를 인스턴스화함으로써, 제어될 수 있다(예컨대, 조정될 수 있음). 예를 들어, (예컨대, 입력) 스레드는 (예컨대, 타깃) 소비 레이트(Consumption_rate target )로 조정될 수 있는 가변 시간 간격으로 입력 디바이스의 상태를 (예컨대, 무한 루프에서) 폴링할 수 있다. 폴링된 입력 상태는, 예를 들어, 업링크 사용자 커맨드 스트림에서 게임 서버로 전송될 수 있다.
입력 폴링 레이트를 (예컨대, 타깃) 소비 레이트(Consumption_rate target )로 조정하는 것은, 게임의 (예컨대, 현재) 입력 소비 레이트에 따라 달라질 수 있는 레이트(예컨대, 빈도)로 사용자 커맨드 패킷들을 네트워크에 전달하는 것을 허용할 수 있다.
입력 모델에 뒤따른 게임 서버에 대한 개선의 예
실시예들에 따르면, 게임 서버는 입력 폴링 모델을 뒤따를 수 있다(예컨대, 수행할 수 있음). 예를 들어, 게임 서버는 도 6에 의해 기술된 바와 같이 프로세싱될 수 있는 (예컨대, 게임과 연관된) 일정 (예컨대, 내부) 입력 큐를 포함할 수 있다. 예를 들어, 입력 상태들은 클라이언트 디바이스로부터 수신될 수 있고, 예컨대, 입력 인젝터 API에 의해, (예컨대, 내부) 입력 큐에 푸시될 수 있다. 하나의 엔트리(예컨대, 이벤트 항목)는 게임 실행파일에 의한 입력 함수에 대한 (예컨대, 각각의) 호출에서 (예컨대, 내부) 입력 큐로부터 팝핑될 수 있다. (예컨대, 각각의) 입력 API 호출에서, 입력 API의 호출 시간, 입력 큐의 채움 비율(이는 본 명세서에서 IQ_FILL_RATIO로 지칭될 수 있음), 및 아직 소비되지 않았을 수 있는 계류 중인 이벤트들의 수 중 임의의 것이 저장될 수 있다(예컨대, 로깅될 수 있음). 입력 큐의 채움 비율은, 예를 들어, 큐 내의 요소들(예컨대, 이벤트들)의 수를 큐의 용량(예컨대, 크기)으로 나눈 것일 수 있다.
예를 들어, 입력 큐의 채움 비율은, 예컨대, 네트워크 제약들의 영향을 (예컨대, 또한) 고려하여, 클라이언트 입력 레이트와 소비 레이트 사이의 시간적 정렬(예컨대, 유사성, 동기화)을 표현할 수 있다.
실시예들에 따르면, 입력 큐의 채움 비율은 결정 모듈에 의해 프로세싱되기 위해 클라이언트 디바이스로 송신될 수 있는 (예컨대, 소비 레이트를 나타내는) 정보에 포함될 수 있다(예컨대, 표시될 수 있음). 예를 들어, 입력 큐의 채움 비율의 표시를 송신하는 것은 잠재적인 혼잡들에 대한 추가적인 표시(예컨대, 피드백)를 제공하는 것을 허용할 수 있다. 입력 큐의 채움 비율의 표시를 송신하는 것은 또한, (예컨대, 클라이언트 디바이스와 게임 서버 인스턴스 사이에서 발생할 수 있는 것과 관련된) 게임 서버 인스턴스의 외부에 있을 수 있는 인자들을 고려함으로써, 예측을 개선하는 것을 허용할 수 있다.
실시예들에 따르면, 클라이언트 디바이스(예컨대, 결정 모듈)는 그에 따라 그의 입력 (예컨대, 폴링) 레이트 및 전송 레이트 중 임의의 것을 적응시킬 수 있다. 비제한적인 예에서, 입력 큐의 채움 비율이 예컨대, 제1 (예컨대, 임계) 값을 초과하여 증가하고 있는 경우에, 클라이언트 디바이스는 그의 폴링 및 전송 레이트들 중 임의의 것을 감소시킬 수 있다(예컨대, 감소시키기로 결정할 수 있음). 입력 큐의 채움 비율이 예컨대, 제2 (예컨대, 임계) 값 미만으로 감소하고 있는 경우에, 클라이언트 디바이스는 그의 폴링 및 전송 레이트들 중 임의의 것을 증가시킬 수 있다(예컨대, 증가시키기로 결정할 수 있음). 입력 큐의 채움 비율에 기초하여 그의 폴링 및 전송 레이트들 중 임의의 것을 적응시키기 위한 임의의 기법이 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
서버 표시 없이 클라이언트 디바이스에 의해 수행되는 시간적 정렬의 예
실시예들에 따르면, 클라이언트 디바이스는 예컨대, 소비 레이트를 나타내는 게임 서버로부터의 어떠한 (예컨대, 명시적) 정보도 수신하지 않고서, 게임의 소비 레이트를 획득할 수 있다. 예를 들어, 클라이언트 디바이스는, 예를 들어, 게임 서버 인스턴스 상의 비디오 캡처 비트레이트가 게임 프레임 레이트(FPS game )를 뒤따르는(예컨대, 인입(ingress) 비디오 비트레이트가 게임의 (예컨대, 실제, 유효) FPS를 반영할 수 있는) 경우에, 게임 서버 인스턴스 거동에 대한 메트릭들을 추론하는 것이 가능할 수 있다. 예를 들어, 소비 레이트(예컨대, 값)는, 게임의 비디오 프레임들이 클라이언트 디바이스에 의해 수신되고, 제시되고, 디코딩되고, 디스플레이되는 것 중 임의의 것일 수 있는 프레임 레이트에 기초하여 클라이언트 디바이스에 의해 획득될 수 있다.
실시예들에 따르면, 클라이언트 디바이스는 클라이언트 디바이스에 대해 획득될 수 있는(예컨대, 평가될 수 있는) 클라이언트 프레임 레이트(이는 본 명세서에서 FPS client 로서 지칭될 수 있음)에 기초하여 입력 소비 레이트를 획득할 수 있다(예컨대, 예측, 추정할 수 있음). 예를 들어, 클라이언트 프레임 레이트(FPS client )는 비디오 스트림의 전송 패킷 내의 프레임 시작 표시자로부터 추론될 수 있는 비디오 패킷 시간 도달을 사용하여 획득될 수 있다. 다른 예에서, 클라이언트 프레임 레이트(FPS client )는, 인코딩된 비디오의 메타데이터에 임베딩될 수 있고 어느 시간들에 상이한 비디오 프레임들이 클라이언트 디바이스에 의해 제시될 수 있는지(예컨대, 렌더링될 수 있는지)를 표시할 수 있는 (예컨대, 제시) 타임 스탬프들에 기초하여 획득될 수 있다.
실시예들에 따르면, 클라이언트 디바이스는 (예컨대, 사용자 커맨드 패킷들을 포함할 수 있는) 전송된 패킷들의 수신을 확인응답하기 위해 게임 서버에 의해 전송될 수 있는 (예컨대, 라이트(light)) 확인응답 패킷들을 수신할 수 있다. 예를 들어, 혼잡(예컨대, 문제)은 확인응답 패킷들의 수신을 모니터링함으로써 검출될 수 있다. 예를 들어, 확인응답 패킷들이 지연되고 손실되는 것 중 임의의 것인 경우에 혼잡이 검출될 수 있다. 예를 들어, 혼잡을 검출하는 것은 클라이언트 디바이스(예컨대, 결정 모듈)가 입력 레이트 적응에 사용되도록 획득된 (예컨대, 타깃) 소비 레이트를 낮추는 것을 허용할 수 있다.
클라이언트 디바이스 상의 소비 레이트 예측의 예
실시예들에 따르면, 클라이언트 디바이스는 서버에 의해 제공될 수 있는 메트릭들에 기초하여 소비 레이트의 예측을 획득할 수 있다. 예를 들어, 예측된 소비 레이트는 게임 서버가 예컨대, 미래의 시점에서(예컨대, 미래의 시간 간격에서) 추가의 사용자 입력들을 프로세싱할 수 있는 예측된 레이트를 표현할 수 있다. 예를 들어, 클라이언트 디바이스는 본 명세서에서 f(X)=Y로 지칭될 수 있는 예측 함수를 통해 예측을 획득할 수 있는데, 여기서 X는 서버로부터 수신된 임의의 메트릭일 수 있고, Y는 예측된 소비 레이트일 수 있다. 예를 들어, 예측 함수는 클라이언트 디바이스의 결정 모듈에서 수행될 수 있다.
실시예들에 따르면, 예측은 소비 레이트 정보의 이력에 기초하여 획득될 수 있다(예컨대, X는 소비 레이트 정보의 이력일 수 있음). 이력은 예컨대, 마지막 30초 동안의 메트릭 값들을 포함할 수 있다. (예컨대, 과거) 값들의 이력을 정의하기 위한 임의의 기법이 본 명세서에 기술된 실시예들에 적용가능할 수 있다. 실시예들에 따르면, 이력(X)은 입력 소비 레이트 및 (예컨대, 클라이언트, 서버, 게임 중 임의의 것의) 프레임 레이트들 중 임의의 것의 값들을 포함할 수 있다.
실시예들에 따르면, 클라이언트 디바이스는 예측된 소비 레이트에 기초하여(예컨대, 그와 동일하도록), 그의 입력 폴링 및 전송 레이트들 중 임의의 것을 (예컨대, 연속적으로, 규칙적으로) 조정할 수 있다.
게임 서버 상의 소비 레이트 예측의 예
실시예들에 따르면, 게임 서버는, 예를 들어, 게임 서버 내에서 획득될 수 있는(예컨대, 수집될 수 있는) 메트릭들에 기초하여 소비 레이트의 예측을 획득할 수 있다. 예를 들어, 예측된 소비 레이트는 게임 서버가 예컨대, 미래의 시점에서(예컨대, 미래의 시간 간격에서) 추가의 사용자 입력들을 프로세싱할 수 있는 예측된 레이트를 표현할 수 있다. 예를 들어, 예측 함수(f(X)=Y)(예컨대, 전술한 바와 같음)는 게임 서버에 의해 사용될 수 있다. 예를 들어, (예컨대, 모든) 메트릭들(X)은 (예컨대, 게임 서버에서) 로컬로 이용가능할 수 있고, 게임 서버는 이러한 메트릭들에 기초하여 그의 예측들을 획득할 수 있다(예컨대, 계산할 수 있음). 예를 들어, 게임 서버는 그의 현재 (예컨대, 서버, 게임) 프레임 레이트 값들, GPU, CPU 및 디스크 부하 중 임의의 것을 사용하여 예측된 (예컨대, 미래의) 입력 소비 레이트를 획득할 수 있다. 예를 들어, 게임 서버는 예측된 (예컨대, 입력) 소비 레이트를 현재 (예컨대, 입력) 소비 레이트와 비교할 수 있다. 게임 서버는 예측된 (예컨대, 입력) 소비 레이트가 현재의 소비 레이트와 상이할 수 있는지 여부를 (예컨대, 그 여부를 표시하는 통지 메시지를 송신함으로써) 클라이언트에게 통지할 수 있다. 실시예들에 따르면, (예컨대, 통지) 메시지는 예측된 소비 레이트(예컨대, Y), 발생하는 변경(예컨대, 증가 및 강하 중 임의의 것)의 표시, 발생하는 변화(예컨대, 값의 차이), 예측이 적용가능할 수 있을 때를 표시하는 시간 정보 중 임의의 것을 포함할 수 있다. 클라이언트 디바이스에 예측된 소비 레이트를 표시하기 위한 임의의 기법 및 메시지 포맷이 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
예측 함수들의 예
소비 레이트를 예측하기 위해 클라이언트 디바이스 및 게임 서버 중 임의의 것에 의해 사용될 수 있는 예측 함수들(f(X)=Y)이 본 명세서에 기술되어 있다. X는 예컨대, 게임 서버에 의해 제공될 수 있는 입력 메트릭들을 표현할 수 있다. Y는 예측된 소비 레이트를 표현할 수 있다. 실시예들에 따르면, 예측은 임의의(예컨대, 상이한) 시간 범위(time horizon)들(예컨대, 간격들)과 연관될 수 있다.
제1 예에서, Y는 일정 (예컨대, 단일) 값일 수 있으며, 이는, 서버에서의 소비 레이트의 예측에 대응할 수 있는데, 이는 예를 들어, 마지막 입력 메트릭이 생성되었을 수 있는 시간에 비해 시간(t) 앞선 시간에 발생할 수 있다. 예를 들어, 예측 윈도우(예컨대, 시간(t))는 (예컨대, 현재, 평균 최대) RTT에 대응할 수 있다. 예를 들어, 예측 윈도우(예컨대, 시간(t))는 고정되고, 사전구성되고, 동적으로 구성가능한 것 중 임의의 것일 수 있다.
제2 예에서, Y는 n-튜플(n은 임의의 정수 값임)일 수 있으며, 이는, 적어도 예측된 소비 레이트의 값, 예측된 소비 레이트가 적용가능할 수 있는 날짜, 및 (예컨대, 예측의) 유효 지속기간(validity duration)을 포함할 수 있다.
제3 예에서, Y는 예를 들어, 서버로부터 수신된 마지막 메트릭에 대해, 상이한 (예컨대, 별개의) 시간 간격들로 서버에서의 소비 레이트의 시계열을 설명할 수 있는 벡터일 수 있다. 예측된 소비 레이트를 시계열(예컨대, 상이한 미래의 시간 주기들에 대한 상이한 예측된 값들)로서 표시하는 것은, 클라이언트 디바이스가 (예컨대, 현재 관찰된) RTT에 대응하는 예측된 소비 레이트를 획득하는(예컨대, 고르는) 것을 허용할 수 있다.
실시예들에 따르면, 예측 함수(f)는 일정 (예컨대, 선형) 회귀 함수, 자동 회귀 통합 이동 평균(auto-regressive integrated moving average, ARIMA) 모델, 및 임의의 기계 학습 기법에 따른 기계 학습 모델 중 임의의 것일 수 있다.
예를 들어, 일정 (예컨대, 선형) 회귀 함수는 현재 게이밍 세션 및 다른 게이밍 세션들 중 임의의 것의 (예컨대, 과거) 소비 레이트들의 이력에 적용될 수 있다.
예를 들어, ARIMA 모델은 (예컨대, 오로지) 현재 게이밍 세션의 (예컨대, 과거) 소비 레이트들의 이력에 의존할 수 있다(예컨대, 그에 기초할 수 있음). ARIMA 모델은 모델의 임의의 예비 훈련을 회피하는 것을 허용할 수 있다. 예를 들어, ARIMA 모델은 다른 메트릭들을 고려하지 않을 수 있고, (예컨대, 다른 사용자들의) 다른 게임 세션들로부터 학습하지 않을 수 있다.
예를 들어, 기계 학습(ML) 모델이 회귀 및 시계열 예측 중 임의의 것에 사용될 수 있다. ML 모델은, 예를 들어, 결정 트리들(예컨대, 랜덤 포레스트들, 구배 결정 부스팅된 트리들…) 및 (예컨대, 심층) 신경 네트워크들(예컨대, 시계열 또는 이미지들에 대한 컨볼루션 네트워크들, 게이트 순환 유닛(gated recurrent unit; GRU)들, 순환 신경 네트워크(recurrent neural network, RNN)들, 장단기 메모리(long short term memory, LSTM)들, 완전 연결 계층(fully connected layer)들…을 사용함) 중 임의의 것에 기초할 수 있다. 기계 학습 모델은 예를 들어, 다른 게임 세션들 동안(예컨대, 게임 개발 단계(game development phase), 베타 전개 단계(beta deployment phase), 게임 전개 단계(game deployment phase)(예컨대, 온라인 게이밍 서비스의 누적 데이터를 사용함) 중 임의의 단계 동안) 생성되고 수집된 메트릭들을 사용하여 훈련되었을 수 있다. ML 모델은 수집된 훈련 데이터에 기초하여 훈련될 수 있다(예컨대, 그리고 생성될 수 있음). 훈련된 ML 모델은 소비 레이트 예측을 수행하기 위해 클라이언트 디바이스 및 게임 서버 중 임의의 것 상에서 전개될 수 있다. 훈련 데이터는 예를 들어, (Y에 대응하는) (예컨대, 입력) 소비 레이트를 포함할 수 있다. 훈련 데이터는, 예를 들어, 다른 메트릭들 및 데이터, 예컨대, (예컨대, 게임, 서버, 클라이언트) 프레임 레이트 값들, GPU 부하, CPU 부하, 디스크 부하 및 생성된 비디오 스트림 자체 중 임의의 것을 포함할 수 있다. 컨벌루션 신경 네트워크들은 예를 들어, 비디오 스트림 자체로부터 특징들을 추출하기 위해 사용될 수 있다. 예를 들어, ML 모델은 클라이언트 디바이스 상에서 전개될 수 있고, 이는 추론 시간 동안 동일한 유형의 메트릭들에 액세스할 수 있다. 클라이언트 디바이스 상에서는, 예를 들어 전개된 ML 모델을 개선(예컨대, 개량, 훈련)하기 위해, (예컨대, 동일한 유형의) 메트릭들이 사용될 수 있다.
실시예들에 따르면, 클라이언트 디바이스 및 게임 서버 중 임의의 것은 입력 (예컨대, 폴링) 레이트 및 전송 레이트 중 임의의 것을 결정하기 위해 보강 학습 방법을 상보형 및 독립형 방법 중 임의의 것으로서 사용할 수 있다.
실시예들에 따르면, 훈련 모듈은 게임 서버 및 다른 네트워크 요소(예컨대, 제3 엔티티) 중 임의의 것 상에서 공동로컬화될(colocalized) 수 있다. 훈련 모듈이 다른 네트워크 요소에 위치되는 경우에, 훈련은 오프라인으로 실현될 수 있다.
실시예들에 따르면, 훈련은 오프라인으로 실현될 수 있고, 획득된 모델은 예컨대, 클라이언트 디바이스 및 게임 서버 중 임의의 것에서 온라인으로 개량될 수 있다.
클라이언트 디바이스에서의 예측 개선의 예
실시예들에 따르면, 클라이언트 디바이스는 예컨대, 사용자 입력의 예측을 획득하기 위해 (예컨대, 결정 트리들 및 신경 네트워크들 중 임의의 것에 기초하여) ML 모델을 사용할 수 있다. 클라이언트 디바이스는 게임 서버로부터 (예컨대, 추가적인 내부) 서버 메트릭들을 수신할 수 있고, 이에 기초하여 클라이언트 디바이스는 예컨대, 예측 모델들을 개량할 수 있다. 예를 들어, 서버는 GPU, CPU 및 디스크 부하 중 임의의 것을 클라이언트 디바이스로 전송할 수 있다.
실시예들에 따르면, ML 모델은 예컨대, 더 최근의 모델 및 더 일반적인 모델 중 임의의 것을 포함하도록 (예컨대, 규칙적으로) 업데이트될 수 있다. 예를 들어, ML (예컨대, 예측) 모델은 게임 서버 및 다른 네트워크 요소(예컨대, 제3 엔티티/서비스) 중 임의의 것으로부터 클라이언트 디바이스에 의해 수신될 수 있다. 예를 들어, ML 모델은, 예컨대, 임의의 소프트웨어 업데이트 메커니즘들을 통해, 클라이언트 디바이스에서 게임 실행파일을 업데이트함으로써 업데이트될 수 있다.
도 9a는 적어도 하나의 입력 디바이스의 일정 (예컨대, 사용자) 입력 레이트를 적응시키기 위한 클라이언트 (예컨대, 프로세싱) 디바이스(9A)의 일례를 예시하는 도면이다. 예를 들어, 프로세싱 디바이스(9A)는 게임 서버와 상호작용할 수 있는 클라우드 게이밍(예컨대, 신) 클라이언트를 포함할 수 있다. 예를 들어, 프로세싱 디바이스(9A)는 (예컨대, 조이스틱, 마우스, 키보드, … 중 임의의 것과 같은) 임의의 수의 입력 디바이스들로부터 (예컨대, 커맨드들을 표시하는) (예컨대, 사용자) 입력 정보를 수신하도록 구성된 입력 인터페이스(96)를 포함할 수 있다. 커맨드들은 게임 서버로 전달될 수 있다. 예를 들어, 프로세싱 디바이스(9A)는 네트워크에 대한 접속을 위해 네트워크 인터페이스(90)를 포함할 수 있다. 네트워크 인터페이스(90)는 게임 서버로 패킷들을 전송하도록 구성될 수 있다. 패킷은, 예를 들어, 적어도 하나의 입력 디바이스로부터 수신될 수 있는 일정 (예컨대, 사용자) 입력 커맨드들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(90)는 게임 서버로부터 비디오 스트림을 수신하도록 구성될 수 있다. 비디오 스트림은 클라이언트 (예컨대, 프로세싱) 디바이스(9A)에 의해 디코딩되고 디스플레이될 게임의 비디오 프레임들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(90)는 게임 서버 및 모니터링 서버 중 임의의 것으로부터 게임 서버에서의 소비 레이트에 관련된 정보를 수신하도록 구성될 수 있다. 예를 들어, 네트워크 인터페이스(90)는 실행되는 게임과 연관된 소비 레이트 정보를 수신하도록 구성될 수 있다. 예를 들어, 소비 레이트 정보는 클라이언트 디바이스의 적어도 하나의 입력 디바이스로부터의 수신된 입력 정보와 연관될 수 있고, 게임 서버가 적어도 하나의 입력 디바이스로부터의 수신된 입력 정보를 프로세싱할 수 있는 레이트를 표현할 수 있다. 실시예들에 따르면, 네트워크 인터페이스(90)는:
- 임의의 종류의 블루투스, Wi-Fi와 같은 무선 근거리 네트워크 인터페이스, 또는 IEEE 802 계열의 네트워크 인터페이스들 중 임의의 종류의 무선 인터페이스;
- 이더넷, IEEE 802.3과 같은 유선 LAN 인터페이스, 또는 IEEE 802 계열의 네트워크 인터페이스들 중 임의의 유선 인터페이스;
- USB, 파이어와이어와 같은 유선 버스 인터페이스, 또는 임의의 종류의 유선 버스 기술;
- 그들의 릴리즈들 모두에서의 3GPP 규격에 부합하는 2G/3G/4G/5G 셀룰러 무선 네트워크 인터페이스와 같은 광대역 셀룰러 무선 네트워크 인터페이스;
- xDSL, FFTx 또는 WiMAX 인터페이스와 같은 광역 네트워크 인터페이스 중 임의의 것일 수 있다.
보다 대체적으로, 게임의 (예컨대, 사용자 입력) 커맨드들을 전송하고 게임의 비디오 스트림을 수신하는 것을 허용하는 임의의 네트워크 인터페이스가 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
실시예들에 따르면, 네트워크 인터페이스(90)는 프로세싱 모듈(92)에 결합될 수 있는데, 이는 게임 서버(예컨대, 그 상에서 실행되는 게임)와 연관된 소비 레이트(예컨대, 정보)를 획득하도록(예컨대, 수신하도록) 구성될 수 있다. 예를 들어, 소비 레이트(예컨대, 정보)는 적어도 하나의 입력 디바이스 중 하나와 연관될 수 있다. 예를 들어, 소비 레이트(예컨대, 정보)는 게임 서버가 적어도 하나의 입력 디바이스 중 하나의 사용자 입력들에 반응할 수 있는(예컨대, 이들을 프로세싱할 수 있는) 속도(예컨대, 레이트)를 표현할 수 있다. 프로세싱 모듈(92)은, 수신된 소비 레이트(예컨대, 정보)에 기초하여 사용자 입력들이 게임 서버로 송신될 수 있는 입력 레이트를, 예컨대, 입력 레이트를 소비 레이트 값에 동기화함으로써, 적응시키도록 추가로 구성될 수 있다. 프로세싱 모듈(92)은 게임 서버로부터 게임의 비디오 프레임들을 수신하여, 디스플레이 수단과 같은 비디오 출력부(94) 상에의 디스플레이를 위해 비디오 프레임들을 디코딩 및 전송하도록 추가로 구성될 수 있다. 실시예들에 따르면, 디스플레이 수단은 디바이스의 외부에 있을 수 있고, 비디오 출력부(94)는 디스플레이할 비디오를 외부 디스플레이 수단으로 전송할 수 있다. 실시예들에 따르면, 디스플레이 수단(내부 또는 외부)은 개인용 컴퓨터 스크린, TV 스크린, 태블릿 스크린, 스마트폰 스크린 중 임의의 것일 수 있다. 보다 대체적으로, 게임의 비디오를 디스플레이하는 것을 허용하는 임의의 디스플레이 수단은 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
도 9b는 본 명세서에 기술된 클라이언트 (예컨대, 프로세싱) 디바이스(9A) 및 클라우드 서버(9C) 중 임의의 것의 아키텍처의 일례를 표현한다. 프로세싱 디바이스(9A 9C)는, 메모리(920)(예컨대, RAM, ROM, EPROM 중 임의의 것)와 함께, 예를 들어, CPU, GPU, DSP(Digital Signal Processor의 영어 약어) 중 임의의 것일 수 있는 하나 이상의 프로세서(들)(910)를 포함할 수 있다. 프로세싱 디바이스(9A 9C)는 출력 정보를 전송하도록 그리고/또는 사용자가 커맨드들 및/또는 데이터를 입력하게 하도록(예컨대, 키보드, 마우스, 터치패드, 웹캠, 디스플레이 중 임의의 것) 그리고/또는 네트워크 인터페이스를 통해 데이터를 전송/수신하도록 적응된 임의의 수의 입력/출력 인터페이스(들)(930); 및 프로세싱 디바이스(9A)의 외부에 있을 수 있는 전원(940)을 포함할 수 있다.
실시예들에 따르면, 프로세싱 디바이스(9A 9C)는 메모리(920)에 저장된 컴퓨터 프로그램을 추가로 포함할 수 있다. 컴퓨터 프로그램은, 프로세싱 디바이스(9A)에 의해, 특히 프로세서(들)(910)에 의해 실행될 때, 프로세싱 디바이스(9A 9C)가 도 10, 도 11 및 도 12 중 임의의 것을 참조하여 기술된 프로세싱 방법을 수행하게 하는 명령어들을 포함할 수 있다. 일 변형예에 따르면, 컴퓨터 프로그램은 비일시적 디지털 데이터 지원, 예컨대 모두 당해 분야에 공지된 SD 카드, HDD, CD-ROM, DVD, 판독 전용 및/또는 DVD 드라이브, DVD 판독/기입 드라이브 중 임의의 것과 같은 외부 저장 매체 상에서, 프로세싱 디바이스(9A 9C)의 외부에 저장될 수 있다. 프로세싱 디바이스(9A)는 컴퓨터 프로그램을 판독하기 위한 인터페이스를 포함할 수 있다. 추가로, 프로세싱 디바이스(9A)는 대응하는 범용 직렬 버스(Universal Serial Bus, USB) 포트들(도시되지 않음)을 통해 임의의 수의 USB 유형 저장 디바이스들(예컨대, "메모리 스틱들")에 액세스할 수 있다.
실시예들에 따르면, 프로세싱 디바이스(9A 9C)는 예를 들어, (예컨대, 게임의) 하나 이상의 인스턴스들을 실행할 수 있는, 게임 디바이스, 셋톱 박스 디바이스, TV 세트, 디지털 미디어 플레이어(예컨대, 렌더러) 디바이스, 인터넷 게이트웨이, 모바일 디바이스, 통신 디바이스, 태블릿(또는 태블릿 컴퓨터), 스마트폰, 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버 중 임의의 것일 수 있다.
도 9c는 클라우드 서버로서 구성될 수 있는 프로세싱 디바이스(9C)의 일례를 예시하는 도면이다. 예를 들어, 프로세싱 디바이스(9C)는 클라이언트 디바이스와 상호작용하여 게임 인스턴스를 실행하도록 구성된 적어도 하나의 인스턴스를 포함할 수 있다. 예를 들어, 프로세싱 디바이스(9C)는 네트워크에 대한 접속을 위해 네트워크 인터페이스(91)를 포함할 수 있다. 네트워크 인터페이스(91)는 클라이언트 디바이스로부터 실행되는 게임에 대한 입력 정보를 수신하도록 구성될 수 있다. 입력 정보는, 예를 들어, 클라이언트 디바이스로부터 수신될 수 있는 일정 (예컨대, 사용자) 입력 커맨드들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(91)는 비디오 스트림을 클라이언트 디바이스로 송신하도록 구성될 수 있다. 비디오 스트림은 클라이언트 디바이스에 의해 디코딩되고 디스플레이될 게임의 비디오 프레임들을 포함할 수 있다. 실시예들에 따르면, 네트워크 인터페이스(91)는:
- 임의의 종류의 블루투스, Wi-Fi와 같은 무선 근거리 네트워크 인터페이스, 또는 IEEE 802 계열의 네트워크 인터페이스들 중 임의의 종류의 무선 인터페이스;
- 이더넷, IEEE 802.3과 같은 유선 LAN 인터페이스, 또는 IEEE 802 계열의 네트워크 인터페이스들 중 임의의 유선 인터페이스;
- USB, 파이어와이어와 같은 유선 버스 인터페이스, 또는 임의의 종류의 유선 버스 기술;
- 그들의 릴리즈들 모두에서의 3GPP 규격에 부합하는 2G/3G/4G/5G 셀룰러 무선 네트워크 인터페이스와 같은 광대역 셀룰러 무선 네트워크 인터페이스;
- xDSL, FFTx 또는 WiMAX 인터페이스와 같은 광역 네트워크 인터페이스 중 임의의 것일 수 있다.
보다 대체적으로, 실행되는 게임에 대한 입력 정보를 수신하고 실행되는 게임의 비디오 스트림을 송신하는 것을 허용하는 임의의 네트워크 인터페이스가 본 명세서에 기술된 실시예들에 적용가능할 수 있다.
실시예들에 따르면, 네트워크 인터페이스(91)는 적어도 하나의 인스턴스를 실행하도록 구성될 수 있는 프로세싱 모듈(93)에 결합될 수 있다. 예를 들어, 적어도 하나의 인스턴스가 게임을 실행하도록 구성될 수 있다. 예를 들어, 적어도 하나의 인스턴스는 게임의 비디오 프레임들을 클라이언트 디바이스로 송신하도록 구성될 수 있다. 예를 들어, 적어도 하나의 인스턴스는, 네트워크 인터페이스(91)를 통해, 실행되는 게임에 대한 입력 정보를 클라이언트 디바이스로부터 수신하도록 구성될 수 있다. 예를 들어, 적어도 하나의 인스턴스는 클라우드 서버의 인스턴스가 수신된 입력 정보를 프로세싱할 수 있는 프로세싱 레이트를 표현하는 소비 레이트 정보를 클라이언트 디바이스로 송신하도록 구성될 수 있다. 예를 들어, 수신된 입력 정보의 프로세싱은, 렌더링되고, 인코딩되고, 클라이언트 디바이스로 송신될 수 있는, 게임의 추가의 비디오 프레임들을 생성할 수 있다. 예를 들어, 입력 정보(그 입력 정보에 기초하여 게임의 비디오 프레임들이 생성되고, 렌더링되고, 인코딩되고 송신될 수 있음)는, 입력 정보가 프로세싱될 수 있는 프로세싱 레이트(예컨대, 그의 변화)에 따라 달라질 수 있는 수신 레이트로 수신될 수 있다. 예를 들어, (예컨대, 제1 수신 레이트로 수신된) 제1 입력 정보의 프로세싱 레이트는 (예컨대, 증가하고 감소하는 것 중 임의의 것에 의해) 달라질 수 있는데, 이는 프로세싱 레이트(예컨대, 그의 변화)를 표시하는 소비 레이트 정보를 송신하는 것을 초래할 수 있으며, 이는 표시된 프로세싱 레이트(예컨대, 그의 변화)를 고려하여 제2 수신 레이트로 클라이언트 디바이스로부터 제2 입력 정보를 수신하는 것을 초래할 수 있다.
도 10은 일정 (예컨대, 클라우드 게이밍) 클라이언트 디바이스의 적어도 하나의 입력 디바이스의 일정 (예컨대, 사용자) 입력 레이트를 적응시키기 위한 방법의 일례를 예시하는 도면이다. 실시예들에 따르면, 단계(1010)에서, 게임 서버 상에서 실행되는 게임의 소비 레이트가 (예컨대, 클라이언트 디바이스에 의해) 획득될 수 있다. 예를 들어, 소비 레이트는 적어도 하나의 입력 디바이스 중 하나와 연관될 수 있다. 예를 들어, 임의의 수의 입력 디바이스들과 각각 연관된 임의의 수의 소비 레이트들이 (예컨대, 클라이언트 디바이스에 의해) 획득될 수 있다. 예를 들어, 소비 레이트는 게임 서버가 (예컨대, 연관된) 입력 디바이스의 사용자 입력들에 반응할 수 있는(예컨대, 이들을 프로세싱할 수 있는) 속도(예컨대, 레이트)를 표현할 수 있다.
실시예들에 따르면, 단계(1020)에서, (예컨대, 사용자 입력들이 게임 서버로 송신될 수 있는) 입력 레이트는 입력 레이트를 소비 레이트에 동기화함으로써 적응될 수 있다.
예를 들어, 소비 레이트는 게임 서버 및 다른(예컨대, 모니터링) 서버 중 임의의 것으로부터 수신된 정보로부터 획득될 수 있다.
예를 들어, 정보는, 이벤트들이 게임에 의해 소비될 수 있는(예컨대, 프로세싱될 수 있는) 입력 소비 레이트, 게임이 예컨대, 게임 렌더링 스레드에 의해 렌더링될 수 있는 게임 프레임 레이트, 게임의 비디오 프레임들이 서버 상에서 인코딩되고 캡처되는 것 중 임의의 것일 수 있는 서버 프레임 레이트, 및 게임과 연관된 입력 큐의 채움 비율 중 임의의 것을 포함할 수 있다. 입력 큐는 게임을 실행하고 있을 수 있는 게임 서버 인스턴스에 위치될 수 있다. 입력 큐는, 클라이언트 디바이스로부터 수신되었을 수 있고 게임 서버 인스턴스 상에서 실행되는 게임에 의해 프로세싱되기를 대기하고 있을 수 있는 입력 이벤트들을 포함할 수 있다.
예를 들어, 정보는 입력 이벤트 및 프레임 렌더링 이벤트 중 임의의 것의 게임 서버에서의 발생을 표시할 수 있는 타임스탬프를 포함할 수 있다.
예를 들어, 정보는, 예를 들어, 시간 간격에 걸친, 입력 소비 레이트, 게임 프레임 레이트 및 서버 프레임 레이트 중 임의의 것의 평균, 중앙값, 최댓값, 최솟값 및 백분위수 중 임의의 것을 포함할 수 있다.
예를 들어, 정보는 입력 소비 레이트, 게임 프레임 레이트 및 서버 프레임 레이트 중 임의의 것에 대한 예측된 값을 포함할 수 있다.
예를 들어, 정보는 규칙적으로 수신될 수 있다.
예를 들어, 정보는 입력 소비 레이트, 게임 프레임 레이트 및 서버 프레임 레이트 중 임의의 것이 변경되는 조건으로 수신될 수 있다.
예를 들어, 정보는 게임의 비디오 프레임들을 포함하는 비디오 스트림의 메타데이터에 캡슐화될 수 있다.
예를 들어, 소비 레이트는, 게임의 비디오 프레임들이 (예컨대, 클라우드 게이밍) 클라이언트 디바이스에 의해 수신되고 디코딩되는 것 중 임의의 것일 수 있는 프레임 레이트에 기초하여 획득될 수 있다.
예를 들어, 사용자 입력들의 폴링 레이트 및 게임 서버로의 사용자 입력들의 전송 레이트 중 임의의 것이 소비 레이트로 설정될 수 있다(예컨대, 동기화될 수 있음). 예를 들어, 상이한 세트들의 사용자 입력들이 상이한 입력 디바이스들로부터 제공될 수 있다. (상이한 입력 디바이스들에 대응하는) 사용자 입력들의 상이한 (예컨대, 폴링, 전송) 레이트들은 상이한 입력 디바이스들과 연관된 상이한 소비 레이트들로 각각 설정될 수 있다(예컨대, 동기화될 수 있음).
예를 들어, 예측된 소비 레이트는 이전의 소비 레이트 정보의 이력에 기초하여 획득될 수 있다. 예를 들어, 입력 레이트는 예측된 소비 레이트에 기초하여 추가로 적응될 수 있다.
예를 들어, 예측된 소비 레이트는 게임 서버로부터 수신될 수 있다.
예를 들어, 예측된 소비 레이트는 게임 서버로부터 수신된 이전의 소비 레이트 정보의 이력에 기초하여 클라우드 게이밍 클라이언트 상에서 결정될 수 있다(예컨대, 컴퓨팅될 수 있음).
예를 들어, 이전의 소비 레이트 정보의 이력은 서버의 부하를 표현하는 정보를 추가로 포함할 수 있다.
도 11은 클라이언트 디바이스에서 구현되는 방법의 일례를 예시하는 도면이다. 예를 들어, 방법은 클라우드 서버로부터, 클라우드 서버 상에서 실행되는 게임의 비디오 프레임들을 수신하는 단계(1110)를 포함할 수 있다. 예를 들어, 방법은 실행되는 게임과 연관된 소비 레이트 정보를 수신하는 단계(1120)를 포함할 수 있다. 예를 들어, 소비 레이트 정보는 클라이언트 디바이스의 적어도 하나의 입력 디바이스로부터의 수신된 입력 정보와 연관될 수 있다. 예를 들어, 소비 레이트 정보는, 적어도 하나의 입력 디바이스로부터의 수신된 입력 정보가 클라우드 서버에 의해 프로세싱될 수 있는 일정 (예컨대, 프로세싱) 레이트를 표현할 수 있다. 예를 들어, 방법은 수신된 소비 레이트 정보에 기초하여, 수신된 정보가 클라우드 서버로 송신될 수 있는 입력 레이트를 적응시키는 단계(1130)를 포함할 수 있다.
예를 들어, 소비 레이트 정보를 수신하는 단계는 클라우드 서버로부터 수신된 비디오 프레임들을 수신 및 디코딩하는 것에 기초하여 클라이언트 디바이스에서의 소비 레이트 값을 결정하는 단계를 포함할 수 있다.
예를 들어, 소비 레이트 정보는 클라우드 서버로부터 수신될 수 있고, 소비 레이트 정보는 클라우드 서버에서 결정된 소비 레이트 값을 표시할 수 있다. 예를 들어, 소비 레이트 값은, 수신된 입력 정보가 클라우드 서버에 의해 프로세싱될 수 있는 레이트를 표시할 수 있다.
예를 들어, 소비 레이트 정보는 클라우드 서버로부터 수신될 수 있고, 소비 레이트 값은 수신된 소비 레이트 정보에 기초하여 클라이언트 디바이스에서 결정될 수 있다. 예를 들어, 소비 레이트 값은, 수신된 입력 정보가 클라우드 서버에 의해 프로세싱될 수 있는 레이트를 표현할 수 있다.
예를 들어, 수신된 입력 정보가 클라우드 서버로 송신될 수 있는 입력 레이트를 적응시키는 단계는, (i) 수신된 입력 정보의 전송 레이트 및 (ii) 수신된 입력 정보의 폴링 레이트 중 임의의 것을 설정함으로써 입력 레이트를 소비 레이트 값에 동기화하는 단계를 포함할 수 있다.
예를 들어, 소비 레이트 정보는, (i) 수신된 입력 정보가 실행되는 게임에 의해 프로세싱될 수 있는(예컨대, 그 레이트를 표시하는) 입력 소비 레이트, (ii) 실행되는 게임이 게임 렌더링 스레드에 의해 렌더링될 수 있는 게임 프레임 레이트, (iii) 실행되는 게임의 비디오 프레임들이 클라우드 서버 상에서 인코딩되고 캡처되는 것 중 임의의 것일 수 있는 서버 프레임 레이트, 및 (iv) 실행되는 게임과 연관된 입력 큐의 채움 비율 중 임의의 것을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 입력 이벤트 및 프레임 렌더링 이벤트 중 임의의 것의 클라우드 서버에서의 발생을 표시하는 타임스탬프를 포함할 수 있다.
예를 들어, 소비 레이트 정보는, 입력 소비 레이트, 게임 프레임 레이트, 서버 프레임 레이트 및 입력 큐의 채움 비율 중 임의의 것의, 시간 간격에 걸친, 평균, 중앙값, 최댓값, 최솟값 및 백분위수 중 임의의 것을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 입력 소비 레이트, 게임 프레임 레이트, 서버 프레임 레이트, 및 입력 큐의 채움 비율 중 임의의 것에 대한 예측된 값을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 규칙적으로 수신될 수 있다.
예를 들어, 소비 레이트 정보는 입력 소비 레이트, 게임 프레임 레이트, 서버 프레임 레이트 및 채움 비율 중 임의의 것이 변경되는 조건으로 수신될 수 있다.
예를 들어, 소비 레이트 정보는 실행되는 게임의 비디오 프레임들을 포함하는 비디오 스트림의 메타데이터에 캡슐화될 수 있다.
예를 들어, 방법은, 클라우드 서버로부터, 클라우드 서버가 추가의 수신된 입력 정보를 프로세싱할 수 있는 예측된 레이트를 표현하는 예측된 소비 레이트 정보를 수신하는 단계를 추가로 포함할 수 있으며, 여기서 입력 레이트는 예측된 소비 레이트 정보에 기초하여 적응될 수 있다.
예를 들어, 예측된 소비 레이트 정보는 클라우드 서버에서 결정된 예측된 소비 레이트 값을 표시할 수 있고, 예측된 소비 레이트 값은 클라우드 서버가 추가의 수신된 입력 정보를 프로세싱할 수 있는 예측된 레이트를 표시한다.
예를 들어, 예측된 소비 레이트 값은, 클라우드 서버로부터 수신된 이전의 소비 레이트 정보의 이력에 기초하여 클라이언트 디바이스에서 결정될 수 있다.
예를 들어, 이전의 소비 레이트 정보의 이력은 클라우드 서버의 부하를 추가로 표시할 수 있다.
도 12는 클라우드 서버의 인스턴스에서 구현되는 방법의 일례를 예시하는 도면이다. 예를 들어, 방법은, 클라이언트 디바이스로, 클라우드 서버의 인스턴스 상에서 실행되는 게임의 비디오 프레임들을 송신하는 단계(1210)를 포함할 수 있다. 예를 들어, 방법은 클라이언트 디바이스로부터, 실행되는 게임에 대한 (예컨대, 그와 연관된) 입력 정보를 수신하는 단계(1220)를 포함할 수 있다. 예를 들어, 방법은, 클라이언트 디바이스로, 수신된 입력 정보가 클라우드 서버의 인스턴스에 의해 프로세싱될 수 있는 프로세싱 레이트를 표현하는 소비 레이트 정보를 송신하는 단계(1230)를 포함할 수 있다. 예를 들어, 입력 정보는 프로세싱 레이트에 따라 달라지는 수신 레이트로 수신될 수 있다.
예를 들어, 소비 레이트 정보는, (i) 수신된 입력 정보가 클라우드 서버의 인스턴스에 의해 프로세싱될 수 있는 프로세싱 레이트, (ii) 실행되는 게임이 클라우드 서버의 인스턴스에 의해 렌더링될 수 있는 게임 프레임 레이트, (iii) 실행되는 게임의 비디오 프레임들이 클라우드 서버의 인스턴스에 의해 인코딩되고 캡처되는 것 중 임의의 것일 수 있는 서버 프레임 레이트, 및 (iv) 실행되는 게임과 연관된 입력 큐의 채움 비율 중 임의의 것을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 입력 이벤트 및 프레임 렌더링 이벤트 중 임의의 것의 클라우드 서버의 인스턴스에서의 발생을 표시하는 타임스탬프를 포함할 수 있다.
예를 들어, 소비 레이트 정보는, 프로세싱 레이트, 게임 프레임 레이트, 서버 프레임 레이트 및 입력 큐의 채움 비율 중 임의의 것의, 시간 간격에 걸친, 평균, 중앙값, 최댓값, 최솟값 및 백분위수 중 임의의 것을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 프로세싱 레이트, 게임 프레임 레이트, 서버 프레임 레이트, 및 입력 큐의 채움 비율 중 임의의 것에 대한 예측된 값을 표시할 수 있다.
예를 들어, 소비 레이트 정보는 규칙적으로 송신될 수 있다.
예를 들어, 소비 레이트 정보는 프로세싱 레이트, 게임 프레임 레이트, 서버 프레임 레이트 및 채움 비율 중 임의의 것이 변경되는 조건으로 송신될 수 있다.
예를 들어, 소비 레이트 정보는 실행되는 게임의 비디오 프레임들을 포함하는 비디오 스트림의 메타데이터에 캡슐화될 수 있다.
예를 들어, 방법은 이전의 소비 레이트 정보의 이력에 기초하여 예측된 소비 레이트 값을 결정하는 단계를 추가로 포함할 수 있고, 예측된 소비 레이트 값은 클라우드 서버의 인스턴스가 추가의 수신된 입력 정보를 프로세싱할 수 있는 예측된 프로세싱 레이트를 표시한다.
예를 들어, 송신된 소비 레이트 정보는 결정된 예측된 소비 레이트 값을 표시할 수 있다.
예를 들어, 방법은 이전의 소비 레이트 정보의 이력을 클라이언트 디바이스로 송신하는 단계를 추가로 포함할 수 있다.
예를 들어, 이전의 소비 레이트 정보의 이력은 클라우드 서버의 부하를 추가로 표시할 수 있다.
결론
특징들 및 요소들이 특정 조합들로 위에서 기술되었지만, 당업자는 각각의 특징 또는 요소가 단독으로 또는 다른 특징들 및 요소들과의 임의의 조합으로 사용될 수 있다는 것을 알 것이다. 또한, 본 명세서에 기술된 방법들은 컴퓨터 또는 프로세서에 의한 실행을 위해 컴퓨터 판독가능 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 컴퓨터 판독가능 매체들의 예들은 (유선 또는 무선 접속을 통해 송신되는) 전자 신호들 및 컴퓨터 판독가능 저장 매체들을 포함한다. 컴퓨터 판독가능 저장 매체들의 예들은 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부 하드 디스크들 및 착탈식 디스크들과 같은 자기 매체들, 광자기 매체들, 및 CD-ROM 디스크들 및 디지털 다기능 디스크(DVD)들과 같은 광학 매체들을 포함하지만, 이들로 제한되지 않는다. 소프트웨어와 연관된 프로세서는 클라이언트 디바이스, 사용자 장비, 단말기, 기지국, 또는 임의의 호스트 컴퓨터에서 사용하기 위한 무선 주파수 송수신기를 구현하는 데 사용될 수 있다.
명시적으로 기술되어 있지 않지만, 본 실시예들은 임의의 조합 또는 하위조합으로 채용될 수 있다. 예를 들어, 본 원리들은 기술된 변형들로 제한되지 않고, 변형들 및 실시예들의 임의의 배열이 사용될 수 있다. 더욱이, 본 원리들은 기술된 채널 액세스 방법들로 제한되지 않고, 임의의 다른 유형의 채널 액세스 방법들이 본 원리들과 호환가능하다.
게다가, 방법에 대해 기술된 임의의 특성, 변형 또는 실시예는 개시된 방법을 프로세싱하기 위한 수단을 포함하는 장치 디바이스와 호환가능하며, 이때 디바이스는 개시된 방법을 프로세싱하도록 구성된 프로세서를 포함하고, 컴퓨터 프로그램 제품은 프로그램 코드 명령어들을 포함하고, 비일시적 컴퓨터 판독가능 저장 매체는 프로그램 명령어들을 저장한다.
또한, 전술된 실시예들에서, 프로세싱 플랫폼들, 컴퓨팅 시스템들, 제어기들, 및 프로세서들을 포함하는 다른 디바이스들이 언급된다. 이들 디바이스들은 적어도 하나의 중앙 프로세싱 유닛("CPU") 및 메모리를 포함할 수 있다. 컴퓨터 프로그래밍의 당업자의 실시들에 따르면, 동작들 또는 명령어들의 부호 표현들 및 행위(act)들에 대한 참조는 다양한 CPU들 및 메모리들에 의해 수행될 수 있다. 그러한 행위들 및 동작들 또는 명령어들은 "실행되는", "컴퓨터 실행되는" 또는 "CPU 실행되는" 것으로 지칭될 수 있다.
당업자는, 행위들 및 부호로 표현된 동작들 또는 명령어들이 CPU에 의한 전기 신호들의 조작을 포함한다는 것을 이해할 것이다. 전기 시스템은, 전기 신호들의 결과적인 변환 또는 감소 및 메모리 시스템 내의 메모리 위치들에서의 데이터 비트들의 유지를 야기하여, 그에 의해 CPU의 동작뿐만 아니라 신호들의 다른 프로세싱을 재구성하거나 또는 달리 변경할 수 있는 데이터 비트들을 나타낸다. 데이터 비트들이 유지되는 메모리 위치들은 데이터 비트들에 대응하거나 데이터 비트들을 나타내는 특정의 전기적, 자기적, 광학적 또는 유기적 속성들을 갖는 물리적 위치들이다. 대표적인 실시예들은 위에서 언급된 플랫폼들 또는 CPU들로 제한되지 않으며, 다른 플랫폼들 및 CPU들이 제공된 방법들을 지원할 수 있다는 것이 이해되어야 한다.
데이터 비트들은 또한 CPU에 의해 판독가능한 자기 디스크들, 광학 디스크들, 및 임의의 다른 휘발성(예컨대, 랜덤 액세스 메모리("RAM")) 또는 비휘발성(예컨대, 판독 전용 메모리("ROM")) 대용량 저장 시스템을 포함하는 컴퓨터 판독가능 매체 상에 유지될 수 있다. 컴퓨터 판독가능 매체는 프로세싱 시스템 상에 배타적으로 존재하거나 프로세싱 시스템에 대해 로컬 또는 원격일 수 있는 다수의 상호접속된 프로세싱 시스템들 사이에 분산되는, 협력하거나 또는 상호접속된 컴퓨터 판독가능 매체를 포함할 수 있다. 대표적인 실시예들이 위에서 언급된 메모리들로 제한되지 않으며 다른 플랫폼들 및 메모리들이 기술된 방법들을 지원할 수 있다는 것이 이해되어야 한다.
예시적인 실시예에서, 본 명세서에 기술된 동작들, 프로세스들 등 중 임의의 것은 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 판독가능 명령어들로서 구현될 수 있다. 컴퓨터 판독가능 명령어들은 모바일 유닛, 네트워크 요소, 및/또는 임의의 다른 컴퓨팅 디바이스의 프로세서에 의해 실행될 수 있다.
시스템들의 태양들의 하드웨어 구현들과 소프트웨어 구현들 사이에는 차이가 거의 없다. 하드웨어 또는 소프트웨어의 사용은 대체적으로 (예컨대, 특정 상황들에서 하드웨어와 소프트웨어 중의 선택이 중요하게 될 수 있다는 점에서, 항상은 아니지만) 비용 대 효율성 트레이드오프를 나타내는 설계 선택사항이다. 본 명세서에 기술된 프로세스들 및/또는 시스템들 및/또는 다른 기술들이 실시될 수 있는 다양한 수단들(예컨대, 하드웨어, 소프트웨어, 및/또는 펌웨어)이 있을 수 있고, 선호된 수단은 프로세스들 및/또는 시스템들 및/또는 다른 기술들이 전개되는 정황에 따라 달라질 수 있다. 예를 들어, 속력 및 정확도가 가장 중요하다고 구현자가 결정하는 경우, 구현자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있다. 유연성이 가장 중요한 경우, 구현자는 주로 소프트웨어 구현을 선택할 수 있다. 대안적으로, 구현자는 하드웨어, 소프트웨어, 및/또는 펌웨어의 일부 조합을 선택할 수 있다.
전술한 상세한 설명은 블록도들, 흐름도들, 및/또는 예들의 사용을 통해 디바이스들 및/또는 프로세스들의 다양한 실시예들을 기재하였다. 그러한 블록도들, 흐름도들, 및/또는 예들이 하나 이상의 기능 및/또는 동작을 포함하는 한, 그러한 블록도들, 흐름도들, 또는 예들 내의 각각의 기능 및/또는 동작이 광범위한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 사실상 임의의 조합에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 당업자에 의해 이해될 것이다. 적합한 프로세서들은 예로서, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, 주문형 집적 회로(ASIC)들, 주문형 표준 제품(Application Specific Standard Product, ASSP)들; 필드 프로그래밍가능 게이트 어레이(FPGA) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다.
특징들 및 요소들이 특정 조합들로 위에서 제공되어 있지만, 당업자는 각각의 특징 또는 요소가 단독으로 또는 다른 특징들 및 요소들과의 임의의 조합으로 사용될 수 있다는 것을 이해할 것이다. 본 개시내용은, 다양한 태양들의 예시들로서 의도되는, 본 출원에 기술된 특정 실시예들의 관점에서 제한되지 않는다. 당업자에게 명백할 바로서, 본 개시내용의 사상 및 범주를 벗어나지 않고서 많은 수정들 및 변화들이 이루어질 수 있다. 본 출원의 설명에서 사용되는 어떠한 요소, 행위, 또는 명령어도, 명시적으로 그와 같이 제공되지 않는 한, 본 발명에 중요하거나 또는 필수적인 것으로 해석되지 않아야 한다. 본 명세서에서 열거된 것들 외에도, 본 개시내용의 범주 내의 기능적으로 동등한 방법들 및 장치들이 전술한 설명으로부터 당업자에게 명백할 것이다. 그러한 수정들 및 변화들은 첨부된 청구항들의 범주 내에 속하는 것으로 의도된다. 본 개시내용은, 그러한 청구항들의 자격을 갖는 동등물들의 전체 범주와 함께, 첨부된 청구항들의 조건에 의해서만 제한되어야 한다. 본 개시내용은 특정 방법들 또는 시스템들로 제한되지 않는다는 것이 이해되어야 한다.
또한, 본 명세서에서 사용되는 전문용어가 특정 실시예들만을 기술하기 위한 것이고, 제한하는 것으로 의도되지 않는다는 것이 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 본 명세서에서 언급될 때, 용어들 "스테이션" 및 그의 약어 "STA", "사용자 장비" 및 그의 약어 "UE"는 아래에 기술된 것과 같은, (i) 무선 송수신 유닛(WTRU); (ii) 아래에 기술된 것과 같은, WTRU의 다수의 실시예들 중 임의의 것; (iii) 그 중에서도, 아래에 기술된 것과 같은, WTRU의 일부 또는 모든 구조들 및 기능성으로 구성된 무선가능(wireless-capable) 및/또는 유선가능(wired-capable)(예컨대, 테더링가능(tetherable)) 디바이스; (iii) 아래에 기술된 것과 같은, WTRU의 전부보다 적은 구조들 및 기능성으로 구성된 무선가능 및/또는 유선가능 디바이스; 또는 (iv) 유사한 것을 의미할 수 있다. 본 명세서에 열거된 임의의 UE를 대표할 수 있는 예시적인 WTRU의 상세사항들이 도 1a 내지 도 1d와 관련하여 하기에 제공된다.
특정 대표적인 실시예들에서, 본 명세서에 기술된 주제의 여러 부분은 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 및/또는 다른 통합된 포맷들을 통해 구현될 수 있다. 그러나, 본 명세서에 개시된 실시예들의 일부 태양들이, 전체적으로 또는 부분적으로, 집적 회로들로, 하나 이상의 컴퓨터 상에서 실행되는 하나 이상의 컴퓨터 프로그램으로서(예컨대, 하나 이상의 컴퓨터 시스템들 상에서 실행되는 하나 이상의 프로그램으로서), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램으로서(예컨대, 하나 이상의 마이크로프로세서들 상에서 실행되는 하나 이상의 프로그램으로서), 펌웨어로서, 또는 이들의 사실상 임의의 조합으로서 동등하게 구현될 수 있고, 회로부를 설계하는 것 및/또는 소프트웨어 및/또는 펌웨어에 대한 코드를 기입하는 것이 본 개시내용을 고려하여 당업자의 역량 내에 충분히 있을 것임을 당업자는 인식할 것이다. 추가로, 본 명세서에 기술된 주제의 메커니즘들이 다양한 형태들의 프로그램 제품으로서 배포될 수 있으며, 본 명세서에 기술된 주제의 예시적인 실시예가 배포를 실제로 수행하는 데 사용되는 특정 유형의 신호 베어링 매체(signal bearing medium)에 관계없이 적용된다는 것을 당업자는 이해할 것이다. 신호 베어링 매체의 예들은 다음을 포함하지만, 이들로 제한되지는 않는다: 플로피 디스크, 하드 디스크 드라이브, CD, DVD, 디지털 테이프, 컴퓨터 메모리 등과 같은 기록가능 유형 매체, 및 디지털 및/또는 아날로그 통신 매체(예컨대, 광섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등)와 같은 송신 유형 매체.
본 명세서에 기술된 주제는 때때로 상이한 다른 컴포넌트들 내에 포함되거나 그와 접속되는 상이한 컴포넌트들을 예시한다. 그러한 도시된 아키텍처들은 단지 예들일 뿐이라는 것, 및 실제로 동일한 기능성을 달성하는 많은 다른 아키텍처들이 구현될 수 있다는 것이 이해되어야 한다. 개념적 의미에서, 동일한 기능성을 달성하기 위한 컴포넌트들의 임의의 배열은 원하는 기능성이 달성될 수 있도록 효과적으로 "연관"되어 있다. 따라서, 특정 기능성을 달성하도록 조합되는 본 명세서에서의 임의의 2개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트(intermedial component)와 관계없이, 원하는 기능성이 달성되도록 서로 "연관"되어 있는 것으로 보일 수 있다. 마찬가지로, 그렇게 연관된 임의의 2개의 컴포넌트는 원하는 기능성을 달성하도록 서로 "동작가능하게 접속된(operably connected)" 또는 "동작가능하게 결합된(operably coupled)" 것으로 또한 보일 수 있고, 그렇게 연관될 수 있는 임의의 2개의 컴포넌트는 원하는 기능성을 달성하도록 서로 "동작가능하게 결합가능한(operably couplable)" 것으로 또한 보일 수 있다. 동작가능하게 결합가능한의 특정 예들은 물리적으로 정합가능한(physically mateable) 및/또는 물리적으로 상호작용하는 컴포넌트들, 및/또는 무선으로 상호작용가능한 및/또는 무선으로 상호작용하는 컴포넌트들, 및/또는 논리적으로 상호작용하는 및/또는 논리적으로 상호작용가능한 컴포넌트들을 포함하지만 이들로 제한되지 않는다.
본 명세서에서의 실질적으로 임의의 복수 및/또는 단수 용어들의 사용과 관련하여, 당업자는 정황 및/또는 응용에 적절한 바와 같이 복수로부터 단수로 그리고/또는 단수로부터 복수로 해석할 수 있다. 명확성을 위해 다양한 단수/복수 치환(permutation)이 본 명세서에서 명시적으로 기재될 수 있다.
대체적으로, 본 명세서에서 그리고 특히 첨부된 청구항들(예컨대, 첨부된 청구항들의 본문들)에서 사용되는 용어들이 대체적으로 "개방형(open)" 용어들로서 의도된다는 것이 당업자에 의해 이해될 것이다(예컨대, 용어 "포함하는(including)"은 "포함하지만 이에 제한되지 않는(including but not limited to)"으로서 해석되어야 하고, 용어 "갖는(having)"은 "적어도 갖는(having at least)"으로서 해석되어야 하고, 용어 "포함한다(includes)"는 "포함하지만 이에 제한되지 않는다(includes but is not limited to)"로서 해석되어야 하는 등이다). 특정 수의 도입된 청구항 열거가 의도되는 경우, 그러한 의도가 청구항에 명시적으로 열거될 것이고, 그러한 열거가 없는 경우, 그러한 의도가 존재하지 않는다는 것이 당업자에 의해 추가로 이해될 것이다. 예를 들어, 하나의 항목만이 의도되는 경우, 용어 "단일" 또는 유사한 언어가 사용될 수 있다. 이해에 대한 보조로서, 이하의 첨부된 청구항들 및/또는 본 명세서에서의 설명들은 청구항 열거들을 도입하기 위해 "적어도 하나" 및 "하나 이상"이라는 도입 문구들의 사용을 포함할 수 있다. 그러나, 동일한 청구항이 도입 문구들 "하나 이상" 또는 "적어도 하나" 및 "a" 또는 "an"과 같은 부정 관사들(예컨대, "a" 및/또는 "an"은 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 함)을 포함할 때에도, 그러한 문구들의 사용은 부정관사 "a" 또는 "an"에 의한 청구항 열거의 도입이 그러한 도입된 청구항 열거를 포함하는 임의의 특정의 청구항을 단지 하나의 그러한 열거를 포함하는 실시예들로 제한한다는 것을 암시하는 것으로 해석되어서는 안 된다. 청구항 열거들을 도입하는 데 사용되는 정관사들의 사용에 대해서도 마찬가지이다. 추가로, 특정 수의 도입된 청구항 열거가 명시적으로 열거되더라도, 당업자는 그러한 열거가 적어도 열거된 수를 의미하는 것으로 해석되어야 한다는 것을 인식할 것이다(예컨대, 다른 수식어들을 갖지 않는 "2개의 열거"인 기본 열거(bare recitation)는 적어도 2개의 열거들 또는 2개 이상의 열거들을 의미함).
더욱이, "A, B, 및 C 등 중 적어도 하나"와 유사한 관습적 표현(convention)이 사용되는 그러한 인스턴스들에서, 대체적으로, 그러한 구조는 당업자가 관습적 표현을 이해하는 의미로 의도된다(예컨대, "A, B, 및 C 중 적어도 하나를 갖는 시스템"은 A만을, B만을, C만을, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 그리고/또는 A, B, 및 C를 함께, 등을 갖는 시스템들을 포함하지만 이들로 제한되지 않을 것임). "A, B, 또는 C 등 중 적어도 하나"와 유사한 관습적 표현이 사용되는 그러한 인스턴스들에서, 대체적으로, 그러한 구조는 당업자가 관습적 표현을 이해하는 의미로 의도된다(예컨대, "A, B, 또는 C 중 적어도 하나를 갖는 시스템"은 A만을, B만을, C만을, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 그리고/또는 A, B, 및 C를 함께, 등을 갖는 시스템들을 포함하지만 이들로 제한되지 않을 것임). 설명에서든, 청구항들에서든, 또는 도면들에서든, 2개 이상의 대안적 용어들을 제시하는 사실상 임의의 이접 접속어(disjunctive word) 및/또는 이접 접속구(disjunctive phrase)가 용어들 중 하나, 용어들 중 어느 하나, 또는 용어들 둘 모두를 포함하는 가능성들을 고려하도록 이해되어야 한다는 것이 당업자에 의해 추가로 이해될 것이다. 예를 들어, 문구 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"의 가능성들을 포함하는 것으로 이해될 것이다. 게다가, 본 명세서에 사용된 바와 같이, 용어들 "~중 임의의 것"에 이어지는 복수의 항목들 및/또는 복수의 항목들의 카테고리들의 목록은 항목들 및/또는 항목들의 카테고리들 "~중 임의의 것", "~의 임의의 조합", "~중 임의의 다수", 및/또는 "~중 다수들의 임의의 조합"을, 개별적으로 또는 다른 항목들 및/또는 다른 항목들의 카테고리들과 함께, 포함하는 것으로 의도된다. 더욱이, 본 명세서에서 사용되는 바와 같이, 용어 "세트" 또는 "그룹"은, 제로를 포함한, 임의의 수의 항목들을 포함하는 것으로 의도된다. 추가적으로, 본 명세서에서 사용되는 바와 같이, 용어 "수"는, 제로를 포함한, 임의의 수를 포함하는 것으로 의도된다.
추가로, 본 개시내용의 특징들 또는 태양들이 마쿠쉬(Markush) 그룹들의 관점에서 기술되는 경우, 당업자는 본 개시내용이 또한 그에 의해 마쿠쉬 그룹의 임의의 개별 멤버 또는 멤버들의 서브그룹의 관점에서 기술됨을 인식할 것이다.
당업자에 의해 이해될 것으로서, 서면 설명을 제공하는 관점에서와 같은, 임의의 및 모든 목적들을 위해, 본 명세서에 개시된 모든 범위들은 임의의 및 모든 가능한 서브범위들 및 이들의 서브범위들의 조합을 또한 포괄한다. 임의의 열거된 범위는 동일한 범위가 적어도 동일한 1/2, 1/3, 1/4, 1/5, 1/10 등으로 나누어지는 것을 충분히 기술하고 가능하게 하는 것으로 용이하게 인식될 수 있다. 비제한적인 예로서, 본 명세서에서 논의된 각각의 범위는 하위 1/3, 중간 1/3 및 상위 1/3 등으로 쉽게 나누어질 수 있다. 당업자에 의해 또한 이해될 것인 바와 같이, "최대(up to)", "적어도(at least)", "초과(greater than)", "미만(less than)" 등과 같은 모든 표현은 열거된 수를 포함하고, 위에서 논의된 바와 같이 서브범위들로 후속적으로 나누어질 수 있는 범위들을 지칭한다. 마지막으로, 당업자에 의해 이해될 바로서, 범위는 각각의 개별 멤버를 포함한다. 따라서, 예를 들어, 1 내지 3개의 셀들을 갖는 그룹은 1개, 2개 또는 3개의 셀들을 갖는 그룹들을 지칭한다. 유사하게, 1 내지 5개의 셀들을 갖는 그룹은 1개, 2개, 3개, 4개, 또는 5개의 셀들을 갖는 그룹들을 지칭하고, 기타 등등이다.
더욱이, 청구항들은, 그러한 취지로 언급되지 않는 한, 제공된 순서 또는 요소들로 제한되는 것으로 읽혀지지 않아야 한다. 추가로, 임의의 청구항에서 용어들 "~하기 위한 수단"을 사용하는 것은 35 U.S.C. §112, ¶6 또는 기능식 청구항(means-plus-function claim) 포맷을 인보크하도록 의도되고, 용어들 "~하기 위한 수단"을 갖지 않는 임의의 청구항은 그렇게 의도되지 않는다.
소프트웨어와 연관된 프로세서는 무선 송수신 유닛(WTRU), 사용자 장비(UE), 단말기, 기지국, 이동성 관리 엔티티(MME) 또는 진화된 패킷 코어(EPC), 또는 임의의 호스트 컴퓨터에 사용하기 위한 무선 주파수 송수신기를 구현하는 데 사용될 수 있다. WTRU는 소프트웨어 정의 무선 장치(Software Defined Radio, SDR) 및 카메라, 비디오 카메라 모듈, 비디오폰, 스피커폰, 진동 디바이스, 스피커, 마이크로폰, 텔레비전 송수신기, 핸즈 프리 헤드셋, 키보드, 블루투스® 모듈, 주파수 변조(FM) 무선 유닛, 근거리 무선 통신(Near Field Communication, NFC) 모듈, 액정 디스플레이(LCD) 디스플레이 유닛, 유기 발광 다이오드(OLED) 디스플레이 유닛, 디지털 음악 플레이어, 미디어 플레이어, 비디오 게임 플레이어 모듈, 인터넷 브라우저 및/또는 임의의 무선 근거리 네트워크(WLAN) 또는 초광대역(Ultra Wide Band, UWB) 모듈과 같은 다른 컴포넌트들을 포함하는 하드웨어 및/또는 소프트웨어로 구현되는 모듈들과 함께 사용될 수 있다.
본 발명은 통신 시스템들의 관점에서 기술되었지만, 시스템들은 마이크로프로세서들/범용 컴퓨터들(도시되지 않음) 상에서 소프트웨어로 구현될 수 있다는 것이 고려된다. 소정 실시예들에서, 다양한 컴포넌트들의 기능들 중 하나 이상은 범용 컴퓨터를 제어하는 소프트웨어로 구현될 수 있다.
또한, 본 발명이 특정 실시예를 참조하여 본 명세서에 예시되고 기술되지만, 본 발명은 도시된 상세사항에 제한되는 것으로 의도되지 않는다. 오히려, 청구범위의 동등물의 범주 및 범위 내에서 그리고 본 발명을 벗어나지 않고서 상세사항들에서 다양한 수정들이 이루어질 수 있다.
본 개시내용 전반에 걸쳐, 당업자는 소정의 대표적인 실시예들이 대안적으로 또는 다른 대표적인 실시예들과 조합하여 사용될 수 있음을 이해한다.

Claims (30)

  1. 클라이언트 디바이스에서 구현되는 방법으로서,
    - 클라우드 서버로부터, 상기 클라우드 서버 상에서 실행되는 게임의 비디오 프레임들을 수신하는 단계;
    - 상기 실행되는 게임과 연관된 소비 레이트(consumption rate) 정보를 수신하는 단계 - 상기 소비 레이트 정보는, 상기 클라이언트 디바이스의 적어도 하나의 입력 디바이스로부터의 수신된 입력 정보와 연관되고, 상기 클라우드 서버가 상기 적어도 하나의 입력 디바이스로부터의 상기 수신된 입력 정보를 프로세싱하는 레이트를 표현함 -; 및
    - 상기 수신된 소비 레이트 정보에 기초하여 상기 수신된 입력 정보가 상기 클라우드 서버로 송신되는 입력 레이트를 적응시키는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 소비 레이트 정보를 수신하는 단계는, 상기 클라우드 서버로부터 수신된 상기 비디오 프레임들을 수신 및 디코딩하는 것에 기초하여 상기 클라이언트 디바이스에서의 소비 레이트 값을 결정하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 소비 레이트 정보는 상기 클라우드 서버로부터 수신되고, 상기 소비 레이트 정보는 상기 클라우드 서버에서 결정된 소비 레이트 값을 표시하고, 상기 소비 레이트 값은 상기 클라우드 서버가 상기 수신된 입력 정보를 프로세싱하는 상기 레이트를 표시하는, 방법.
  4. 제1항에 있어서, 상기 소비 레이트 정보는 상기 클라우드 서버로부터 수신되고, 상기 수신된 소비 레이트 정보에 기초하여 상기 클라이언트 디바이스에서 소비 레이트 값이 결정되고, 상기 소비 레이트 값은 상기 클라우드 서버가 상기 수신된 입력 정보를 프로세싱하는 상기 레이트를 표현하는, 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 수신된 입력 정보가 상기 클라우드 서버로 송신되는 상기 입력 레이트를 적응시키는 단계는, (i) 상기 수신된 입력 정보의 전송 레이트 및 (ii) 상기 수신된 입력 정보의 폴링 레이트 중 임의의 것을 설정함으로써 상기 입력 레이트를 상기 소비 레이트 값에 동기화하는 단계를 포함하는, 방법.
  6. 제4항 또는 제5항에 있어서, 상기 소비 레이트 정보는,
    - 상기 수신된 입력 정보가 상기 실행되는 게임에 의해 프로세싱되는 입력 소비 레이트,
    - 상기 실행되는 게임이 게임 렌더링 스레드에 의해 렌더링되는 게임 프레임 레이트,
    - 상기 실행되는 게임의 상기 비디오 프레임들이 상기 클라우드 서버 상에서 인코딩되고 캡처되는 것 중 임의의 것인 서버 프레임 레이트, 및
    - 상기 실행되는 게임과 연관된 입력 큐의 채움 비율(filling ratio) 중 임의의 것을 표시하는, 방법.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 입력 이벤트 및 프레임 렌더링 이벤트 중 임의의 것의 상기 클라우드 서버에서의 발생을 표시하는 타임스탬프를 포함하는, 방법.
  8. 제6항 또는 제7항에 있어서, 상기 소비 레이트 정보는, 상기 입력 소비 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트 및 상기 입력 큐의 상기 채움 비율 중 임의의 것의, 시간 간격에 걸친, 평균, 중앙값(median), 최댓값(maximum), 최솟값(minimum) 및 백분위수(percentiles) 중 임의의 것을 표시하는, 방법.
  9. 제6항 내지 제8항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 입력 소비 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트, 및 상기 입력 큐의 상기 채움 비율 중 임의의 것에 대한 예측된 값을 표시하는, 방법.
  10. 제3항 내지 제9항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 규칙적으로 수신되는, 방법.
  11. 제6항 내지 제9항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 입력 소비 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트 및 상기 채움 비율 중 임의의 것이 변경되는 조건으로 수신되는, 방법.
  12. 제3항 내지 제11항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 실행되는 게임의 상기 비디오 프레임들을 포함하는 비디오 스트림의 메타데이터에 캡슐화되는, 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 클라우드 서버로부터, 상기 클라우드 서버가 추가의 수신된 입력 정보를 프로세싱할 예측된 레이트를 표현하는 예측된 소비 레이트 정보를 수신하는 단계를 추가로 포함하고, 상기 입력 레이트는 상기 예측된 소비 레이트 정보에 기초하여 추가로 적응되는, 방법.
  14. 제13항에 있어서, 상기 예측된 소비 레이트 정보는 상기 클라우드 서버에서 결정된 예측된 소비 레이트 값을 표시하고, 상기 예측된 소비 레이트 값은 상기 클라우드 서버가 상기 추가의 수신된 입력 정보를 프로세싱할 상기 예측된 레이트를 표시하는, 방법.
  15. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 클라우드 서버로부터 수신된 이전의 소비 레이트 정보의 이력에 기초하여 상기 클라이언트 디바이스에서 예측된 소비 레이트 값이 결정되는, 방법.
  16. 제15항에 있어서, 상기 이전의 소비 레이트 정보의 이력은 상기 클라우드 서버의 부하를 추가로 표시하는, 방법.
  17. 클라우드 서버의 인스턴스에서 구현되는 방법으로서,
    - 클라이언트 디바이스로, 상기 클라우드 서버의 상기 인스턴스 상에서 실행되는 게임의 비디오 프레임들을 송신하는 단계;
    - 상기 클라이언트 디바이스로부터, 상기 실행되는 게임에 대한 입력 정보를 수신하는 단계; 및
    - 상기 클라이언트 디바이스로, 상기 클라우드 서버의 상기 인스턴스가 상기 수신된 입력 정보를 프로세싱하는 프로세싱 레이트를 표현하는 소비 레이트 정보를 송신하는 단계를 포함하고;
    상기 입력 정보는 상기 프로세싱 레이트에 따라 달라지는 수신 레이트로 수신되는, 방법.
  18. 제17항에 있어서, 상기 소비 레이트 정보는,
    - 상기 수신된 입력 정보가 상기 클라우드 서버의 상기 인스턴스에 의해 프로세싱되는 상기 프로세싱 레이트,
    - 상기 실행되는 게임이 상기 클라우드 서버의 상기 인스턴스에 의해 렌더링되는 게임 프레임 레이트,
    - 상기 실행되는 게임의 상기 비디오 프레임들이 상기 클라우드 서버의 상기 인스턴스에 의해 인코딩되고 캡처되는 것 중 임의의 것인 서버 프레임 레이트, 및
    - 상기 실행되는 게임과 연관된 입력 큐의 채움 비율 중 임의의 것을 표시하는, 방법.
  19. 제17항 또는 제18항에 있어서, 상기 소비 레이트 정보는 입력 이벤트 및 프레임 렌더링 이벤트 중 임의의 것의 상기 클라우드 서버의 상기 인스턴스에서의 발생을 표시하는 타임스탬프를 포함하는, 방법.
  20. 제18항 또는 제19항에 있어서, 상기 소비 레이트 정보는, 상기 프로세싱 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트 및 상기 입력 큐의 상기 채움 비율 중 임의의 것의, 시간 간격에 걸친, 평균, 중앙값, 최댓값, 최솟값 및 백분위수 중 임의의 것을 표시하는, 방법.
  21. 제18항 내지 제20항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 프로세싱 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트, 및 상기 입력 큐의 상기 채움 비율 중 임의의 것에 대한 예측된 값을 표시하는, 방법.
  22. 제17항 내지 제21항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 규칙적으로 송신되는, 방법.
  23. 제18항 내지 제21항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 프로세싱 레이트, 상기 게임 프레임 레이트, 상기 서버 프레임 레이트 및 상기 채움 비율 중 임의의 것이 변경되는 조건으로 송신되는, 방법.
  24. 제17항 내지 제23항 중 어느 한 항에 있어서, 상기 소비 레이트 정보는 상기 실행되는 게임의 상기 비디오 프레임들을 포함하는 비디오 스트림의 메타데이터에 캡슐화되는, 방법.
  25. 제17항 내지 제24항 중 어느 한 항에 있어서, 이전의 소비 레이트 정보의 이력에 기초하여 예측된 소비 레이트 값을 결정하는 단계를 추가로 포함하고, 상기 예측된 소비 레이트 값은 상기 클라우드 서버의 상기 인스턴스가 추가의 수신된 입력 정보를 프로세싱할 예측된 프로세싱 레이트를 표시하는, 방법.
  26. 제25항에 있어서, 상기 송신된 소비 레이트 정보는 상기 결정된 예측된 소비 레이트 값을 표시하는, 방법.
  27. 제17항 내지 제26항 중 어느 한 항에 있어서, 상기 클라이언트 디바이스로, 이전의 소비 레이트 정보의 이력을 송신하는 단계를 추가로 포함하는, 방법.
  28. 제27항에 있어서, 상기 이전의 소비 레이트 정보의 이력은 상기 클라우드 서버의 부하를 추가로 표시하는, 방법.
  29. 제1항 내지 제28항 중 어느 한 항에 따른 방법을 수행하도록 구성된, 송신기, 수신기, 프로세서 및 메모리 중 임의의 것을 포함하는 회로부를 포함하는 장치.
  30. 제1항 내지 제28항 중 어느 한 항에 따른 방법을 실행하기 위한 프로세서에 의해 실행가능한 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램 제품.
KR1020237025746A 2021-01-28 2022-01-20 클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들 KR20230136128A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP21305110 2021-01-28
EP21305110.5 2021-01-28
PCT/EP2022/051166 WO2022161834A1 (en) 2021-01-28 2022-01-20 Method, apparatuses and systems directed to adapting user input in cloud gaming

Publications (1)

Publication Number Publication Date
KR20230136128A true KR20230136128A (ko) 2023-09-26

Family

ID=74553757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237025746A KR20230136128A (ko) 2021-01-28 2022-01-20 클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들

Country Status (5)

Country Link
US (1) US20240108980A1 (ko)
EP (1) EP4284526A1 (ko)
KR (1) KR20230136128A (ko)
CN (1) CN116745012A (ko)
WO (1) WO2022161834A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102665231B1 (ko) * 2023-11-27 2024-05-21 주식회사 낭만 클라이언트 단말들과 서버 간에 데이터를 공유하는 통신 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12115443B2 (en) 2020-03-03 2024-10-15 Backbone Labs, Inc. Game controller with magnetic wireless connector
US20240149151A1 (en) 2022-11-04 2024-05-09 Backbone Labs, Inc. System and Method for Rich Content Browsing Multitasking on Device Operating Systems with Multitasking Limitations
US11662855B1 (en) * 2022-11-15 2023-05-30 Backbone Labs, Inc. System and method for adjusting input polling rate in gaming input devices
US12070678B2 (en) 2022-12-21 2024-08-27 Backbone Labs, Inc. Dynamically changing button indicia for a game controller

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
TWI649656B (zh) * 2013-12-26 2019-02-01 日商史克威爾 艾尼克斯控股公司 顯像系統、控制方法及儲存媒體
US10741143B2 (en) * 2017-11-28 2020-08-11 Nvidia Corporation Dynamic jitter and latency-tolerant rendering
US11077364B2 (en) * 2018-04-02 2021-08-03 Google Llc Resolution-based scaling of real-time interactive graphics
US10963365B2 (en) * 2019-03-20 2021-03-30 Electronic Arts Inc. System for testing command execution latency within an application

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102665231B1 (ko) * 2023-11-27 2024-05-21 주식회사 낭만 클라이언트 단말들과 서버 간에 데이터를 공유하는 통신 방법

Also Published As

Publication number Publication date
EP4284526A1 (en) 2023-12-06
US20240108980A1 (en) 2024-04-04
WO2022161834A1 (en) 2022-08-04
CN116745012A (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
KR20230136128A (ko) 클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들
CN113326088B (zh) 同步具有远程设备输入的流应用环境的方法、系统和装置
US10771565B2 (en) Sending application input commands over a network
WO2019237821A1 (zh) 虚拟场景的场景图像传输方法、装置、计算机设备及计算机可读存储介质
US20200077124A1 (en) Methods, devices, and systems for providing panoramic video content to a mobile device from an edge server
CN108079578B (zh) 一种基于云游戏的码率调整方法、装置及存储介质
CN114401447B (zh) 一种视频卡顿预测方法、装置、设备和介质
US20140187331A1 (en) Latency reduction by sub-frame encoding and transmission
CN113676741B (zh) 数据传输方法、装置、存储介质及电子设备
JP2022540137A (ja) リアルタイム通信における強化学習
WO2019105340A1 (zh) 视频传输方法、装置、系统及计算机可读存储介质
US11924255B2 (en) Data transmission method and apparatus, server, storage medium, and program product
CN111225209A (zh) 视频数据推流方法、装置、终端及存储介质
KR20230058493A (ko) 데이터 전송 방법 및 장치, 컴퓨터가 판독 가능한 저장 매체, 전자 디바이스 그리고 컴퓨터 프로그램 제품
CN115834556B (zh) 数据传输方法、系统、设备、存储介质及程序产品
US20230041242A1 (en) Performing network congestion control utilizing reinforcement learning
KR20210064239A (ko) 멀티 플레이어 프로그램에서 높은 입력 레이턴시를 유도하는 기법
US20120136988A1 (en) Dynamic bandwidth optimization for remote input
CN110192181B (zh) 具有丢失或者延迟的输入事件的恢复的流应用环境
US11051206B2 (en) Wi-fi optimization for untethered multi-user virtual reality
US10846042B2 (en) Adaptive rendering for untethered multi-user virtual reality
CN116962179A (zh) 网络传输优化方法、装置、计算机可读介质及电子设备
CN114979799B (zh) 一种全景视频处理方法、装置、设备和存储介质
CN116192766A (zh) 用于调整数据发送速率和训练拥塞控制模型的方法及装置
US12126844B2 (en) Methods, apparatuses, readable media and electronic devices for live stream interaction