KR20220097907A - 사용자 입력의 기계 학습 예측을 사용하는 레이턴시 보상 - Google Patents
사용자 입력의 기계 학습 예측을 사용하는 레이턴시 보상 Download PDFInfo
- Publication number
- KR20220097907A KR20220097907A KR1020227016566A KR20227016566A KR20220097907A KR 20220097907 A KR20220097907 A KR 20220097907A KR 1020227016566 A KR1020227016566 A KR 1020227016566A KR 20227016566 A KR20227016566 A KR 20227016566A KR 20220097907 A KR20220097907 A KR 20220097907A
- Authority
- KR
- South Korea
- Prior art keywords
- game
- data
- user input
- machine learning
- player
- Prior art date
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 186
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000012549 training Methods 0.000 claims description 61
- 230000033001 locomotion Effects 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 9
- 238000002372 labelling Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 35
- 230000009471 action Effects 0.000 abstract description 18
- 230000008447 perception Effects 0.000 abstract description 6
- 210000003811 finger Anatomy 0.000 description 24
- 238000010586 diagram Methods 0.000 description 13
- 230000006399 behavior Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000003825 pressing Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000005259 measurement Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 239000012528 membrane Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000004020 conductor Substances 0.000 description 3
- 210000003128 head Anatomy 0.000 description 3
- 239000002184 metal Substances 0.000 description 3
- 229910052751 metal Inorganic materials 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000002787 reinforcement Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 206010049816 Muscle tightness Diseases 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002238 attenuated effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000000537 electroencephalography Methods 0.000 description 2
- 230000008921 facial expression Effects 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 238000002599 functional magnetic resonance imaging Methods 0.000 description 2
- 210000004247 hand Anatomy 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004091 panning Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000036544 posture Effects 0.000 description 2
- 231100000430 skin reaction Toxicity 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000272525 Anas platyrhynchos Species 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 241000272194 Ciconiiformes Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004497 NIR spectroscopy Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 230000036760 body temperature Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002567 electromyography Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 229910052760 oxygen Inorganic materials 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 230000010344 pupil dilation Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000029058 respiratory gaseous exchange Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000000106 sweat gland Anatomy 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/67—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/332—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using wireless networks, e.g. cellular phone networks
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/335—Interconnection 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/85—Providing additional services to players
- A63F13/86—Watching games played by other players
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4781—Games
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
훈련된 기계 학습 모델(들)은, 플레이어의 동작과, 플레이어 동작과 관련된 비디오 게임 콘텐츠의 플레이어의 인식 사이의 레이턴시를 보상하기 위해 비디오 게임을 플레이하는 동안 특정 유형의 사용자 입력이 플레이어의 게임 컨트롤러에 제공될 확률을 나타내는 스코어를 결정하기 위해서 사용된다. 예시적인 프로세스에서, 클라이언트 머신으로부터 수신된 센서 데이터 및/또는 비디오 게임으로부터 수신된 게임 상태 데이터는 훈련된 기계 학습 모델(들)에 대한 입력으로서 제공되고, 스코어는 이로부터의 출력으로서 제공되며, 이 스코어는 한 유형의 사용자 입력이 플레이어의 게임 컨트롤러에 제공될 확률에 관한 것이다. 이러한 방식으로, 한 유형의 사용자 입력에 대응되는 게임 제어 데이터는 스코어에 기반하여 생성될 수 있고, 실제 게임 제어 데이터가 수신되기도 전에 입력으로서 비디오 게임에 제공될 수 있다.
Description
관련 출원의 교차 참조
본 출원은, 2019년 11월 19일자로 출원된 발명의 명칭이 "LATENCY COMPENSATION USING MACHINE-LEARNED PREDICTION OF USER INPUT"인 미국 특허 출원 제16/688,833호의 우선권을 주장하는 PCT 출원이며, 이 미국 출원은 그 전체가 본원에 인용되어 포함된다.
클라이언트 머신 및 무선 통신 프로토콜의 기능 증대와 결합하여 광역 네트워크 통신의 일정하거나 거의 일정한 가용성은, 플레이어가 원격 서버 및 가정 내 비디오 게임 스트리밍 플랫폼에서 실행되는 비디오 게임을 플레이하기 위해서 "씬(thin) 클라이언트"를 사용하는 클라우드 기반 비디오 게임 스트리밍 플랫폼을 포함하여, 네트워크로 연결된 비디오 게임 플랫폼의 인기를 높였다. 네트워크로 연결된 비디오 게임 플랫폼의 발전에도 불구하고, 다양한 요인들로 인해 비디오 게임에서의 플레이어의 동작과 플레이어의 인식 사이에 여전히 레이턴시(latency)가 발생될 수 있다. 예를 들어, 비디오 게임 스트리밍 플랫폼에서, 네트워크 정체는 플레이어의 동작과 플레이어의 인식 사이에 현저한 지연을 유발할 수 있다. 플레이어 동작과 플레이어 인식 사이의 레이턴시에 기여할 수 있는 다른 요인들은 네트워크의 데이터 전송 속도, 사용 가능한 컴퓨팅 리소스(예: 처리 리소스, 메모리 리소스, 디스플레이 리소스 등)의 대역폭 또는 용량, 이러한 컴퓨팅 리소스의 활용, 및/또는 비디오 게임 자체의 복잡성(예: 복잡한 그래픽이 있는 더 데이터 집약적인 비디오 게임은 비교적 단순한 그래픽이 있는 덜 데이터 집약적인 비디오 게임에 비해 더 많은 레이턴시를 경험하는 경향이 있음)이다. 1인칭 슈팅 게임과 같은 일부 비디오 게임 장르는 레이턴시에 매우 민감하며, 이는 레이턴시가 발생될 때마다 플레이 품질을 심각하게 저하시킨다.
데드 레코닝(dead reckoning)은 네트워크로 연결된 비디오 게임 플랫폼에서 관찰되는 레이턴시를 보상하려고 꾀하는 기존 접근 방식의 일례이다. 서버 컴퓨터는 데드 레코닝을 사용하여, 일정 시간 기간에 걸쳐(예: 마지막 200 밀리초에 걸쳐) 플레이어가 제어하는 캐릭터의 과거 위치, 속도, 및/또는 가속도를 결정하고, 이 과거 데이터는, 레이턴시를 보상하기 위해, 플레이어가 제어하는 캐릭터의 향후 위치를 예측하는 데 사용될 수 있다. 그러나, 종종 부정확한 예측을 초래하는 데드 레코닝은 향후의 플레이어 동작을 예측하기 위한 비교적 정교하지 않은 접근 방식으로 남아 있고, 따라서 오늘날의 네트워크로 연결된 비디오 게임 플랫폼에서는 드물게 사용된다. 향후의 플레이어 동작을 정확하게 예측하기 위한 실행 가능한 메커니즘이 없다면, 레이턴시는 실행 가능한 방식으로 보상될 수 없어서, 많은 비디오 게임의 재생 품질은 레이턴시가 발생될 때마다 계속해서 저하된다. 본원에서 이루어진 개시내용은 이러한 고려 사항 및 다른 고려 사항과 관련하여 제시된다.
상세한 설명은 첨부된 도면을 참조하여 설명된다. 도면에서, 도면 부호의 맨 왼쪽 숫자(들)는 이 도면 부호가 처음으로 나타나는 도면을 식별한다. 상이한 도면들에서의 동일한 도면 부호의 사용은 유사하거나 동일한 구성요소 또는 특징부를 나타낸다.
도 1은, 플레이어의 비디오 게임 컨트롤러에 대한 사용자 입력을 예측하기 위해, 그리고 레이턴시를 보상하도록 대응되는 게임 제어 데이터를 사전에 생성하기 위해 기계 학습 모델(들)을 훈련시키고 사용하도록 구성된 컴퓨팅 시스템을 포함하는 예시적인 환경을 예시하는 도면이다.
도 2는 훈련된 기계 학습 모델(들)을 사용하여 게임 컨트롤러에 대한 사용자 입력을 예측할 목적으로 원격 컴퓨팅 시스템에 다른 데이터 중에서 센서 데이터를 제공하도록 구성된 게임 컨트롤러의 예시적인 구성요소를 예시하는 블록도를 도시한다.
도 3은 훈련된 기계 학습 모델(들)을 사용하여 게임 컨트롤러에 대한 사용자 입력을 예측하도록 구성된 컴퓨팅 시스템의 예시적인 구성요소를 예시하는 블록도를 도시한다.
도 4는 사용자 입력 유형이 플레이어의 게임 컨트롤러에 제공될 확률을 예측하도록 기계 학습 모델(들)을 훈련시키기 위한 예시적인 프로세스의 흐름도이다.
도 5는, 플레이어의 게임 컨트롤러에 대한 사용자 입력을 예측하기 위해 훈련된 기계 학습 모델(들)을 활용하고, 레이턴시를 보상하도록 사전에 게임 제어 데이터를 생성하기 위해 사용자 입력의 기계 학습된 예측을 사용하기 위한 예시적인 프로세스의 흐름도이다.
도 6은, 컴퓨터 네트워크의 레이턴시를 측정하고, 측정된 레이턴시에 기반하여 게임 컨트롤러에 대한 사용자 입력을 예측하는 데 사용할 다수의 훈련된 기계 학습 모델 중 하나를 선택하기 위한 예시적인 프로세스의 흐름도이다.
도 7은, 예측 오차를 결정하기 위해 사용자 입력의 기계 학습 예측에 기반하여 사전에 생성된 게임 제어 데이터와 실제 게임 제어 데이터를 비교하고, 모델(들)의 성능을 검증하는 목적을 위해 예측 오차를 기록(log)하기 위한 예시적인 프로세스의 흐름도이다.
도 1은, 플레이어의 비디오 게임 컨트롤러에 대한 사용자 입력을 예측하기 위해, 그리고 레이턴시를 보상하도록 대응되는 게임 제어 데이터를 사전에 생성하기 위해 기계 학습 모델(들)을 훈련시키고 사용하도록 구성된 컴퓨팅 시스템을 포함하는 예시적인 환경을 예시하는 도면이다.
도 2는 훈련된 기계 학습 모델(들)을 사용하여 게임 컨트롤러에 대한 사용자 입력을 예측할 목적으로 원격 컴퓨팅 시스템에 다른 데이터 중에서 센서 데이터를 제공하도록 구성된 게임 컨트롤러의 예시적인 구성요소를 예시하는 블록도를 도시한다.
도 3은 훈련된 기계 학습 모델(들)을 사용하여 게임 컨트롤러에 대한 사용자 입력을 예측하도록 구성된 컴퓨팅 시스템의 예시적인 구성요소를 예시하는 블록도를 도시한다.
도 4는 사용자 입력 유형이 플레이어의 게임 컨트롤러에 제공될 확률을 예측하도록 기계 학습 모델(들)을 훈련시키기 위한 예시적인 프로세스의 흐름도이다.
도 5는, 플레이어의 게임 컨트롤러에 대한 사용자 입력을 예측하기 위해 훈련된 기계 학습 모델(들)을 활용하고, 레이턴시를 보상하도록 사전에 게임 제어 데이터를 생성하기 위해 사용자 입력의 기계 학습된 예측을 사용하기 위한 예시적인 프로세스의 흐름도이다.
도 6은, 컴퓨터 네트워크의 레이턴시를 측정하고, 측정된 레이턴시에 기반하여 게임 컨트롤러에 대한 사용자 입력을 예측하는 데 사용할 다수의 훈련된 기계 학습 모델 중 하나를 선택하기 위한 예시적인 프로세스의 흐름도이다.
도 7은, 예측 오차를 결정하기 위해 사용자 입력의 기계 학습 예측에 기반하여 사전에 생성된 게임 제어 데이터와 실제 게임 제어 데이터를 비교하고, 모델(들)의 성능을 검증하는 목적을 위해 예측 오차를 기록(log)하기 위한 예시적인 프로세스의 흐름도이다.
본원에는, 무엇보다도, 플레이어 동작과 플레이어 인식 사이의 레이턴시를 보상하기 위해, 훈련된 기계 학습 모델(들)을 사용하고, 해당 게임 제어 데이터를 능동적으로 생성하는, 비디오 게임 컨트롤러에 대한 사용자 입력을 예측하기 위한 기술, 장치 및 시스템이 설명된다. 개시된 기술은 원격 컴퓨팅 시스템에 의해, 적어도 부분적으로, 구현될 수 있으며, 이 컴퓨팅 시스템은 사용자 커뮤니티에 비디오 게임 서비스를 제공하여, 컴퓨팅 시스템으로부터의 비디오 게임에 액세스하도록 구성된 클라이언트 머신을 사용하여 비디오 게임을 플레이하도록 한다. 이러한 클라이언트 머신은 원격 컴퓨팅 시스템으로부터 수신된(예를 들어, 다운로드된, 스트리밍된 등) 비디오 게임을 실행하고/하거나 이의 컨텐츠를 출력하도록 구성되는 클라이언트 애플리케이션을 개별적으로 설치할 수 있다. 이러한 비디오 게임 플랫폼은 커뮤니티의 등록된 사용자가 "플레이어"로서 비디오 게임을 플레이할 수 있게 한다. 예를 들어, 플레이어는 클라이언트 애플리케이션을 로딩하고, 등록된 사용자 계정으로 로그인하고, 원하는 비디오 게임을 선택하고, 비디오 게임을 플레이할 수 있으며, 이 비디오 게임은 클라이언트 애플리케이션을 통해 플레이어의 클라이언트 머신에서 실행될 수 있거나, 또는 원격 컴퓨팅 시스템에서 실행될 수 있어, 비디오 게임 데이터가 출력을 위해 클라이언트 머신으로 스트리밍된다.
상술된 사용자가 이러한 비디오 게임 플랫폼에 액세스하여 이를 사용할 때마다, 데이터는 원격 컴퓨팅 시스템에 의해 수집될 수 있고, 이러한 데이터는 원격 컴퓨팅 시스템에 의해 유지될 수 있다. 예를 들어, 비디오 게임의 과거 세션 동안 발생된 비디오 게임의 게임 상태(예: 플레이어 움직임, 게임 지도에서의 위치, 캐릭터 클래스, 무기 등)를 포함하는 게임 상태 데이터는 원격 컴퓨팅 시스템에 의해 수집되고 유지될 수 있다. 추가적으로 또는 대안적으로, 게임 컨트롤러에 의해 생성되고 과거 비디오 게임 세션 동안 클라이언트 머신에서 수신된 센서 데이터는 원격 컴퓨팅 시스템에 의해서 수집되고 유지될 수 있다. 오늘날의 게임 컨트롤러는 점점 더 많은 센서(예: 자이로스코프, 가속도계, 터치 센서, 압력 센서 등)를 구비하기 때문에, 이러한 센서에 의해 생성된 결과적인 센서 데이터는, 본원에서 설명된 바와 같이, 레이턴시 보상을 위해 이러한 게임 컨트롤러에 대한 사용자 입력을 예측할 목적으로 활용될 수 있다. 예를 들어, 플레이어가 비디오 게임 플랫폼을 통해 비디오 게임을 플레이할 때마다, 플레이어는 비디오 게임의 양상(들)을 제어하기 위해서 게임 컨트롤러를 사용할 수 있다. 주어진 게임 컨트롤러는 다른 가능한 센서 중에서 자이로스코프(들), 가속도계(들), 및/또는 터치 센서(들)와 같은 하나 이상의 센서를, 이에 한정됨 없이, 포함할 수 있다. 터치 센서(들)(예: 용량성 패드(들))는 디바이스의 표면 아래 또는 표면 상에, 그리고/또는 손가락 조작식 컨트롤 내부 또는 상에 배치될 수 있다. 이 터치 센서(들)는 표면 또는 손가락 조작식 컨트롤에 대한 손가락(들)의 근접도를 검출하도록 구성될 수 있고, 응답으로, 터치 센서(들)는 터치 센서에 대한 손가락(들)의 근접도를 나타내는 센서 데이터를 생성할 수 있다. 다른 실시예로서, 게임 컨트롤러의 하우징에 장착된 자이로스코프(들) 및/또는 가속도계(들)는 게임 컨트롤러의 상이한 방향으로의 움직임(예: 이동 - 병진, 회전 및/또는 틸팅 움직임 등)을 검출할 수 있고, 응답으로, 자이로스코프(들) 및/또는 가속도계(들)는 이 움직임의 특성(들)을 나타내는 센서 데이터를 생성할 수 있다. 일반적으로, 센서 데이터는 비디오 게임의 양상을 제어하는 것(예: 플레이어가 제어하는 캐릭터를 제어하는 것, 디스플레이 상에서 가시적인 것을 결정하는 가상 카메라를 회전시키는 것 등)과 같은 다양한 목적을 위해 활용될 수 있다. 이러한 방식으로 센서 데이터가 게임 제어 데이터로 사용되는 경우, 센서 데이터는, 경우에 따라, 비디오 게임의 양상을 제어하기 위해서 사용되기 전에 변경(예: 필터링/감쇠, 증폭 등)될 수 있다. 그러나, 본원에 설명된 기술 및 시스템은 게임 컨트롤러의 하나 이상의 센서에 의해 생성된 필터링되지 않은 원시 센서 데이터를 원격 컴퓨팅 시스템으로 전송하도록(예를 들어, 연관된 클라이언트 머신을 통해서 센서 데이터를 전송함으로써) 구성된 게임 컨트롤러에 관한 것이다. 이러한 원시 센서 데이터는 비디오 게임의 양상을 제어하기 위해 처리될 게임 제어 데이터(예: 버튼 가압, 조이스틱 편향 등에 의해서 생성된 데이터 및 변경된 센서 데이터)와 함께 전송될 수 있다.
시간이 지남에 따라, 플레이어 커뮤니티에 의해서 플레이된 비디오 게임의 과거 세션과 결부된 대규모 이력 데이터 모음이 원격 컴퓨팅 시스템에서 사용 가능할 수 있다는 것이 이해될 것이다. 다음으로, 원격 컴퓨팅 시스템은 이력 데이터의 일부분을 훈련 데이터로서 사용하여 하나 이상의 기계 학습 모델을 훈련시킬 수 있다. 예를 들어, 비디오 게임의 과거 세션 동안 게임 컨트롤러의 하나 이상의 물리적 센서에 의해서 생성되고 원격 컴퓨팅 시스템에 의해서 수신된 이력 센서 데이터는 훈련 데이터로서 사용될 수 있다. 또 다른 실시예로서, 비디오 게임의 과거 세션 동안 발생된 비디오 게임의 게임 상태를 포함하는 이력 게임 상태 데이터는, 단독으로 또는 센서 데이터와 함께, 훈련 데이터로서 사용될 수 있다. 센서 데이터 및/또는 게임 상태 데이터는 한 세트의 피쳐에 의해서 표시될 수 있고 다수의 유형의 사용자 입력 중 하나의 유형의 사용자 입력을 나타내도록 라벨링될 수 있으며, 이 하나의 유형의 사용자 입력은 센서 데이터가 수신된 후 그리고/또는 게임 상태가 발생된 이후 일정 시간 기간 내에 대응되는 게임 제어 데이터가 수신되게 한다.
이러한 데이터에 대해 훈련된 기계 학습 모델(들)은, 예를 들어, 특정 유형의 사용자 입력이 게임 컨트롤러에 제공될 확률을 나타내는 스코어를 생성함으로써, 플레이어의 게임 컨트롤러에 제공될 한 유형의 사용자 입력을 예측할 수 있다. 이러한 기계 학습 스코어는 예측된 유형의 사용자 입력에 대응되는 게임 제어 데이터를 실시간으로 사전에 생성하기 위해서 사용 가능하여, 게임 제어 데이터는 클라이언트 머신으로부터 실제 게임 제어 데이터를 수신하는 것보다 앞서 비디오 게임에 입력될 수 있으며, 이는 컴퓨팅 시스템이, 실제 게임 제어 데이터가 클라이언트 머신으로부터 수신되는 것을 기다리지 않기 때문에 레이턴시를 보상한다. 위에서 언급된 바와 같이, 비디오 게임 플랫폼은 컴퓨터 네트워크를 통해 다수의 플레이어에 의해 멀티플레이어 모드로 플레이되는 비디오 게임과 같은 비디오 게임에서 플레이어 동작과 플레이어 인식 사이의 레이턴시에 영향을 받을 수 있다. 예를 들어, 제1 플레이어가 비디오 게임의 캐릭터를 제어하기 위해 게임 컨트롤러에 사용자 입력을 제공하는 제1 시간과 원격 컴퓨팅 시스템이 제1 플레이어의 클라이언트 머신으로부터 대응되는 게임 제어 데이터를 수신하는 제2 시간 사이에는 시간 지연이 있을 수 있다. 이러한 시간 지연(또는 레이턴시)이 보상되지 않으면, 제2 플레이어의 클라이언트 머신의 디스플레이 상에 제시되는 플레이어가 제어하는 캐릭터의 대응되는 움직임은 비디오 게임 캐릭터를 제어하는 제1 플레이어의 동작(들)에 비해 지연될 수 있으며, 이는 비디오 게임의 플레이 품질을 저하시킬 수 있다. 플레이어의 게임 컨트롤러에 대한 사용자 입력의 기계 학습 예측을 사용하는 레이턴시 보상에 대해 개시된 기술은, 데드 레코닝과 같은 기존 접근 방식과 비교하여 비교적 높은 정확도로 향후의 플레이어 동작을 예측할 수 있다. 이러한 방식으로, 원격 컴퓨팅 시스템은, 다가오는 사용자 입력에 대응되는 실제 게임 제어 데이터를 수신하는 원격 컴퓨팅 시스템보다 앞서 플레이어에 의해 제공될 한 유형의 사용자 입력을, 개선된 정확도로, 예측할 수 있다. 이것은 제2 플레이어가, 제1 플레이어가 캐릭터를 제어하여 수행하게 할 가능성이 큰 것을 제1 플레이어의 캐릭터가 하는 것을 인식하는 것을 허용하고, 원격 컴퓨팅 시스템이 제1 플레이어의 동작(들)과 관련된 제1 플레이어의 클라이언트 머신으로부터 실제 게임 제어 데이터를 수신하기도 전에 이를 인식하는 것을 허용한다.
일 실시예에서, 컴퓨팅 시스템은, 비디오 게임이 플레이되는 동안(예를 들어, 멀티플레이어 모드에서), 비디오 게임의 플레이어와 연관된 클라이언트 머신으로부터 센서 데이터를 수신할 수 있다. 센서 데이터는 게임 컨트롤러의 하나 이상의 물리적 센서에 의해 생성된 원시 센서 데이터(예를 들어, 원시 자이로스코프 데이터, 원시 가속도계 데이터, 및/또는 원시 용량성 센서 데이터 등)를 포함할 수 있다. 컴퓨팅 시스템은 훈련된 기계 학습 모델(들)에 대한 입력으로서 센서 데이터를 제공하여, 센서 데이터를 수신한 이후 일정 시간 기간 내에 플레이어의 클라이언트 머신으로부터 대응되는 게임 제어 데이터가 수신되게 할 게임 컨트롤러에 대한 사용자 입력을 예측할 수 있다. 훈련된 기계 학습 모델(들)은, 센서 데이터를 처리하고 출력으로서 스코어를 생성하도록 구성되며, 스코어는 한 유형의 사용자 입력이 게임 컨트롤러에 제공될 확률을 나타낸다. 기계 학습 스코어에 적어도 부분적으로 기반하여, 컴퓨팅 시스템은, 플레이어를 대신하여, 한 유형의 사용자 입력에 대응되는 게임 제어 데이터를 생성할 수 있고, 비디오 게임 플랫폼의 레이턴시를 보상하기 위해서 비디오 게임으로부터 출력되는 비디오 게임 데이터가 클라이언트 머신(예: 비디오 게임의 제2 플레이어의 제2 클라이언트 머신)으로 전송될 수 있도록 사전에 생성된 게임 제어 데이터를 비디오 게임에 입력으로서 제공할 수 있다.
다른 실시예에서, 컴퓨팅 시스템은 멀티플레이어 모드에서 실행되는 비디오 게임으로부터 게임 상태 데이터를 수신할 수 있다. 게임 상태 데이터는 비디오 게임의 게임 상태(예: 플레이어의 움직임, 게임 맵에서의 위치, 캐릭터 클래스, 무기 등)를 포함할 수 있다. 컴퓨팅 시스템은 훈련된 기계 학습 모델(들)에 대한 입력으로서 게임 상태 데이터를 제공하여, 게임 상태 데이터를 수신한 이후 일정 시간 기간 내에 플레이어의 클라이언트 머신으로부터 대응되는 게임 제어 데이터가 수신되게 할 주어진 플레이어의 게임 컨트롤러에 대한 사용자 입력을 예측할 수 있다. 훈련된 기계 학습 모델(들)은, 게임 상태 데이터를 처리하도록, 그리고 출력으로서 스코어를 생성하도록 구성되며, 스코어는 한 유형의 사용자 입력이 게임 컨트롤러에 제공될 확률을 나타낸다. 기계 학습 스코어에 적어도 부분적으로 기반하여, 컴퓨팅 시스템은, 플레이어를 대신하여, 한 유형의 사용자 입력에 대응되는 게임 제어 데이터를 생성할 수 있고, 비디오 게임 플랫폼의 레이턴시를 보상하기 위해서 비디오 게임으로부터 출력되는 비디오 게임 데이터가 클라이언트 머신(예: 비디오 게임의 제2 플레이어의 제2 클라이언트 머신)으로 전송될 수 있도록 사전에 생성된 게임 제어 데이터를 비디오 게임에 입력으로서 제공할 수 있다. 일부 실시형태에서, 센서 데이터 및 게임 상태 데이터 모두는 레이턴시 보상을 위해 게임 컨트롤러에 대한 사용자 입력을 예측하기 위해 훈련된 기계 학습 모델(들)에 대한 입력으로서 제공될 수 있다.
본원에 설명된 기술 및 시스템은 비디오 게임 플레이어에게 향상된 게임 경험을 제공할 수 있다. 이것은, 본원에 설명된 기술 및 시스템이 게임 컨트롤러에 대한 사용자 입력을 예측할 수 있고, 이 컨트롤러에 의해 생성된 실제 게임 제어 데이터가 컴퓨팅 시스템에서 수신되는 시간에 앞서 대응되는 게임 제어 데이터를 사전에 생성할 수 있기 때문입니다. 예를 들어, 본원에 설명된 훈련된 기계 학습 모델(들)은, 플레이어가 비디오 게임의 캐릭터를 벽을 뛰어넘거나 갑자기 좌회전하게끔 제어하도록 한 유형의 사용자 입력을 제공하려고 할 때를 예측하는 것을 학습할 수 있다. 이러한 예측 기능은 멀티플레이어 비디오 게임의 다수의 플레이어 간의 일관성이 유지되도록 레이턴시를 보상할 뿐만 아니라 보다 사실적인 시각적 경험을 위해 애니메이션 향상을 제공되는 것을 허용한다. 예를 들어, 컴퓨팅 시스템이, 플레이어가 "A" 버튼을 작동시켜 비디오 게임 내의 한 캐릭터를 벽을 뛰어넘도록 제어할 것이라고 예측하는 경우, 이러한 플레이어가 제어하는 캐릭터의 애니메이션은 캐릭터의 "리딩 모션(leading motion)"을 렌더링하기 위해 기계 학습 예측을 기반으로 향상될 수 있으며, 이는 플레이어가 제어하는 캐릭터의 체중 시프트 및/또는 점프하기 약간 전에 캐릭터의 웅크리는 동작을 묘사할 수 있다. 한편, 캐릭터의 실제 "점프"는 시스템의 예측 기능으로 인해 "A" 버튼을 작동시키는 플레이어와 밀접하게 동기화되어 렌더링될 수 있다. 이러한 애니메이션 향상 및 사용자 입력에 대한 기계 학습 예측이 없다면, 비디오 게임은 리드인(lead-in) 애니메이션 없이 급하고 반응이 빠른 애니메이션을 보여주는 프레임을 출력할 수 있거나(예: 캐릭터가 갑자기 비현실적 방식으로 달리는 것으로부터 벽을 뛰어넘는 것으로 전환함), 또는 리드인 애니메이션이 다수의 프레임에 걸쳐 표시되지만, 느리고 둔감하다(예: 버튼 가압 시점부터 눈에 띄게 지연되어 점프가 발생됨). 본원에 설명된 기술 및 시스템은 눈에 띄는 시간 지연 없이 렌더링 애니메이션 향상(예: 리드인 애니메이션)을 통해 "두 가지 상이한 것의 각각의 장점(the best of both worlds)"을 포함하는 비디오 게임 경험을 플레이어 커뮤니티에 제공할 수 있어, 비디오 게임에서 물체와 캐릭터의 동작은 사실적으로 보이고, 플레이어가 제공한 사용자 입력에 즉각 반응하도록 유지된다.
본원에 제공된 많은 실시예는 원격 컴퓨팅 시스템에서 상주하고 실행되는 훈련된 기계 학습 모델(들)과 관련이 있지만, 훈련된 기계 학습 모델(들)을 활용하여 사용자 입력을 예측하는 컴퓨팅 시스템이 비디오 게임을 플레이하는 사용자와 함께 콜로케이팅된 클라이언트 머신일 수 있다는 것이 이해될 것이다. 즉, 원격 컴퓨팅 시스템에서 훈련이 발생될 수 있지만, 학습된 기계 학습 모델(들)은 클라이언트 머신 자체 상에서 훈련된 기계 학습 모델(들)의 실행을 위해 클라이언트 머신에 다운로드될 수 있다(원격 컴퓨팅 시스템에서 훈련된 기계 학습 모델(들)을 실행하는 대신에 또는 이에 추가하여). 이러한 실시형태에서, 클라이언트 머신은 공통 기계 학습 모델(들)을 활용할 수 있고/있거나, 다수의 클라이언트 머신은 각각 다른 기계 학습 모델(들)을 활용할 수 있다. 예를 들어, 사용자별 기계 학습 모델은, 전체 플레이어 파퓰레이션으로부터 수집된 집합체 데이터(aggregate data)에 대해 기계 학습 모델(들)을 훈련시키는 것 대신에, 또는 추가로, 특정 사용자에 특이적인 이력 데이터에 대해 훈련될 수 있고, 이러한 사용자의 클라이언트 머신에 다운로드될 수 있다.
기계 학습 모델(들)은, 훈련 데이터로서 활용될 수 있는 센서 데이터, 게임 상태 데이터, 및/또는 게임 제어 데이터 내에서 복잡한 관계를 식별하는 것을 학습할 수 있기 때문에, 본원에 설명된 기술 및 시스템은 게임 컨트롤러에 대한 사용자 입력을 정확하게 예측할 수 있으며, 이는 위양성율 감소 및 플레이어의 동작을 부정확하게 예측하는 경우의 감소로 귀결된다. 본원에 설명된 기술 및 시스템은 또한, 플레이어 행동이 변함에 따라, 시간이 지나면서 플레이어 동작에 대한 기계 학습 모델(들) 이해를 조정하기 위해 기계 학습 모델(들)이 새로운 데이터로 재훈련되기 때문에, 기존의 시스템(예: 플레이어 행동의 전방 예측을 위해 데드 레코닝을 사용하는 시스템)보다 플레이어 행동의 변화하는 역학에 더 적응적일 수 있다. 더욱이, 기계 학습 모델(들)은 수동으로 구성된 시스템에서 합리적으로 처리될 수 있는 것보다 훨씬 더 많은 변수와 훨씬 다양한 사용자 행동을 처리할 수 있다. 본원에 설명된 기술 및 시스템은 또한 하나 이상의 장치가 본원에 설명된 다양한 방식으로 처리 리소스, 메모리 리소스, 네트워킹 리소스 등에 관한 리소스를 보존하게 할 수 있다.
도 1은, 플레이어의 비디오 게임 컨트롤러(106)에 대한 사용자 입력을 예측하기 위해, 그리고 레이턴시를 보상하도록 대응되는 게임 제어 데이터(108)를 사전에 생성하기 위해 기계 학습 모델(들)(104)을 훈련시키고 사용하도록 구성된 컴퓨팅 시스템(102)을 포함하는 예시적인 환경(100)을 예시하는 도면이다. 플레이어들(110)의 커뮤니티(본원에서 때때로 "사용자들"(110)로 지칭됨)는 각각의 클라이언트 머신(112)과, 그리고 각각의 비디오 게임 컨트롤러(106)(본원에서 때때로 "게임 컨트롤러"(106)로 지칭됨)와 연관될 수 있다. 도 1의 실시예에서, 제1 클라이언트 머신(112(A))은, 제1 플레이어(110(A))와 연관되고 이에 의해서 활용되는 것으로 도시되는 한편, 제2 클라이언트 머신(112(B))은, 제2 플레이어(110(B))와 연관되고 이에 의해서 활용되는 것으로 도시된다. 제1 게임 컨트롤러(106(A))는 또한, 제1 플레이어(110(A))와 연관되고 이에 의해서 활용되는 한편, 제2 게임 컨트롤러(106(B))는 제2 플레이어(110(B))와 연관되어 이에 의해서 활용된다. 예컨대 단일 클라이언트 머신(112)과 함께 단일 플레이어(110), 또는 둘을 초과하는 클라이언트 머신(112)과 함께 둘을 초과하는 플레이어(110)와 같은, 임의의 수의 플레이어(110) 및 클라이언트 머신(112)이 환경(100)에서 구현될 수 있다는 것이 이해될 것이다.
도 1에 도시된 클라이언트 머신(112)은, 비디오 게임을 실행하도록, 그리고/또는, 개인용 컴퓨터(PC), 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대폰(예를 들어, 스마트 폰), 태블릿 컴퓨터, 휴대용 디지털 단말기(PDA), 웨어러블 컴퓨터(예를 들어, 가상현실(VR) 헤드셋, 증강 현실(AR) 헤드셋, 스마트 안경 등), 차량 내(예를 들어, 자동차 내) 컴퓨터, 텔레비전(스마트 텔레비전), 셋톱박스(STB), 게임 콘솔, 및/또는 임의의 유사한 컴퓨팅 디바이스를 포함하나, 이에 한정되지 않는 연관된 디스플레이 상에 그래픽을 렌더링하도록 구성된 임의의 적절한 유형의 컴퓨팅 디바이스로 구현될 수 있다. 더욱이, 클라이언트 머신(112)은 각각의 플랫폼(예를 들어, 하드웨어 및 소프트웨어)에 따라 달라질 수 있다. 예를 들어, 도 1에 도시된 2개의 클라이언트 머신(112(A) 및 112(B))은, 처리 능력(예를 들어, 중앙 처리 유닛(CPU) 모델, 그래픽 처리 유닛(GPU) 모델 등), 그래픽 드라이버 버전 등의 관점에서 다양한 능력을 갖는 상이한 유형의 클라이언트 머신들(112)을 나타낼 수 있다.
클라이언트 머신(112)은 컴퓨터 네트워크(114)를 통해 원격 컴퓨팅 시스템(102)(때때로 본원에서 "컴퓨팅 시스템(102)" 또는 "원격 시스템(102)"으로 축약됨)과 통신할 수 있다. 컴퓨터 네트워크(114)는 인터넷, 다른 유형의 데이터 및/또는 음성 네트워크, 유선 인프라(예: 동축 케이블, 광섬유 케이블 등), 무선 인프라(예: 무선 주파수(RF), 셀룰러, 위성 등), 및/또는 기타 연결 기술을, 이에 한정된 없이, 나타내고/내거나 포함할 수 있다. 컴퓨팅 시스템(102)은, 일부 경우에, 컴퓨터 네트워크(114)를 통해 액세스 가능하고 유지되는 네트워크 액세스 가능한 컴퓨팅 플랫폼의 일부일 수 있다. 이와 같은 네트워크 액세스 가능한 컴퓨팅 플랫폼은 "주문형 컴퓨팅", "서비스로서의 소프트웨어(SaaS: software as a service)", "플랫폼 컴퓨팅", "네트워크 액세스 가능한 플랫폼", "클라우드 서비스", "데이터 센터" 등과 같은 용어를 사용하여 지칭될 수 있다.
도 1의 컴퓨터 네트워크(114)가, 일부 실시예에서, 근거리 통신망(LAN: local area network)을 나타낼 수 있으며, 이는 "가정 내" 비디오 게임 스트리밍 시나리오의 경우일 수 있다는 점이 이해될 것이다. 이 시나리오에서, 컴퓨팅 시스템(102)은 클라이언트 머신(112)의 동일한 지리적 위치에, 또는 이의 근처에 위치된 호스트 컴퓨팅 시스템을 나타낼 수 있다. 일부 실시형태에서, 컴퓨터 네트워크(114)는 인터넷과 같은 광역 네트워크(WAN)를 나타낼 수 있고, 클라이언트 머신들(112(A) 및 112(B))은 서로 다른 지리적 위치들에 위치될 수 있다. 일부 실시형태에서, 클라이언트 머신(112)은 클라이언트 머신(112) 자체에서 최소한의 데이터 처리로(예를 들어, 클라이언트 머신(112) 자체에서 비디오 게임을 실행할 필요 없이) 컴퓨팅 시스템(102)과 데이터를 주고받도록 구성된 "씬 클라이언트(thin-client)"로서 구현될 수 있다. 씬 클라이언트 구현에서, 컴퓨팅 시스템(102)은 무엇보다도 클라이언트 머신(112)으로부터 게임 제어 데이터를 수신할 수 있고, 컴퓨팅 시스템(102)은 비디오 게임 데이터(예를 들어, 이미지 데이터 및 오디오 데이터의 프레임)를 연관된 디스플레이 상에서의 표현을 위해 클라이언트 머신(112)으로 전송할 수 있다. 다른 구현예에서, 클라이언트 머신(112)은 로컬로 비디오 게임을 다운로드하여 실행하도록 구성될 수 있지만, 데이터는, 다른 플레이어와 온라인 멀티플레이어 비디오 게임에 참여할 목적을 위해서 여전히 컴퓨터 네트워크(114)를 통해 전송될 수 있다. 더욱이, 일부 시나리오에서, 예를 들어, 컴퓨팅 시스템(102)의 기능 및 구성요소가 클라이언트 머신(112) 상에서 구현됨으로써, 컴퓨터 네트워크(114)가 생략될 수 있다는 것이 이해될 것이다. 이는, 네트워크가 관여되지 않은 경우에도(예를 들어, 로컬 클라이언트 머신(112)에서 비디오 게임을 하는 싱글 플레이어(110)), 플레이어 동작과 플레이어 인식 사이의 레이턴시가 복잡한 그래픽을 갖는 데이터 집약적 비디오 게임을 실행하는 상대적으로 저성능 클라이언트 머신(112)을, 이에 한정됨 없이, 포함하는 다른 비네트워크 요인으로 인해 여전히 발생될 수 있기 때문이다. 이러한 시나리오에서, 이러한 레이턴시를 보상하기 위해서 사용자 입력의 기계 학습된 예측이 활용될 수 있다.
일부 실시형태에서, 컴퓨팅 시스템(102)은, 비디오 게임(및 이의 콘텐츠)을 클라이언트 머신들(112)에 배포(예를 들어, 다운로드, 스트리밍 등)하기 위해 비디오 게임 서비스를 구현하는 비디오 게임 플랫폼으로서 역할을 하거나 이에 액세스 한다. 일 실시예에서, 클라이언트 머신들(112)은 각각 클라이언트 애플리케이션을 설치할 수 있다. 설치된 클라이언트 애플리케이션은 비디오 게임 클라이언트(예를 들어, 비디오 게임을 플레이하기 위한 게임 소프트웨어)일 수 있다. 클라이언트 애플리케이션이 설치된 클라이언트 머신(112)은 컴퓨터 네트워크(114)를 통해 컴퓨팅 시스템(102)으로부터 프로그램(예를 들어, 비디오 게임 및 이의 콘텐츠)을 다운로드, 스트리밍, 또는 달리 수신하도록 구성될 수 있다. 프로그램들(예를 들어, 비디오 게임)이 클라이언트 머신(112) 상의 다운로드 및 실행을 위해 개별적으로 구매될 수 있는 직접 구매 모델, 구독 기반 모델, 프로그램이 일정 기간 동안 임대 또는 리스되거나, 스트리밍되거나, 또는 이와 달리 클라이언트 머신(102)에 이용 가능하게 되는 콘텐츠 배포 모델과 같은 임의의 유형의 콘텐츠 배포 모델이 이러한 목적을 위해 활용될 수 있다. 따라서, 개별 클라이언트 머신(112)은, 클라이언트 애플리케이션을 로딩함으로써 실행 가능한 하나 이상의 설치된 비디오 게임을 포함할 수 있거나, 클라이언트 애플리케이션을 로딩함으로써 플레이 가능한, 원격 컴퓨팅 시스템(102)에서 실행되는 하나 이상의 비디오 게임에 액세스할 수 있다.
클라이언트 머신(112)은, 비디오 게임 서비스에 등록하고, 다음으로 로그인하기 위해서 사용될 수 있다. 사용자(110)는 이러한 목적을 위해 사용자 계정을 생성하고, 등록된 사용자 계정에 결부된 자격 증명(예를 들어, 암호, PIN, 생체 인식 ID 등)을 지정/설정할 수 있다. 복수의 사용자(110)가 (예를 들어, 등록된 사용자 계정으로 사용자/플레이어 프로필에 액세스하고, 각각의 게임 컨트롤러(106)를 사용하여 각각의 클라이언트 머신(112)에서 비디오 게임을 플레이함으로써 등등) 비디오 게임 플랫폼과 상호 작용할 때, 클라이언트 머신(112)은 데이터를 원격 컴퓨팅 시스템(102)에 전송한다. 원격 컴퓨팅 시스템(102)으로 전송된 데이터는, 주어진 클라이언트 머신(112)의 경우, 게임 제어 데이터(116) 및 센서 데이터(118)뿐만 아니라, 비디오 게임 데이터(예: 원격 시스템에 업로드된 게임 성능 통계), 소셜 네트워킹 메시지 및 관련 활동, 클라이언트 머신(112)에서 플레이되는 비디오 게임의 식별자(ID) 등을, 이에 한정됨 없이, 포함하는 다른 데이터를 포함할 수 있다. 이 데이터의 적어도 일부는 비디오 게임 세션 동안 실시간(또는 실질적으로 실시간)으로 스트리밍될 수 있는 한편, 데이터의 서브세트는 정의된 간격으로 원격 시스템(102)으로 전송되고/되거나, 이벤트(예: 비디오 게임을 나감)에 응답하여 업로드될 수 있다.
도 1에 도시된 바와 같이, 게임 컨트롤러(106(A))는, 본원에 설명된 바와 같이, 비디오 게임 플랫폼과 상호작용하기 위해 제1 플레이어(110(A))에 의해 사용될 수 있다. 예를 들어, 제1 플레이어(110(A))는 게임 컨트롤러(106(A))를, 비디오 게임 클라이언트(예를 들어, 비디오 게임을 플레이하기 위한 게임 소프트웨어)를 실행하는 클라이언트 머신(112(A))과 페어링할 수 있다. 일단, 게임 컨트롤러(106(A))가 클라이언트 머신(112(A))과 페어링되고, 이와 통신할 수 있게 되면(예를 들어, 클라이언트 머신(112(A))에 데이터를 송신함으로써/이로부터 데이터를 수신함으로써), 게임 컨트롤러(106(A))는, 게임 컨트롤러(106(A))를 사용자 계정으로 등록하고, 원격 컴퓨팅 시스템(102)으로부터 사용 가능한 비디오 게임에 액세스하고, 게임 컨트롤러(106(A))를 사용하여 비디오 게임을 플레이하는 것과 같이, 본원에 설명된 비디오 게임 플랫폼과 상호 작용하기 위해서 사용될 수 있다.
게임 컨트롤러(106)는, 일부 실시형태에서, 도 1에 도시된 게임 컨트롤러(106(A) 및 106(B))와 같은 핸드헬드 게임 컨트롤러를 나타낼 수 있으며, 이는 플레이어(110)의 한 손 또는 양 손에 의해서 유지되도록 설계되고, 사용자(110) 손(들)의 손가락 및/또는 엄지손가락에 의해 작동되는 하나 이상의 손가락 조작식 컨트롤로 구성된다. 일부 실시형태에서, 게임 컨트롤러(106)는, 3차원(3D) 공간에서 게임 컨트롤러(106)를 이동(예를 들어, 패닝(panning), 회전, 틸팅 등)시킴으로써 작동되도록 추가로 구성될 수 있다. 게임 컨트롤러(106)가, 모바일 폰(예: 스마트 폰), 태블릿 컴퓨터, PDA(Portable Digital Assistant), 웨어러블 컴퓨터(예: 스마트 와치, 헤드 마운트 디스플레이(HMD: head-mounted display) 등), 휴대용 게임 플레이어, 및/또는 임의의 유사한 전자 디바이스와 같은, 임의의 다른 적절한 유형의 컨트롤러 디바이스를 나타낼 수 있다는 것이 이해될 것이다. 게임 컨트롤러(106)를 설명하기 위해 본원에서 사용되는 용어 "핸드헬드"는, 디바이스가 사용자(110)의 손(들)에 의해서, 또는 사용자(110) 신체의 다른 부분에 의해 유지되는지 여부에 관계없이, 사용자(110)에 의해서 유지되도록 구성된 디바이스를 의미한다(예: 손목, 팔, 다리, 허리, 머리 등에 착용되는 웨어러블 디바이스는, 이 용어가 본원에서 사용될 때, "핸드헬드" 디바이스로 간주된다).
게임 컨트롤러(106)의 하나 이상의 센서는, 어떤 방식으로, 게임 컨트롤러(106)의 물리적 상태와 관련된 센서 데이터(118)를 생성하도록 구성된다. 예를 들어, 터치 센서(들)는 물체(예: 손가락)가 터치 센서(들)를 포함하는 게임 컨트롤러(106)의 일부분(예: 방향 패드(D-패드), 조이스틱, 트리거 버튼, 범퍼 버튼, 선택 버튼 등)에 접촉되는지 또는 이 부분에 근접하는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 다른 실시예로서, 압력 센서(들)는 물체가 게임 컨트롤러(106)의 일부분을 가압하고 있는지 여부, 및 게임 컨트롤러(106)의 이 부분이 물체에 의해 가볍게 또는 무겁게 가압되는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 모션 센서(예를 들어, 자이로스코프 및/또는 가속도계)는, 또 다른 예로서, 게임 컨트롤러(106)가 3D 공간 내에서 방향 및/또는 공간적 위치를 변경하였는지 여부, 및/또는 게임 컨트롤러(106)가 빠르게 또는 느리게 움직이고 있는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 따라서, 게임 컨트롤러(106)의 센서(들)는 게임 컨트롤러(106)의 이러한, 그리고 다른 종류의 물리적 상태를 나타내는 센서 데이터(118)를 생성하도록 구성된다.
제1 플레이어(110(A))가 비디오 게임 플랫폼과 상호작용하기 위해 - 예를 들어, 플레이어의 각각의 클라이언트 머신(112(A))에서 비디오 게임(120)을 플레이하기 위해, 플레이어의 게임 컨트롤러(106(A))를 활용함에 따라, 센서 데이터(118) 및 게임 제어 데이터(116)는 게임 컨트롤러(106(A))로부터 클라이언트 머신(112(A))으로 전송될 수 있고, 클라이언트 머신(112(A))으로부터 원격 컴퓨팅 시스템(102)으로 전송될 수 있다. 게임 제어 데이터(116)는 비디오 게임(120)의 양상(들)을 제어하기 위해서 사용 가능하고, 이로써 비디오 게임(120)의 다음 프레임을 렌더링하는 방법을 결정하기 위해 비디오 게임(120)에 의해 처리된다. 한편, 센서 데이터(118)는, 자이로스코프에 의해 생성된 원시 데이터, 가속도계에 의해 생성된 원시 데이터, 및/또는 터치 센서(예: 용량성 터치 패드)에 의해 생성된 원시 데이터 등과 같은 필터링되지 않은 원시 센서 데이터(118)를 나타낸다.
스트리밍 구현예에서, 비디오 게임(120)은 원격 컴퓨팅 시스템(102) 상에서 실행될 수 있고, 원격 컴퓨팅 시스템(102)은 비디오 게임 데이터(122)를 캡처할 수 있고, 비디오 게임 데이터(122)를 네트워크(114)를 통해 클라이언트 머신(112)으로 전송할 수 있다. 이것은 원격 컴퓨팅 시스템(102)이 비디오 게임(120)의 상태를 캡처하는 것, 비디오 및 오디오 데이터를 비트로 인코딩하는 것, 인코딩된 비트를 컴퓨터 네트워크(114)를 통해 클라이언트 머신(112)에 전송하는 것을 관여시킬 수 있고, 클라이언트 머신(112) 상에서 실행되는 애플리케이션(예: 비디오 게임 클라이언트)은, 주어진 프레임에 대해 디스플레이(들)를 통해 이미지를 출력하고 클라이언트 머신(112)의 스피커(들)를 통해(클라이언트 머신에 연결된 헤드폰을 통해) 오디오를 출력하기 위해 비트를 디코딩할 수 있다. 플레이어(110)는 각자의 게임 컨트롤러(106)를 조작함으로써 플레이어가 보고 있는 비디오 및 오디오에 반응할 수 있다. 예를 들어, 플레이어(110(A))는 게임 컨트롤러(106)의 컨트롤을 작동(예를 들어, 방향 패드(D-패드)를 가압, 조이스틱을 편향, 트랙패드 상에서 손가락으로 쓸어내기, 버튼을 누름 등)시킬 수 있고/있거나, 비디오 게임(120)의 양상(들)을 제어하기 위해 3D 공간에서 게임 컨트롤러(106)를 틸팅시키거나 이동시킬 수 있다. 게임 컨트롤러(106)의 작동에 응답하여, 게임 컨트롤러(106)는, 무선 액세스 포인트를 통해 그리고 컴퓨터 네트워크(114)를 통해 직접적으로, 또는 게임 컨트롤러(106)와 연관된 클라이언트 머신(112)을 통해, 원격 컴퓨팅 시스템(102)으로 전송되는 게임 제어 데이터(116)를 생성할 수 있다. 어느 경우든, 게임 제어 데이터(116)는 비디오 게임(120)의 양상(들)을 제어하기 위해 실시간으로 원격 컴퓨팅 시스템(102)에 전송될 수 있다. 예를 들어, 게임 제어 데이터(116)는 클라이언트 머신(112)의 디스플레이 상의 장면에 의해서 표현되는 가상 세계 내에서 가상 객체(예: 플레이어가 제어하는 캐릭터)가 움직이게 함으로써 비디오 게임(120)의 가상 객체의 움직임을 제어하기 위해 비디오 게임(120)에 의해 처리될 수 있다. 일부 실시형태에서, 비디오 게임(120)의 인스턴스는 각각의 클라이언트 머신(112(A) 및 112(B))에서 로컬로 실행될 수 있고, 비디오 게임 데이터(122)는 주어진 클라이언트 머신(112) 상에서 로컬로 실행되는 비디오 게임(120)에 입력될 게임 제어 데이터(108 및/또는 116)를 포함할 수 있다.
원격 컴퓨팅 시스템(102)으로 전송되는 게임 제어 데이터(116)는, 필터링된/감쇠된 센서 데이터(118) 및/또는 증폭된 센서 데이터(118)와 같은, 게임 컨트롤러(106)의 센서(들)에 의해 생성된 적어도 일부 센서 데이터(118)를 포함할 수 있지만, 도 1에 도시된 바와 같이, 게임 컨트롤러(106)에 의해 원격 컴퓨팅 시스템(102)으로 전송되는 센서 데이터(118)는, 비디오 게임(120)의 양상을 제어하기 위해서 사용되지 않지만, 게임 컨트롤러(106)에 대한 예측된 사용자 입력을 나타내는 기계 학습된 스코어를 생성하기 위해서 사용되는 필터링되지 않은 원시 센서 데이터(118)를 나타낸다. 본원에 설명된 바와 같이, 게임 컨트롤러(106)에 대한 사용자 입력 유형의 기계 학습된 예측은 비디오 게임 플랫폼의 레이턴시를 보상하기 위해서 사용될 수 있다.
따라서, 컴퓨팅 시스템(102)이 클라이언트 머신(112)으로부터 게임 제어 데이터(116) 및 센서 데이터(118)를 수신할 때, 컴퓨팅 시스템(102)은 이 데이터, 및 원격 컴퓨팅 시스템(102)에 액세스 가능한 데이터 저장소(124)에 클라이언트 머신(112)으로부터 수신된 가능하게는 다른 데이터를 저장할 수 있다. 원격 컴퓨팅 시스템(102)에 의해 수집된 데이터는 사용자 계정을 데이터의 관련 부분과 연관시키도록, 그리고/또는 비디오 게임 및/또는 비디오 게임의 과거 세션을 데이터의 관련 부분과 연관시키도록 임의의 적절한 방식으로 데이터 저장소(124) 내에 조직화될 수 있다. 시간이 지남에 따라, 비디오 게임 플랫폼과 자주 상호 작용하는 플레이어(110)의 대규모 커뮤니티를 고려하면, 때때로 주어진 세션 중 장기간 동안, 대량의 데이터가 데이터 저장소(124)에 수집되고 유지될 수 있다.
컴퓨팅 시스템(102)은 데이터 저장소(124)로부터 샘플링된 이력 데이터를 사용하여 기계 학습 모델(들)(104)을 훈련시킬 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 이력 데이터의 일부분을 샘플링된 데이터로서 액세스할 수 있고, 기계 학습 모델(들)(104)을 훈련시키기 위해서 샘플링된 데이터를 사용할 수 있다. 일부 실시형태에서, 훈련 데이터로서 사용되는 데이터의 일부분은 한 세트의 피쳐에 의해서 표시되고, 이력 게임 제어 데이터(116)에 대응되는 사용자 입력의 다수의 유형 중 하나를 나타내는 라벨(label)로 라벨링된다. 이러한 방식으로, 지도 학습 접근법은 플레이어의 게임 컨트롤러(106)에 제공될 가능성이 있는 특정 유형의 사용자 입력을 예측하도록 기계 학습 모델(들)(104)을 훈련시키기 위해 취해질 수 있다.
기계 학습 모델(들)(104)은 데이터 저장소(124)에서 수집된 이력 센서 데이터(118)를 사용하여 훈련될 수 있다. 추가적으로 또는 대안적으로, 기계 학습 모델(들)(104)은 비디오 게임(120)의 과거 세션 동안 발생된 비디오 게임(120)의 게임 상태를 포함하는 이력 게임 상태 데이터(126)를 사용하여 훈련될 수 있다. 비디오 게임(120)의 게임 상태의 예는 플레이어 움직임, 게임 맵에서의 위치, 캐릭터 클래스, 무기 등을, 이에 한정됨 없이, 포함한다. 기계 학습 모델(들)(104)이 전술된 센서 데이터(118) 및 게임 상태 데이터(126)에 추가로, 또는 이의 대신에 추가 데이터를 사용하여 훈련될 수 있다. 예를 들어, 과거 게임 제어 데이터(116), 즉 인간 사용자가 비디오 게임(120)의 양상(들)을 제어하기 위해 게임 컨트롤러(106)에 제공한 사용자 입력에 기반하여 생성되고 있었던 제어 데이터(116)는 시간 경과에 따라 클라이언트 머신(112)으로부터 수집될 수 있다. 이러한 사용자 입력은, 버튼 누름, 조이스틱 편향, 트랙패드 상에서 손가락으로 쓸어내기 등과 같은 게임 컨트롤러(106)에 대한 컨트롤의 작동, 및/또는 3D 공간에서 게임 컨트롤러(106)의 틸팅 또는 움직임을 포함할 수 있다. 따라서, 이력 게임 제어 데이터(116)(예를 들어, 비디오 게임(120)의 양상(들)을 제어하기 위해 게임 컨트롤러(106)에 제공된 사용자 입력을 나타내는 데이터)는, 이력 센서 데이터(118) 및/또는 이력 게임 상태 데이터(126)와 함께, 또는 이를 사용하는 대신에 훈련 데이터로서 사용될 수 있다. 이력 게임 제어 데이터(116)를 이력 센서 데이터(118) 및/또는 이력 게임 상태 데이터(126)와 함께 사용하는 것은, 게임 제어 데이터(116)와 센서 데이터(118) 및/또는 게임 제어 데이터(116)와 같은 시간에 또는 그 근처에서 생성된 게임 상태 데이터(126) 사이에 상관관계가 만들어지는 것을 허용한다.
일반적으로, 훈련 데이터는 두 가지 구성요소, 즉 피쳐(feature) 및 라벨(label)을 포함할 수 있다. 그러나, 기계 학습 모델(들)(104)을 훈련시키기 위해서 사용되는 훈련 데이터는 일부 실시형태에서는 라벨링되지 않을 수 있다. 따라서, 기계 학습 모델(들)(104)은, 지도 학습, 비지도 학습, 반지도 학습, 강화 학습 등과 같은 임의의 적절한 학습 기술을 사용하여 훈련 가능할 수 있다. 훈련 데이터에 포함된 피쳐는 한 세트의 피쳐에 의해서, 예컨대 훈련 데이터의 속성에 대한 정량화 가능한 정보의 n차원 피쳐 벡터(feature vector)의 형태로, 표현될 수 있다. 훈련 데이터에 포함된 예시적인 피쳐는, 센서 데이터(118) 값(예를 들어, 커패시턴스 값, 저항 값, 변위 값, 속도 값, 가속도 값, 온도 값, 습도 값 등), 게임 상태 데이터(126) 값(예를 들어, 플레이어 움직임에 관한 값, 게임 맵에서의 위치, 캐릭터 클래스, 무기 등), 게임 제어 데이터(116) 값(예를 들어, 손가락 작동식 컨트롤의 전위차계 및 다른 스위치에 의해 생성된 값), 및/또는 특정 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률을 나타내는 스코어를 계산하는 것과 관련될 수 있는 임의의 다른 적절한 피쳐를, 이에 한정됨 없이, 포함할 수 있다. 일부 실시형태에서, 센서 데이터(118) 값은 바이오피드백 측정치/값을 획득하기 위해 플레이어(110) 상에 또는 이에 근접하게 배열된 하나 이상의 물리적 센서(예를 들어, 바이오피드백 센서)에 의해 생성된 데이터와 관련될 수 있다. 이러한 센서 및 센서 데이터의 예는 미국 특허 제9,511,289호에 설명되어 있고, 이는 그 전체 내용이 본원에 인용되어 포함된다. 본원에서 사용된 용어 "바이오피드백"은 게임 플레이어의 구체적이고 정량화 가능한 신체 기능의 측정치를 지칭한다. 이러한 바이오피드백 측정치는 일반적으로 무의식적이거나 비자발적인 신체 기능의 측정이라고 지칭된다. 예를 들어, 이러한 바이오피드백 센서에 의해 생성된 센서 데이터(118)는 플레이어(110)의 혈압, 혈액 산소 레벨, 심박수, 호흡수, 전기적 피부 반응, 피부 및/또는 체온, 땀샘 활동, 눈 운동, 동공 확장, 머리, 얼굴, 손 또는 기타 신체 움직임, 제스처, 위치, 얼굴표정, 자세, 근육 긴장, 뇌로부터의 신경 신호, 및/또는 플레이어(110)의 감정, 느낌, 희망 및/또는 욕구를 나타내는 임의의 다른 적절한 비언어적 신호, 값 및/또는 단서와 관련된 값을 생성할 수 있다. 이러한 유형의 값은 게임 컨트롤러(106)에 대한 향후 사용자 입력을 예보할 수 있고, 따라서 기계 학습 모델(들)(104)을 훈련시키기 위한 피쳐로서 사용된다.
기계 학습 모델(들)(104)의 훈련의 일부로서, 훈련 구성요소는 기계 학습을 위한 가중치를 설정할 수 있다. 이러한 가중치는, 이력 센서 데이터(118) 및/또는 이력 게임 상태 데이터(126)를 포함하여, 데이터 저장소(124)의 이력 데이터로부터 도출된 바와 같이 훈련 데이터에 포함된 한 세트의 피쳐에 적용될 수 있다. 일부 실시형태에서, 훈련 프로세스 동안 설정되는 가중치는 기계 학습 모델(들)(104)의 내부에 있는 파라미터(예를 들어, 신경망의 은닉 층에서의 뉴런에 대한 가중치)에 적용될 수 있다. 기계 학습 모델(들)의 이러한 내부 파라미터는 한 세트의 피쳐 중 개별 입력 피쳐와 일대일로 매핑되거나 매핑되지 않을 수 있다. 가중치는 훈련된 기계 학습 모델(들)(104)에 의해 출력되는 스코어에 대해 임의의 주어진 피쳐 또는 파라미터가 갖는 영향을 나타낼 수 있다.
훈련된 기계 학습 모델(들)(104)을 사용하여, 컴퓨팅 시스템(102)은 게임 컨트롤러(106)에 제공될 수 있는 상이한 유형의 사용자 입력을 스코어링할 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 하나 이상의 클라이언트 머신(112)으로부터 하나 이상의 로그인된 등록된 사용자 계정과 연관된 새로운 센서 데이터(118)를 수신할 수 있고/있거나, 컴퓨팅 시스템(102)은 실행 중인 비디오 게임(120)으로부터 새로운 게임 상태 데이터(126)를 수신할 수 있다. 예시적인 실시예에서, 비디오 게임(120)은 설치된 클라이언트 애플리케이션을 통해 클라이언트 머신(들)(112(A)/(B)) 상에서 실행될 수 있거나, 비디오 게임(130)은 원격 컴퓨팅 시스템(102) 상에서 실행되는 동안 클라이언트 머신(들)(112(A)/(B))에 스트리밍될 수 있다. 어떤 경우든, 플레이어들(110)이, 예를 들어 멀티플레이어 모드에서 플레이하도록 요청하면서, 이들의 사용자 계정으로 로그인하고, 특정 비디오 게임(120)을 실행함에 따라, 이들의 각각의 클라이언트 머신(112)은 그 만큼을 나타내는 정보를 컴퓨팅 시스템(102)에 제공할 수 있고, 센서 데이터(118) 및 게임 제어 데이터(116)는, 비디오 게임(120)이 시작되고 플레이어(110)가 게임 플레이를 시작할 때, 클라이언트 머신(들)(112(A)/(B))으로부터 원격 컴퓨팅 시스템(102)으로 실시간으로 스트리밍될 수 있다.
일 실시예에서, 컴퓨팅 시스템(102)은 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 제1 클라이언트 머신(112(A))으로부터 수신한 새로운 센서 데이터(118)를 제공할 수 있고, 훈련된 기계 학습 모델(들)(104)로부터 출력으로서, 예측된 유형의 사용자 입력과 연관된 스코어(128)를 생성할 수 있다. 도 1의 실시예에서 스코어(128)는, 대응되는 게임 제어 데이터(116)가 새로운 센서 데이터(118)의 수신 이후 일정 시간 기간 내에 제1 클라이언트 머신(112(A))으로부터 수신되게 하도록, 제1 플레이어(110(A))가 게임 컨트롤러(106(A))의 "A" 버튼을 작동(게임 컨트롤러(106(A))에 대한 특정 유형의 사용자 입력인 "A" 버튼의 작동)할 확률과 관련이 있다. 이 경우, 높은 스코어(128)는 플레이어(110(A))가 특정 유형의 사용자 입력을 제공할 가능성이 높음을 나타내는 반면, 낮은 스코어(128)는 플레이어(110(A))가 특정 유형의 사용자 입력을 제공할 가능성이 낮은 것을 나타낸다. 일부 실시예에서, 스코어(128)는 [0,1]의 범위에서 정규화되는 변수이다. 이 스코어(128)는 특정 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률과 단조 관계를 가질 수 있다. 스코어(128)와 실제 확률 사이의 관계는 단조(monotonic)일 수 있지만, 선형 관계일 수도 있고 아닐 수도 있다. 물론, 스코어링은, 이 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률을 예측하기 위해 임의의 적절한 방식으로 구현될 수 있다.
도 1의 실시예는, 원격 컴퓨팅 시스템(102) 상에서 상주하고 실행되는 훈련된 기계 학습 모델(들)(104)을 예시하지만, 훈련된 기계 학습 모델(들)(104)이 비디오 게임(120)의 플레이어(110)와 콜로케이팅된 하나 이상의 클라이언트 머신(112)에 제공될 수 있다는 것이 이해될 것이다. 즉, 원격 컴퓨팅 시스템(102)에서 훈련이 발생될 수 있지만, 훈련된 기계 학습 모델(들)(104)은 클라이언트 머신(112) 자체 상에서의 훈련된 기계 학습 모델(들)(104)의 실행을 위해 (원격 컴퓨팅 시스템(102)에서 훈련된 기계 학습 모델(들)(104)을 실행하는 대신에 또는 이에 추가하여) 클라이언트 머신(112)에 다운로드될 수 있다. 이러한 실시형태에서, 클라이언트 머신(112)은 공통 기계 학습 모델(들)(104)을 활용할 수 있고/있거나, 다수의 클라이언트 머신(112)은 각각 다른 기계 학습 모델(104)을 활용할 수 있다. 예를 들어, 임의의 수의 클라이언트 머신(112)의 경우, 제1 클라이언트 머신(112(A))은 제1 훈련된 기계 학습 모델(들)(104)을 실행할 수 있고, 제2 클라이언트 머신(112(B))은 제1 훈련된 기계 학습 모델(104)과 다른 제2 훈련된 기계 학습 모델(들)(104)을 실행할 수 있는 방식이다. 예시적인 실시예에서, 상이한 사용자-특정 기계 학습 모델들(104)은 각각의 사용자(110)에 특정한 이력 데이터에 대해 훈련될 수 있고, 이러한 각각의 사용자-특정 기계 학습 모델(104)은, 전체 플레이어(110) 파퓰레이션으로부터 수집된 집합체 데이터(aggregate data)에 대해 기계 학습 모델(들)(104)을 훈련시키는 것 대신에 또는 이에 부가하여, 이러한 사용자들(110)의 각각의 클라이언트 머신(112)에 다운로드될 수 있다. 이러한 사용자 특정 기계 학습 모델(들)(104)이 또한 원격 컴퓨팅 시스템(102)에서 실행될 수 있고, 특정 플레이어(110)와 연관된 사용자 입력을 예측하기 위해 플레이어(110)별로 활용될 수 있다는 것이 이해될 것이다. 따라서, 사용자 입력을 예측하기 위해 훈련된 기계 학습 모델(들)(104)에 입력 데이터를 제공하는 "컴퓨팅 시스템(102)"에 대한 모든 언급은 "클라이언트 머신(112)"으로 대체될 수 있다. 이러한 방식으로, 훈련된 기계 학습 모델(들)(104)은 클라이언트 머신(112)에서 실행될 수 있다. 따라서, "컴퓨팅 시스템(102)" 및 "클라이언트 머신(112)"이라는 용어는 이러한 맥락에서 본원에서 상호교환적으로 사용될 수 있다.
일부 실시형태에서, 새로운 게임 상태 데이터(126)는 스코어(128)를 생성하기 위해, 훈련된 기계 학습 모델(들)(104)에, 추가 입력으로서 또는 대안적인 입력으로서, 제공될 수 있다. 이러한 시나리오에서, 스코어(128)(도 1에 예시됨)는, 제1 플레이어(110(A))가 게임 컨트롤러(106(A))의 "A" 버튼을 작동시켜, 대응되는 게임 제어 데이터(116)가 새로운 게임 상태 데이터(126)를 수신한 이후 일정 시간 기간 내에 제1 클라이언트 머신(112(A))으로부터 수신되게 할 것이라는 확률과 관련된다. 이 일정 시간 기간(또는 사용자 입력이 발생될 것으로 예측되는 향후의 시간)은 다양할 수 있고, 훈련된 기계 학습 모델(들)(104)은 입력 데이터를 수신한 후 임의의 적절한 시간에 제공될 사용자 입력을 예측하도록 훈련될 수 있다. 예를 들어, 기계 학습 모델(들)(104)은 센서 데이터(118) 및/또는 게임 상태 데이터(126)가 수신된 후 1밀리초 후에, 센서 데이터(118) 및/또는 게임 상태 데이터(126)가 수신된 후 200밀리초 후에, 또는 임의의 다른 적절한 일정 시간 기간 후에 제공될 사용자 입력을 예측하도록 훈련될 수 있다. 단일 스코어(128)가 도 1에 도시되지만, 기계 학습 모델(들)(104)이 다수의 상이한 유형의 사용자 입력(예: "B" 버튼, "X" 버튼, "Y" 버튼의 선택, 조이스틱의 편향, 게임 컨트롤러(106)의 회전 등)에 대해 다수의 스코어(128)를 출력하도록 구성될 수 있다는 것이 이해될 것이다.
일부 실시형태에서, 새로운 게임 제어 데이터(116) 자체는 스코어(128)를 생성하기 위해, 훈련된 기계 학습 모델(들)(104)에, 추가 입력으로서 또는 대안적인 입력으로서, 제공될 수 있다. 예를 들어, 플레이어(110)는, 게임 컨트롤러(106)의 컨트롤을 작동(예: 방향 패드(D-패드)와 같은 버튼 누르기, 조이스틱 편향시키기, 트랙패드에서 손가락으로 쓸어내기 등)함으로써, 그리고/또는 비디오 게임(120)의 양상(들)을 제어하기 위해 3D 공간에서 게임 컨트롤러(106)를 틸팅시키거나 이동시킴으로써 게임플레이 동안 게임 컨트롤러(106)를 작동할 수 있다. 게임 컨트롤러(106)의 사용자 작동에 응답하여, 게임 컨트롤러(106)는 게임 제어 데이터(116)를 생성할 수 있다. 이러한 새로운 게임 제어 데이터(116)(이는 게임 컨트롤러(106)에 제공된 사용자 입력을 나타냄)는 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 제공될 수 있다. 훈련된 기계 학습 모델(들)(104)이 원격 컴퓨팅 시스템(102)에서 실행 중인 경우, 게임 제어 데이터(116)는 이러한 목적을 위해 원격 컴퓨팅 시스템(102)으로 전송될 수 있다.
일 또는 복수의 유형의 사용자 입력에 대해 결정된 기계 학습된 스코어(들)(128)에 적어도 부분적으로 기반하여, 컴퓨팅 시스템(102)은 사용자 입력의 이 유형에 대응되는 게임 제어 데이터(108)를 생성할 수 있고, 게임 제어 데이터(108)를 입력으로서 비디오 게임(120)에 제공하고, 비디오 게임으로부터의 출력인 비디오 게임 데이터(122)를 수신한다. 비디오 게임 데이터(122)가 원격 시스템(102)에서 생성되는 경우, 원격 시스템(102)은 컴퓨터 네트워크(114)를 통해 비디오 게임 데이터(122)를 클라이언트 머신(112(B))으로 전송할 수 있다. 비디오 게임(120)이 클라이언트 머신(112(B)) 상에서 실행되는 경우, 원격 시스템(102)은 게임 제어 데이터(108)를 컴퓨터 네트워크(114)를 통해 클라이언트 머신(112(B))에 전송할 수 있고, 클라이언트 머신(112(B))은 비디오 게임 데이터(122)를 생성할 수 있다. 훈련된 기계 학습 모델(들)(104)이 클라이언트 머신(112(B))에서 실행 중인 경우, 원격 시스템(102)은 컴퓨터 네트워크(114)를 통해 적어도 센서 데이터(118)를 클라이언트 머신(112(B))으로 전송할 수 있고, 클라이언트 머신(112(B))은 센서 데이터(118) 및/또는 게임 상태 데이터(126)를 훈련된 기계 학습 모델(들)(104)에 입력으로서 제공할 수 있다. 비디오 게임(120) 및 훈련된 기계 학습 모델(들)(104)이 클라이언트 머신(112(A))에서 실행 중인 경우, 비디오 게임 데이터(122)는 임의의 다른 컴퓨팅 디바이스로 전송되지 않을 수 있지만, 클라이언트 머신(112(A))의 디스플레이 상에 제시될 수 있다. 어느 경우든, 제2 플레이어(110(B))와 같은 플레이어(110)는, 플레이어(110)(예를 들어, 제1 플레이어(110(A)))가 게임 컨트롤러(106(A))에 사용자 입력을 제공한 시간에 매우 가까운 시간에 (즉, 비디오 게임(120)의 플레이 품질을 저하시킬 수 있는 눈에 띄는 지연 없이) 플레이어 동작(들)(예를 들어, 제1 플레이어(110(A))의 동작(들))과 관련된 무언가를 나타내는 비디오 게임 콘텐츠를 인지할 수 있다. 예를 들어, 제1 플레이어(110(A))가 게임 컨트롤러(106(A))의 "A" 버튼을 선택하면, 제2 플레이어(110(B))는 제1 플레이어(110(A))가 제어하는 비디오 게임 캐릭터(130)를, 제1 플레이어(110(A))에 의한 "A" 버튼의 작동과 밀접하게 동기화되어 점프하는 것으로 인식한다. 이것은 비디오 게임 플랫폼의 레이턴시를 보상하고, 제1 플레이어(110(A))가 실제로 "A" 버튼을 선택하기 전에 예측되는, 제1 플레이어(110(A))가 "A" 버튼을 선택한다는 기계 학습된 예측 때문이다.
도 2는 훈련된 기계 학습 모델(들)(104)을 사용하여 게임 컨트롤러(106)에 대한 사용자 입력을 예측할 목적으로 원격 컴퓨팅 시스템(102)에 다른 데이터 중에서 센서 데이터(118)를 제공하도록 구성된 게임 컨트롤러(106)의 예시적인 구성요소를 예시하는 블록도를 도시한다. 도 2의 게임 컨트롤러(106)는 본원에 설명된 바와 같이 비디오 게임 플랫폼과 상호작용하기 위해 플레이어(110)에 의해 사용될 수 있다. 예를 들어, 플레이어(110)는 게임 컨트롤러(106)를, 비디오 게임 클라이언트(예를 들어, 비디오 게임을 플레이하기 위한 게임 소프트웨어)를 실행하는 클라이언트 머신(112)과 페어링할 수 있다. 일단, 게임 컨트롤러(106)가 클라이언트 머신(112)과 페어링되고, 게임 컨트롤러(106)가 이와 통신할 수 있게 되면(예를 들어, 클라이언트 머신(112)에 데이터를 송신함으로써/이로부터 데이터를 수신함으로써), 게임 컨트롤러(106)는, 게임 컨트롤러(106)를 사용자 계정으로 등록하고, 원격 컴퓨팅 시스템(102)으로부터 사용 가능한 비디오 게임에 액세스하고, 게임 컨트롤러(106)를 사용하여 비디오 게임을 플레이하는 것과 같이, 본원에 설명된 비디오 게임 플랫폼과 상호 작용하기 위해서 사용될 수 있다.
게임 컨트롤러(106)는 도 1에 도시된 게임 컨트롤러와 같은, 핸드헬드 게임 컨트롤러를 나타낼 수 있으며, 이는 플레이어(110)의 한 손 또는 양 손에 의해 유지되도록 설계되고, 플레이어의 손(들)(110)의 손가락 및/또는 엄지손가락으로 작동될 하나 이상의 손가락 조작식 컨트롤로 구성된다. 일부 실시형태에서, 게임 컨트롤러(106)는, 3차원(3D) 공간에서 게임 컨트롤러(106)를 이동(예를 들어, 패닝(panning), 회전, 틸팅 등)시킴으로써 작동되도록 추가로 구성될 수 있다. 게임 컨트롤러(106)가, 모바일 폰(예: 스마트 폰), 태블릿 컴퓨터, PDA(Portable Digital Assistant), 웨어러블 컴퓨터(예: 스마트 와치, HMD 등), 휴대용 게임 플레이어, 및/또는 임의의 유사한 전자 디바이스와 같은, 임의의 다른 적절한 유형의 핸드헬드 디바이스, 또는 웨어러블 디바이스 등을 나타낼 수 있다는 것이 이해될 것이다.
도 2에 도시된 바와 같이, 게임 컨트롤러(106)는, 손가락 조작식 컨트롤과 같은 하나 이상의 입력/출력(I/O) 디바이스(200)(예: 조이스틱, 트랙패드, 트리거, 누를 수 있는 버튼 등), 잠재적으로 다른 유형의 입력 또는 출력 디바이스(예: 터치스크린(들), 사용자 음성 입력과 같은 오디오 입력을 수신하는 마이크로폰(들), 카메라(들) 또는 게임 컨트롤러(106) 및/또는 사용자(110)의 손의 움직임과 같은 제스처 입력을 수신하기 위한 입력 디바이스로서 기능할 수 있는 다른 유형의 센서(예: 센서(들)(202)))를 포함한다. 일부 실시형태에서, 추가적인 입력 디바이스가 키보드, 키패드, 마우스, 터치스크린, 조이스틱, 제어 버튼 등의 형태로 제공될 수 있다. 입력 디바이스(들)는, 전원 및 리셋 버튼뿐만 아니라, 볼륨 올림/내림을 위한 기본 볼륨 제어 버튼(들)과 같은 제어 메커니즘을 더 포함할 수 있다. 입력 디바이스(들)는 사용자(110)의 생체측정 인식/인증을 위해 지문 또는 장문(palmprint) 획득, 사용자의 눈 및/또는 얼굴 스캔, 사용자 음성 캡처 등과 같은 사용자(110)의 생체측정 데이터의 입력을 용이하게 할 수 있다.
한편, 출력 디바이스는 디스플레이, 라이트 요소(예를 들어, LED), 햅틱 감각을 생성하기 위한 진동기, 스피커(들)(예를 들어, 헤드폰) 등을 포함할 수 있다. 예를 들어, 또한, 전원이 켜져 있을 때와 같은 상태를 나타내는 간단한 발광체 요소(예: LED)가 있을 수 있다. 몇 가지 예가 제공되었지만, 게임 컨트롤러(106)는 추가로 또는 대안적으로 임의의 다른 유형의 출력 디바이스를 포함할 수 있다. 일부 경우에, 하나 이상의 출력 디바이스에 의한 출력은 하나 이상의 입력 디바이스에 의해 수신된 입력에 기반할 수 있다. 예를 들어, 컨트롤의 동작은 컨트롤에 인접하게(예를 들어, 아래에) 또는 임의의 다른 위치에 위치된 진동기에 의한 햅틱 응답의 출력으로 귀결될 수 있다.
또한, 게임 컨트롤러(106)는 네트워크에 그리고/또는 하나 이상의 원격 시스템(예를 들어, 애플리케이션, 게임 콘솔, 무선 액세스 포인트 등을 실행하는 클라이언트 머신(112))에 대한 무선 연결을 용이하게 하는 하나 이상의 통신 인터페이스(204)를 포함할 수 있다. 통신 인터페이스(204)는, Wi-Fi, 블루투스, 무선 주파수(RF) 등과 같은 다양한 무선 기술 중 하나 이상을 구현할 수 있다. 핸드헬드 컨트롤러(106)가, 다른 무선 네트워크와 통신하는 플러그인 네트워크 디바이스, 연결된 주변 디바이스, 또는 네트워크에 대한 유선 연결을 용이하게 하는 물리적 포트를 더 포함할 수 있다는 것이 이해될 것이다.
예시된 구현예에서, 게임 컨트롤러(106)는 하나 이상의 프로세서(206) 및 컴퓨터 판독 가능 매체(208)를 더 포함한다. 일부 구현예에서, 프로세서(들)(206)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), CPU와 GPU 모두, 마이크로프로세서, 디지털 신호 프로세서, 또는 당업계에 알려진 다른 처리 유닛 또는 구성요소를 포함할 수 있다. 대안적으로 또는 추가로, 본원에서 설명된 기능은 적어도 부분적으로 하나 이상의 하드웨어 로직 구성요소에 의해 수행될 수 있다. 예를 들어, 그리고 한정됨 없이, 사용될 수 있는 예시적인 유형의 하드웨어 로직 구성요소는 필드 프로그래머블 게이트 어레이(FPGA: Feld-Programmable Gate Array), 애플리케이션 특정 집적 회로(ASIC: Application-Specific Integrated Circuit), 애플리케이션 특정 표준 제품(ASSP: Application-Specific Standard Product), 시스템 온 칩 시스템(SOC: System-On-a-Chip system), 복합 프로그래밍가능 로직 디바이스(CPLD: Complex Programmable Logic Device) 등을 포함한다. 추가적으로, 프로세서(들)(206) 각각은, 프로그램 모듈, 프로그램 데이터, 및/또는 하나 이상의 운영 체제를 또한 저장할 수 있는 자체 로컬 메모리를 구비할 수 있다.
컴퓨터 판독가능 매체(208)는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 제거가능 및 제거불가능 매체, 휘발성 및 비휘발성 메모리를 포함할 수 있다. 이러한 메모리는, 원하는 정보를 저장하기 위해서 사용될 수 있으며 컴퓨팅 디바이스에 의해서 액세스될 수 있는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 디바이스, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스, 또는 기타 자기 저장 디바이스, RAID 저장 시스템, 또는 임의의 다른 매체를 포함하나, 이에 한정되지 않는다. 컴퓨터 판독 가능 매체(208)는 컴퓨터 판독 가능 저장 매체("CRSM")로서 구현될 수 있으며, 이는 컴퓨터 판독 가능 매체(208)에 저장된 명령어를 실행하기 위해 프로세서(들)(206)에 의해 액세스 가능한 임의의 이용 가능한 물리적 매체일 수 있다. 하나의 기본 구현예에서, CRSM은 랜덤 액세스 메모리("RAM": random access memory) 및 플래시 메모리를 포함할 수 있다. 다른 구현에서, CRSM은, 읽기 전용 메모리("ROM"), 전기적으로 지울 수 있는 프로그래밍 가능한 읽기 전용 메모리("EEPROM"), 또는 원하는 정보를 저장하기 위해서 사용될 수 있고, 프로세서(들)(206)에 의해서 액세스될 수 있는 임의의 다른 유형의 매체를 포함할 수 있으나, 이에 한정되지 않는다.
명령어, 데이터 저장소 등과 같은 여러 모듈은 컴퓨터 판독 가능 매체(208) 내에 저장될 수 있고, 프로세서(들)(206)에서 실행되도록 구성될 수 있다. 몇 가지 예시적인 기능 모듈은, 컴퓨터 판독 가능 매체(208)에 저장되고 프로세서(들)(206)에서 실행되는 것으로서 도시되지만, 동일한 기능이 대안적으로 하드웨어, 펌웨어 또는 SOC(시스템 온 칩)로 구현될 수 있다.
운영 체제 모듈(210)은, 다른 모듈의 이익을 위해 게임 컨트롤러(106) 내에 있고 이에 결합되는 하드웨어를 관리하도록 구성될 수 있다. 또한, 컴퓨터 판독 가능 매체(208)는, 게임 컨트롤러(106)가, 통신 인터페이스(들)(204)를 통해, 애플리케이션(예를 들어, 게임 애플리케이션)을 실행하는 클라이언트 머신(112)(예: PC), 게임 콘솔, 또는 원격 컴퓨팅 시스템(102) 등과 같은 하나 이상의 다른 디바이스와 통신할 수 있게 하는 네트워크 통신 모듈(212)을 저장할 수 있다. 컴퓨터 판독 가능 매체(208)는, 게임 컨트롤러(106)에서, 게임 컨트롤러(106)에 연결된 클라이언트 머신(112)에서, 또는 게임 컨트롤러(106) 및/또는 클라이언트 머신(112)에 연결된 원격 컴퓨팅 시스템(102)에서 실행되는 게임(또는 다른 애플리케이션)과 연관된 데이터를 저장하기 위한 게임 세션 데이터베이스(214)를 더 포함할 수 있다. 컴퓨터 판독 가능 매체(208)는 또한, 클라이언트 머신(112)(예: PC, 게임 콘솔 등) 및 원격 컴퓨팅 시스템(102) 등과 같은, 게임 컨트롤러(106)가 결합되는 디바이스와 연관된 데이터를 저장하는 디바이스 기록 데이터베이스(216)를 포함할 수 있다. 컴퓨터 판독 가능 매체(208)는 게임 컨트롤러(106)가 게임 컨트롤러로서 기능하도록 구성하는 게임 제어 명령어(218), 및 게임 컨트롤러(106)가 다른 비게임(non-gaming) 디바이스의 컨트롤러로서 기능하도록 구성하는 범용 제어 명령어(220)를 더 저장할 수 있다.
게임 컨트롤러(106)는 또한 하나 이상의 센서(202)를 포함하는 것으로 도시된다. 예를 들어, 센서(들)(202)는, 하나 이상의 자이로스코프, 및/또는 가속도계, 및/또는 자력계, 및/또는 나침반, 또는 기타 적절한 모션 센서를 포함할 수 있는 관성 측정 유닛(들)(IMU(들): inertial measurement unit(s))과 같은 모션 센서(들)를 포함할 수 있다. 일부 실시형태에서, 센서(들)(202)는 독립형 자이로스코프(들), 가속도계(들), 자력계(들), 나침반(들) 등으로서 구현될 수 있고, 반드시 IMU(들)로서 구현될 필요는 없다. 일부 실시형태에서, 이들 센서(202) 중 하나 이상은 6성분 모션 감지를 제공하기 위해 활용될 수 있다. 예를 들어, IMU는 3D 공간에 대한 병진 운동 및/또는 회전 운동을 나타내는 센서 데이터(118)를 감지하고 생성하도록 구성될 수 있다. 이러한 센서(들)(202)에 의해 생성된 센서 데이터(118)는 3D 공간에서 회전 운동(롤, 피치 및 요)의 범위, 비율 및/또는 가속도뿐만 아니라 3D 공간에서 병진 운동(X, Y, Z 운동)의 범위, 비율 및/또는 가속도와 관련될 수 있다. 측정치는, 데카르트(X, Y, Z) 또는 구형 좌표계와 같은 3D 좌표계로 생성될 수 있다. 센서 데이터(118)는, 예를 들어, 병진 운동(변수 d, v, a로 표시) 및 각 운동(변수 θ, ω, α로 표시)의 변위(예: 이전 시간 로그 이후의 변위), 속도, 및/또는 가속도에 관한 측정치를 포함할 수 있다. 센서 데이터(118)는, 예를 들어, 임의의 적절한 시간 간격으로 센서 데이터(118)가 생성되고/되거나 전송되는 시간을 더 포함할 수 있어, 센서 데이터(118)의 이력이 수집될 수 있고, 일시적으로 또는 영구적으로 게임 컨트롤러(106)에 저장될 수 있다.
다른 실시예로서, 센서(들)(202)는 터치 센서(들)에 대한 손가락, 손바닥 등과 같은 물체의 근접도를 감지하도록 구성되고, 적절한 터치 감지 기술에 기반할 수 있는 터치 센서(들), 예를 들어, 용량성 터치 센서, 저항성 터치 센서, 적외선 터치 센서, 음향 음파를 활용하여 손가락의 근접성을 검출하는 터치 센서, 또는 기타 유형의 터치 센서를 포함할 수 있다. 예를 들어, 터치 센서(들)는 디바이스의 표면에 대한, 또는 손가락 조작식 컨트롤에 대한 손가락(들)의 근접도를 검출하기 위해 이 표면의 아래 또는 표면 상에, 그리고/또는 손가락 조작식 컨트롤 내에 또는 상에 배치될 수 있다. 근접성(예를 들어, 손가락이 표면에 접촉 또는 표면 위에서 맴돌기)을 검출하는 것에 응답하여, 터치 센서(들)는 손가락(들)의 근접도를 나타내는 센서 데이터(118)를 생성할 수 있다. 터치 센서(들)와 같은 것은, 사용자(110)의 그립을 검출하기 위해서 게임 컨트롤러(106)의 핸들(들)에, 그리고/또는, 트랙패드, 조이스틱, 버튼 등을 포함한, 다양한 컨트롤 내에 내장될 수 있다. 용량성 기반 감지를 활용하는 구현예에서, 터치 센서(들)는 전극(예: 트랜스커패시티브형 센서의 송신기 전극 및 수신기 전극)을 포함할 수 있고, 전압은 전극들에 인가되어 전극들이 전극들에서 커패시턴스 변화를 측정하도록 구성될 수 있으며, 이는 센서(들)(202)에 대한 물체의 근접도를 나타내는 커패시턴스 값의 형태로 센서 데이터(118)로 변형될 수 있다. 예를 들어, 용량성 기반 터치 센서(들)의 전극들에서의 커패시턴스 변화는 전극들에 근접한 물체(예: 손가락)에 의해 영향을 받을 수 있다. 원시 커패시턴스는 센서 데이터(118)를 생성하기 위해 근접도 값으로 디지털화될 수 있다.
다른 실시예로서, 센서(들)(202)는 힘 감지 저항기(들)(FSR: force sensing resistor)와 같은 압력 센서(들)를 포함할 수 있다. 예를 들어, FSR은 저항성 멤브레인(예: 잉크 조성물과 같은 반도체 재료)으로부터 이격된 전도성 재료뿐만 아니라, 액추에이터에 적용된 압축력의 적용 하에 저항성 재료가 전도성 재료와 접촉하도록 저항성 멤브레인에 힘을 전달하도록 구성된 액추에이터를 포함할 수 있다. FSR은 저항 값에 대응되는 센서 데이터(118)를 생성하기 위해 가변 힘에 응답하여 가변 저항을 나타낼 수 있다. FSR은 "ShuntMode" FSR 또는 "ThruMode" FSR일 수 있다. ShuntMode FSR을 사용하면, 저항성 멤브레인으로부터 이격된 전도성 재료는 복수의 맞물린 금속 핑거일 수 있다. FSR의 액추에이터에 힘이 가해지면, 저항성 멤브레인이 맞물린 금속 핑거의 일부와 접촉되며, 이는 금속 핑거들을 분로(shunt)시켜 FSR의 출력 단자에 걸쳐 저항을 변화시키며, 이는 센서 데이터(118)를 생성하도록 FSR 값으로 디지털화될 수 있다. 일부 실시형태에서, 압력 센서(들)는 추가적으로 또는 대안적으로 압전 센서, 스트레인 게이지 등과 같은 다른 유형의 압력 감지 메커니즘을 포함할 수 있다.
대응되는 센서 데이터(118)를 생성하도록 구성된 센서(202)의 다른 예는, 온도 센서(들), 습도 센서, 카메라(적외선(IR) 또는 기타 비가시 스펙트럼 카메라 포함), 시선 추적 시스템, 플레이어(110)가 서 있을 수 있는 무게/위치 센서 패드, 미국 특허 제9,511,289호에 설명된 것과 같은 기타 바이오피드백 센서(심박수 센서, 전기적 피부 반응 센서, 시선 추적 센서, 얼굴 표정 센서, 근육 긴장 센서, 자세 센서 등)를, 이에 한정됨 없이, 포함할 수 있다. 또 다른 예로서, 센서(들)(202)는, 뇌파검사(EEG) 센서, 정량적 EEG(qEEG) 센서, 기능적 근적외선 분광법(fNIRS) 센서, 기능적 자기 공명 이미징(fMRI) 센서, 근전도검사(EMG) 센서, 전기 안구도 기록(EOG) 센서 및/또는 기타 뇌-컴퓨터 인터페이스 센서와 같은 뉴런 활동을 나타내는 신호를 검출하는 센서(들)(202)를 포함할 수 있다. 플레이어(110)의 머리에 착용되도록 구성된 게임 컨트롤러(106)(예를 들어, HMD)는, 이미 사용자의 머리와 접촉하고 있기 때문에, 이러한 유형의 뇌-컴퓨터 인터페이스 센서의 자연스러운 촉진자이다. 센서(들)(202)가 게임 컨트롤러(106)에 내장된(예를 들어, 게임 컨트롤러(106)에 통합된 하나 이상의 손가락 조작식 컨트롤 등) 또는 게임 컨트롤러 상에 있는(게임 컨트롤러(106) 본체의 표면에 부착된, 손가락 조작식 컨트롤 등) 것으로 도시되지만, 일부 실시형태에서, 센서(들)(202)는 게임 컨트롤러(106)의 외부에 있을 수 있고 이에 주변기기로서 연결될 수 있거나, 센서(들)(202)는, 센서(들)(202)가 독립형 센서(들)(202)로서 사용 가능하도록, 게임 컨트롤러(106) 외부에 있을 수 있고, 클라이언트 머신(112)에 통신 가능하게 결합될 수 있다. 예를 들어, 센서(들)(202)는 훈련된 기계 학습 모델(들)(104)에 입력될 수 있는 플레이어(110)에 대한 바이오피드백 측정치를 획득하기 위해 플레이어(110) 상에 또는 이에 근접하게 배열(예를 들어, 부착)될 수 있다.
게임 컨트롤러(106)의 센서(들)(202)의 유형에 관계없이, 센서(들)(202)는, 어떤 방식으로, 게임 컨트롤러(106)의 물리적 상태와 관련된 센서 데이터(118)를 생성하도록 구성된다. 예를 들어, 터치 센서(들)는 물체(예: 손가락)가 터치 센서(들)를 포함하는 게임 컨트롤러(106)의 일부분(예: 방향 패드(D-패드), 조이스틱, 트리거 버튼, 범퍼 버튼, 선택 버튼 등)에 접촉되는지 또는 이 부분에 근접하는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 다른 실시예로서, 압력 센서(들)는 물체가 게임 컨트롤러(106)의 일부분을 가압하고 있는지 여부, 및 게임 컨트롤러(106)의 이 부분이 물체에 의해 가볍게 또는 무겁게 가압되는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 모션 센서(예를 들어, 자이로스코프 및/또는 가속도계)는, 또 다른 예로서, 게임 컨트롤러(106)가 3D 공간 내에서 방향 및/또는 공간적 위치를 변경하였는지 여부, 및/또는 게임 컨트롤러(106)가 빠르게 또는 느리게 움직이고 있는지 여부를 나타내는 센서 데이터(118)를 생성할 수 있다. 따라서, 게임 컨트롤러(106)의 센서(들)(202)는 게임 컨트롤러(106)의 이러한, 그리고 다른 종류의 물리적 상태를 나타내는 센서 데이터(118)를 생성하도록 구성된다.
따라서, 플레이어(110)가 비디오 게임 플랫폼과 상호작용하기 위해 - 예를 들어, 클라이언트 머신(112)에서 비디오 게임(120)을 플레이하기 위해 - 게임 컨트롤러(106)를 활용함에 따라, 도 1에서 소개된 센서 데이터(118) 및 게임 제어 데이터(116)가 클라이언트 머신(112)으로 전송되고, 클라이언트 머신(112)으로부터 원격 컴퓨팅 시스템(102)으로 전송될 수 있다. 게임 제어 데이터(116)는 비디오 게임(120)의 양상(들)을 제어하기 위해서 사용 가능하고, 이로써 비디오 게임(120)의 다음 프레임을 렌더링하는 방법을 결정하기 위해 비디오 게임(120)에 의해 처리된다. 센서 데이터(118)는, 자이로스코프에 의해 생성된 원시 데이터, 가속도계에 의해 생성된 원시 데이터 및/또는 터치 센서(예: 용량성 터치 패드)에 의해 생성된 원시 데이터와 같은 필터링되지 않은 원시 센서 데이터(118)를 나타낸다.
도 3은 훈련된 기계 학습 모델(들)(104)을 사용하여 게임 컨트롤러(106)에 대한 사용자 입력을 예측하도록 구성된 컴퓨팅 시스템(102)의 예시적인 구성요소를 예시하는 블록도를 도시한다. 예시된 구현예에서, 컴퓨팅 시스템(102)은, 다른 구성요소 중에서, 하나 이상의 프로세서(300)(예: CPU(들)), 메모리(302)(또는 비일시적 컴퓨터 판독 가능 매체(302)), 및 통신 인터페이스(들)(304)를 포함한다. 메모리(302)(또는 비일시적 컴퓨터 판독 가능 매체(302))는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성 메모리, 착탈식 및 비착탈식 매체를 포함할 수 있다. 이러한 메모리는, 원하는 정보를 저장하기 위해서 사용될 수 있으며 컴퓨팅 디바이스에 의해서 액세스될 수 있는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 디바이스, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스, 또는 기타 자기 저장 디바이스, RAID 저장 시스템, 또는 임의의 다른 매체를 포함하나, 이에 한정되지 않는다. 컴퓨터 판독 가능 매체(302)는 컴퓨터 판독 가능 저장 매체("CRSM")로서 구현될 수 있으며, 이는 메모리(302)에 저장된 명령어를 실행하기 위해 프로세서(들)(300)에 의해 액세스 가능한 임의의 이용 가능한 물리적 매체일 수 있다. 하나의 기본 구현예에서, CRSM은 랜덤 액세스 메모리("RAM": random access memory) 및 플래시 메모리를 포함할 수 있다. 다른 구현에서, CRSM은, 읽기 전용 메모리("ROM"), 전기적으로 지울 수 있는 프로그래밍 가능한 읽기 전용 메모리("EEPROM"), 또는 원하는 정보를 저장하기 위해서 사용될 수 있고, 프로세서(들)(300)에 의해서 액세스될 수 있는 임의의 다른 유형의 매체를 포함할 수 있으나, 이에 한정되지 않는다. 비디오 게임 서비스(306)는 프로세서(들)(300)에 의해 실행될 때 컴퓨팅 시스템(102)이 본원에 설명된 기술 및 작동을 수행하게 하는 메모리(302)에 저장된 명령어를 나타낼 수 있다.
예를 들어, 비디오 게임 서비스(306)는 다른 가능한 구성요소들 중에서 훈련 구성요소(308), 스코어링 구성요소(310), 및 게임 제어 데이터 생성기(312)를 포함할 수 있다. 훈련 구성요소(308)는 훈련된 기계 학습 모델(들)(104)을 획득하기 위해 훈련 데이터로서 데이터 저장소(124)의 데이터(314)(때때로 본원에서 "이력 데이터"(314)라고도 함)의 일부분을 사용하여 기계 학습 모델(들)을 훈련시키도록 구성될 수 있다. 훈련된 기계 학습 모델(들)(104)은 게임 컨트롤러(106)에 대한 예측된 사용자 입력과 관련된 스코어(128)를 결정하기 위해 스코어링 구성요소(310)에 의해 사용 가능하다. 게임 제어 데이터 생성기(312)는 사용자 입력 유형에 대해 생성된 기계 학습된 스코어(128)에 적어도 부분적으로 기반하여 사용자 입력 유형에 대응되는 게임 제어 데이터(108)를 생성한다. 게임 제어 데이터 생성기(312)는, 실행 중인 비디오 게임(120)에 대한 입력으로서 생성하는 게임 제어 데이터(108)를 제공하고, 게임 제어 데이터(108)에 적어도 부분적으로 기반하여 비디오 게임(120)으로부터 출력으로서 비디오 게임 데이터(122)를 수신하도록 추가로 구성될 수 있다. 언급된 바와 같이, 훈련된 기계 학습 모델(들)(104)은 일부 실시형태에서 하나 이상의 클라이언트 머신(112)에서 상주되고 실행될 수 있다. 따라서, 적어도 스코어링 구성요소(310), 훈련된 기계 학습 모델(들)(104), 및/또는 게임 제어 데이터 생성기(312)는 도 3에 도시된 바와 같이, 원격 컴퓨팅 시스템(102)에서 실행되는 것 대신에, 또는 이에 부가하여, 클라이언트 머신(들)(112)에서 실행될 수 있다는 것이 이해될 것이다. 일부 실시형태에서, 컴퓨팅 시스템(102)은 비디오 게임(120)을 플레이하는 플레이어(110)에 로컬인 클라이언트 머신(112)을 나타낼 수 있다. 컴퓨팅 시스템(102)이 도 3에 도시된 구성요소를 갖는 원격 컴퓨팅 시스템(102)을 나타내는 실시형태에서, 컴퓨팅 시스템(102)은 통신 인터페이스(들)(304)를 통해 그리고 컴퓨터 네트워크(114)를 통해, 비디오 게임 데이터(122)(또는 게임 제어 데이터(108), 또는 센서 데이터(118)와 같은 로컬 기계 학습 모델(들)(104)에 입력될 데이터)를 비디오 게임(120)의 플레이어(110)와 연관된 클라이언트 머신(들)(112)에 전송할 수 있다. 게임 컨트롤러(106)에 대한 사용자 입력을 예측하는 것, 및 이러한 방식으로 게임 제어 데이터(108)를 사전에 생성하는 것은 비디오 게임 플랫폼의 레이턴시 효과를 완화시키거나 이를 보상하는 것을 허용한다. 예로서, 훈련된 기계 학습 모델(들)(104)은 입력으로서 제1 클라이언트 머신(112(A))으로부터 수신된 센서 데이터(118)를 처리할 수 있고, 출력으로서 스코어(128)를 생성할 수 있으며, 스코어(128)는 한 유형의 사용자 입력이 제1 클라이언트 머신(112(A))과 연관된 제1 플레이어(110(A))의 제1 게임 컨트롤러(106(A))에 제공될(예: 컨트롤러의 "A" 버튼이 작동될) 확률과 관련된다.
상술된 바와 같이, 스코어링 구성요소(310)에 의해 결정된 스코어(128)(예를 들어, 훈련된 기계 학습 모델(들)(104)에 의한 출력)는 기계 학습된 스코어(128)이다. 기계 학습은 일반적으로 기계 학습 모델(들)을 훈련시키기 위해 일련의 사례('훈련 데이터'라고 함)를 처리하는 것을 포함한다. 일단 훈련된 기계 학습 모델(들)(104)은, 새로운 데이터를 입력으로서 수신하고 결과를 출력으로서 추정하거나 예측할 수 있는 학습된 메커니즘이다. 예를 들어, 훈련된 기계 학습 모델(104)은 미지의 입력(예를 들어, 미지의 이미지)을 다수의 클래스 라벨 중 하나로서 분류하는(예를 들어, 이미지를 고양이 또는 개로 라벨링) 작업을 맡은 분류기를 포함할 수 있다. 일부 경우에, 훈련된 기계 학습 모델(104)은 다중-라벨 분류 작업(예를 들어, 이미지를 "고양이", "개", "오리", "펭귄" 등으로 라벨링)을 구현하도록 구성된다. 추가적으로 또는 대안적으로, 훈련된 기계 학습 모델(104)은 입력으로서 수신된 미지의 데이터에 기반한 분류 작업을 위해, 확률 또는 한 세트의 확률을 추론하도록 훈련될 수 있다. 본 개시내용의 맥락에서, 미지의 입력은 비디오 게임(120)을 플레이하는 동안 플레이어(110)에 의해 활용되는 게임 컨트롤러(106)의 센서(들)(202)에 의해 생성되는 센서 데이터(118)(예를 들어, 원시 센서 데이터)일 수 있고, 훈련된 기계 학습 모델(들)(104)은 스코어(128)를 출력하는 작업을 맡을 수 있으며, 이 스코어는 사용자 입력의 다수의 클래스 또는 유형 중 하나가 게임 컨트롤러(106)에 제공되어 대응되는 게임 제어 데이터(116)가, 센서 데이터(118)를 수신한 때부터 일정 시간 기간 내에 클라이언트 머신(112)으로부터 수신되게 할 확률을 나타내거나 이와 관련이 있다. 일부 실시형태에서, 미지의 입력은 실행 중인 비디오 게임(120)의 게임 상태(예를 들어, 플레이어 움직임, 게임 맵 상의 캐릭터 위치, 캐릭터 클래스, 무기 등)를 포함하는 게임 상태 데이터(126)일 수 있고, 훈련된 기계 학습 모델(들)(104)은 스코어(128)를 출력하는 작업을 맡을 수 있으며, 이 스코어는 사용자 입력의 다수의 클래스 또는 유형 중 하나가 게임 컨트롤러(106)에 제공되어 대응되는 게임 제어 데이터(116)가, 게임 상태 데이터(126)를 수신한 때부터 일정 시간 기간 내에 클라이언트 머신(112)으로부터 수신되게 할 확률을 나타내거나 이와 관련이 있다. 일부 실시예에서, 스코어(128)는 [0,1]의 범위에서 정규화되는 변수이다. 이 스코어(128)는 특정 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률과 단조 관계를 가질 수 있다. 스코어(128)와 특정 유형의 사용자 입력과 연관된 실제 확률 간의 관계는 단조롭지만 선형 관계일 수도 있고 아닐 수도 있다. 일부 실시형태에서, 훈련된 기계 학습 모델(들)(104)은 한 세트의 확률(예: 2개의 확률), 또는 이와 관련된 스코어를 출력할 수 있으며, 여기서, 하나의 확률(또는 스코어)은 한 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률과 관련되고, 나머지 다른 확률(또는 스코어)은 한 유형의 사용자 입력이 게임 컨트롤러에 제공되지 않을 확률과 관련된다. 훈련된 기계 학습 모델(들)(104)에 의해 출력되는 스코어(128)는 사전에(즉, 게임 컨트롤러(106)에 대한 실제 사용자 입력에 기반한 다가오는 게임 제어 데이터(116)가 수신되기 전에) 생성되는 게임 제어 데이터(108)의 유형에 영향을 미치기 위해 이러한 확률 중 어느 하나와 관련될 수 있다.
훈련된 기계 학습 모델(들)(104)은 단일 모델 또는 베이스 레벨 기계 학습 모델의 앙상블을 나타낼 수 있으며, 임의의 유형의 기계 학습 모델(104)로서 구현될 수 있다. 예를 들어, 본원에 설명된 기술 및 시스템과 함께 사용되기 위해 적합한 기계 학습 모델(104)은 신경망, 트리 기반 모델, 지원 벡터 머신(SVM), 커널 방법, 랜덤 포레스트, 스플라인(예를 들어, 다변량 적응 회귀 스플라인), 은닉 마르코프 모델(HMM), 칼만 필터(또는 강화된 칼만 필터), 베이지안 네트워크(또는 베이지안 빌리프 네트워크), 기대 최대화, 유전 알고리즘, 선형 회귀 알고리즘, 비선형 회귀 알고리즘, 로지스틱 회귀 기반 분류 모델, 또는 이의 앙상블을, 이에 한정됨 없이, 포함한다. "앙상블"은 가중 평균화 또는 투표를 사용하는 것과 같이 출력(예측)이 조합되는 기계 학습 모델(104)의 모음을 포함할 수 있다. 앙상블의 개별 기계 학습 모델들은 전문 지식이 다를 수 있으며, 앙상블은 앙상블의 임의의 개별 기계 학습 모델보다 총괄적으로 "더 스마트"한 개별 기계 학습 모델들의 커미티(committee)로서 작동할 수 있다.
기계 학습 모델(104)을 훈련시키기 위해서 사용되는 훈련 데이터는 다양한 유형의 데이터(314)를 포함할 수 있다. 일반적으로, 앞서 언급된 바와 같이, 기계 학습을 위한 훈련 데이터는 두 가지 구성요소, 즉 피쳐 및 라벨을 포함할 수 있다. 그러나, 기계 학습 모델(들)(104)을 훈련시키기 위해서 사용되는 훈련 데이터는 일부 실시형태에서는 라벨링되지 않을 수 있다. 따라서, 기계 학습 모델(들)(104)은, 지도 학습, 비지도 학습, 반지도 학습, 강화 학습 등과 같은 임의의 적절한 학습 기술을 사용하여 훈련 가능할 수 있다. 훈련 데이터에 포함된 피쳐는 한 세트의 피쳐에 의해서, 예컨대 훈련 데이터의 속성에 대한 정량화 가능한 정보의 n차원 피쳐 벡터(feature vector)의 형태로, 표현될 수 있다. 다음은 본원에 설명된 기계 학습 모델(들)(216)을 훈련시키기 위해 훈련 데이터에 포함될 수 있는 예시적인 피쳐의 리스트이다. 그러나, 다음의 피쳐의 리스트가 전체가 아니며, 훈련에 사용되는 피쳐가 본원에 설명되지 않은 추가 피쳐를 포함할 수 있으며, 일부 경우에는, 본원에 나열된 피쳐 중 전부가 아닌 일부를 포함할 수 있다는 것이 이해될 것이다. 훈련 데이터에 포함된 예시적인 피쳐는, 센서 데이터(118) 값(예를 들어, 커패시턴스 값, 저항 값, 변위 값, 속도 값, 가속도 값, 온도 값, 습도 값, 바이오피드백 값, 예를 들어, 미국 특허 제9,511,289호 등에 설명된 것과 같음), 게임 상태 데이터(126) 값(예를 들어, 플레이어 움직임에 관한 값, 게임 맵에서의 위치, 캐릭터 클래스, 무기 등), 게임 제어 데이터(116) 값(예를 들어, 손가락 작동식 컨트롤의 전위차계 및 다른 스위치에 의해 생성된 값), 및/또는 특정 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률을 나타내는 스코어를 계산하는 것과 관련될 수 있는 임의의 다른 적절한 피쳐를, 이에 한정됨 없이, 포함할 수 있다. 훈련 프로세스의 일부로서, 훈련 구성요소(308)는 기계 학습에 대한 가중치를 설정할 수 있다. 이러한 가중치는 데이터 저장소(124)의 이력 데이터(314)로부터 도출된 바와 같이, 훈련 데이터에 포함된 한 세트의 피쳐에 적용될 수 있다. 일부 실시형태에서, 훈련 프로세스 동안 설정되는 가중치는 기계 학습 모델(들)(예를 들어, 신경망의 은닉 층에서의 뉴런에 대한 가중치)의 내부에 있는 파라미터에 적용될 수 있다. 기계 학습 모델(들)의 이러한 내부 파라미터는 한 세트의 피쳐 중 개별 입력 피쳐와 일대일로 매핑되거나 매핑되지 않을 수 있다. 가중치는 훈련된 기계 학습 모델(들)(104)에 의해 출력되는 스코어(128)에 대해 임의의 주어진 피쳐 또는 파라미터가 갖는 영향을 나타낼 수 있다.
도 3은 게임 컨트롤러(106)에 대한 다가오는 사용자 입력을 예측하는 수단으로서 훈련된 기계 학습 모델(들)(104)에 의해 스코어링될 수 있는 복수의 유형 또는 클래스의 사용자 입력의 예를 예시한다. 예를 들어, 게임 컨트롤러(106)의 임의의 손가락 조작식 컨트롤(예: "A" 버튼, "B" 버튼, "X" 버튼, "Y" 버튼, 조이스틱, D-패드, 트랙 패드, 범퍼 버튼, 트리거 버튼 등)과 관련하여, 컨트롤에 접촉하지 않으면서 컨트롤 위에서 손가락 맴돌기, 임계값 초과의 힘으로 컨트롤을 가압하지 않으면서 컨트롤에 손가락을 접촉, 또는 임계값 초과의 힘으로 컨트롤을 손가락으로 가압과 같은 다양한 유형의 사용자 입력이 스코어링될 수 있다. 손가락 조작식 컨트롤이 기계적으로 작동하는 컨트롤인 경우(예: 버튼, 조이스틱, 방향 패드 등), 스코어링될 수 있는 추가 유형의 사용자 입력은 손가락 조작식 컨트롤의 누름 및/또는 편향이다. 스코어링될 수 있는 다른 유형의 사용자 입력은 3D 공간에서 게임 컨트롤러(106)의 회전(예를 들어, 롤, 피치, 요)이다. 스코어링될 수 있는 또 다른 유형의 사용자 입력은 3D 공간에서 게임 컨트롤러(106)의 병진 운동(예를 들어, X, Y, 및/또는 Z 방향의 병진 운동)이다. 이러한 예가 총망라된 것이 아니며, 당업자가 인식할 수 있는 바와 같이, 복수의 유형의 사용자 입력의 다른 예가 스코어링될 수 있다는 것이 이해될 것이다. 어떤 경우에도, 게임 제어 데이터 생성기(312)는, 한 유형의 사용자 입력과 연관된 임계 스코어를 충족(예를 들어, 초과, 충족 또는 초과)하는 스코어가 할당된 한 유형의 사용자 입력에 대응되는 게임 제어 데이터(108)를 생성할 수 있다. 이러한 목적을 위해 다른 유형의 사용자 입력은 다른 임계값 스코어와 연관될 수 있다. 예를 들어, 시스템이 대응되는 게임 제어 데이터(108)를 생성하기 전에 플레이어(110)가 게임 컨트롤러(106)를 회전시킬 것이라는 예측에 더 확신을 갖고 싶다면, 상대적으로 높은 임계값 스코어는 이 특정 유형의 사용자 입력에 대한 예측으로 위양성 비율을 감소시키기 위한 신뢰 레벨로서 사용될 수 있다. 대조적으로, 플레이어(110)가 "X" 버튼을 선택할 것이라는 예측의 잘못이 플레이 품질을 저하시키지 않는 경우(예를 들어, "X" 버튼의 선택이 비디오 게임(120)에서 성능에 중요한 동작이 아닌 경우), 상대적으로 낮은 임계값 스코어는, 예측이 정확했다는 합리적인 확신으로 특정 유형의 사용자 입력에 대한 게임 제어 데이터(108)를 생성하기 위한 신뢰 레벨로서 사용될 수 있다. 잘못된 예측을 처리하는 방법은 잘못 예측된 게임 상태를 알려진 올바른 게임 상태(그 상태가 알려지면)로 대체하는 것, 일부 경우에는, 이 대체를 영향을 받는 플레이어에게 덜 눈에 띄게/주의를 산만하게 하는 추가 로직을 가지고 대체하는 것(예: 가상 물체를 올바른 위치로 즉시 순간 이동시키는 대신 잘못된 위치로부터 올바른 위치로 점진적으로 보간하는 것)을 포함할 수 있다.
본원에 설명된 프로세스들은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있는 작동들의 시퀀스를 표현하는, 논리적 흐름 그래프의 블록의 모음으로서 예시된다. 소프트웨어의 컨텍스트에서, 블록은, 하나 이상의 프로세서에 의해 실행될 때 설명된 작동을 수행하는 컴퓨터 실행 가능 명령어를 나타낸다. 일반적으로, 컴퓨터 실행 가능 명령어는, 특정 기능들을 수행하거나 특정된 추상적 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 구성요소, 데이터 구조 등을 포함한다. 작동이 설명되는 순서는 제한으로서 해석되도록 의도되지 않고, 임의의 수의 설명된 블록들은 임의의 순서로 그리고/또는 병렬로 결합되어서 프로세스를 구현할 수 있다.
도 4는 사용자 입력 유형이 플레이어의 게임 컨트롤러에 제공될 확률을 예측하도록 기계 학습 모델(들)(104)을 훈련시키기 위한 예시적인 프로세스(400)의 흐름도이다. 논의를 위해, 프로세스(400)는 이전 도면들을 참조하여 설명된다.
402에서, 컴퓨팅 시스템(102)은 사용자(110)에게 비디오 게임 서비스에 대한 액세스를 제공할 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 사용자가 비디오 게임의 카탈로그에 액세스하고 이를 브라우징하고, 사용자 프로파일을 수정하고, 트랜잭션(transaction)을 수행하고, 소셜 미디어 활동 및 다른 유사한 동작에 관여하는 것을 허용할 수 있다. 컴퓨팅 시스템(102)은 비디오 게임 서비스의 일부로서 클라이언트 머신(112)에 비디오 게임(및 그의 콘텐츠)을 배포할 수 있다. 예시적인 실시예에서, 비디오 게임 서비스에 액세스할 수 있는 사용자(110)는 설치된 클라이언트 애플리케이션을 로딩하고, 등록된 사용자 계정으로 로그인하고, 원하는 비디오 게임(120)을 선택하고, 클라이언트 애플리케이션을 통해 자신의 클라이언트 머신(112)에서 비디오 게임(120)을 실행할 수 있거나 비디오 게임(120)을 스트리밍할 수 있다.
404에서, 컴퓨팅 시스템(102)은 비디오 게임의 과거 세션과 연관된 데이터(314)를 수집하고 저장할 수 있다. 이러한 데이터(314)는, 사용자(110)가 그의 등록된 사용자 계정으로 비디오 게임 서비스에 액세스하고, 비디오 게임 플랫폼을 사용하여, 예를 들어, 이 플랫폼 상에서 비디오 게임(120)을 플레이할 때마다, 블록 404에서 수집될 수 있다. 블록 404에서 수집된 데이터(314)는, 클라이언트 머신(112)으로부터 수신되고 게임 컨트롤러(106)에 의해 생성된 게임 제어 데이터(116) 및 센서 데이터(118), 및 비디오 게임의 게임 상태 데이터(126) 등을, 이에 한정됨 없이, 포함할 수 있다. 시간이 지남에 따라, 등록된 사용자 계정에 결부된 대량의 데이터(314) 모음이 컴퓨팅 시스템(106)에서 사용 가능할 수 있다는 것이 이해될 수 있다. 비디오 게임 서비스를 제공하는 엔티티는, 비디오 게임(120)에서 플레이어 동작과 플레이어 인식 사이의 레이턴시를 감소시키기 위한 목적으로 기계 학습 모델을 훈련시키기 위해 데이터가 수집되고 사용되는 것에 대한 사전 동의를 사용자(110)가 제공하도록 요청할 수 있다는 것이 이해될 것이다.
406에서, 컴퓨팅 시스템(102)은, 훈련 구성요소(308)를 통해, 지도 기계 학습을 위해 라벨링될 비디오 게임 서비스를 통해 플레이된 비디오 게임(120)의 과거 세션과 연관된 (이력) 데이터(314)에 액세스할 수 있다. 예를 들어, 406에서 액세스된 (이력) 데이터(314)는 특정 비디오 게임(들)(120)의 과거 세션 동안 클라이언트 머신(112)으로부터 수신된 이력 센서 데이터(118)를 포함할 수 있다. 추가적으로 또는 대안적으로, 406에서 액세스된 (이력) 데이터(314)는 비디오 게임(120)의 과거 세션 동안 발생되었던 비디오 게임(120)의 게임 상태를 포함하는 이력 게임 상태 데이터(126)를 포함할 수 있다.
408에서, 컴퓨팅 시스템(102)은, 훈련 구성요소(308)를 통해, (i) 이력 센서 데이터(118)가 클라이언트 머신(112)으로부터 수신되었거나, 또는 (ii) 비디오 게임 서비스를 통해 플레이되는 비디오 게임의 과거 세션 동안 게임 상태(이력 게임 상태 데이터(126)에 포함됨)가 발생된 이후 일정 시간 기간 내에 클라이언트 머신(112)으로부터 수신된 (이력) 게임 제어 데이터(116)에 액세스할 수 있다. 이 일정 시간 기간은, 사용자 입력 예측이 얼마나 먼 장래에 이루어질 것인지에 따라, 약 1밀리초 내지 약 200밀리초 범위 내의 일정 시간 기간과 같은 임의의 적절한 일정 시간 기간일 수 있다. 예시적인 실시예에서, 이것은, 게임 컨트롤러(106)의 "A" 버튼을 누르려고 하는 특정 플레이어(110)가, "A" 버튼을 누르기 바로 전에, 종종 게임 컨트롤러(106)를 오른쪽으로 약간 비틀어서 누르는 경우일 수 있다. 이러한 실시예에서, 라벨링될 이력 센서 데이터(118)는 게임 컨트롤러(106)의 자이로스코프에 의해 생성된 센서 데이터(118)일 수 있고, 블록 408에서 액세스되는 게임 제어 데이터(116)는 자이로스코프 기반 센서 데이터(118)가 동일한 클라이언트 머신(112)으로부터 수신된 이후 일정 시간 기간(예를 들어, 100 밀리초) 후에 플레이어(110)의 클라이언트 머신(112)으로부터 수신된 "A" 버튼의 누름에 대응되는 데이터를 포함할 수 있다. 다른 예시적인 실시예로서, 이것은, 특정 플레이어(110)가 "A" 버튼을 선택하는 것과 "B" 버튼을 선택하는 것 사이에서 전이하는 경우일 수 있다. 이러한 실시예에서, 라벨링될 이력 센서 데이터(118)는 "A" 및 "B" 버튼과 연관된 터치 센서(예: 용량성 패드)에 의해 생성된 센서 데이터(118)(이는 "B" 버튼의 해제 후 "B" 버튼의 감소하는 용량성 값과 함께 "A" 버튼의 증가하는 용량성 값을 나타낼 수 있음)일 수 있고, 블록 408에서 액세스되는 게임 제어 데이터(116)는 터치 센서 기반 센서 데이터(118)가 동일한 클라이언트 머신(112)으로부터 수신된 이후 일정 시간 기간(예를 들어, 50 밀리초) 후에 플레이어(110)의 클라이언트 머신(112)으로부터 수신된 "A" 버튼의 누름에 대응되는 데이터를 포함할 수 있다. 또 다른 실시예에서, 라벨링될 이력 게임 상태 데이터(126)는, 게임 캐릭터가 게임 맵에서 벽 옆에 위치하고 캐릭터가 벽을 향해 직접 달리고 있는 비디오 게임(120)의 게임 상태를 포함할 수 있다. 이러한 실시예에서, 블록 408에서 액세스된 게임 제어 데이터(116)는, 비디오 게임(120)에서 이 게임 상태가 발생된 이후 일정 시간 기간(예를 들어, 20밀리초) 후에 클라이언트 머신(112)으로부터 수신된 "A" 버튼의 누름에 대응되는 "점프" 동작을 포함할 수 있다. 이러한 유형의 게임 제어 데이터(116)(예: 플레이어가 제어하는 캐릭터의 "점프" 동작)는 수억 개의 과거 게임 세션에 걸쳐 이 특정 게임 상태에 대한 비디오 게임(120)의 게임 상태 데이터(126)에 표시될 수 있으며, 이는, 캐릭터가 점프 동작의 특정 일정 시간 기간 내에 벽을 향해 직접 달리고 벽 옆에 있는 경우, 대부분의 플레이어가 게임 캐릭터를 항상 벽을 뛰어넘도록 제어한다는 것을 의미한다.
410에서, 컴퓨팅 시스템(102)은, 훈련 구성요소(308)를 통해, 일정 시간 기간 내에 수신된 이력 게임 제어 데이터(116)(즉, 블록 408에서 액세스된 이력 게임 제어 데이터(116))에 대응되는 사용자 입력의 다수의 유형 중 하나를 나타내는 라벨로 데이터(예를 들어, 이력 센서 데이터(118) 및/또는 이력 게임 상태 데이터(126))를 라벨링할 수 있다. 도 3을 참조하여 본원에 설명된 다양한 유형/클래스의 사용자 입력과 같은 라벨의 실시예가 본원에 설명된다. 이전 단락에서 설명된 실시예를 참조하면, "A" 버튼의 누름에 대응되는 게임 제어 데이터(116)의 수신 100 밀리초 전에 수신된 자이로스코프 기반 센서 데이터(118)는 - "A 버튼: 누름"으로 라벨링될 수 있다. 마찬가지로, "A" 버튼의 누름에 대응되는 게임 제어 데이터(116)의 수신 50 밀리초 전에 수신된 터치 센서 기반 센서 데이터(118)는 동일한 라벨 - "A 버튼: 누름"으로 라벨링될 수 있다. 마찬가지로, "A" 버튼의 누름에 대응되는 게임 제어 데이터(116)의 수신 20 밀리초 전에 발생된 게임 상태를 포함하는 게임 상태 데이터(126)는 동일한 라벨 - "A 버튼: 누름"으로 라벨링될 수 있다.
412에서, 컴퓨팅 시스템(102)은, 훈련 구성요소(308)를 통해, 훈련된 기계 학습 모델(들)(104)을 획득하기 위해 훈련 데이터로서 (이력) 데이터(314)(예를 들어, 이력 센서 데이터(118) 및/또는 이력 게임 상태 데이터(126))를 사용하여 기계 학습 모델(들)을 훈련시킬 수 있다. 서브 블록 414에 의해 도시된 바와 같이, 블록 412에서 기계 학습 모델(들)의 훈련은 기계 학습에 대한 가중치를 설정하는 것을 포함할 수 있다. 이러한 가중치는 이력 데이터(314)로부터 파생된 한 세트의 피쳐에 적용될 수 있다. 예시적인 피쳐는 본원에 설명된다. 일부 실시형태에서, 블록 314에서 설정된 가중치는 기계 학습 모델(들)(예를 들어, 신경망의 은닉 층에서의 뉴런에 대한 가중치)의 내부에 있는 파라미터에 적용될 수 있다. 기계 학습 모델(들)의 이러한 내부 파라미터는 한 세트의 피쳐 중 개별 입력 피쳐와 일대일로 매핑되거나 매핑되지 않을 수 있다. 서브 블록 416에 의해 도시된 바와 같이, 블록 412에서의 기계 학습 모델(들)의 훈련은 예측 오차를 결정하는 것, 및 모델(들)(104)을 훈련시키도록 예측 오차를 사용하는 것을 포함할 수 있다. 예를 들어, 이것은 에러에 의한 학습(error-driven learning) 기술(강화형 기계 학습의 일종)로 구현될 수 있으며, 이 기술에서, 훈련되는 기계 학습 모델(들)은 입력으로 제공된 샘플 훈련 데이터를 기반으로 출력을 예측하는 작업을 맡고, 훈련 구성요소(308)는 훈련 데이터(예를 들어, 종종 그라운드 트루스(ground truth) 데이터로 지칭되는 기지의 정확한 출력 값)로부터의 라벨에 기반할 수 있는 모델 예측의 예측 오차를 결정(예를 들어, 측정)한다. 다음으로, 훈련 구성요소(308)는 훈련 프로세스 동안 모델의 성능을 개선하기 위해 모델(들)을 통해 예측 오차를 피드백할 수 있다. 블록 412부터 블록 404까지 화살표로 나타낸 바와 같이, 기계 학습 모델(들)(104)은 업데이트된 (이력) 데이터(314)를 사용하여 재훈련되어 최근 플레이어 행동에 적응되는 새로 훈련된 기계 학습 모델(들)(104)을 획득할 수 있다. 이것은 기계 학습 모델(들)(104)이 시간이 지남에 따라 변화하는 플레이어 행동에 적응되는 것을 허용한다.
기계 학습 모델(들)(104)을 훈련시키기 위해서 사용되는 샘플링된 이력 데이터(314)가 프로세스(400)를 참조하여 설명된 훈련 데이터에 추가하여 임의의 적절한 데이터일 수 있다는 것이 이해될 것이다. 예를 들어, 사용자 입력 데이터 자체(예: 눌려진 버튼, 작동된 컨트롤 등)는, 게임 컨트롤러(106)에 제공될 한 유형의 사용자 입력을 예측하기 위해 훈련 데이터로 사용될 수 있다. 예를 들어, 플레이어(110)는, 특정 순서의 버튼 누름으로 인해 게임 캐릭터가 특수 무기를 발사하거나 특별한 방식으로 기동할 수 있는 격투/전투 비디오 게임에서와 같은 비디오 게임(120)에서 플레이어가 제어하는 캐릭터의 특수 기동을 수행하기 위해 특정 순서로 컨트롤들을 작동시킬 수 있다. 따라서, 훈련 모듈(308)은, 플레이어(110)가 비디오 게임(120)에서 특별한 기동을 완료하려고 할 때를 예측하도록 기계 학습 모델(들)을 훈련시키기 위해 버튼 누름의 특정 시퀀스의 일정 시간 기간 내에 수신된 게임 제어 데이터(116)에 액세스할 수 있다.
더욱이, 예를 들어, 프로세스(400)를 사용한 기계 학습 모델(들)(104)의 훈련은 플레이어별 및/또는 플레이어 커뮤니티별일 수 있다는 것이 이해될 것이다. 플레이어별 훈련 실시예에서, 기계 학습 모델(들)(104)은 특정 플레이어(110)가 자신의 게임 컨트롤러(106)에 제공할 사용자 입력을 예측하는 것을 학습하기 위해 특정 플레이어(110)의 사용자 계정과 연관된 데이터(314)에 대해 훈련될 수 있다. 플레이어 커뮤니티 훈련 실시예에서, 기계 학습 모델(들)(104)은, 일반 플레이어(110)가 자신의 게임 컨트롤러(106)에 제공할 사용자 입력을 예측하는 것을 학습하기 위해 플레이어 커뮤니티의 복수의 사용자 계정과 연관된 데이터(314)에 대해 훈련될 수 있다. 이러한 후자의 훈련 접근 방식은, 단일 플레이어와 연관된 데이터(314)가 해당 플레이어(110)의 행동을 정확하게 예측하기에 충분하지 않은 경우에, 유용할 수 있다.
도 5는, 플레이어의 게임 컨트롤러(106)에 대한 사용자 입력을 예측하기 위해 훈련된 기계 학습 모델(들)(104)을 활용하고, 레이턴시를 보상하도록 사전에 게임 제어 데이터(108)를 생성하기 위해 사용자 입력의 기계 학습된 예측을 사용하기 위한 예시적인 프로세스(500)의 흐름도이다. 논의를 위해, 프로세스(500)는 이전 도면들을 참조하여 설명된다. 또한, 도 4 및 도 5에 오프 페이지(off-page) 참조 "A"로 표시된 바와 같이, 프로세스(500)는 프로세스(400)의 블록 412로부터 계속될 수 있다.
502에서, 컴퓨팅 시스템(102)은 입력 데이터로서 훈련된 기계 학습 모델(들)(104)에 제공될 데이터를 수신할 수 있다. 블록 502에서 수신된 이 데이터는 게임 컨트롤러(106)에 의해 생성된 센서 데이터(118)를 포함할 수 있다. 블록 502에서 수신된 센서 데이터(118)는 커패시턴스 값, 저항 값, 변위 값, 속도 값, 가속도 값, 온도 값, 습도 값 등을, 이에 한정됨 없이, 포함할 수 있다. 일부 실시형태에서, 센서 데이터(118)는, 센서 데이터(118)의 값이 게임 컨트롤러(106)의 물리적 센서(들)(202)에 의해 생성된 원시(예: 필터링되지 않음, 증폭되지 않음) 값을 나타내도록 원시 센서 데이터(예: 원시 자이로스코프 데이터, 원시 가속도계 데이터, 원시 용량성 센서 데이터 등)이다. 더욱이, 컴퓨팅 시스템(102)이 원격 컴퓨팅 시스템(102)인 경우, 블록 502에서 수신된 센서 데이터(118)는 비디오 게임(120)의 제1 플레이어(110(A))와 연관된 제1 클라이언트 머신(112(A))으로부터 수신될 수 있다(예를 들어, 비디오 게임(120)이 멀티플레이어 모드에서 제2 플레이어(112(B))와 함께 플레이되고 있음). 그러나, 클라이언트 머신(112) 자체가 블록 502에서 원격 시스템(102)으로부터 또는 로컬 게임 컨트롤러(106)로부터 데이터를 수신할 수 있다는 것이 이해될 것이다.
추가적으로 또는 대안적으로, 블록 502에서 수신된 데이터는 비디오 게임(120)(예를 들어, 적어도 제1 플레이어(110(A)) 및 제2 플레이어(110(B))에 대해 멀티플레이어 모드에서 실행되는 비디오 게임)으로부터 수신된 게임 상태 데이터(126)를 포함할 수 있다. 게임 상태 데이터(126)는 현재 플레이어 움직임, 게임 맵에서의 게임 캐릭터의 현재 위치, 현재 캐릭터 클래스, 현재 선택된 무기 등과 같은 비디오 게임(120)의 현재 게임 상태를 포함할 수 있다.
504에서, 컴퓨팅 시스템(102)은, 스코어링 구성요소(310)를 통해, 플레이어(110)가 게임 컨트롤러(106)에 제공할 사용자 입력을 예측할 목적으로 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 블록 502에서 수신된 데이터의 적어도 일부를 제공할 수 있으며, 이는 블록 502에서 데이터를 수신한 이후 일정 시간 기간 내에 플레이어의 클라이언트 머신(112)으로부터, 대응되는 게임 제어 데이터(116)가 수신되게 할 것이다. 예를 들어, 센서 데이터(118)는, 제1 플레이어(110(A))가 게임 컨트롤러(106)에 제공할 한 유형의 사용자 입력을 예측하기 위해, 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 제공될 수 있으며, 이에 의해 대응되는 게임 제어 데이터(116)가 다음 N 밀리초 내에 제1 클라이언트 머신(112(A))으로부터 수신되게 하며, 여기서 N은 약 1 밀리초 내지 200 밀리초 범위 내의 값과 같은 임의의 적절한 값일 수 있다. 다른 실시예로서, 게임 상태 데이터(126)는, 제1 플레이어(110(A))가 게임 컨트롤러(106)에 제공할 한 유형의 사용자 입력을 예측하기 위해, 센서 데이터(118) 대신에, 또는 센서 데이터(118)와 함께 추가 입력으로서, 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 제공될 수 있다. 일부 실시형태에서, 센서 데이터(118)의 이력 및/또는 게임 상태 데이터(126)의 이력(예: 마지막 P 밀리초에 걸쳐 수신된 데이터)은 블록 504에서, 훈련된 기계 학습 모델(들)(104)에 대한 입력으로서 제공될 수 있다. 예를 들어, 훈련된 기계 학습 모델(들)(104)은, 플레이어(110)가 임계값 초과의 시간 동안 임계값 초과의 힘으로 "A" 버튼을 누른 후 바로, 플레이어(110)가 "B" 버튼을 누를 것이라고 예측하는 것을 학습할 수 있다. 유사하게, 램핑(ramping)(예: 감소 또는 증가하는) 센서 값은 다가오는 한 유형의 사용자 입력을 나타낼 수 있다.
506에서, 컴퓨팅 시스템(102)은, 대응되는 게임 제어 데이터(116)가 블록 502에서 데이터를 수신한 이후 일정 시간 기간(예를 들어, N 밀리초) 내에 생성되게 하기 위해, 한 유형(들)의 사용자 입력이 비디오 게임(120)의 플레이어(110)(예를 들어, 제1 플레이어(110(A)))와 연관된 게임 컨트롤러(106)에 제공될 것이라는 확률(또는 확률)과 관련되거나 이를 나타내는 스코어(들)(128)를 스코어링 구성요소(310)를 통해, 훈련된 기계 학습 모델(들)(104)의 출력으로서 생성할 수 있다. 블록 506에서 스코어가 할당되는 한 유형의 사용자 입력은, 게임 컨트롤러(106)의 특정 손가락 조작식 컨트롤(예를 들어, 버튼, 조이스틱, D-패드 등)의 작동, 특정 방향(예를 들어, 병진 운동의 X, Y, 또는 Z 방향, 및/또는 롤, 피치 또는 요 회전 운동의 방향(예를 들어, 시계 방향 또는 반시계 방향))으로의 게임 컨트롤러(106)의 움직임, 게임 컨트롤러(106)의 특정 부분(예를 들어, 핸들, 표면, 손가락 조작식 컨트롤 등) 위를 맴돌거나 그에 접촉하는 물체, 또는 특정 양의 힘으로 게임 컨트롤러(106)의 일부분을 가압하는 물체를, 이에 한정됨 없이, 포함할 수 있다. 예를 들어, 이러한 유형의 사용자 입력은, 플레이어가 제어하는 캐릭터가 점프하게 하는(예: "A" 버튼을 누르는 것은 게임 캐릭터가 점프하게 할 수 있음), 좌회전 또는 우회전하게 하는(예: D-패드 누르기, 조이스틱 편향 또는 게임 컨트롤러(106) 회전은 게임 캐릭터가 좌회전 또는 우회전하게 할 수 있음), 무기를 발사하게 하는(예: "B" 버튼을 누르는 것은 무기가 발사되게 할 수 있음) 동작 등과 관련될 수 있다. 일부 실시예에서, 스코어(128)는 [0,1]의 범위에서 정규화되는 변수이다. 이 스코어(128)는 한 유형의 사용자 입력이 게임 컨트롤러(106)에 제공될 확률과 단조 관계를 가질 수 있다. 스코어(128)와 특정 유형의 사용자 입력과 연관된 실제 확률 간의 관계는 단조롭지만 선형 관계일 수도 있고 아닐 수도 있다.
508에서, 하나 이상의 기준이 충족되는지 여부에 대한 결정이 내려질 수 있다. 예를 들어, 블록 506에서 생성된 기계 학습 스코어(128)는, 스코어(128)가 임계 스코어를 충족(예: 초과, 충족 또는 초과 등)하는지를 결정하기 위해 임계 스코어에 대해 평가될 수 있다. 따라서, 스코어(128)가 임계 스코어를 충족하는 경우 예시적인 기준이 블록 508에서 충족된다. 임계 스코어는, 상이한 임계 스코어가 상이한 유형의 사용자 입력과 연관되도록, 스코어(128)가 할당된 특정 유형의 사용자 입력과 연관될 수 있다. 이것은, 시스템이 보다 성능에 중요한 플레이어 동작을 위해 보수적인 방식으로 게임 제어 데이터(108)를 사전에 생성하는 것을 허용한다. 예를 들어, 만약, 플레이어(110)가 비디오 게임(120)에서 적의 공격에 의해 사망하는 것을 피하기 위해 장벽 뒤에 숨도록 현재 자신의 캐릭터를 제어하고 있고, 스코어(128)는, 잠재적으로 게임 캐릭터가 비디오 게임(120)에서 죽임을 당하게 하면서, D-패드가 발사 라인에 게임 캐릭터를 위치시키는 특정 방향으로 눌려질 확률에 관한 것인 경우, 상대적으로 높은 임계값 스코어가 이러한 성능에 중요한 유형의 사용자 입력과 연관될 수 있어, 시스템은, 해당 유형의 사용자 입력과 연관된 스코어(128)가 상대적으로 높은 임계 스코어를 충족하지 않는 한 게임 캐릭터를 커버로부터 멀어지게 이동시키기 위해 대응되는 게임 제어 데이터(108)를 사전에 생성하지 않는다. 게임의 플레이 품질에 영향을 주지 않는 다른 유형의 사용자 입력이 상대적으로 낮은 임계 스코어와 연관될 수 있어, 레이턴시가 이러한 유형의 사용자 입력으로 더 자주 보상될 수 있다는 것이 이해될 것이다. 그러나, 일부 실시형태에서, 성능이 중요한 유형의 사용자 입력조차도, 적시에 무기를 발사하여 표적을 명중시키는 것과 같은 레이턴시 보상으로부터 이익을 얻을 수 있다. 블록 508에서의 평가는 이러한 목적을 위해 특정 유형의 사용자 입력을 예측하는 정확도 통계를 고려할 수 있다. 예를 들어, 시스템이 특정 유형의 사용자 입력을 시간의 99.99%로 정확하게 예측하는 경우, 블록 508에서의 임계값 스코어는 레이턴시를 감소시키기 위해 대응되는 게임 제어 데이터(108)를 사전에 생성할 수 있도록 상대적으로 낮을 수 있는 반면, 시스템이 예측에 능숙하지 않은 다른 유형의 사용자 입력에 대해, 예측의 위양성 비율을 완화하기 위해 블록 508에서 비교적 높은 임계 스코어가 사용될 수 있다.
블록 508에서 평가될 수 있는 다른 예시적인 기준은 논의되는 한 유형의 사용자 입력이 레이턴시를 보상하기 위해 플레이어를 대신하여 게임 제어 데이터가 사전에 생성되어야 하는 한 유형의 사용자 입력으로서 분류되는지 여부이다. 예를 들어, 컴퓨팅 시스템(102)에 액세스 가능한 데이터 저장소(124)는 특정 유형의 사용자 입력을, 시스템이 게임 제어 데이터(108)를 사전에 생성할 사용자 입력으로서 태깅할 수 있는 반면, 다른 유형의 사용자 입력은 고려 대상으로부터 제외되는 것으로서 태깅될 수 있다. 다시 말해서, 플레이어(110)를 대신하여 예측하는 것이 유익한 것으로 간주되지 않는 특정 유형의 사용자 입력이 있을 수 있고, 이러한 유형의 사용자 입력에 대응되는 실제 게임 제어 데이터(116)를 기다리는 것이 더 양호하다. 따라서, 블록 506에서 스코어(128)가 할당된 한 유형의 사용자 입력이, 게임 제어 데이터(108)가 플레이어(110) 대신 사전에 생성되어야 하는 복수의 유형의 사용자 입력 중 하나인 것으로 결정되는 경우, 블록 508에서 일 예시적인 기준이 충족된다. 일부 실시형태에서, 게임 제어 데이터(108)를 사전에 생성하기 위해 고려할 복수의 유형의 사용자 입력의 임계 스코어 및/또는 범주화는 사용자 설정에 의해 적어도 부분적으로 결정될 수 있다. 예를 들어, 사용자(110)는 시스템이 레이턴시를 보상하기를 원하는 정도 및/또는 사용자(110)가 자신을 대신하여 시스템이 어느 유형의 사용자 입력을 예측하기를 원하는지를 지정할 수 있다. 더욱이, 임계 스코어 및/또는 복수의 유형의 사용자 입력의 범주화는 게임 특이적일 수 있어, 일부 비디오 게임(120)의 경우, 특정 유형의 사용자 입력이 예측되는 반면, 다른 비디오 게임(120)의 경우, 이러한 유형의 사용자 입력은 예측되지 않는다.
블록 508에서 하나 이상의 기준이 충족되지 않으면, 프로세스(500)는 블록 508로부터 블록 510으로 "아니오" 경로를 따를 수 있으며, 여기서, 컴퓨팅 시스템(102)은 예측된 유형의 사용자 입력에 대해 사용자를 대신하여 게임 제어 데이터(108)를 사전에 생성하는 대신 실제 게임 제어 데이터(116)를 기다릴 수 있다. 예를 들어, 이것은, 한 유형의 사용자 입력에 대한 스코어(128)가 해당 유형의 사용자 입력과 연관된 임계 스코어를 충족하지 않는 경우, 및/또는 한 유형의 사용자 입력이, 게임 제어 데이터(108)가 사전에 생성되어야 하는 유형으로 분류되지 않는 경우일 수 있다. 하나 이상의 기준이 블록 508에서 충족되는 경우, 프로세스(500)는 블록 508로부터 블록 512로 "예" 경로를 따를 수 있다.
512에서, 컴퓨팅 시스템(102)은, 게임 제어 데이터 생성기(312)를 통해, 블록 506에서 생성된 스코어(128)와 연관된 한 유형의 사용자 입력에 대응되는 게임 제어 데이터(108)를 생성할 수 있다. 블록 512에서의 게임 제어 데이터(108)의 생성은 실제의 다가오는 게임 제어 데이터(116)가 생성되기 전에 사전에 수행된다. 데이터 저장소(124)는 컴퓨팅 시스템(102)이 게임 컨트롤러(106)에 의해 생성된 것처럼 보이는 게임 제어 데이터(108)를 생성할 수 있도록 복수의 유형의 사용자 입력으로부터 게임 제어 데이터(108)로의 매핑을 유지할 수 있다.
514에서, 컴퓨팅 시스템(102)은, 게임 제어 데이터 생성기(312)를 통해, 게임 제어 데이터(108)를 비디오 게임(120)에 대한 입력으로서 제공할 수 있다. 516에서, 컴퓨팅 시스템(102)은, 게임 제어 데이터 생성기(312)를 통해, 플레이어(110)를 대신하여 사전에 생성된 게임 제어 데이터(108)에 적어도 부분적으로 기반하여 비디오 게임(120)으로부터의 출력인 비디오 게임 데이터(122)를 수신할 수 있다. 518에서, 컴퓨팅 시스템(102)은, 컴퓨터 네트워크(114)를 통해, 비디오 게임 데이터(122)를 클라이언트 머신(들)(112)에 전송할 수 있다. 예를 들어, 멀티플레이어 비디오 게임 시나리오에서, 블록 512에서 생성된 게임 제어 데이터(108)는 제1 플레이어(110(A))가 특정 유형의 사용자 입력을 자신의 게임 컨트롤러(106(A))에 제공할 것이라는 예측에 기반하여 제1 플레이어(110(A))를 대신하여 생성될 수 있고, 블록 518에서 전송된 비디오 게임 데이터(122)는 제1 플레이어(110(A))와 멀티플레이어 모드에서 비디오 게임(120)을 플레이하고 있는 제2 플레이어(110(B))의 제2 클라이언트 머신(112(B))으로 전송될 수 있다. 비디오 게임 데이터(112)는 이러한 방식으로 임의의 수의 클라이언트 머신(112)으로 전송될 수 있다는 것이 이해될 것이다. 블록 518에서, 비디오 게임 데이터(122)를 클라이언트 머신(들)(112)에 전송함으로써, 원격 시스템(102)은, 클라이언트 머신(들)(112)이 비디오 게임 데이터(122)를 수신하고 클라이언트 머신(들)(112)의 디스플레이 상에 비디오 게임 데이터(122)를 제시하기 때문에, 클라이언트 머신(112)의 디스플레이 상에 비디오 게임 데이터(122)의 제시를 유발하는 것으로 간주될 수 있다. 훈련된 기계 학습 모델(들)(104) 및/또는 비디오 게임(120)이 클라이언트 머신(112) 상에서 로컬로 실행될 수 있고, 이러한 실시형태에서, 비디오 게임 데이터(122)가 클라이언트 머신(112) 상에서 생성될 수 있고, 따라서 프로세스(500)가 이러한 실시형태에서 블록 518을 생략할 수 있다는 것이 이해될 것이다. 이러한 실시형태에서, 원격 시스템(102)은 블록 502에서 수신된 데이터와 같은 다른 데이터를 컴퓨터 네트워크(114)를 통해 클라이언트 머신(들)(112)에 전송할 수 있고, 클라이언트 머신(112(B))은 비디오 게임 데이터(122)를 로컬로 생성하고, 클라이언트 머신(112(B))의 디스플레이 상에 비디오 게임 데이터(122)를 제시할 수 있다. 컴퓨터 네트워크(114)가 생략되면, 클라이언트 머신(112)은 블록 502에서 게임 컨트롤러(106)로부터 그리고/또는 클라이언트 머신(112)의 구성요소로부터(예를 들어, 실행 중인 비디오 게임(120)으로부터) 직접적으로 데이터를 수신할 수 있고, 클라이언트 머신(112(A))은 비디오 게임 데이터(122)를 생성할 수 있고, 클라이언트 머신(112(A))의 디스플레이 상에 비디오 게임 데이터(122)를 제시할 수 있다.
따라서, 프로세스(500)는, 타겟 플레이어(110)를 대신하여 대응되는 게임 제어 데이터(108)를 사전에 생성하여, 그리고 비디오 게임 플랫폼의 레이턴시를 보상하기 위해 게임 제어 데이터(108)를 사용하여, 타겟 플레이어(110)가 비디오 게임(120)에서 무엇을 하려고 하는지 예측하기 위한 기술을 예시하여, 타겟 플레이어(110)가 하는 것을 타겟 플레이어(110)가 이것을 하는 시간에 다른 플레이어(110)가 보도록 한다(게임 컨트롤러(106)에 대한 타겟 플레이어(110)의 사용자 입력의 예측이 정확하다고 가정). 이 기술을 사용하여, 각각의 클라이언트 머신(112)은, 네트워크(114)를 통해 연결된 모든 플레이어(110)의 게임 컨트롤러(106)가 클라이언트 머신(112)에 직접 연결된 설정을 모방하는 데이터를 수신한다. 따라서, 실제 게임 제어 데이터(116)가 해당 플레이어(110)로부터 아직 수신되지 않았음에도 불구하고, 훈련된 기계 학습 모델(들)(104)은 다른 플레이어가 현재 순간에 무엇을 하고 있는지를 예측하기 위해서 활용된다. 이것은 다른 플레이어(110)의 게임 캐릭터가 보다 사실적인 방식으로 행동하는 것을 허용한다. 도 1의 실시예에서, 예를 들어, 훈련된 기계 학습 모델(들)(104)에 입력된 센서 데이터(118)는 게임 컨트롤러(106(A))가 오른쪽으로 비틀어지기 시작하고 있다는 것을 나타낼 수 있고, 예측은 제1 플레이어(110(A))가 다음 N 밀리초 내에 "A" 버튼을 누를 가능성이 있다는 것일 수 있다. 다른 예로서, 만약, 훈련된 기계 학습 모델(들)(104)에 입력된 게임 상태 데이터(126)가, 제1 플레이어(110(A))의 캐릭터가 벽을 향해 직접적으로 달리고 있음을 나타내고, 시스템이 마지막 200 밀리초(이는 캐릭터가 달려가 벽에 부딪히기에 충분히 긴 시간) 동안 게임 제어 데이터(116)를 수신하지 않은 경우, 예측은, 수백만 개의 과거 게임 세션에 대한 게임 상태 데이터가, 거의 모든 사람이, 제1 플레이어(110(A))와 동일한 게임 상태에서 벽을 뛰어넘는 것을 나타내기 때문에, 제1 플레이어(110(A))가 다음 N 밀리초 내에 "A" 버튼을 누를 가능성이 있다는 것일 수 있다. 일부 경우에, 200 밀리초 이하의 레이턴시에 대한 보상은 때때로 비디오 게임(120)에서 성공 또는 실패(예: 게임 캐릭터의 삶 또는 죽음)의 차이를 의미할 수 있다. 따라서, 게임 컨트롤러(106)에 대한 사용자 입력의 기계 학습 예측을 사용하는 지연 보상 기술은 멀티플레이어 게임의 플레이어들(110) 간의 상호작용을 올바르게 조절한다(예: 플레이어(110)는 비디오 게임 플랫폼의 레이턴시로 인해 부당하게 불이익을 받지 않음). 언급된 바와 같이, 사용자 입력의 기계 학습 예측은 또한, 비디오 게임 콘텐츠의 보다 사실적인 모양을 만들기 위해 애니메이션 향상(animation enhancement)을 활용할 수 있다. 예를 들어, 점프 직전 게임 캐릭터의 체중의 이동이나 웅크리는 움직임과 같은, 게임 캐릭터의 예측된 "점프"에 대한 리드인(lead-in) 애니메이션이 렌더링될 수 있다.
도 6은, 컴퓨터 네트워크(114)의 레이턴시를 측정하고, 측정된 레이턴시에 기반하여 게임 컨트롤러(106)에 대한 사용자 입력을 예측하는 데 사용할 다수의 훈련된 기계 학습 모델(104) 중 하나를 선택하기 위한 예시적인 프로세스(600)의 흐름도이다. 논의를 위해, 프로세스(600)는 이전 도면들을 참조하여 설명된다.
602에서, 컴퓨팅 시스템(102)은, 비디오 게임 서비스와 상호작용하기 위해 클라이언트 머신(112)이 연결된 컴퓨터 네트워크(114)의 레이턴시를 측정할 수 있다. 네트워크의 레이턴시는 블록 602에서, 측정된 레이턴시 값을 획득하기 위해 전송 동안 데이터가 얼마나 오래 지연되는지를 나타내는 값으로서 측정될 수 있다. 이러한 측정은 주기적으로, 새로운 게임 세션의 시작 시에, 그리고/또는 게임 세션 동안, 또는 임의의 다른 적절한 시간에 수행(예: 이벤트에 의해 트리거)될 수 있다.
604에서, 컴퓨팅 시스템(102)은, 측정된 레이턴시 값에 적어도 부분적으로 기반하여, 가능한 일정 시간 기간의 범위에 걸쳐 일정 시간 기간(예를 들어, N 밀리초의 일정 시간 기간)을 결정할 수 있다. 예를 들어, 네트워크(114)가 상대적으로 느리고 전송 중 지연이 혼잡 등으로 인해 상대적으로 높다는 것을 나타낼 수 있는 더 높은 레이턴시 값은 더 긴 일정 시간 기간에 대응될 수 있는 반면, 네트워크(114)가 상대적으로 빠르고 전송 중 지연이 상대적으로 낮다는 것을 나타낼 수 있는 더 낮은 레이턴시 값은 더 짧은 일정 시간 기간에 대응될 수 있다. 데이터 저장소(124)는 이러한 목적을 위해 레이턴시 값으로부터 일정 시간 기간으로의 매핑을 유지할 수 있거나, 일정 시간 기간은 레이턴시가 함수의 변수인 함수에 기반하여 계산될 수 있다.
606에서, 컴퓨팅 시스템(102)은, 블록 604에서 결정된 일정 시간 기간에 적어도 부분적으로 기반하여, 다수의 이용 가능한 훈련된 기계 학습 모델들로부터 훈련된 기계 학습 모델(104)을 선택할 수 있다. 예를 들어, 기계 학습 모델(104)은 상이한 일정 시간 기간 내에 발생될 게임 컨트롤러(106)에 대한 다가오는 사용자 입력을 예측하도록 훈련될 수 있다. 예를 들어, 제1 훈련된 기계 학습 모델(104)은, 대응되는 게임 제어 데이터(116)가 다음 5 밀리초 내에 수신되게 할 사용자 입력을 예측하도록 훈련될 수 있는 한편, 제2 훈련된 기계 학습 모델(104)은, 대응되는 게임 제어 데이터(116)가 다음 200 밀리초 내에 수신되게 할 사용자 입력을 예측하도록 훈련될 수 있다. 따라서, 측정된 레이턴시에 기반하여, 시스템은 향후의 특정 길이의 시간을 예측하기 위한 적절한 기계 학습 모델(들)(104)을 동적으로 선택할 수 있다. 예측할 거리의 변화는 네트워크의 토폴로지에 기반할 수 있다(예를 들어, 더 먼 장래를 예측하는 기계 학습 모델(104)은 광역 네트워크를 위해서 사용될 수 있는 한편, 더 짧은 기간에 걸쳐 예측하는 기계 학습 모델(104)은, "리드인" 애니메이션을 트리거하는 것과 같은, 기계 학습 모델(들)(104)이 클라이언트 머신(112)에서 실행될 때 가정 내 스트리밍 플랫폼 또는 로컬 예측을 위해서 사용될 수 있다).
도 7은, 예측 오차를 결정하기 위해 사용자 입력의 기계 학습 예측에 기반하여 사전에 생성된 게임 제어 데이터(108)와 실제 게임 제어 데이터(116)를 비교하고, 모델(들)(104)의 성능을 검증하는 목적을 위해 예측 오차를 기록(log)하기 위한 예시적인 프로세스(700)의 흐름도이다. 논의를 위해, 프로세스(700)는 이전 도면들을 참조하여 설명된다. 또한, 도 5 및 도 7에 오프 페이지 참조 "B"로 표시된 바와 같이, 프로세스(700)는 프로세스(500)의 블록 518로부터 계속될 수 있다.
702에서, 프로세스(500)에서 플레이어(110)를 대신하여 게임 제어 데이터(108)를 사전에 생성한 후, 컴퓨팅 시스템(102)은, 훈련된 기계 학습 모델(들)(104)에 입력된 데이터를 수신한 이후 일정 시간 기간 내에 플레이어(110)와 연관된 실제 게임 제어 데이터(116)를 후속적으로 수신할 수 있다. 예측이 정확하면, 실제 게임 제어 데이터(116)는 사전에 생성된 게임 제어 데이터(108)와 매칭될 것이다. 예측이 부정확하면, 실제 게임 제어 데이터(116)는 사전에 생성된 게임 제어 데이터(108)와 매칭되지 않을 것이다.
704에서, 컴퓨팅 시스템(102)은, 레이턴시를 보상하기 위해 프로세스(500)의 블록 512에서 사전에 생성된 게임 제어 데이터(108)와 블록 702에서 수신된 실제 게임 제어 데이터(116)를 비교하는 것에 적어도 부분적으로 기반하여 예측 오차를 결정할 수 있다.
706에서, 컴퓨팅 시스템(102)은 기록된 예측 오차의 데이터베이스에 예측 오차를 기록하여, 예측 오차가 시간에 따라 추적될 수 있고, 게임 컨트롤러(106)에 대한 특정 유형의 사용자 입력의 예측에 대한 통계가 생성될 수 있다. 이러한 기록된 예측 오차는, 예를 들어, 훈련된 기계 학습 모델(들)(104)이 예상대로 동작하고 원하는 레벨의 성능에서 수행되는지 여부를 확인함으로써, 모델(들)(104)의 성능을 검증하기 위해서 활용될 수 있다.
첨부된 청구범위에 정의된 특허대상은 비록 그 특허대상이 구조적 특징에 특정적인 표현으로 기술되었다 해도 반드시 그 기술된 특정 특징에 한정되지 않는다는 것이 이해될 것이다. 오히려, 특정 특징들은 청구범위를 구현하는 예시적인 형태로서 개시된다.
Claims (20)
- 방법으로서,
비디오 게임의 플레이어와 연관된 센서 데이터를, 컴퓨팅 시스템에 의해서, 수신하는 단계;
상기 센서 데이터의 수신 이후 일정 시간 기간 내에 대응되는 게임 제어 데이터가 상기 컴퓨팅 시스템에 의해서 수신되게 하는 상기 플레이어와 연관된 게임 컨트롤러에 대한 사용자 입력을, 상기 컴퓨팅 시스템에 의해, 예측하는 단계 - 상기 예측하는 단계는,
상기 센서 데이터를 훈련된 기계 학습 모델에 입력으로서 제공하는 단계; 및
한 유형의 사용자 입력이 상기 게임 컨트롤러에 제공될 확률을 표시하는 스코어를 상기 훈련된 기계 학습 모델로부터 출력으로서 생성하는 단계에 의해 수행됨 -;
상기 스코어에 적어도 부분적으로 기반하여 상기 한 유형의 사용자 입력에 대응되는 게임 제어 데이터를, 상기 컴퓨팅 시스템에 의해서, 생성하는 단계;
상기 비디오 게임에 입력으로서 상기 게임 제어 데이터를 제공하는 단계;
상기 게임 제어 데이터에 적어도 부분적으로 기반하여 상기 비디오 게임으로부터 출력으로서 비디오 게임 데이터를 수신하는 단계; 및
디스플레이 상에서의 상기 비디오 게임 데이터의 제시를, 상기 컴퓨팅 시스템에 의해서, 유발하는 단계를 포함하는 방법. - 제1항에 있어서, 상기 센서 데이터는 상기 게임 컨트롤러의 하나 이상의 물리적 센서에 의해 생성된 원시 센서 데이터를 포함하고, 상기 원시 센서 데이터는 원시 자이로스코프 데이터, 원시 가속도계 데이터, 또는 원시 용량성 센서 데이터 중 적어도 하나를 포함하는, 방법.
- 제1항에 있어서, 상기 한 유형의 사용자 입력은,
상기 게임 컨트롤러의 특정 손가락 조작식 컨트롤의 작동;
특정 방향으로의 상기 게임 컨트롤러의 움직임;
상기 게임 컨트롤러의 특정 부분 위에 맴돌거나 접촉하는 물체; 또는
특정 양의 힘으로 상기 게임 컨트롤러의 일부분을 가압하는 상기 물체 중 적어도 하나를 포함하는, 방법. - 제1항에 있어서,
상기 예측하는 단계 전에, 상기 비디오 게임으로부터 게임 상태 데이터를, 상기 컴퓨팅 시스템에 의해서, 수신하는 단계; 및
상기 훈련된 기계 학습 모델에 상기 입력으로서 상기 센서 데이터를 제공하는 단계에 부가하여 상기 훈련된 기계 학습 모델에 추가 입력으로서 상기 게임 상태 데이터를 제공하는 단계를 더 포함하고,
상기 스코어는 상기 훈련된 기계 학습 모델에 상기 추가 입력으로서 제공된 상기 게임 상태 데이터에 적어도 부분적으로 기반하여 생성되는, 방법. - 제1항에 있어서, 상기 센서 데이터를 수신하는 단계 전에,
상기 비디오 게임의 과거 세션(past session) 또는 다른 비디오 게임의 과거 세션 동안 생성된 이력 센서 데이터에, 상기 컴퓨팅 시스템에 의해서, 액세스하는 단계;
상기 이력 센서 데이터가 수신된 이후 상기 일정 시간 기간 내에 생성된 이력 게임 제어 데이터에, 상기 컴퓨팅 시스템에 의해서, 액세스하는 단계;
상기 일정 시간 기간 내에 수신된 상기 이력 게임 제어 데이터에 대응되는 다수의 유형의 사용자 입력 중 하나를 나타내는 라벨(label)로 상기 이력 센서 데이터를 라벨링하는 단계; 및
상기 훈련된 기계 학습 모델을 획득하기 위해서 상기 이력 센서 데이터를 훈련 데이터로 사용하여 기계 학습 모델을 훈련시키는 단계를 더 포함하는 방법. - 제1항에 있어서, 상기 일정 시간 기간은 약 1 밀리초 내지 약 200 밀리초의 범위 내에 있는, 방법.
- 제1항에 있어서, 상기 센서 데이터는 컴퓨터 네트워크를 통해 제1 클라이언트 머신으로부터 수신되고, 상기 디스플레이 상에서의 상기 비디오 게임 데이터의 제시를 유발하는 단계는 상기 컴퓨터 네크워크를 통해 상기 비디오 게임 데이터를 제2 클라이언트 머신에 전송하는 단계를 포함하며, 상기 방법은,
측정된 레이턴시 값을 획득하기 위해 상기 컴퓨터 네트워크의 레이턴시를 측정하는 단계;
상기 측정된 레이턴시 값에 적어도 부분적으로 기반하여 상기 일정 시간 기간을 결정하는 단계; 및
상기 일정 시간 기간에 적어도 부분적으로 기반하여 다수의 훈련된 기계 학습 모델로부터 상기 훈련된 기계 학습 모델을 선택하는 단계를 더 포함하는 방법. - 방법으로서,
비디오 게임으로부터 게임 상태 데이터를, 컴퓨팅 시스템에 의해, 수신하는 단계;
훈련된 기계 학습 모델에 입력으로서 상기 게임 상태 데이터를 제공하는 단계;
한 유형의 사용자 입력이 상기 비디오 게임의 플레이어와 연관된 게임 컨트롤러에 제공되어 대응되는 게임 제어 데이터가 상기 게임 상태 데이터의 수신 이후 일정 시간 기간 내에 상기 컴퓨팅 시스템에 의해 수신되게 할 확률과 관련된 스코어를, 상기 훈련된 기계 학습 모델로부터 출력으로서, 생성하는 단계;
상기 한 유형의 사용자 입력에 대응되는 게임 제어 데이터를, 상기 컴퓨팅 시스템에 의해서, 생성하는 단계;
상기 비디오 게임에 입력으로서 상기 게임 제어 데이터를 제공하는 단계;
상기 비디오 게임으로부터 출력으로서 비디오 게임 데이터를 수신하는 단계; 및
디스플레이 상에서의 상기 비디오 게임 데이터의 제시를, 상기 컴퓨팅 시스템에 의해서, 유발하는 단계를 포함하는 방법. - 제8항에 있어서, 상기 한 유형의 사용자 입력은,
상기 게임 컨트롤러의 특정 손가락 조작식 컨트롤의 작동;
특정 방향으로의 상기 게임 컨트롤러의 움직임;
상기 게임 컨트롤러의 특정 부분 위에 맴돌거나 접촉하는 물체; 또는
특정 양의 힘으로 상기 게임 컨트롤러의 일부분을 가압하는 상기 물체 중 적어도 하나를 포함하는, 방법. - 제8항에 있어서, 상기 게임 상태 데이터를 수신하는 단계 전에,
상기 비디오 게임의 과거 세션 동안 발생된 상기 비디오 게임의 게임 상태를 포함하는 이력 게임 상태 데이터에, 상기 컴퓨팅 시스템에 의해서, 액세스하는 단계;
상기 과거 세션 동안 상기 게임 상태가 발생된 이후 상기 일정 시간 기간 내에 생성된 이력 게임 제어 데이터에, 상기 컴퓨팅 시스템에 의해서, 액세스하는 단계;
상기 일정 시간 기간 내에 수신된 상기 이력 게임 제어 데이터에 대응되는 다수의 유형의 사용자 입력 중 하나를 나타내는 라벨로 상기 이력 게임 상태 데이터를 라벨링하는 단계; 및
상기 이력 게임 상태 데이터를 훈련 데이터로서 사용하여 기계 학습 모델을 훈련시켜 상기 훈련된 기계 학습 모델을 획득하는 단계를 더 포함하는, 방법. - 제8항에 있어서,
상기 플레이어와 연관된 센서 데이터를, 상기 컴퓨팅 시스템에 의해서, 수신하는 단계; 및
상기 훈련된 기계 학습 모델에 상기 입력으로서 상기 게임 상태 데이터를 제공하는 단계에 부가하여 상기 훈련된 기계 학습 모델에 추가 입력으로서 상기 센서 데이터를 제공하는 단계를 더 포함하고,
상기 스코어는 상기 훈련된 기계 학습 모델에 상기 추가 입력으로서 제공된 상기 센서 데이터에 적어도 부분적으로 기반하여 생성되는, 방법. - 제11항에 있어서, 상기 센서 데이터는 상기 게임 컨트롤러의 하나 이상의 물리적 센서에 의해 생성된 원시 센서 데이터를 포함하고, 상기 원시 센서 데이터는 원시 자이로스코프 데이터, 원시 가속도계 데이터, 또는 원시 용량성 센서 데이터 중 적어도 하나를 포함하는, 방법.
- 제8항에 있어서,
상기 게임 제어 데이터를 생성하는 단계 전에, 레이턴시를 보상하기 위해 플레이어를 대신하여 게임 제어 데이터가 사전에 생성되어야 하는 복수의 유형의 사용자 입력을 나타내는 데이터에 액세스하는 단계; 및
상기 한 유형의 사용자 입력이 상기 복수의 유형의 사용자 입력 중 하나임을 결정하는 단계를 더 포함하고,
상기 게임 제어 데이터를 생성하는 단계는 상기 한 유형의 사용자 입력이 상기 복수의 유형의 사용자 입력 중 하나임을 결정하는 단계에 대한 응답인, 방법. - 제8항에 있어서,
상기 스코어가 상기 한 유형의 사용자 입력과 연관된 임계 스코어를 충족한다는 것을 결정하는 단계 - 상기 임계 스코어는 상이한 유형의 사용자 입력과 연관된 복수의 상이한 임계 스코어 중 하나임 - 를 더 포함하고,
상기 게임 제어 데이터를 생성하는 단계는 상기 임계 스코어를 충족하는 상기 스코어에 적어도 부분적으로 기반하는, 방법. - 시스템으로서,
하나 이상의 프로세서; 및
컴퓨터 실행 가능 명령어를 저장하는 메모리를 포함하고, 상기 명령어는, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금,
비디오 게임의 플레이어와 연관된 센서 데이터를 수신하게 하고;
상기 센서 데이터를 훈련된 기계 학습 모델에 입력으로서 제공하게 하고;
한 유형의 사용자 입력이 상기 플레이어와 연관된 게임 컨트롤러에 제공되어 대응되는 게임 제어 데이터가 상기 센서 데이터의 수신 이후 일정 시간 기간 내에 상기 시스템에 의해서 수신되게 할 확률을 나타내는 스코어를 상기 훈련된 기계 학습 모델로부터 출력으로서, 생성하게 하고;
상기 한 유형의 사용자 입력에 대응되는 게임 제어 데이터를 생성하게 하고;
상기 비디오 게임에 입력으로서 상기 게임 제어 데이터를 제공하게 하고;
상기 비디오 게임으로부터 출력으로서 비디오 게임 데이터를 수신하게 하고;
디스플레이 상에서의 상기 비디오 게임 데이터의 제시를 유발하게 하는, 시스템. - 제15항에 있어서, 상기 한 유형의 사용자 입력은,
게임 컨트롤러의 특정 손가락 조작식 컨트롤의 작동;
특정 방향으로의 상기 게임 컨트롤러의 움직임;
상기 게임 컨트롤러의 특정 부분 위에 맴돌거나 접촉하는 물체; 또는
특정 양의 힘으로 상기 게임 컨트롤러의 일부분을 가압하는 상기 물체 중 적어도 하나를 포함하는, 시스템. - 제15항에 있어서, 상기 컴퓨터 실행 가능 명령어는, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 추가로,
상기 스코어가 상기 한 유형의 사용자 입력과 연관된 임계 스코어를 충족한다는 것을 결정하게 하고, 상기 임계 스코어는 상이한 유형의 사용자 입력과 연관된 복수의 상이한 임계 스코어 중 하나이고,
상기 게임 제어 데이터를 생성하는 것은 상기 임계 스코어를 충족하는 상기 스코어에 적어도 부분적으로 기반하는, 시스템. - 제15항에 있어서, 상기 컴퓨터 실행 가능 명령어는, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 추가로,
상기 센서 데이터를 수신하는 것 이후 상기 일정 시간 기간 내에 상기 플레이어와 연관된 실제 게임 제어 데이터를 수신하게 하고;
상기 실제 게임 제어 데이터와 상기 게임 제어 데이터를 비교하는 것에 적어도 부분적으로 기반하여 예측 오차를 결정하게 하는, 시스템. - 제18항에 있어서, 상기 컴퓨터 실행 가능 명령어는, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 추가로,
기록(log)된 예측 오차의 데이터베이스에 상기 예측 오차를 기록하게 하는, 시스템. - 제15항에 있어서, 상기 센서 데이터는 상기 게임 컨트롤러의 하나 이상의 물리적 센서에 의해 생성된 원시 센서 데이터를 포함하고, 상기 원시 센서 데이터는 원시 자이로스코프 데이터, 원시 가속도계 데이터, 또는 원시 용량성 센서 데이터 중 적어도 하나를 포함하는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/688,833 US11717748B2 (en) | 2019-11-19 | 2019-11-19 | Latency compensation using machine-learned prediction of user input |
US16/688,833 | 2019-11-19 | ||
PCT/US2020/060504 WO2021101811A1 (en) | 2019-11-19 | 2020-11-13 | Latency compensation using machine-learned prediction of user input |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220097907A true KR20220097907A (ko) | 2022-07-08 |
Family
ID=75909748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227016566A KR20220097907A (ko) | 2019-11-19 | 2020-11-13 | 사용자 입력의 기계 학습 예측을 사용하는 레이턴시 보상 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11717748B2 (ko) |
EP (1) | EP4042342A4 (ko) |
JP (1) | JP2023502243A (ko) |
KR (1) | KR20220097907A (ko) |
CN (1) | CN114730391A (ko) |
WO (1) | WO2021101811A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2588584B (en) * | 2019-10-17 | 2023-11-29 | Sony Interactive Entertainment Inc | User adaptation system and method |
JP6748281B1 (ja) * | 2019-12-10 | 2020-08-26 | 株式会社Cygames | サーバ、処理システム、処理方法及びプログラム |
US11768945B2 (en) * | 2020-04-07 | 2023-09-26 | Allstate Insurance Company | Machine learning system for determining a security vulnerability in computer software |
US11663039B2 (en) * | 2020-04-07 | 2023-05-30 | International Business Machines Corporation | Workload management using reinforcement learning |
US20210406642A1 (en) * | 2020-06-30 | 2021-12-30 | Nvidia Corporation | Anomaly characterization using one or more neural networks |
SG10202100950PA (en) * | 2021-01-28 | 2021-06-29 | Garena Online Private Ltd | A method for implementing multi-player games |
CA3212951A1 (en) * | 2021-03-10 | 2022-09-15 | Bungie, Inc. | Controller state management for client-server networking |
CN115243771A (zh) * | 2021-08-13 | 2022-10-25 | 许磊 | 一种用于游戏的免下载运行方法及平台 |
US20230128243A1 (en) * | 2021-10-27 | 2023-04-27 | Nvidia Corporation | Augmenting multimedia streaming by anticipating events using artificial intelligence |
US20230186121A1 (en) * | 2021-12-10 | 2023-06-15 | International Business Machines Corporation | Computer optimization of task performance through dynamic sensing |
US20230208761A1 (en) * | 2021-12-28 | 2023-06-29 | International Business Machines Corporation | Ai-based compensation of resource constrained communication |
US12115441B2 (en) * | 2022-08-03 | 2024-10-15 | Sony Interactive Entertainment Inc. | Fidelity of motion sensor signal by filtering voice and haptic components |
US20240221751A1 (en) * | 2023-01-04 | 2024-07-04 | Wispr Al, Inc. | Wearable silent speech device, systems, and methods |
CN117707346B (zh) * | 2023-12-25 | 2024-07-12 | 深圳尚睿博科技有限公司 | 一种电竞键盘及其交互控制方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6475090B2 (en) | 2001-03-29 | 2002-11-05 | Koninklijke Philips Electronics N.V. | Compensating for network latency in a multi-player game |
US9511289B2 (en) | 2009-07-10 | 2016-12-06 | Valve Corporation | Player biofeedback for dynamically controlling a video game state |
WO2013114322A1 (en) * | 2012-02-01 | 2013-08-08 | Yosef Mizrachi | Method and system for improving prediction in online gaming |
EP3047360A4 (en) * | 2013-09-18 | 2017-07-19 | Tactual Labs Co. | Systems and methods for providing response to user input using information about state changes predicting future user input |
US10552752B2 (en) * | 2015-11-02 | 2020-02-04 | Microsoft Technology Licensing, Llc | Predictive controller for applications |
US10514799B2 (en) | 2016-09-08 | 2019-12-24 | Google Llc | Deep machine learning to perform touch motion prediction |
CN111565809B (zh) | 2017-10-11 | 2024-07-23 | 华纳兄弟娱乐公司 | 基于机器学习的灵活计算机游戏 |
US10918941B2 (en) * | 2019-03-27 | 2021-02-16 | Electronic Arts Inc. | Predictive execution of distributed game engines |
-
2019
- 2019-11-19 US US16/688,833 patent/US11717748B2/en active Active
-
2020
- 2020-11-13 CN CN202080079891.8A patent/CN114730391A/zh active Pending
- 2020-11-13 WO PCT/US2020/060504 patent/WO2021101811A1/en unknown
- 2020-11-13 EP EP20889262.0A patent/EP4042342A4/en active Pending
- 2020-11-13 JP JP2022529084A patent/JP2023502243A/ja active Pending
- 2020-11-13 KR KR1020227016566A patent/KR20220097907A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
EP4042342A1 (en) | 2022-08-17 |
EP4042342A4 (en) | 2024-03-06 |
JP2023502243A (ja) | 2023-01-23 |
US11717748B2 (en) | 2023-08-08 |
CN114730391A (zh) | 2022-07-08 |
WO2021101811A1 (en) | 2021-05-27 |
US20210146241A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11717748B2 (en) | Latency compensation using machine-learned prediction of user input | |
US11052311B2 (en) | Machine-learned trust scoring based on sensor data | |
CN114995646B (zh) | 头戴式显示器中观看虚拟现实内容时减少不适的方法 | |
US9557814B2 (en) | Biometric interface for a handheld device | |
US11007427B2 (en) | Method and apparatus for monitoring and calibrating performances of gamers | |
JP2024081702A (ja) | 現在のゲームシナリオに基づくストリーミングゲームのためのグラフィカルオーバレイの実施 | |
KR20200081171A (ko) | 감각 기반의 동적 게임 상태 구성 | |
US9662569B2 (en) | Sensor fusion to combine sensor input data from multiple devices into one input stream | |
JP2024105265A (ja) | 仮想コンソールゲーム用コントローラ | |
US20140365412A1 (en) | Method and system for improving prediction in online gaming | |
US10279266B2 (en) | Monitoring game activity to detect a surrogate computer program | |
US20240050857A1 (en) | Use of ai to monitor user controller inputs and estimate effectiveness of input sequences with recommendations to increase skill set | |
US20240066413A1 (en) | Ai streamer with feedback to ai streamer based on spectators | |
US20240168576A1 (en) | Content control method and system | |
US20240335740A1 (en) | Translation of sign language in a virtual environment | |
KR102481528B1 (ko) | 가상 현실 게임 방송 서비스 방법과 이를 수행하기 위한 장치 및 시스템 | |
US20220334698A1 (en) | Touch status indication for active stylus | |
US20230386452A1 (en) | Methods for examining game context for determining a user's voice commands | |
US20240335737A1 (en) | Gesture translation with modification based on game context | |
US20240082714A1 (en) | Tracking historical game play of adults to determine game play activity and compare to activity by a child, to identify and prevent child from playing on an adult account | |
Konar et al. | Gesture Driven Fuzzy Interface System for Car Racing Game | |
JP2024512346A (ja) | クライアント-サーバネットワーキングのためのコントローラ状態管理 | |
WO2023229920A1 (en) | Method and system for providing game reimmersion |