KR102265017B1 - 비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템 - Google Patents

비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템 Download PDF

Info

Publication number
KR102265017B1
KR102265017B1 KR1020190050794A KR20190050794A KR102265017B1 KR 102265017 B1 KR102265017 B1 KR 102265017B1 KR 1020190050794 A KR1020190050794 A KR 1020190050794A KR 20190050794 A KR20190050794 A KR 20190050794A KR 102265017 B1 KR102265017 B1 KR 102265017B1
Authority
KR
South Korea
Prior art keywords
user
video game
computing system
event
pixels
Prior art date
Application number
KR1020190050794A
Other languages
English (en)
Other versions
KR20200112568A (ko
Inventor
제럴드 리차드 파네우프
제임스 넌 주니어 헤일
Original Assignee
일렉트로닉 아트 아이엔씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/359,802 external-priority patent/US11020658B2/en
Priority claimed from US16/359,836 external-priority patent/US10963365B2/en
Application filed by 일렉트로닉 아트 아이엔씨. filed Critical 일렉트로닉 아트 아이엔씨.
Publication of KR20200112568A publication Critical patent/KR20200112568A/ko
Application granted granted Critical
Publication of KR102265017B1 publication Critical patent/KR102265017B1/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/25Output arrangements for video game devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/23Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

비디오 게임 테스트 시스템은 비디오 게임 제어기와의 상호동작과 비디오 게임 내 특정 이벤트의 발생 사이의 경과된 시간에 대한 객관적인 측정을 결정할 수 있다. 이러한 객관적인 측정은 테스터가 비디오 게임이 객관적으로 천천히 동작하는지, 또는 단순히 테스터에게 느리게 느껴지게 하는지 판단할 수 있게 하며, 실행 속도에 영향을 미칠 수 있지만 가시적인 에러를 야기하지 않는 코딩 에러의 존재를 나타낼 수 있다. 상기 시스템은 비디오 게임과의 사용자의 상호동작을 시뮬레이션함으로써 경과된 시간에 대해 객관적인 측정을 획득할 수 있다. 또한, 상기 시스템은 비디오 게임 소스 코드에 의해 애니메이션의 프레임에 임베디드된 데이터를 식별하여, 대응하는 이벤트의 발생을 식별할 수 있다. 상기 시스템은 시뮬레이션된 사용자 상호동작, 및 대응하는 이벤트의 발생 또는 트리거 사이의 경과된 시간을 측정할 수 있다.
애플리케이션 테스트 시스템은 사용자 인터페이스 장치와의 상호동작과 비디오 게임과 같은 애플리케이션 내의 특정 이벤트의 발생 사이의 경과된 시간에 대한 객관적인 측정을 결정할 수 있다. 이러한 객관적인 측정은 테스터가 애플리케이션이 객관적으로 천천히 동작하는지, 또는 단순히 테스터에게 느리게 느껴지게 하는지 판단할 수 있게 하며, 실행 속도에 영향을 미칠 수 있지만 가시적인 에러를 야기하지 않는 코딩 에러의 존재를 나타낼 수 있다. 상기 시스템은 애플리케이션과의 사용자의 상호동작을 시뮬레이션함으로써 경과된 시간에 대해 객관적인 측정을 획득할 수 있다. 또한, 상기 시스템은 애플리케이션 소스 코드에 의해 애니메이션의 프레임에 임베디드된 데이터를 식별하여, 대응하는 이벤트의 발생을 식별할 수 있다. 상기 시스템은 시뮬레이션된 사용자 상호동작, 및 대응하는 이벤트의 발생 또는 트리거 사이의 경과된 시간을 측정할 수 있다.

Description

비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템{SYSTEM FOR TESTING COMMAND EXECUTION LATENCY WITHIN A VIDEO GAME}
비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템에 관한 것이다.
많은 비디오 게임은 컴퓨터 시스템에서 상당한 퍼센트의 자원을 사용하는 복잡한 소프트웨어 애플리케이션이다. 매년 최신 비디오 게임의 복잡성은 최신 컴퓨팅 시스템의 한계를 밀어붙이고 있다. 최신 비디오 게임은 수백만 줄의 코드를 포함한다. 이러한 큰 애플리케이션의 코드를 테스트하는 것은 시간이 많이 걸리고 힘든 프로세스일 수 있다. 또한, 비디오 게임은 종종 개발자 팀에 의해 프로그래밍되기 때문에, 비디오 게임의 일부분에 대해 작업하는 한 명의 개발자 또는 개발자 팀에 의해 만들어진 변경은 비디오 게임의 다른 부분에 대해 작업하는 다른 개발자 또는 개발자 팀에 의해 개발된 코드에 영향을 줄 수 있다. 비디오 게임이 독립적으로 생성될 수 있는 서로 다른 모듈로 구성될 때 - 상기 서로 다른 모듈이 함께 동작하여 하나의 비디오 게임 또는 애플리케이션을 생성하도록 구성됨 -, 상기 비디오 게임이 바람직하게 동작한다는 것을 보장하는 것은 특히 어려울 수 있다. 그리고, 다른 팀에 의해 코드가 변경됨에 따라, 코드는 다시 테스트되어야 하고, 자주 테스트되어야 한다.
본 발명의 시스템, 방법 및 장치는 각각 혁신적인 여러 측면을 가지며, 그 중 한 측면만이 본 명세서에 개시된 바람직한 속성의 모두에 대해 전적으로 책임을 지는 것은 아니다. 본 명세서에서 설명된 주제의 하나 이상의 구현의 세부 사항은 첨부 도면 및 이하의 설명에서 설명된다.
본 개시의 어떤 측면은, 비디오 게임의 실행 중에 이벤트 지연(event latency)를 테스트하도록 구성된 비디오 게임 테스트 시스템(video game test system)에 관한 것이다. 비디오 게임 테스트 시스템은, 프론트 엔드 시스템(front-end system); 및 백 엔드 시스템(back-end system)을 포함할 수 있다. 상기 프론트 엔드 시스템은, 사용자 컴퓨팅 시스템의 사용자 인터페이스 장치(user interface device)와의 사용자에 의한 상호동작(interaction)을 에뮬레이트(emulate)하는 제1 명령을 액세스(access)하고; 및 상기 사용자 컴퓨팅 시스템에 의해 호스팅(hosted)된 비디오 게임과 상호동작하도록 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하도록 구성될 수 있고, 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것은, 타이머(timer)를 트리거(trigger)한다. 상기 백 엔드 시스템은, 상기 사용자 컴퓨팅 시스템으로부터 하나 이상의 출력 신호를 수신하고; 상기 하나 이상의 출력 신호를 픽셀(pixels)의 세트(set)로 변환하고 - 상기 픽셀의 세트는 상기 사용자 컴퓨팅 시스템에 의한 디스플레이를 위한 프레임 출력(frame output)에 대응함 -; 상기 픽셀의 세트에 임베디드된(embedded) 스톱 조건(stop condition)의 존재를 식별하고; 및 상기 타이머가 트리거된 제1 시간, 및 상기 스톱 조건의 존재의 식별과 연관된 제2 시간에 적어도 부분적으로 기초하여 이벤트의 이벤트 지연을 결정하도록 구성될 수 있고, 상기 이벤트는 적어도 부분적으로 상기 제1 명령의 실행에 의해 트리거된다.
앞 단락의 시스템은 다음의 특징의 임의의 조합 또는 서브 조합(sub-combination)을 포함할 수 있다. 상기 프론트 엔드 시스템은, 상기 사용자 인터페이스 장치와의 하나 이상의 상호동작 시퀀스(interaction sequences)에 대응하는 하나 이상의 명령 시퀀스(command sequences)를 저장하도록 구성된 비휘발성 스토리지를 포함하고, 상기 하나 이상의 명령 시퀀스 중 적어도 하나는 상기 제1 명령을 포함한다. 상기 프론트 엔드 시스템은, 상기 제1 명령을 저장하도록 구성된 스토리지(storage); 및 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하도록 구성된 사용자 인터페이스 회로(user interface circuit)를 포함하고, 상기 스토리지는, 상기 사용자 컴퓨팅 시스템에 대한 사용자 입력을 시뮬레이션하는 것과 연관된 입력 지연을 감소시키는 상기 사용자 인터페이스 회로와 배치(collocated)된다. 상기 프론트 엔드 시스템은, 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것과 실질적으로 병렬적으로 상기 타이머를 트리거하도록 더 구성된다. 상기 프론트 엔드 시스템은, 상기 사용자 컴퓨팅 시스템에 제2 명령을 제공할 때, 제2 타이머를 트리거하도록 더 구성된다. 상기 프론트 엔드 시스템은, 상기 사용자 컴퓨팅 시스템의 인터페이스 포트를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공함으로써 상기 사용자에 의한 상기 사용자 인터페이스와의 상호동작을 에뮬레이트하도록 구성된 사용자 인터페이스 회로를 포함한다. 상기 백 엔드 시스템은 상기 타이머를 포함한다. 상기 백 엔드 시스템은, 상기 픽셀의 세트로부터 픽셀의 서브세트를 필터링하고 - 상기 픽셀의 서브세트는 임베디드 데이터를 저장하도록 구성됨 -; 상기 임베디드 데이터를 획득하기 위하여 상기 픽셀의 서브세트를 디코딩하고; 및 상기 임베디드 데이터가 상기 스톱 조건을 포함하는지 결정함으로써, 상기 스톱 조건을 식별하도록 더 구성된다. 상기 백 엔드 시스템은, 상기 픽셀의 세트로부터 상기 타이머로 픽셀의 서브세트(subset)를 제공하도록 구성된 제어기를 포함한다. 상기 백 엔드 시스템은, 상기 제1 시간, 상기 제2 시간, 및 상기 제어기와 상기 타이머 사이의 통신 지연(communication delay)에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하도록 더 구성된다. 상기 프론트 엔드 시스템은 하나 이상의 집적 회로를 포함하고, 상기 백 엔드 시스템은, 상기 프론트 엔드 시스템과 별개인 하나 이상의 집적 회로를 포함한다. 상기 이벤트는, 애니메이션의 출력, 상기 애니메이션 내의 프레임의 출력, 사운드의 출력, 상기 비디오 게임의 상태에서의 변화, 또는 상기 비디오 게임의 구성 요소(element)의 상태에서의 변화 중 적어도 하나를 포함한다. 상기 프론트 엔드 시스템은, 상기 이벤트의 상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 비디오 게임의 테스트를 변경(modify)하도록 구성된다.
본 개시의 추가적인 측면은, 비디오 게임의 실행 중에 이벤트 지연을 테스트하는 방법에 관한 것이다. 상기 방법은, 자체가 하드웨어로 구현되는 비디오 게임 테스트 시스템에 의해 구현될 수 있다. 상기 하드웨어는 하나 이상의 특정 용도의(application-specific) 하드웨어 회로 또는 시스템을 포함할 수 있다. 특정 실시예에서, 상기 하드웨어는 특정 용도의 명령어를 가지는 범용 하드웨어, 또는 범용 및 특정 용도의 하드웨어의 조합일 수 있다. 상기 방법은, 비디오 게임 내 이벤트의 이벤트 지연을 테스트하기 위한 트리거를 수신하는 단계 - 상기 이벤트 지연은 상기 비디오 게임을 호스팅하는 사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 상호동작과 상기 이벤트의 발생 사이의 시간의 크기를 포함함 -; 상기 트리거를 수신하는 것에 응답하여, 명령 시퀀스 스토리지로부터 제1 명령을 액세스하는 단계 - 상기 제1 명령은 상기 사용자의 의한 상기 사용자 인터페이스 장치와의 상호동작을 에뮬레이트함 -; 상기 사용자 인터페이스 장치와 통신하도록 구성된 상기 사용자 컴퓨팅 시스템의 인터페이스를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공하는 단계 - 상기 비디오 게임 테스트 시스템은 상기 사용자 인터페이스 장치에 대한 대체(substitute)로서 상기 사용자 컴퓨팅 시스템과 인터페이스함 -; 상기 사용자 컴퓨팅 시스템의 출력 포트(output port)로부터 출력 신호(output signals)의 세트를 수신하는 단계; 상기 출력 신호의 세트를 픽셀의 세트로 변환하는 단계; 상기 픽셀의 세트에 임베디드된 스톱 플래그(stop flag)를 식별하는 단계; 및 상기 스톱 플래그를 식별하는 것에 응답하여, 상기 제1 명령을 제공하는 것과 연관된 제1 시간 및 상기 스톱 플래그를 식별하는 것과 연관된 제2 시간에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하는 단계를 포함할 수 있다.
앞 단락의 방법은 다음과 같은 특징의 임의의 조합 또는 서브 조합을 포함할 수 있다. 상기 이벤트 지연을 결정하는 단계는, 상기 비디오 게임 테스트 시스템의 구성 요소 사이의 통신과 연관된 통신 오버헤드 시간(communication overhead time)에 의하여 결정된 지연(determined latency)을 변경하는 단계를 더 포함한다. 상기 이벤트 지연을 결정하는 단계는, 상기 사용자 컴퓨팅 시스템과 연관된 수직 동기화 지연(vertical synchronization latency)에 의하여 결정된 지연(determined latency)을 변경하는 단계를 더 포함한다. 상기 방법은, 임베디드 데이터를 포함하는 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트를 필터링하는 단계를 더 포함하고, 상기 픽셀의 세트에 임베디드된 상기 스톱 플래그를 식별하는 단계는, 상기 픽셀의 서브세트에 임베디드 데이터를 추출하는 단계; 및 상기 추출된 데이터가 상기 스톱 플래그를 포함하는지 결정하는 단계를 포함한다. 상기 방법은, 사용자 인터페이스에서 사용자에 대한 프리젠테이션(presentation)을 위해 상기 이벤트 지연을 출력하는 단계를 더 포함한다. 상기 방법은, 상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 사용자 컴퓨팅 시스템에 제공하기 위한 제2 명령을 선택하는 단계를 더 포함한다.
본 개시의 또 다른 측면은 비디오 게임의 실행 중에 명령 실행 지연을 테스트하도록 구성된 비디오 게임 테스트 시스템에 관한 것이다. 상기 비디오 게임 테스트 시스템은, 사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 사용자에 의한 상호동작을 에뮬레이트하는 하나 이상의 명령을 저장하도록 구성된 스토리지; 및 프로세싱 회로를 포함할 수 있다. 상기 프로세싱 회로는 하나 이상의 특정 용도의(application-specific) 집적 회로, 및/또는 특정 용도의 컴퓨터 실행 가능 명령어를 실행하도록 구성된 범용 프로세싱 회로와 같은, 특정 용도의 프로세싱 회로일 수 있다. 상기 프로세싱 회로는, 상기 스토리지로부터 명령을 액세스하고; 상기 사용자 컴퓨팅 시스템에 의해 호스팅되는 비디오 게임과 상호동작하기 위해 상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하고; 상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 제1 시간에 타이머를 시작하고; 상기 사용자 컴퓨팅 시스템으로부터 출력 신호의 세트를 획득하고 - 상기 출력 신호는 디스플레이에서의 디스플레이를 위한 프레임 출력과 연관됨 -; 상기 출력 신호를 픽셀의 세트로 변환하고; 상기 픽셀의 세트의 서브세트에 포함된 임베디드 데이터를 획득하기 위하여 상기 픽셀의 세트를 처리하고; 상기 임베디드 데이터가 스톱 조건을 포함하는 것으로 결정된 제2 시간에 상기 타이머를 스톱(stop)시키고; 및 상기 제1 시간 및 상기 제2 시간에 적어도 부분적으로 기초하여 상기 명령과 연관된 명령 실행 지연을 결정하도록 구성될 수 있다.
본 개시의 어떤 측면은 애플리케이션의 코드 효율성(code efficiency)을 테스트하도록 구성된 애플리케이션 테스트 시스템에 관한 것이다. 상기 애플리케이션 테스트 시스템은 하드웨어 프로세서를 포함할 수 있다. 이러한 하드웨어 프로세서는 특정 용도의 컴퓨터 실행 가능 명령어를 실행하도록 구성된 범용 하드웨어 프로세서일 수 있다. 또한, 상기 하드웨어 프로세서는 분산(distributed)될 수 있는 하나의 프로세서 또는 하드웨어 프로세서의 세트를 포함할 수 있다. 대안적으로, 상기 하드웨어 프로세서는 특정 용도의 회로일 수도 있고 이를 포함할 수 있다. 또 다른 실시예에서, 하드웨어 프로세서는 특정 용도의 회로 및 범용 하드웨어의 조합을 포함할 수 있다. 상기 하드웨어 프로세서는, 애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하고 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -; 상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 타이머를 시작하고; 상기 컴퓨팅 시스템의 디스플레이 포트를 통해 출력되는, 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐(capture)하고; 상기 출력이 스톱 이벤트(stop event)와 연관된 임베디드 데이터(embedded data)를 포함하는지 결정하고; 및 상기 출력이 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함한다고 결정된 경우, 상기 타이머에 기초하여 명령 지연 값(command latency value)을 결정하도록 구성될 수 있다. 어떤 실시예에서, 상기 타이머가 시작되는 것과 상기 사용자 명령이 상기 컴퓨팅 시스템에 제공되는 것의 사이는 임계 시간 차(threshold time difference)보다 적게 걸린다. 예를 들어, 임계 시간차는 5 ms, 100 ns, 500 ns, 전술한 것 사이의 임의의 값 등일 수 있다.
앞 단락의 시스템은 다음과 같은 특징의 임의의 조합 또는 서브 조합을 포함할 수 있다. 상기 타이머는 시간의 경과를 측정한다. 상기 타이머는, 상기 타이머의 시작 및 상기 스톱 이벤트의 검출 사이에서 발생하는 이벤트의 수를 측정한다. 상기 이벤트는 디스플레이에 출력된 프레임(frames)을 포함한다. 상기 컴퓨팅 시스템으로부터의 상기 출력을 캡쳐하는 것은, 상기 출력이 상기 디스플레이 포트를 통해 디스플레이에 제공되는 것을 금지(prevent)하지 않는다. 상기 스톱 이벤트는, 상기 사용자 명령에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트를 포함한다. 상기 애플리케이션은 비디오 게임을 포함한다. 상기 하드웨어 프로세서는, 상기 출력을 애니메이션 프레임의 픽셀의 세트로 변환하고; 디코딩된 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트의 적어도 일부를 디코딩하고; 및 상기 디코딩된 픽셀의 서브세트가 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함하는지 결정함으로써, 상기 출력이 상기 스톱 이벤트와 연관된 임베디드 데이터를 포함하는지 결정하도록 더 구성된다. 상기 명령 지연 값은, 이벤트 트리거 및 대응하는 이벤트의 발생 간의 시간에 대한 측정치(measure)를 포함하고, 상기 이벤트 트리거는, 상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것을 포함한다. 상기 하드웨어 프로세서는, 상기 명령 지연 값에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하도록 더 구성된다.
본 개시의 추가적인 측면은, 애플리케이션의 코드 효율성을 테스트하는 방법에 관한 것이다. 상기 방법은, 특정 컴퓨터 실행 가능 명령어를 이용하여 구성된 애플리케이션 테스트 시스템에 의해 구현될 수 있다. 상기 애플리케이션 테스트 시스템은 특정 컴퓨터 실행 가능 명령어를 구현하도록 구성된 특정 용도의 하드웨어 및/또는 범용 하드웨어를 포함할 수 있다. 상기 방법은, 애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 단계 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -; 상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터(counter)를 시작하는 단계; 상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 단계; 상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계; 및 상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함한다고 결정된 경우, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 단계를 포함할 수 있다.
앞 단락의 방법은 다음과 같은 특징의 임의의 조합 또는 서브 조합을 포함할 수 있다. 상기 카운터는, 상기 카운터를 시작하는 것과 상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것 사이에 경과된 시간의 크기(amount of time)를 카운트한다. 상기 카운터는, 상기 카운터를 시작하는 것과 상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것 사이에 출력된 프레임 또는 발생된 이벤트의 수를 카운트한다. 상기 타겟 이벤트는, 상기 사용자 명령 및 상기 애플리케이션의 상태에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트를 포함한다. 상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계는, 상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 단계; 디코딩된 픽셀의 서브세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 단계; 및 상기 디코딩된 픽셀의 서브세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 단계를 포함한다. 상기 타겟 이벤트와 연관된 상기 데이터는, 상기 애플리케이션에 삽입된 테스트 코드에 의해 상기 이미지의 픽셀 데이터에 대한 대체(substitute)로서 상기 이미지에 삽입된다. 상기 방법은, 상기 명령 지연에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하는 단계를 더 포함한다.
본 개시의 또 다른 측면은, 컴퓨터 실행 가능 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체(non-transitory computer-readable storage medium)에 관한 것이며, 상기 컴퓨터 실행 가능 명령어는, 하나 이상의 컴퓨팅 장치에 의해 실행될 때, 상기 하나 이상의 컴퓨팅 장치가 하나 이상의 동작들을 수행하도록 구성한다. 상기 하나 이상의 동작들은, 애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 동작 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -; 상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터를 시작하는 동작; 상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 동작; 상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작; 및 상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것에 응답하여, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 동작을 포함할 수 있다.
앞 단락의 비일시적 컴퓨터 판독 가능 저장 매체는 다음과 같은 특징의 임의의 조합 또는 서브 조합을 포함할 수 있다. 상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작은, 상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 동작; 디코딩된 픽셀의 세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 동작; 및 상기 디코딩된 픽셀의 세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 동작을 포함한다. 상기 동작들은, 상기 명령 지연에 적어도 부분적으로 기초하여 상기 애플리케이션에 대해 수행할 자동화된 테스트(automated test)를 선택하는 동작을 더 포함한다.
본원에 특정 실시예 및 예가 개시되어 있지만, 발명의 주제(inventive subject matter)는 구체적으로 개시된 실시예의 범위를 넘어서 다른 대안적인 실시예 및/또는 사용, 및 변형 및 그 등가물로 확장된다.
도면들 전체에서, 참조 번호는 참조된 요소 간의 대응을 나타내기 위해 재사용된다. 도면들은 본 명세서에 설명된 주제의 실시예들을 예시하기 위한 것이며, 그 범위를 제한하지 않는다.
도 1은 특정 실시예에 따른 비디오 게임 테스트 환경을 도시한다.
도 2는 특정 실시예에 따른 명령 실행 지연 테스트 프로세스에 대한 흐름도를 나타낸다.
도 3은 특정 실시예에 따른 지연 결정 프로세스에 대한 흐름도를 나타낸다.
도 4는 특정 실시예에 따른 임베디드 데이터를 포함하는 예시적인 출력 프레임을 도시한다.
도 5는 특정 실시예에 따른 도 4의 예시적인 출력 프레임의 일부에 대한 확대도(expanded view)이다.
도 6은 사용자 컴퓨팅 시스템의 일 실시예를 도시한다.
도 7은 도 6의 사용자 컴퓨팅 시스템에 대한 하드웨어 구성의 일 실시예를 도시한다.
도입
테스트에 중요할 수 있는 비디오 게임의 한 측면은 비디오 게임의 반응성(responsiveness)이다. 비디오 게임의 반응성은, 사용자가 비디오 게임과 상호동작하는 시각 및 비디오 게임에 의해 대응하는 동작(corresponding action)이 수행되는 시각 사이의 시간의 크기(amount of time)와 관련될 수 있다. 이러한 시간 차(time difference)는 비디오 게임의 "지연(latency)"또는 "명령 지연(command latency)"이라고 지칭될 수 있다. 예를 들어, 사용자가 사용자 인터페이스 장치의 버튼(예를 들어, 비디오 게임 콘솔의 제어기 또는 랩탑의 키보드)을 누르는 것과 대응하는 이벤트 또는 (총알의 발사, 차량의 가속, 또는 농구의 슈팅과 같은) 동작의 발생 사이의 시간의 크기를 결정하는 것은 중요할 수 있다.
비디오 게임과의 상호동작 및 이벤트의 발생이 특정 지연을 가질 수 있는 데는 많은 이유가 있다. 지연의 원인 중 일부는 코딩 에러(coding errors) 또는 설계 에러(design errors)로 인한 것일 수 있다. 예를 들어, 코드(code)는 잘못된 함수 호출, 최적의 객체 설계보다 나쁘거나 적은 특정 상태 변수 구성(configuring)에서의 에러, 대체 옵션(substitute options)보다 비효율적인 데이터 구조의 선택, 대체 옵션보다 비효율적인 방법, 함수, 라이브러리의 선택, 다른 가능한 코드 옵션보다 비효율적인 코드의 사용, 또는 게임 엔진 또는 프로그래밍 언어 내에서 사용되지 않는 기능(deprecated functionality)의 사용을 포함할 수 있다. 지연의 다른 원인은 반드시 에러는 아니지만, 비디오 게임과의 상호동작 및 이벤트의 발생 사이의 지연을 변경(modify)할 수 있는 결정으로 인한 것일 수 있다. 예를 들어, 애니메이터는 농구 슈팅(shooting a basketball)과 같은 이벤트와 연관된 애니메이션의 길이를 연장할 수 있다. 이러한 연장된 애니메이션은 슛(shot)을 더 스무스(smooth)하게 나타내도록 하지만, 사용자 인터페이스 장치와의 사용자에 의한 상호동작에 대한 응답을 지연(delay)시킬 수 있다. 농구 슈팅(basketball shooting) 예에서와 같이, 연장된 지연과 관련된 것이 꼭 에러인 것은 아니며, 지연은, 더 스무스한 애니메이션 및 더 빠른 응답 시간 사이의 설계 선택(design choice)과 관련된 것일 수 있다.
또한, 상이한 비디오 게임에 대해, 사용자 인터페이스 장치와의 상호동작과 같은 명령의 발행(issuance of a command), 및 동작 또는 이벤트의 트리거(triggering) 사이에 상이한 허용 가능한 레벨(acceptable level)의 지연이 있을 수 있다. 어떤 경우에는 더 큰 크기의 시간을 가지는 것이 바람직할 수도 있다. 예를 들어, 중력에서의 증가와 같은 환경적 영향을 모방하거나, 사용자가 플레이 가능한 캐릭터에 대한 부상을 반영하거나, 또는 특정 분위기 또는 두려움을 주입(instill)하기 위해 지연이 도입될 수 있다 (예를 들어, 좀비와 같은 괴물이 사용자 플레이 가능한 캐릭터를 쫓는 경우의 시점(points)에 지연은 의도적으로 도입될 수 있다). 다른 예로서, 레이싱 게임에서 상이한 레벨의 가속을 반영하기 위해 상이한 차량들 사이에 지연이 도입될 수 있다. 특정 실시예에서, 일부 동작 또는 입력 시퀀스(input sequences)는 비디오 게임의 반응성에서 불일치감을 생성할 수 있는 다른 동작 또는 입력 시퀀스보다 빠르게 발생할 수 있다. 따라서, 입력 시퀀스의 반응성에서 이러한 불일치를 해결하기 위해, 특정 실시예에서 지연이 부가되어 복수의 입력 시퀀스에 걸쳐 지연 일관성(delay consistency)을 생성할 수 있다.
지연이 의도적인지 여부에 관계없이, 설계자(designers) 또는 테스터와 같은 사용자가 비디오 게임과의 상호동작 및 비디오 게임과의 상호동작에 의해 트리거되는 이벤트 사이의 지연을 결정할 수 있다는 것이 중요하다. 테스터는 종종 비디오 게임의 상이한 반복(iterations)을 플레이하여 비디오 게임과의 상호동작 및 비디오 게임과의 상호동작과 연관된 대응하는 이벤트 사이의 지연을 결정할 것이다. 그러나 이는 종종 충분하지 않다. 어떤 경우에는 비디오 게임의 반응성에 대한 사용자의 평가 또는 비디오 게임과의 사용자 상호동작 및 비디오 게임에서 대응하는 이벤트의 발생 사이의 지연은 주관적(subjective)이다. 예를 들어, 한 사용자는 비디오 게임의 반응성이 느리거나, 느린 것으로 느낄 수 있으며, 반면에 다른 사용자는 비디오 게임이 느리지 않다고 판단할 수 있다. 또 다른 예로서, 사용자는 어느 날에는 게임이 반응적이라고 판단할 수 있지만, 다른 날에는 비디오 게임과의 상호동작 및 대응하는 이벤트 사이의 객관적인 지연에서의 변화가 없더라도 느리다고 생각할 수 있다. 이러한 지연에 대한 주관적인 평가는 개발 동안에 비디오 게임을 테스트하는 데 있어서의 어려움을 더한다. 따라서, 지연에 대한 객관적인 측정을 가지는 것이 바람직하다.
종종 지연에 대해 주관적인 느낌(subjective sense)을 획득하는 것은 불충분하다. 대신, 지연에 대해 객관적인 측정을 가지는 것이 바람직하다. 지연에 대한 측정치를 획득하기 위한 하나의 해결책은, 고속 카메라를 사용하여, 다른 사용자 인터페이스 장치 또는 비디오 게임 제어기의 상태를 반영하기 위해 조명(lights)을 사용하는 제어기 상태 보드(controller status board)와 함께 테스트 중인 비디오 게임을 실행하는 사용자 컴퓨팅 시스템의 디스플레이에 디스플레이(displayed)된 프레임을 캡쳐하는 것이다. 사용자는 제어기 상태 보드가 제어기의 특정 상태를 표시할 때의 제1 프레임 및 특정 이벤트에 대응하는 제2 프레임 사이에 발생하는 프레임의 수를 카운트(count)할 수 있다. 이러한 솔루션은 번거롭고 어려울 수 있으며, 이상적이지 않다. 이러한 솔루션의 하나의 단점은 위치 지정 및 동작에 비용이 많이 들기도 하고 번거로울 수도 있는 많은 설정(large setup)이 필요하다는 것이다. 또한, 사용자가 지연을 인식하는 것보다 더 객관적임에도 불구하고, 사용자 상호동작이 제어기로 캡쳐되는 시간을 인식하고, 특정 이벤트가 디스플레이될 때까지 수동으로 프레임의 수를 카운팅하는 것은 사용자에 의존하기 때문에, 상기 솔루션은 완전히 객관적인 것은 아니다. 또한, 상기 이벤트는 애니메이션과 관련된 이벤트들 또는 디스플레이를 위한 컨텐츠 출력에 영향을 주는 이벤트들로 제한될 수 있다. 또한, 예를 들어 프레임 카운트를 시작할 때를 결정하고, 프레임 카운트를 수행하는 시간을 결정하기 위해 사용자에 의존하기 때문에, 측정은 상이한 테스트에 걸쳐 쉽게 반복될 수 없다. 또한, 비디오 게임이 개발 중에 변경될 때마다, (예를 들어, 테스터 또는 설계(designed)되는) 사용자는 수동으로 테스트를 수행하고 테스트를 반복해야 한다. 사용자가 테스트를 수행하면 테스트 에러 또는 측정에서의 비일관성(inconsistencies)이 발생할 수 있다. 또한, 측정은 디스플레이된 프레임을 보는 사용자에 의존하기 때문에, 지연 측정은 정확하지 않으며, 시스템 변동성 및 상이한 디스플레이의 가변적인 리프레시 레이트(variable refresh rates)를 고려하지 않는다.
동일한 테스트 머신 구성을 사용함으로써, 시스템 변동성 간의 불일치(discrepancies)가 감소될 수 있다. 그러나, 종종 비디오 게임은 상이한 사용자 컴퓨팅 머신 및/또는 상이한 비디오 게임 콘솔에 의한 플레이를 위해 설계되기 때문에, 동일한 테스트 머신 구성을 사용하는 것이 항상 가능한 것은 아니다. 예를 들어, 비디오 게임은 소니 플레이스테이션 머신(Sony® PlayStation® machine), 마이크로소프트 엑스박스 머신(Microsoft® Xbox® machine), 하나 이상의 휴대용 장치(예를 들어, 스마트 폰), 또는 개인용 컴퓨터 설정의 다양한 구성에서의 플레이를 위해 구성될 수 있다.
본 명세서에 개시된 실시예는, 비디오 게임을 호스팅(hosts)하거나 또는 실행하는 사용자 컴퓨팅 시스템에 대한 입력 및 상기 입력에 대응하거나 또는 상기 입력에 의해 트리거되는 이벤트의 발생 사이의 지연에 대한 객관적인 측정을 획득하기 위한 시스템 및 프로세스를 나타낸다. 시스템은 예를 들어 사용자 인터페이스 장치로부터 입력을 수신하도록 구성된 사용자 컴퓨팅 시스템의 입력 포트를 통해 사용자 컴퓨팅 시스템과 직접 통신하는 프론트 엔드 시스템을 포함할 수 있다. 따라서, 특정 실시예에서, 프론트 엔드 시스템은 비디오 게임 콘솔에 플러그(plugs)하는 제어기를 대체할 수 있거나 또는 컴퓨터에 플러그하는 키보드를 대체할 수 있다. 이러한 프론트 엔드 시스템은 사용자 컴퓨팅 시스템에 의해 실행되는 비디오 게임과 상호동작하기 위해 사용자 인터페이스 장치와 상호동작하는 사용자를 대체하도록 기능(function)할 수 있거나, 또는 에뮬레이트(emulate)할 수 있는 사용자 컴퓨팅 시스템에 하나 이상의 명령을 제공할 수 있다. 명령이 사용자 컴퓨팅 시스템에 제공되는 것과 실질적으로 동시에(예를 들어, 동시에 또는 50 나노초, 10 나노초, 5 나노초 또는 그 미만과 같은 임계 시간의 크기(threshold amount of time) 이하인 시간에), 상기 시스템은 명령에 대응하는 이벤트 또는 명령에 의해 트리거되는 이벤트가 발생할 때까지의 시간의 크기를 카운트하는 타이머를 트리거 할 수 있다.
상기 시스템은, 예를 들어 디스플레이에서 사용자에 대한 프리젠테이션을 위해 디스플레이에 출력을 제공하도록 구성된 사용자 컴퓨팅 시스템의 출력 포트를 통해, 사용자 컴퓨팅 시스템으로부터 출력을 획득하는 백 엔드 시스템을 더 포함할 수 있다. 특정 실시예에서, 출력은 사용자 컴퓨팅 시스템의 출력 포트에 의해 출력된 신호의 세트를 포함한다. 이러한 신호는 포트 연결을 통해 모니터와 같은 전자 장치로 전달되는 전기 신호일 수 있다. 백 엔드 시스템은 출력 포트로부터 신호를 획득하고, 신호를 디코딩하여 프레임 또는 이미지를 위한 픽셀을 획득할 수 있다. 또한, 백 엔드 시스템은 픽셀에 임베디드된 데이터를 식별하여, 입력에 대응하는 이벤트 또는 입력에 의해 트리거되는 이벤트의 발생을 결정할 수 있다. 이벤트 발생을 식별함에 따라, 백 엔드 시스템은, 입력과 이벤트 사이의 지연에 대한 객관적인 측정치를 결정하는 이벤트를 트리거한 입력이 경과된 시간을 결정할 수 있다.
설명을 단순화하기 위해, 본 발명은 주로 비디오 게임과 관련하여 설명된다. 그러나, 본 발명은 다른 유형의 애플리케이션에 적용될 수 있기 때문에 한정되지 않는다. 예를 들어, 본 명세서에 개시된 실시예들은 교육 애플리케이션(educational applications), 또는 사용자 입력 장치와의 상호동작 및 사용자 입력 장치와의 상호동작에 대응하거나 또는 다르게는 이에 의해 트리거되는 이벤트 사이의 지연을 측정하는 것이 바람직할 수 있는 다른 애플리케이션에 적용될 수 있다. 또한, 본 개시는 비디오 게임의 유형에 관해 한정되지 않는다. 본 명세서에서 "비디오 게임"이라는 용어의 사용은 웹 기반 게임(web-based games), 콘솔 게임(console games), 개인용 컴퓨터(PC) 게임, 컴퓨터 게임, 모바일 장치용 게임(예를 들어, 스마트폰, 휴대용 콘솔(portable consoles), 게임 머신(gaming machines) 또는 가상 현실 안경(virtual reality glasses), 증강 현실 안경(augmented reality glasses) 또는 스마트 시계(smart watches)와 같은 웨어러블 장치(wearable devices)), 또는 가상 현실 게임뿐만 아니라 다른 유형의 게임을 포함하지만 이에 한정되지 않는 모든 유형의 게임을 포함한다.
또한, 개발 중에 비디오 게임을 테스트하는 것에 관해 주로 설명되지만, 본원에 개시된 실시예는 지연의 측정이 바람직할 수 있는 다른 사용의 경우에도 사용될 수 있다. 예를 들어, 때때로 "이스포츠(esports)"라고 지칭되는, 비디오 게임됨과 관련된 경쟁 이벤트에서는, 플레이어에 의해 사용되는 시스템의 반응성을 동일하게 하거나, 또는 주어진 현재의 기술에서 가능한 한 동일한 것에 가깝도록 하는 것이 중요하다. 이렇게 하면, 각 플레이어의 각 컴퓨팅 시스템 및 디스플레이 시스템은 일반적으로 동일하게 구성될 것이다. 그러나, 구성에 있어서의 에러는 때때로 비디오 게임의 실행에서의 비일관성으로 이어질 수 있다. 또한, 주변 환경에서의 차이는 호스트 컴퓨팅 시스템(host computing systems)의 동작에 영향을 줄 수 있다. 예를 들어, 에어컨 통풍구(air conditioning vent) 아래에 배치된 다른 컴퓨팅 시스템보다 창문에 가깝게 배치된 컴퓨팅 시스템은 더 뜨겁고, 결과적으로 더 느리게 동작(run)할 수 있다. 이러한 경쟁 중에 때때로 많은 돈(예를 들어, 상금, 광고비, 후원, 방송 방영권 등)이 소비될 수 있기 때문에, 경쟁자들에 의해 사용되는 시스템들 간의 균형(balance)은 매우 중요하다. 예를 들어, 컴퓨팅 시스템의 온도에서의 차이로 인한 시스템의 동작 속도에서의 작은 차이일지라도 경쟁의 공정성과 합법성 인정의 측면에서 영향을 미칠 수 있다. 따라서, 이해당사자(예를 들어, 플레이어, 관중, 스폰서 등)가 경쟁의 공정성에 확신을 가지는 것이 중요하다. 특정 실시예에서, 본 명세서에 개시된 시스템은, 비디오 게임의 인스턴스(instance)를 호스팅(hosting)하는 각각의 컴퓨팅 시스템을 테스트하여, 서로 다른 경쟁자들의 사용자 컴퓨팅 시스템들 사이에 명령 실행 지연의 차이가 없고, 각 컴퓨팅 시스템이 동일하게 동작(running)하고 있는지를 확인하는 데 사용될 수 있다.
예시적인 비디오 게임 테스트 환경
도 1은 특정 실시예에 따른 비디오 게임 테스트 환경(100)을 도시한다. 비디오 게임 테스트 환경(100)은 비디오 게임(112)과 같은 비디오 게임, 또는 비디오 게임(112)을 호스팅하는 사용자 컴퓨팅 시스템(110)과 같은 시스템을 테스트하기 위한 환경을 포함할 수 있다. 예를 들어, 비디오 게임 테스트 환경(100)은 발행되거나 또는 수신된 명령들 사이의 지연의 객관적인 측정치, 및 명령의 실행, 또는 명령에 직간접적으로 대응하거나 또는 명령에 의해 트리거될 수 있는 이벤트의 발생을 결정하기 위해 개발중인 비디오 게임(112)을 테스트하도록 구성될 수 있다. 예를 들어, 비디오 게임 테스트 환경(100)은 플레이어, 개발자 또는 테스터와 같은 사용자가 사용자 인터페이스 장치(예를 들어, 비디오 게임 콘솔 제어기, 키보드 또는 터치 스크린 인터페이스)에서의 버튼을 누르거나 상기 버튼과 상호동작하는 시간과, 비디오 게임(112)이 상기 버튼과의 상호동작에 대응하는 동작을 수행하는 시간 사이의 시간 또는 지연에 대한 측정치를 결정하는데 사용될 수 있다. 그러나, 비디오 게임 테스트 환경(100)은 버튼 상호동작 또는 하나 이상의 버튼 누름과 비디오 게임(112)의 특정 상태의 조합에 의해 트리거되는 이벤트에 대한 지연을 또한 테스트할 수 있다. 일부 실시예에서, 비디오 게임 테스트 환경(100)은 비디오 게임(112)의 여러가지 상태(multiple states) 간의 지연에 대한 테스트를 하도록 할 수 있다. 비디오 게임(112)의 이러한 여러가지 상태는 비디오 게임과의 사용자 상호동작에 의해 트리거되거나 또는 트리거되지 않을 수 있다. 예를 들어, 일부 경우에서 비디오 게임(112)의 상태에서의 변화는 시간의 경과(passage of time), 비디오 게임(112) 자체 내의 코드의 실행, 또는 (사용자가 비디오 게임(112) 내에서 획득된 아이템을 경매(auction)할 수 있게 하는 경매 애플리케이션과 같이 비디오 게임(112)의 상태에서의 변화를 야기할 수 있는) 비디오 게임(112) 이외의 애플리케이션의 실행과 관련될 수 있다.
또한, 전술한 바와 같이, 일부 경우에 비디오 게임 테스트 환경(100)은 사용자 컴퓨팅 시스템(110) 자체를 테스트하는데 사용될 수 있다. 예를 들어, 비디오 게임 테스트 환경은 다중 사용자 컴퓨팅 시스템(multiple user computing systems)(110)에서 비디오 게임(112)의 실행이 동일한 지연을 야기하는지 여부를 결정하는데 사용될 수 있다. 전술한 바와 같이, 비디오 게임(112)과 동일한 상호동작이 다중 사용자 컴퓨팅 시스템(110)에서 발생하는 경우, 지연이 같다는 것을 보장하는 것은 경쟁 환경(예를 들어, 이스포츠)에서 중요할 수 있다.
비디오 게임 테스트 환경(100)은 비디오 게임(112) 및/또는 비디오 게임(112)의 적어도 일부를 호스팅 또는 실행하는 사용자 컴퓨팅 시스템(110)을 테스트하도록 구성된 비디오 게임 테스트 시스템(102)을 포함한다. 도 1에 도시된 바와 같이, 비디오 게임 테스트 시스템(102)은 다중 서브 시스템(multiple sub-systems)으로 나뉘어질 수 있다. 예를 들어, 비디오 게임 테스트 시스템(102)은 프론트 엔드 테스트 시스템(front-end test system)(104) 및 백 엔드 테스트 시스템(back-end test system)(106)으로 나뉘어질 수 있다. 프론트 엔드 테스트 시스템(104) 및 백 엔드 테스트 시스템(106)은 따로 하우징(housed)된 별개의 시스템으로 구현될 수 있다. 대안적으로, 프론트 엔드 테스트 시스템(104) 및 백 엔드 테스트 시스템(106)은 단일 하우징 내에 포함된 단일 시스템일 수 있다. 비디오 게임 테스트 시스템(102)이 단일 시스템 또는 개별 시스템으로서 구현되는지 여부에 관계없이, 2 개의 서브 시스템은 개념적으로 하나의 시스템 또는 복수의 별개의 시스템(multiple distinct systems)으로 간주될 수 있다.
또한, 아래에서 보다 상세히 기술되는, 비디오 게임 테스트 시스템(102)은 상이한 다중 하드웨어 프로세서(multiple different hardware processors)를 사용하여 구현될 수 있다. 적어도 일부의 하드웨어 프로세서는 서로 다른 유형일 수 있다. 또한, 하드웨어 프로세서들 중 적어도 일부는 본원에 설명된 프로세스들과 연관된 특정 함수(functions)를 수행하도록 구성된 상이한 특정 용도의 하드웨어로 구현될 수 있다. 다른 실시예에서, 비디오 게임 테스트 시스템(102)의 기능(functionality)은 본원에 설명된 특정 프로세스를 수행하도록 구성된 단일 하드웨어 프로세서에 의해 구현될 수 있다. 특정 실시예에서, 단일 하드웨어 프로세서는 본원에 설명된 프로세스를 수행하기 위한 하나 이상의 명령을 실행할 수 있는 범용 프로세서일 수 있다.
프론트 엔드 테스트 시스템(104)은 사용자 인터페이스 회로(108) 및 명령 시퀀스 저장소(114)를 포함할 수 있다. 사용자 인터페이스 회로(108)는 사용자 컴퓨팅 시스템(110)의 사용자 인터페이스 장치를 대체하도록 제공하거나 시뮬레이션할 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)이 플레이스테이션(PlayStation®) 또는 엑스박스(Xbox®)와 같은 콘솔인 경우, 사용자 인터페이스 회로(108)는 콘솔을 위한 제어기를 시뮬레이션할 수 있다. 대안으로, 사용자 인터페이스 회로(108)는 키보드, 마우스, 터치 스크린 입력 장치, 또는 사용 컴퓨팅 시스템(110)에 의해 호스팅되는 비디오 게임과 상호동작하는데 사용될 수 있는 임의의 다른 입력 장치를 시뮬레이션할 수 있다. 사용자 인터페이스 회로(108)는 사용자 인터페이스 장치와 상호동작하는 사용자에 대응하는 명령을 획득하고, 사용자 컴퓨팅 시스템(110)에 상기 명령을 제공할 수 있다. 이러한 명령은 사용자 인터페이스 장치(예를 들어, 엑스박스 제어기(Xbox® controller))가 사용자 컴퓨팅 시스템(110)에 전달하는 것과 동일하거나 유사하게 포맷(formatted)될 수 있다. 일부 실시예에서, 명령은 명령 대신에 또는 명령에 추가하여 사용자 인터페이스 장치의 버튼 또는 인터페이스 엘리먼트(interface elements)의 상태일 수 있다. 예를 들어, 사용자 인터페이스 회로(108)는 사용자 컴퓨팅 시스템(110)에 의해 시뮬레이션되는 사용자 인터페이스 장치의 하나 이상의 사용자 인터페이스 엘리먼트의 상태를 포함하는 데이터 구조를 전달할 수 있다.
특정 실시예에서, 사용자 인터페이스 회로(108)는 명령의 시퀀스를 획득할 수 있고, 상기 명령의 시퀀스를 사용자 컴퓨팅 장치(110)에 제공할 수 있다. 명령의 시퀀스는 사용자 인터페이스 장치와의 일련의 상호동작에 대한 사용자의 퍼포먼스(performance)를 시뮬레이션하는 시리즈로 제공될 수 있다. 대안적으로, 게임패드 또는 제어기상의 동작 버튼을 동시에 누르는 동안 방향 버튼 또는 아날로그 스틱을 누르는 것과 같은 사용자 인터페이스 장치와의 상호동작의 조합을 수행하는 사용자의 능력을 시뮬레이션하도록 병렬적으로 명령의 시퀀스가 제공될 수 있다. 또 다른 실시예에서, 다른 명령이 순차적으로 제공되는 동안 명령의 시퀀스 중 적어도 일부는 병렬적으로 제공될 수 있다. 사용자 인터페이스 회로(108)가 사용자 컴퓨팅 장치(110)에 제공하는 명령은, 사용자가 사용자 인터페이스 장치와 상호동작하고 있어서 동일한 상호동작을 수행한다면, 사용자 인터페이스 장치는 사용자 컴퓨팅 장치(110)에 제공할 수도 있는 명령과 동일할 수 있다.
명령 또는 명령 시퀀스는 테스트 서버(124)에 의해 프론트 엔드 테스트 시스템(104)에 제공될 수 있다. 비디오 게임(112)의 설계자 또는 테스터와 같은 사용자는 테스트 서버(124)를 사용하는 비디오 게임(112)을 테스트하기 위해 명령의 시퀀스를 생성할 수 있다. 테스트 서버(124)는 명령 시퀀스 저장소(114)에 명령을 저장할 수 있는 프론트 엔드 테스트 시스템(104)에 명령의 시퀀스를 제공할 수 있다. 명령 시퀀스 저장소(114)는 복수의 명령의 시퀀스를 저장할 수 있다. 명령의 시퀀스의 각각은 개별 라벨(label) 또는 식별자와 연관될 수 있다. 특정 명령의 시퀀스는 특정 바람직한 테스트의 선택 또는 식별에 기초하여 프론트 엔드 테스트 시스템(104) 또는 사용자 인터페이스 회로(108)에 의해 선택될 수 있다.
지연 테스트의 실행 중에, 사용자 인터페이스 회로(108)는 명령 시퀀스 저장소(114)로부터 테스트 동안 사용된 명령 또는 명령 시퀀스를 획득할 수 있다. 바람직하게는, 특정 실시 예에서 프론트 엔드 테스트 시스템(104)의 일부로서 포함된 명령 시퀀스 저장소(114)로부터 명령을 획득함으로써, 테스트 서버(124)와 통신함으로써 발생할 수 있는 지연이 제거될 수 있다. 또한, 프론트 엔드 테스트 시스템(104)은 테스트 서버(124)가 테스트의 수행 중에 나타날 필요를 제거하는, 테스트 명령 시퀀스를 이용하여 미리 로드(pre-loaded)될 수 있다. 따라서, 비디오 게임 테스트 시스템(102)은 프로세스를 테스트하는 수행 중에 테스트 서버(124)로부터 명령을 수신하는 시스템에 비해 휴대성이 증가될 수 있다.
또한, 명령 시퀀스 저장소(114)에 명령 시퀀스를 저장하는 것은, 특정 테스트가 비디오 게임(112)에서 여러 번 반복되거나 또는 비디오 게임(112)의 복수의 반복 또는 버전에서 여러 번 반복될 수 있게 한다. 예를 들어, 개발 중 비디오 게임(112)에 변화가 있을 때마다, 또는 비디오 게임(112)에 대한 업데이트 또는 확장이 개발일 때, 테스트는 명령 시퀀스 저장소(114)에 저장된, 저장된 테스트 시퀀스를 사용하여 보다 쉽게 반복될 수 있다. 또한, 명령 시퀀스 저장소(114)에서 명령을 저장함으로써, 테스트는, 사용자가 비디오 게임(112)과 상호동작하고 고속 카메라에 의해 캡쳐된 프레임을 카운트하는 방법에 의하여 지연을 측정하여야 하는 시스템과 비교하여, 사용자 개입(user involvement)이 없거나 줄어들거나 또는 자동화된 프로세스를 사용하여 수행될 수 있다. 백 엔드 테스트 시스템(106)은 사용자 컴퓨팅 시스템(110)으로부터 출력을 캡쳐할 수 있다. 이러한 출력은 사용자 컴퓨팅 시스템으로부터 디스플레이 시스템(122)으로 출력되는 신호일 수 있다. 특정 실시 예에서, 백 엔드 테스트 시스템(106)은 디스플레이 시스템(122)을 대체할 수 있다. 다른 실시예에서, 스플리터(splitter) 또는 다른 전자 기기(electronics)(미도시)가 디스플레이 시스템(122)에 제공되는 출력 신호에 대한 복사본(copy)을 백 엔드 테스트 시스템(106)에 제공하기 위해 사용될 수 있다. 신호를 분할(splitting)함으로써, 백 엔드 테스트 시스템(106)이 발행된 명령 및 비디오 게임(112)에서 발생하는 대응하는 트리거된 이벤트 사이의 지연을 측정하는 동안, 사용자는 디스플레이 시스템(122)에서 출력을 관측할(observe) 수 있다. 고속 카메라를 사용하여 비디오 게임(112) 내 지연을 측정하는 이전 시도와는 달리, 본원에 개시된 특정 실시예를 사용하여 지연을 측정하기 위해 비디오 게임(112)의 출력이 디스플레이 시스템 상에 디스플레이될 필요가 없다는 것이 이해될 것이다.
백 엔드 시스템(106)은 디코더(116), 제어기(118), 및 타이머 시스템(timer system)(120)을 포함할 수 있다. 백 엔드 시스템(106)의 디코더(116)는, 디스플레이 포트와 같은 출력 포트를 통해 사용자 컴퓨팅 시스템(110)에 연결(connect)될 수 있다. 예를 들어, 디코더(116)는 디스플레이포트(DisplayPort), 디지털 비주얼 인터페이스 포트(Digital Visual Interface(DVI) port), 또는 고화질 멀티미디어 인터페이스(High-Definition Multimedia Interface(HDMI) port)에 연결될 수 있다. 일반적으로, 디코더(116)는 유선 연결을 통해 사용자 컴퓨팅 시스템(110)의 출력 포트에 연결된다. 유선 연결을 통해 연결함으로써, 예를 들어 무선 연결에서의 간섭으로 인해 도입될 수 있는 지연이 회피될 수 있다. 그러나, 특정 실시예에서, 디코더(116)는 무선 연결을 사용하여 사용자 컴퓨팅 시스템(110)에 연결될 수 있다.
디코더(116)는, 사용자 컴퓨팅 시스템(110)의 출력 포트를 통해, 사용자 컴퓨팅 시스템(110)으로부터의 신호를 획득할 수 있고, 상기 신호를 픽셀로 변환할 수 있는 임의의 회로 또는 시스템을 포함할 수 있다. 예를 들어, 디코더(116)는 HDMI 신호를 비디오 게임(112)에 의해 생성된 애니메이션의 프레임을 나타내는 픽셀의 세트로 변환하도록 구성될 수 있다. 이러한 프레임은 디스플레이 시스템(122)에 의해 제공되는 디스플레이와 같이 비디오 게임(112)의 개발자가 디스플레이 상에 디스플레이되도록 의도한 애니메이션의 일부일 수 있다.
디코더(116)는 픽셀을 제어기(118)에 제공할 수 있다. 특정 실시예에서, 디코더(116)는 한 번에 하나의 프레임을 제어기(118)에 제공한다. 다른 실시예에서, 제어기(118)가 출력 신호를 픽셀로 변환함에 따라, 디코더(116)가 픽셀을 제어기(118)에 제공한다. 따라서, 일부 경우에서, 제어기(118)는 프레임의 일부를 수신할 수 있으며, 반면에 디코더(116)는 수신된 신호를 프레임에 포함된 추가 픽셀로 계속해서 변환한다.
제어기(118)는 임베이드 데이터(embedded data)를 저장할 수 있는 픽셀의 서브세트를 식별하기 위해 디코더(116)로부터 수신된 픽셀을 처리할 수 있는 임의의 시스템 또는 회로를 포함할 수 있다. 일부 경우에, 프레임을 나타내는 전체 픽셀의 세트가 본 명세서에 개시된 실시예로 사용될 수 있다. 그러나, 전형적으로 비디오 게임(112)에 의해 생성된 애니메이션에 대한 이미지 또는 프레임을 묘사하기 위해 나머지 픽셀이 지정되기 때문에, 픽셀의 서브세트만 사용된다.
픽셀의 서브세트를 식별하기 위해 픽셀을 처리하는 것은 픽셀의 서브세트를 획득하기 위해 수신된 픽셀을 필터링하는 것을 포함할 수 있다. 픽셀을 필터링하는 것은 디코더(116)에 의해 생성된 픽셀의 세트에 포함된 특정 픽셀을 식별하는 것을 포함할 수 있다. 이러한 픽셀의 서브세트는 첫 번째 "n" 개의 픽셀(the first "n" pixels)일 수 있다. 여기서, "n"은 어떤 숫자(some number)이다. 예를 들어, 픽셀의 서브세트는, 첫 번째 1024개의 픽셀, 첫 번째 2048개의 픽셀, 또는 이미지의 프레임을 형성하는 전체 픽셀의 수보다 작은 어떤 개수의 픽셀일 수 있다. 상기 픽셀은 특정 순서로 수신될 수 있다. 예를 들어, 픽셀은 프레임의 좌측 상부 코너로부터 시작하고 영어 책에서 단어가 쓰여지는 순서와 유사하게 좌측에서 우측으로, 상부에서 하부로 진행하여 수신될 수 있다. 따라서, 앞의 예에서 첫 번째 1024 개의 픽셀은 프레임의 좌측 상부로부터 시작하는 1024 개의 픽셀을 포함할 수 있고, 이미지에서 제1 라인의 우측을 향하여 1024개의 픽셀로 확장할 수 있다. 대안적으로, 특정 실시예에서, 픽셀의 서브세트는 픽셀 정보를 저장하는 첫 번째 "n" 비트 또는 바이트(the first "n" bits or bytes)의 데이터일 수 있다. 따라서, 예를 들어 픽셀의 서브세트는 디코더(116)로부터 획득된 첫 번째 1024 또는 2048 바이트로 저장된 픽셀의 세트일 수 있으며, 이는 24 비트 또는 3 바이트 RGB 이미지를 가정하면, 341 픽셀 또는 682 픽셀에 대응할 수 있다. 각 픽셀을 나타내기 위해 다른 비트 또는 바이트의 크기가 사용될 수 있으며, 이로 인해 임베디드 데이터를 저장하는 1024 바이트, 2048 바이트, 또는 다른 수의 바이트 당 다른 크기의 픽셀이 결과된다는 것을 알 수 있다.
식별된 픽셀의 서브세트는, 명령의 발행(issuance of command) 및 대응하는 이벤트의 발생(occurrence of corresponding events) 사이의 지연을 테스트하거나 또는 측정하는 프로세스와 같이, 테스트 프로세스의 일부로서 사용되는 정보를 임베드(embed)하기 위해 구성된 픽셀을 포함할 수 있다. 이러한 임베디드 정보(embedded information)는 특정 이벤트가 비디오 게임(112)에서 언제 발생했는지를 식별할 수 있다. 상기 정보는 픽셀의 서브세트에 대해 설정된 값에 기초하여 프레임에 임베디드될 수 있다. 예를 들어, 픽셀의 서브세트는, 특정 이벤트가 비디오 게임(112) 내에서 발생했다는 것을 나타내기 위해 특정 컬러 또는 이미지를 묘사하도록 구성될 수 있다. 다른 예로서, 픽셀의 서브세트는 비디오 게임(112) 내 이벤트의 발생을 나타내도록 특정 불투명도를 가지도록 구성될 수 있다. 상기 이벤트는 특정 애니메이션 또는 애니메이션 내 특정 프레임의 발생과 관련될 수 있다. 그러나, 이벤트의 발생을 식별하는 임베디드된 정보가 이미지 또는 애니메이션 프레임에 임베디드되어 있음에도 불구하고, 상기 이벤트는 비디오 게임(112)의 실행 동안 발생하는 비 애니메이션 기반 이벤트(non-animation based events)를 포함할 수 있다. 예를 들어, 상기 이벤트는 특정 사운드에 대한 플레이, 특정 상태 변수에 대한 설정, 또는 비디오 게임(112)에 대한 실행과 관련된 임의의 다른 이벤트의 발생과 관련될 수 있다.
타이머 시스템(120)은 식별된 픽셀의 서브세트가 임베디드 데이터를 포함하는지 및/또는 상기 임베디드 데이터가 특정 정보를 포함하는지 결정할 수 있으며, 상기 결정에 기초하여 프론트 엔드 테스트 시스템(104)으로 시작된 타이머를 스톱시킬 수 있다. 상기 특정 정보는 비디오 게임(112)에 의해 출력될 프레임 또는 이미지의 하나 이상의 픽셀로 삽입될 수 있는 임의의 정보를 포함할 수 있다. 예를 들어, 상기 정보는 타이머 시스템(120)이 타이머를 스톱시키는 것을 나타내는 스톱 명령 또는 태그를 포함할 수 있다. 상기 정보는 비디오 게임(112)을 프로그래밍하는데 사용되는 애플리케이션 프로그래밍 인터페이스(API: Application Programming Interface) 또는 소프트웨어 개발 키트(SDK: Software Development Kit)로부터 함수 또는 방법을 호출, 실행 또는 다르게는 인스턴스화(instantiating)함으로써 프레임 또는 이미지의 하나 이상의 픽셀로 삽입될 수 있다. 타이머 시스템(120)은 프론트 엔드 테스트 시스템(104)으로부터 수신된 트리거에 응답하여 하나 이상의 타이머를 시작할 수 있다. 프론트 엔드 테스트 시스템(104)은, 명령 시퀀스 저장소(114)로부터 사용자 컴퓨팅 시스템(110)으로 명령을 제공할 때, 타이머를 트리거할 수 있다. 타이머 시스템(120)이 프레임의 픽셀 내 임베디드된 특정 태그 또는 데이터의 일부를 식별할 때, 타이머 시스템(120)은 타이머를 스톱시킬 수 있다. 타이머 시스템(120)은 테스트 서버(124)에 경과된 시간에 대한 측정치를 제공할 수 있으며, 사용자에게 경과 시간에 대한 측정치를 제시(present)할 수 있다.
이러한 경과된 시간의 측정치는 명령이 사용자 인터페이스 회로에 의해 사용자 컴퓨팅 시스템(110)에 제공될 때와 대응하는 이벤트가 비디오 게임(112)에서 발생할 때 사이의 지연에 대응할 수 있다. 일부 실시예에서, 명령에 대응하는 이벤트가 발생될 때까지 카운터가 초기화되었기 때문에, 타이머는 비디오 게임(112) 내에서 발생한 복수의 이벤트의 발생을 카운트하는 카운터(counter)일 수 있다. 대안적으로 또는 부가적으로, 카운터는 대응하는 이벤트가 비디오 게임(112)에서 발생할 때까지 사용자 컴퓨팅 시스템(110)에 의해 출력된 프레임의 수를 측정할 수 있다. 따라서, 일부 실시예에서, 명령 지연은 시간에 대한 측정치, 발생된 이벤트에 대한 측정치, 프레임 출력에 대한 측정치, 또는 테스트중인 비디오 게임의 실행 및/또는 테스트중인 비디오 게임(112)을 호스팅하는 사용자 컴퓨팅 시스템(110)에 제공되는 명령과 관련하여 측정될 수 있는 임의의 다른 메트릭(metric)일 수 있다.
일부 실시예에서, 타이머 시스템(120)은 비디오 게임 테스트 시스템(102) 내의 측정된 지연을 설명하기 위해 측정된 시간을 변경하거나 조절할 수 있다. 예를 들어, 일부 경우에서, 제어기(118)에 제공되고 있는 디코딩된 픽셀 및 타이머 시스템(120)에 전달되고 있는 픽셀의 처리되거나 또는 필터링된 서브세트 사이에서 적지 않은(non-infinitesimal) 크기의 시간이 발생한다. 예를 들어, 하나의 프로토타입에서 제어기(118) 및 타이머 시스템(120) 사이의 통신 시간은 3.8 밀리초로 일관되게 결정된다. 따라서, 타이머 시스템(120)은 비디오 게임 테스트 시스템(102)에 의해 도입된 지연을 설명하기 위해 3.8 밀리초만큼 측정된 시간을 조절하도록 구성될 수 있다. 특정 실시예에서, 사용자 컴퓨팅 시스템(110) 또는 특정 게임 엔진은 비디오 게임(112)을 생성하는데 사용된다. 일부 경우에, 타이머 시스템(120)은 추가적인 지연에 의해 측정된 경과된 시간을 변경할 수 있다.
사용자 인터페이스 회로(108)는 주문형 집적 회로(ASIC: application specific integrated circuit), 필드 프로그램 가능 게이트 어레이(FPGA: field programmable gate array), 마이크로컨트롤러(예를 들어, 프론트 엔드 테스트 시스템(104)의 프로토타입에 사용되는 (ARM®으로부터의 코르텍스 엠4(Cortex® M4)), 또는 임의의 다른 유형의 특수 목적 컴퓨팅 시스템 또는 집적 회로일 수 있다. 또한, 사용자 인터페이스 회로(108)는 사용자 컴퓨팅 시스템(110)의 포트와 인터페이스(interface)할 수 있다. 이러한 포트는 범용 직렬 버스(USB: Universal Serial Bus) 포트와 같은 상용 포트(proprietary port) 또는 표준화된 포트(standardized port)일 수 있다. 특수 목적 회로(special purpose circuit)의 사용은 프론트 엔드 테스트 시스템(104)이 소형화(miniaturized)될 수 있게 한다. 예를 들어, 프론트 엔드 테스트 시스템은 프론트 엔드 테스트 시스템(104)에 의해 시뮬레이션되고 있는 사용자 인터페이스 장치만큼 작거나 상기 사용자 인터페이스 장치보다 작을 수도 있다. 대안적으로, 특정 실시예에서 사용자 인터페이스 회로(108)는 범용 컴퓨터일 수 있다. 또한, 명령 시퀀스 저장소(114)는 ROM, RAM, SRAM, 플래시 메모리 또는 자기 하드 디스크 드라이브와 같은 임의의 유형의 휘발성 또는 비 휘발성 메모리로 구현될 수 있다. 특정 실시예에서, 명령 시퀀스 저장소는 사용자 인터페이스 회로(108)의 메모리로 구현될 수 있다. 따라서, 특정 실시예에서 사용자 인터페이스 회로(108) 및 명령 시퀀스 저장소(114)는 결합될 수 있다.
디코더(116)는 ASIC, FPGA, 마이크로컨트롤러, 또는 임의의 다른 유형의 특수 목적 컴퓨팅 시스템 또는 집적 회로를 사용하여 구현될 수 있다. 예를 들어, 디코더(116)는 HDMI 신호를 픽셀로 변환하도록 특별히 설계된 디지털 신호 프로세서일 수 있다. 백 엔드 테스트 시스템(106)의 프로토타입 구현에서, 아날로그 디바이스사(Analog Devices®)의 ADV 7611 ASIC를 포함하는 맞춤식 내장(custom built) HDMI 디코더 보드가 구현되는 디코더(116)에 사용되었다. 그러나, 디코더(116)는 이에 제한되지 않고, 어떠한 특수 목적 시스템 또는 집적 회로도 사용자 컴퓨팅 시스템(110)의 출력을 픽셀로 디코딩하는데 사용될 수 있다.
제어기(118)는 ASIC, FPGA, 마이크로컨트롤러, 또는 임의의 다른 유형의 특수 목적 컴퓨팅 시스템 또는 집적 회로를 사용하여 구현될 수 있다. 또한, 제어기(118)는 사용자 컴퓨팅 시스템(110)의 출력 신호가 변환되거나 디코딩될 때 디코더(116)로부터 픽셀을 수신할 수 있다. 다시 말해, 특정 실시예에서 픽셀은 제어기(118)로 특정 순서로(예를 들어, 이미지에 대하여 좌측 상부에서 우측 하부로) 스트리밍될 수 있다. 픽셀이 생성될 때 이 픽셀을 제어기(118)로 스트리밍함으로써, 제어기(118)는 픽셀의 서브세트를 보다 쉽게 식별하여 타이머 시스템(120)에 제공할 수 있다.
타이머 시스템(120)은 ASIC, FPGA, 마이크로컨트롤러, 또는 임의의 다른 유형의 특수 목적 컴퓨팅 시스템 또는 집적 회로를 사용하여 구현될 수 있다. 또한, 타이머 시스템(120)은 제어기(118)로부터 픽셀의 서브세트를 수신할 수 있다. 타이머 시스템(120)은 픽셀의 서브세트로부터 데이터를 추출하여 스톱 조건 또는 다른 데이터가 픽셀 서브세트에 임베디드되었는지 결정할 수 있다. 일부 경우에, 픽셀의 서브세트로부터 데이터를 추출하는 것은 특정 데이터 또는 조건과 연관된 타이머 시스템(120)에 저장된 픽셀 값의 라이브러리와 픽셀 값을 비교하는 것을 포함할 수 있다. 예를 들어, 타이머 시스템(120)은 이벤트가 비디오 게임(112)에서 발생했음을 나타내는 값 또는 값의 세트와 픽셀의 서브세트의 픽셀 값을 비교할 수 있다. 이러한 값 또는 값의 세트는 타이머 시스템(120)의 메모리에 저장될 수 있다.
프론트 엔드 테스트 시스템(104)은 사용자 컴퓨팅 시스템(110), 테스트 서버(124), 및 백 엔드 테스트 시스템(106) 사이에서 인터페이스하거나 통신할 수 있다. 프론트 엔드 테스트 시스템(104)은 직접 연결 또는 네트워크(미도시)를 통해 테스트 서버(124)와 통신할 수 있다. 통상적으로, 프론트 엔드 테스트 시스템(104)은 물리적인 와이어와 같은 직접 연결을 통해 사용자 컴퓨팅 시스템(110) 및 백 엔드 테스트 시스템(106)과 통신할 것이다. 프론트 엔드 테스트 시스템(104), 백 엔드 테스트 시스템(106), 및 사용자 컴퓨팅 시스템(110) 각각 사이에서 직접 연결을 하여 통신 지연을 감소시키거나 제거하는 것은 바람직하다. 이러한 통신 지연은 사용자 입력 장치와의 상호동작과 비디오 게임(112)에서의 대응하는 이벤트의 발생 사이의 지연에 대한 측정에서 에러를 부가할 수 있다. 일반적으로 프론트 엔드 테스트 시스템(104), 백 엔드 테스트 시스템(106), 및 사용자 컴퓨팅 시스템(110) 사이의 연결이 직접 또는 유선 연결인 것이 바람직함에도 불구하고, 연결 중 적어도 하나가 무선 연결인 것이 가능하고 때때로 바람직하다. 예를 들어, 무선 제어기를 사용할 때 비디오 게임(112)이 바람직한 반응성을 가지는지 결정하기 위하여, 무선 제어기의 사용에 의해 도입된 지연의 크기(amount of latency)를 테스트하는 것이 바람직할 수 있다. 일부 이러한 경우에서, 프론트 엔드 테스트 시스템(104)은 사용자 입력 장치와의 상호동작 및 비디오 게임(112)에서의 대응하는 이벤트의 발생 사이의 지연에 대한 테스트 측정치를 획득하기 위해 사용자 컴퓨팅 시스템(110)과 무선으로 통신하도록 구성될 수 있다.
사용자 컴퓨팅 시스템(110)은 비디오 게임(112)을 포함하거나 호스팅할 수 있다. 일부 경우에서, 비디오 게임(112)은 사용자 컴퓨팅 시스템(110) 상에서 완전히 실행될 수 있다. 다른 경우에서, 비디오 게임(112)은 사용자 컴퓨팅 시스템(110)에서 적어도 부분적으로, 그리고 서버와 같은 다른 컴퓨팅 시스템에서 적어도 부분적으로 실행할 수 있다. 일부 경우에서, 비디오 게임(112)은 서버 상에서 전체적으로 실행할 수 있지만, 사용자는 사용자 컴퓨팅 시스템(110)을 통해 비디오 게임(112)과 상호동작할 수 있다. 예를 들어, 게임은 사용자 컴퓨팅 시스템(110)에 의해 실행되는 클라이언트 부분, 및 인터랙티브 컴퓨팅 시스템의 일부로서 포함될 수 있는 하나 이상의 애플리케이션 호스트 시스템(application host systems)에 의해 실행되는 서버 부분을 포함하는 대규모 다중 플레이어 온라인 롤 플레이 게임(MMORPG: massively multiplayer online role-playing game)일 수 있다. 또 다른 예로서, 비디오 게임(112)은 다른 시스템과 상호동작하지 않고 사용자 컴퓨팅 시스템(110)에서 플레이되는 어드벤처 게임(adventure game)일 수 있다.
사용자 컴퓨팅 시스템(110)은 통신 네트워크(미도시)를 통한 통신을 설정(establishing)하기 위한 하드웨어 및 소프트웨어 구성 요소를 포함할 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)은 네트워크(예를 들어, 인터넷) 또는 인터넷을 통해 통신을 용이하게 하는 네트워크 소프트웨어 애플리케이션(network software applications)(예를 들어, 웹 브라우저(web browser)) 및 네트워킹 장비(networking equipment)를 갖출 수 있다. 사용자 컴퓨팅 시스템(110)은 중앙 프로세싱 유닛(central processing unit) 및 아키텍처(architectures), 메모리(memory), 대용량 스토리지(mass storage), 그래픽 처리 장치(graphics processing units), 통신 네트워크 가용성 및 대역폭(communication network availability and bandwidth) 등과 같은 다양한 로컬 컴퓨팅 리소스(varied local computing resources)를 가질 수 있다. 또한, 사용자 컴퓨팅 시스템(110)은 임의의 유형의 컴퓨팅 시스템을 포함할 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)은 몇 가지만 말하자면 데스크탑, 랩탑, 비디오 게임 플랫폼(video game platforms) 또는 플레이스테이션(PlayStation®), 엑스박스(Xbox®), 또는 닌텐도 스위치(Nintendo Switch??)와 같은 콘솔(consoles), 텔레비전 셋톱 박스(television set-top boxes), 텔레비전(예를 들어, 인터넷 TV), 네트워크 가능 키오스크(network-enabled kiosks), 자동차 콘솔 장치(car-console devices), 컴퓨터화된 가전제품(computerized appliances), 웨어러블 장치(예를 들어, 스마트 시계 및 컴퓨팅 기능이 있는 안경) 및 무선 모바일 장치(예를 들어, 스마트 폰, PDA, 태블릿 등) 등과 같은 임의의 유형의 컴퓨팅 장치를 포함할 수 있다. 일부 실시예에서, 사용자 컴퓨팅 시스템(110)은 도 6 및 도 7과 관련하여 이하에서 설명되는 실시예들 중 하나 이상을 포함할 수 있다.
디스플레이 시스템(122)은 사용자 컴퓨팅 시스템(110)의 출력을 디스플레이하기 위한 임의의 시스템을 포함할 수 있다. 일부 실시예에서, 디스플레이 시스템(122)은 사용자 컴퓨팅 시스템(110)의 일부일 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)이 휴대용 게임 시스템일 경우, 디스플레이 시스템(122)은 사용자 컴퓨팅 시스템(110)으로 내장될 수 있다. 다른 실시예에서 디스플레이 시스템(122)은 사용자 컴퓨팅 시스템(110)과 별개일 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)이 게임 콘솔인 경우, 디스플레이 시스템(122)은 사용자 컴퓨팅 시스템(110)과 다른 엔티티에 의해 제조되거나 판매될 수 있는 텔레비전일 수 있다.
테스트 서버(124)는 비디오 게임 테스트 시스템(102)과 인터페이스하여, 비디오 게임 테스트 시스템(102)에 일련의 명령어 또는 명령을 제공하여, 프로세스(200)와 같은 지연 테스트 또는 결정 프로세스 동안 수행할 수 있는 임의의 유형의 컴퓨팅 시스템을 포함할 수 있다. 예를 들어, 테스트 서버(124)는 서버 컴퓨팅 시스템, 데스크탑, 랩탑, 네트워크 기반 또는 클라우드 컴퓨팅 시스템, 또는 테스터가 비디오 게임(112) 또는 비디오 게임 테스트 시스템(102)을 사용하여 비디오 게임(112)을 호스팅하는 사용자 컴퓨팅 시스템(110)을 테스트하는 것을 용이하도록 사용할 수 있는 임의의 다른 컴퓨팅 시스템일 수 있다.
전술한 바와 같이, 비디오 게임 테스트 시스템(102) 및 사용자 컴퓨팅 시스템(110) 사이의 통신 지연을 감소시키기 위해, 비디오 게임 테스트 시스템(102)은 유선 연결을 통해 직접 통신할 수 있다. 특정 실시예에서, 사용자가 비디오 게임(112)과의 상호동작을 위하여 무선 사용자 인터페이스 장치를 사용하는 경우의 지연에 대한 영향을 테스터가 결정할 수 있도록, 비디오 게임 테스트 시스템의 하나 이상의 구성 요소가 사용자 컴퓨팅 시스템(110)과 무선으로 통신할 수 있다.
테스트 서버(124)는 비디오 게임 테스트 시스템(102)과 직접 통신하거나, 네트워크(미도시)를 통해 통신할 수 있다. 네트워크는 임의의 유형의 통신 네트워크를 포함할 수 있다. 예를 들어, 네트워크는 광역 네트워크(WAN: wide area network), 근거리 네트워크(LAN: local area network), 셀룰러 네트워크(cellular network), 애드혹 네트워크(ad hoc network), 위성 네트워크(satellite network), 유선 네트워크(wired network), 무선 네트워크(wireless network) 등 중 하나 이상을 포함할 수 있다. 또한, 일부 경우에서 네트워크는 인터넷을 포함할 수 있다.
예시적인 명령 지연 테스트 프로세스(Example Command Latency Testing Process)
도 2는 특정 실시예에 따른 명령 실행 지연 테스트 프로세스(200)의 흐름도를 나타낸다. 프로세스(200)는 비디오 게임(112)과의 상호동작 및 비디오 게임(112)과의 상호동작에 대응하는 또는 다른 방식으로 트리거되는 이벤트의 발생 사이의 지연, 또는 시간에 대한 측정치를 결정할 수 있는 임의의 시스템에 의해 구현될 수 있다. 프로세스(200)는 전체적으로 또는 부분적으로 예를 들어 비디오 게임 테스트 시스템(102), 프론트 엔드 테스트 시스템(104), 백 엔드 테스트 시스템(106), 사용자 인터페이스 회로(108), 디코더(116), 제어기(118), 또는 타이머 시스템(120)에 의해 구현될 수 있다. 임의의 개수의 시스템이 전체적으로 또는 부분적으로 프로세스(200)를 구현할 수 있지만, 논의를 단순화하기 위해 프로세스(200)를 특정 시스템에 대한 것으로 설명한다.
프로세스(200)는, 프론트 엔드 테스트 시스템(108)이 사용자 인터페이스와의 상호동작에 대응하는 명령어의 세트를 수신하는 블록(202)에서 시작한다. 명령어는 단일 명령어, 명령어의 시퀀스 또는 복수의 명령어의 시퀀스를 포함할 수 있다. 일부 경우에서, 각각의 명령어의 시퀀스는 상이한 조건 또는 상태 하에서 별도의 테스트, 비디오 게임(112)의 상이한 부분에 대한 테스트, 또는 비디오 게임(112)에 대한 테스트와 연관될 수 있다. 수신된 명령어는 사용자가 비디오 게임(112)을 플레이할 때 수행할 수 있는 사용자 인터페이스 장치와의 상호동작에 대응할 수 있다. 예를 들어, 사용자가 사용자 인터페이스 장치와 상호동작할 때 비디오 게임(112)을 호스팅하는 사용자 컴퓨팅 시스템(110)에 명령어가 제공될 수 있다. 예를 들어, 사용자가 게임 제어기 상의 "업(up)" 버튼을 누르면, 게임 제어기는 특정 명령을 제공하여 사용자 컴퓨팅 시스템(110)에 사용자가 "업" 버튼을 눌렀다는 것을 알릴 수 있다. 프론트 엔드 테스트 시스템(108)으로부터 수신된 명령어는 동일한 특정 명령을 포함할 수 있다. 따라서, 수신된 명령은 게임 제어기와 상호동작하는 사용자를 시뮬레이션할 수 있다.
사용자 인터페이스 장치는 사용자가 비디오 게임(112)을 재생하거나 상호동작하는 데 사용할 수 있는 임의의 장치를 포함할 수 있다. 예를 들어, 사용자 인터페이스 장치는 게임패드 또는 게임 제어기, 키보드, 마우스 또는 터치 감지 디스플레이(touch sensitive display)일 수 있다.
블록(204)에서, 프론트 엔드 테스트 시스템(104)은 블록(202)에 수신된 명령어 세트를 비디오 게임 테스트 시스템(102)의 스토리지에 저장한다. 예를 들어, 프론트 엔드 테스트 시스템(104)은 명령 시퀀스 저장소(114) 및/또는 사용자 인터페이스 회로(108)의 메모리 또는 스토리지에 명령어의 세트를 저장할 수 있다. 일부 실시예에서, 명령어의 세트를 저장하는 것은 명령어의 세트를 식별하는 라벨 또는 태그를 저장하는 것을 포함할 수 있다. 예를 들어, 태그는 세트 명령어에 포함된 명령, 명령어의 세트에 기초한 비디오 게임(112)에서 수행되는 동작, 명령어의 세트에 의해 테스트될 수 있는 비디오 게임(112)의 일부분, 또는 명령 시퀀스 저장소(114)에 저장된 명령어의 다른 세트 또는 시퀀스로부터 명령어의 세트를 구별할 수 있는 임의의 다른 정보를 나타내거나 또는 식별(identify)할 수 있다.
블록(206)에서, 프론트 엔드 테스트 시스템(104)은 지연 테스트를 시작하기 위해 트리거를 수신한다. 트리거는 사용자로부터 수신되거나 자동화된 테스트 프로세스의 일부와 같은 자동화된 트리거일 수 있다. 또한, 트리거는 비디오 게임 테스트 시스템(102)과 직접 상호동작하는 사용자에 응답하여 수신될 수 있거나, 테스트 서버(124)로부터 수신될 수 있다. 일부 실시예에서, 사용자 컴퓨팅 시스템(110)은 블록(206)에서 트리거를 제공할 수 있다. 일부 실시예에서, 트리거는 비디오 게임(112)의 코드에서의 변화에 응답하여 수신될 수 있다. 특정 실시예에서, 트리거는 명령 시퀀스 저장소(114)에 저장된 명령 또는 명령의 시퀀스에 대한 식별(identification)을 포함할 수 있다. 예를 들어, 트리거는 명령 시퀀스 저장소(114)에 저장된 명령의 다른 명령 시퀀스로부터 명령의 커맨더 시퀀스(commander sequence)를 구별하는 라벨, 태그 또는 다른 참조를 포함할 수 있다.
블록(208)에서, 프론트 엔드 테스트 시스템(104)은 타이머 시스템(120)에서 지연 타이머(latency timer)를 트리거한다. 타이머 시스템(120)에서 지연 타이머를 트리거하는 것은 타이머 시스템(120)에서 복수의 타이머를 시작하는 것을 포함할 수 있다. 예를 들어, 일부 경우에서는, 사용자 인터페이스 회로(108)에 의해 사용자 컴퓨팅 시스템(110)에 제공된 하나 이상의 명령에 대응하는 복수의 이벤트가 비디오 게임(112)에서 발생할 때까지의 시간의 크기를 측정하는 것이 바람직하다. 또한, 특정 실시예에서, 타이머 시스템(120)에서 지연 타이머를 트리거하는 것은, 타이머 시스템(120)이 하나 이상의 지연 타이머를 언제 스톱해야 하는지를 가리키는, 타이머 시스템(120)에 대한 특정 스톱 조건을 식별하는 것을 포함할 수 있다. 각각의 지연 타이머는 아래에서 보다 상세하게 설명되는 바와 같이 타이머 시스템(120)에 의해 모니터링(monitored)되는 상이한 스톱 조건과 연관될 수 있다.
일부 경우에서, 타이머 시스템(120)에서 복수의 타이머를 트리거하는 것은 각각의 타이머에 대한 순서(order) 또는 순위(rank)를 식별하는 것을 포함할 수 있다. 타이머 시스템(120)은 스톱 조건이 검출될 때마다 가장 높은 순위를 가지는 활성 타이머를 스톱시킬 수 있다. 따라서, 일단 제1 순위 타이머가 스톱되면, 제2 순위 타이머가 가장 높은 순위의 타이머가 될 수 있고, 제2 스톱 조건을 식별하는 타이머 시스템(120)에 따라 스톱될 수 있다. 유리하게는, 특정 실시예에서 각각 상이한 스톱 조건들과 연관되거나 또는 상이한 시간에서 스톱되도록 구성된 복수의 타이머를 트리거함으로써, 사용자 컴퓨팅 시스템(110)에 제공되고 있는 명령 및 대응하는 이벤트의 발생 또는 트리거 사이의 지연 또는 시간의 측정이 상기 명령에 의해 트리거될 수 있는 복수의 이벤트에 대해 측정되도록 할 수 있다.
블록(210)에서, 프론트 엔드 테스트 시스템(104)은, 블록(202)에서 수신된 명령어를 저장하는데 사용되는 스토리지로부터 하나 이상의 명령어를 로드한다. 예를 들어, 프론트 엔드 테스트 시스템(104)은 명령 시퀀스 저장소(114)로부터 하나 이상의 명령어를 로드할 수 있다. 일부 실시예에서, 프론트 엔드 테스트 시스템(104)은 블록(210)의 일부로서 한 번에 단일 명령어를 로드할 수 있다. 다른 실시예에서, 프론트 엔드 테스트 시스템(104)은 한 번에 특정 테스트에 대응하는 명령어의 시퀀스 또는 명령어의 시퀀스의 서브세트를 로드할 수 있다. 프론트 엔드 테스트 시스템(104)은, 블록(206)에서 수신된 트리거 또는 상기 트리거와 함께 포함된 라벨에 기초하여, 로드할 명령어 또는 명령어의 시퀀스를 결정할 수 있다.
블록(212)에서, 사용자 인터페이스 회로(108)는, 테스트중인 비디오 게임(112)을 실행중인 사용자 컴퓨팅 시스템(110)에게, 하나 이상의 명령을 통신한다. 하나 이상의 명령어를 사용자 컴퓨팅 시스템(110)에게 통신하는 것은, 명령어를 사용자 컴퓨팅 시스템(110)에 제공할 때, 사용자 인터페이스 장치가 사용자 컴퓨팅 시스템(110)에게 통신하는 대응 데이터 또는 명령어를 전송하는 것을 포함할 수 있다. 예를 들어, 사용자 인터페이스 회로(108)가 게임 제어기 상의 특정 버튼을 누르고 유지하는 것과 연관된 명령어를 전달하려고 하는 경우, 사용자 인터페이스 회로(108)는 게임 제어기가 사용자 컴퓨팅 시스템(110)에 전달할 수도 있는 동일한 데이터 또는 명령어를 전달할 수 있다. 따라서, 특정 실시예에서 사용자 인터페이스 회로(108)는 사용자 컴퓨팅 시스템(110)의 게임 제어기 또는 다른 사용자 인터페이스 장치를 시뮬레이션할 수 있다.
특정 실시예에서, 블록(212) 및/또는 블록(208)과 연관된 동작은 사용자 컴퓨팅 시스템에 전달된 각각의 명령어에 대한 상이한 지연 타이머를 트리거하는 것을 포함할 수 있다. 다른 실시예에서, 블록(212) 및/또는 블록(208)과 연관된 동작은 제1 명령어, 최종 명령어 또는 사용자 컴퓨팅 시스템(110)에 전달된 특정 명령어의 서브세트에 대한 지연 타이머를 트리거하는 것을 포함할 수 있다.
블록(214)에서, 타이머 시스템(120)은 블록(208)에서 발생하는 트리거 및 검출된 스톱 조건에 적어도 부분적으로 기초하여 하나 이상의 명령어를 수행하기 위한 지연 시간 측정치를 결정한다. 이러한 검출된 스톱 조건은 사용자 컴퓨팅 시스템(110)의 출력에 기초하여 검출될 수 있다. 이러한 출력은 디스플레이 시스템(122)에 제공되거나 제공되도록 의도된 출력일 수 있지만, 백 엔드 테스트 시스템(106)에 의해 캡쳐되는 출력일 수 있다. 설명된 바와 같이, 지연 시간 측정치는 사용자 인터페이스 회로(108)에 의해 사용자 컴퓨팅 시스템(110)에 제공되는 명령과 비디오 게임(112)에서 발생하는 이벤트 사이에 경과하는 시간의 크기와 연관될 수 있다. 특정 실시예에서, 지연 시간 측정치는 발생한 비디오 게임(112) 내 이벤트의 수 및/또는 명령이 사용자 인터페이스(108)에 의해 사용자 컴퓨팅 시스템(110)에 제공된 이후로 출력된 프레임의 수에 의해 측정되고, 상기 이벤트는 비디오 게임(112)에서 발생한다. 지연 시간 측정치를 결정할 때 스톱 조건을 검출하는 것과 관련된 추가적인 세부 사항은 도 3에 관하여 아래에서 설명된다.
단일 프로세스로 설명되었지만, 프로세스(200)는 복수의 프로세스로 분할될 수 있거나/있고, 프로세스(200)와 연관된 동작은 상이한 시간에 수행될 수 있음을 이해해야 한다. 예를 들어, 블록(202 및 204)과 연관된 동작은 프로세스(200)의 나머지 동작 이전의 소정의 시간에 발생할 수 있다. 예를 들어, 제 1 주기(period)의 시간 동안, 하나 이상의 명령의 시퀀스가 명령 시퀀스 저장소(114)에서의 스토리지를 위해 수신될 수 있다.
제1 주기의 시간 이후에 언젠가 발생하는 제2 주기의 시간 동안, 하나 이상의 테스트가 비디오 게임(112)의 하나 이상의 반복에 대해 수행될 수 있다. 하나 이상의 테스트는 프로세스(200)의 블록(206 내지 214)과 연관된 동작을 수행하는 것을 포함할 수 있다.
또한, 프로세스(200)와 연관된 동작은 상이한 순서로, 직렬로, 또는 적어도 부분적으로 병렬로 수행될 수 있음을 이해해야 한다. 예를 들어, 블록(208)과 연관된 동작은 블록(210)과 연관된 동작에 후속하여(subsequent) 수행될 수 있다. 다른 예로서, 블록(208)과 연관된 동작은 블록(212)과 연관된 동작과 적어도 병렬적으로 수행될 수 있다. 예를 들어, 블록(208)의 부분으로 사용자 인터페이스 회로(108)는 타이머 시스템(120)에서 타이머를 트리거할 수 있으며, 동시에 또는 실질적으로 동시에, 블록(212)의 부분으로 사용자 인터페이스 회로(108)는 적어도 하나의 명령어를 사용자 컴퓨팅 시스템(110)에 전달한다.
예시적인 지연 결정 프로세스(Example Latency Determination Process)
도 3은 특정 실시예에 따른 지연 결정 프로세스(300)의 흐름도를 나타낸다. 프로세스(300)는, 적어도 부분적으로 출력에서 임베디드된 스톱 조건을 검출함으로써, 비디오 게임(112)과의 상호동작, 및 비디오 게임(112)과의 상호동작에 대응하거나 또는 상기 상호동작에 의해 트리거되는 이벤트의 발생 사이의 지연 또는 시간의 측정치를 결정할 수 있는 임의의 시스템에 의해 구현될 수 있다. 전체적으로 또는 부분적으로 프로세스(300)는 그 중에서도 예를 들어 비디오 게임 테스트 시스템(102), 프론트 엔드 테스트 시스템(104), 백 엔드 테스트 시스템(106), 사용자 인터페이스 회로(108), 디코더(116) , 제어기(118), 또는 타이머 시스템(120)에 의해 구현될 수 있다. 논의를 단순화하기 위해, 임의의 개수의 시스템이 전체적으로 또는 부분적으로 프로세스(300)를 구현할 수 있지만, 프로세스(300)는 특정 시스템에 관하여 설명될 것이다.
특정 실시예에서, 프로세스(300)는 프로세스(200)와 결합되거나, 또는 프로세스(200)의 일부로서 실행될 수 있다. 예를 들어, 블록(306-322)과 연관된 동작은 프로세스(200)의 블록(214)과 연관된 동작으로 수행될 수 있거나, 또는 상기 블록(214)과 연관된 동작의 일부로 수행될 수 있다. 또한, 블록(302 및 304)은 각각 블록(210 및 212)에 대응할 수 있다.
프로세스(300)는 프론트 엔드 테스트 시스템(104)이 로드하는 블록(302)에서 시작하고, 명령 시퀀스 저장소(114)와 같은 스토리지로부터 명령어를 시작한다. 특정 실시예에서, 블록(302)은 블록(210)에 관하여 설명된 실시예 중 하나 이상을 포함할 수 있다.
블록(304)에서, 사용자 인터페이스 회로(108)는 테스트 중인 비디오 게임(112)의 적어도 일부를 호스팅하거나 또는 실행하는 사용자 컴퓨팅 시스템(110)에 명령어를 전달한다. 특정 실시예에서, 블록(304)은 블록(212)에 관하여 설명된 실시예 중 하나 이상을 포함할 수 있다.
블록(306)에서, 백 엔드 테스트 시스템(106)은 사용자 컴퓨팅 시스템(110)으로부터 출력 신호를 수신한다. 출력 신호는 디스플레이 시스템(122)에 출력을 제공하도록 구성된 사용자 컴퓨팅 시스템(110)의 출력 포트로부터 수신될 수 있다. 예를 들어, 출력 포트는 HDMI 포트, 디스플레이포트(DisplayPort), 또는 임의의 다른 비디오 출력 포트일 수 있다. 특정 실시예에서, 백 엔드 테스트 시스템(106)은 디스플레이 시스템(122) 대신에 사용자 컴퓨팅 시스템(110)에 연결된다. 다른 실시예에서, 신호 캡쳐 장치 또는 스플리터는, 신호가 디스플레이 시스템(122)에 제공되는 것을 금지하지 않고, 디스플레이 시스템(122)에 출력된 신호의 복사본을 획득하는데 사용될 수 있다. 따라서, 특정 실시예에서 사용자가 디스플레이 시스템(122)으로 출력된 컨텐츠를 관측하는 동안, 백 엔드 테스트 시스템(106)은 지연을 측정하기 위해 사용될 수 있다. 백 엔드 테스트 시스템이 지연을 측정할 때 사용자가 디스플레이 시스템(122)을 볼 수 있게 함으로써, 사용자는 디스플레이 시스템(122) 상에 디스플레이된 뷰에서 적어도 부분적으로 기초하여 수행되고 있는 테스트를 변경할지 결정할 수 있다. 사용자 컴퓨팅 시스템(110)으로부터 수신된 출력 신호는 이미지에 대응할 수 있거나, 또는 애니메이션의 프레임은 디스플레이를 위해 비디오 게임(112)에 의해 출력된다.
블록(308)에서, 디코더(116)는 출력 신호를 픽셀로 변환한다. 출력 신호를 픽셀로 인버트(inverting)시키는 것은 출력 신호에 기초하여 이미지 또는 애니메이션의 프레임을 생성하는 것을 포함할 수 있다.
블록(310)에서, 제어기(118)는 임베디드 데이터와 연관된 픽셀의 서브세트를 획득하기 위해 픽셀을 후처리(post-processes)한다. 픽셀을 후처리하는 것은, 임베디드 데이터와 연관된 픽셀의 서브세트를 획득하기 위해, 이미지를 형성하는 픽셀 또는 블록(308)에 생성되는 애니메이션의 프레임을 필터링하는 것을 포함할 수 있다. 대안적으로 또는 부가적으로, 픽셀을 후처리하는 것은 임베디드 데이터를 포함하도록 지정된 픽셀의 서브세트를 선택하거나 또는 그렇지 않으면 획득하는 단계를 포함할 수 있다. 특정 실시예에서, 후처리는 이미지 또는 프레임을 잘라(cropping)내어 임베디드 데이터를 포함하도록 지정된 픽셀의 서브세트를 분리(isolate)하는 것을 포함한다. 픽셀의 서브세트는 첫 번째 1024 또는 2048 픽셀과 같이, 이미지로부터의 특정 개수의 픽셀을 포함할 수 있다. 대안적으로, 픽셀의 서브세트는 이미지 또는 프레임에 포함된 2048 비트 또는 2048 바이트와 같은 특정 크기(particular amount)의 데이터와 연관된 픽셀일 수 있다.
이미지를 위한 픽셀의 서브세트 또는 애니메이션의 프레임은 임베디드 데이터를 포함하도록 지정된 픽셀을 포함하지만, 특정 이미지를 위한 임베디드 데이터를 포함하거나 또는 포함하지 않을 수 있다. 다시 말해, 특정 실시예에서 특정 이미지 또는 프레임은, 임베디드 데이터를 포함할 수 있는 반면에, 다른 이미지는 임베디드 데이터를 포함하지 않을 수 있다.
결정 블록(decision block)(312)에서, 타이머 시스템(120)은 임베디드 데이터가 스톱 조건을 포함하는지 결정한다. 특정 실시예에서, 임베디드 데이터가 스톱 조건을 포함하는지 결정하는 것은 픽셀의 서브세트가 임베디드 데이터를 포함하는지 결정하는 것을 포함할 수 있다. 픽셀의 서브세트가 임베디드 데이터를 포함하지 않는다고 결정되는 경우에, 결정 블록(312)은 스톱 조건이 발생하지 않았다고 결정한다.
스톱 조건은, 비디오 게임(112)과 연관된 코드가 실행될 때, API 또는 SDK에 의해 애니메이션의 이미지 또는 프레임에 삽입될 수 있는 임의의 데이터를 포함할 수 있다. 예를 들어, 특정 이벤트가 비디오 게임(112)의 실행 중에 발생하는 경우, 사용자 또는 백 엔드 테스트 시스템(106)에 이벤트의 발생을 알리기 위해, API에 포함된 함수를 호출하여 출력될 애니메이션의 이미지 또는 프레임에 특정 데이터를 삽입할 수 있다. 이러한 특정 데이터는 이미지 또는 프레임 내 픽셀의 세트에 대한 특정 컬러 또는 불투명(opaqueness)일 수 있다. 일부 경우에서, 스톱 조건은 픽셀 데이터를 저장하도록 구성된 바이트의 메모리에 저장된 특정 라벨 또는 다른 값일 수 있다.
API 또는 SDK는 비디오 게임의 테스트 코드를 테스트하거나 용이하게 하기 위한 테스트 코드 또는 테스트 도구(tools)의 일부이거나, 또는 상기 테스트 코드 또는 테스트 도구를 제공할 수 있다. 예를 들어, 개발자가 테스트하고자 하는 특정 코드 정보(snippets)에 대해, 개발자는 코드 정보(code snippet)의 끝(end)에서 코드 정보에 대한 테스트를 용이하게 하는 API 또는 SDK에서의 함수에 대한 호출을 삽입할 수 있다. 개발자가 특정 이벤트의 지연을 테스트하려는 경우에, 개발자는 테스트될 코드의 끝(또는 다른 바람직한 위치)에, 출력될 프레임에 데이터를 삽입하거나 또는 임베디드시키는 함수에 대한 호출을 삽입할 수 있다. 이러한 임베디드 데이터는 비디오 게임 테스트 시스템(102)이 특정 이벤트가 발생했는지를 검출할 수 있게 하는 정보(예를 들어, 스톱 조건, 라벨 또는 다른 마커)로 프레임의 픽셀 중 일부를 대체할 수 있다. 따라서, 일단 이벤트가 발생하였다는 것을 나타내는 정보가 프레임으로부터 디코딩되면, 타이머가 시작된 이후의, 또는 특정 이벤트가 발생하게 야기하는 시뮬레이션된 사용자 상호동작이 수신된 이후의 경과된 시간의 크기를 결정하기 위해, 비디오 게임 테스트 시스템(102)은 타이머를 사용할 수 있다.
일부 실시예에서, 스톱 조건은 "타겟 이벤트(target event)"로 지칭될 수 있는 특정 이벤트가 발생할 때 삽입될 수 있다. 이러한 타겟 이벤트는 블록(304)에서 사용자 컴퓨팅 시스템(110)에 제공된 명령어에 대응하거나 상기 명령어에 의해 트리거될 수 있다. 일부 실시예에서, 명령어가 사용자 컴퓨팅 시스템(110)에 의해 수신될 때, 비디오 게임(112)이 특정 상태에 있을 때 이벤트가 트리거된다.
일부 실시예에서, 프로그래머는, 비디오 게임(112)의 테스트와 연관된 API에 포함된 함수에 대한 라이브러리 호출을 삽입할 수 있다. 이러한 함수는, 테스트 프로세스를 용이하게 하기 위해, 프로그래머가 실행되고 있는 애플리케이션으로부터 데이터를 검출할 수 있도록 API에 의해 프로그래머 또는 코더(coder)가 이용할 수 있도록 만들어진 함수일 수 있다. 프로그래머가 테스트하고자 하는 코드의 특정 부분이 있는 경우에, 프로그래머는 코드의 특정 부분에 함수 호출을 삽입할 수 있다. 대안적으로, 테스트 함수는 API로부터 이용 가능한 함수의 일부 또는 모두에 내장되거나 포함될 수 있다. 일부 이러한 경우에서, 플래그 또는 다른 트리거는 비디오 게임(112)의 실행 동안 테스트 기능을 활성화 또는 비활성화하기 위해 사용될 수 있다.
결정 블록(312)에서 임베디드 데이터가 스톱 조건을 포함하지 않는다고 결정되면, 프로세스(300)는 블록(302)으로 진행할 수 있다. 블록(302)에서 다른 명령이 스토리지로부터 로딩되어 사용자 컴퓨팅 시스템(110)에 제공될 수 있다. 대안적으로, 프로세스(300)는 블록(304)으로 진행할 수 있다. 예를 들어, 일련의 명령어 또는 명령이 처음 블록(302)에 로드되면, 프로세스(300)는 블록(304)으로 리턴(return)하여 이전에 로드된 명령어 중 하나를 사용자 컴퓨팅 시스템(110)으로 전달할 수 있다. 또 다른 대안으로, 프로세스(300)는 블록(306)으로 진행할 수 있다. 예를 들어, 일부 경우에서, 추가의 명령어가 사용자 컴퓨팅 시스템(110)에 제공되지 않을 수 있고, 이전에 제공된 명령어에 대응하거나 또는 상기 명령어에 의해 트리거되는 이벤트가 비디오 게임(112)에서 아직 발생하지 않았을 수 있다. 따라서, 프로세스(300)는 결정 블록(312) 이후에 블록(306)으로 리턴하여, 스톱 조건이 있는 임베디드 데이터가 식별될 때까지 계속 출력을 처리한다.
임베디드 데이터가 스톱 조건을 포함한다고 결정 블록(312)에서 결정되면, 블록(314)에서 타이머 시스템(120)은 지연 타이머를 스톱시킨다. 지연 타이머를 스톱시키는 것은 복수의 진행중인 타이머 중 하나를 스톱시키는 것을 포함할 수 있다. 스톱된 지연 타이머는 결정 블록(312)에서 식별된 스톱 조건과 연관될 수 있다. 타이머 시스템(120)에 의해 관리되는 다른 타이머들은 계속해서 동작할 수 있다. 일부 실시예에서, 블록(314)에서 타이머 시스템(120)은 지연 타이머를 스톱시키지 않고 대신에 지연 타이머가 시작된 이후에 경과된 시간을 기록한다. 유리하게는, 특정 실시예에서, 지연 타이머가 계속 작동하도록 잘 허용하는 지연 타이머의 시간 값을 기록함으로써, 타이머 시스템(120)은 단일 명령에 의해 트리거되거나, 또는 단일 타이머를 사용하여 사용자 컴퓨팅 시스템에 전달되는 단일 명령어에 대응하는 복수의 이벤트의 발생을 모니터링할 수 있다.
블록(316)에서, 타이머 시스템(120)은 지연 시간 측정치를 결정한다. 지연 시간 측정치(latency time measurement)을 결정하는 것은, 명령어가 사용자 컴퓨팅 시스템에 전달되는 때 또는 명령어가 비디오 게임(112)에 의해 실행되는 때의 시점, 및 상기 명령어에 대응하여 트리거되는 비디오 게임에서 이벤트가 발생하는 때의 시점 사이의 차를 결정하는 것을 포함한다. 전술한 바와 같이, 이벤트는 플레이되고 있는 특정 애니메이션, 디스플레이되고 있는 애니메이션 내 특정 프레임, 플레이되고 있는 사운드, 비디오 게임(112)의 상태에서의 변화, 또는 블록(304)에서 제공된 명령에 적어도 부분적으로 기초하여 변경될 수 있는 비디오 게임(112)의 임의의 다른 측면일 수 있다. 특정 실시예에서, 블록(316)은 블록(214)에 대해 기술된 실시예 중 하나 이상을 포함할 수 있다.
블록(318)에서, 타이머 시스템(120)은 비디오 게임 테스트 시스템(102)에 의해 도입된 지연에 대한 지연 시간 측정치를 조절한다. 비디오 게임 테스트 시스템(102)에 의해 도입된 지연에 대한 지연 시간 측정치를 조절하는 것은 비디오 게임 테스트 시스템(102)의 엘리먼트와 연관된 시간의 크기로 지연 시간 측정치를 감소시키는 것을 포함할 수 있다. 예를 들어, 비디오 게임 테스트 시스템(102)의 프로토타입에 대한 평가 동안에, 제어기(118) 및 타이머 시스템(120) 사이의 통신은 3.8 ms를 필요로 한 것으로 결정되었다. 3.8 ms의 값은 제어기(118) 및 타이머 시스템(120) 사이의 통신에 대한 결정론적(deterministic) 측정치이다. 따라서, 이러한 특정 예에서 지연 시간 측정치는 3.8 ms 만큼 감소될 수 있다. 프로토타입에서 디코더(116) 및 제어기(118) 사이의 통신 시간은 무시할 만하다. 그러나, 디코더(116) 및 제어기(118) 사이의 통신 시간이 무시할 수 없는 것으로 결정되는 실시예에서, 지연 시간 측정치는 결정된 통신 시간에 의해 조절될 수 있다.
특정 실시예에서, 비디오 게임 테스트 시스템(102)은 핀(pins) 및/또는 와이어(wires)를 통해 직접 연결된 하나 이상의 애플리케이션 특정 하드웨어 장치를 사용하여 구현되기 때문에, 비디오 게임 테스트 시스템(102)의 하드웨어 엘리먼트 간의 지연의 크기(amount)는, 일반적인 컴퓨팅 하드웨어의 사용과 비교하여 결정가능(deterministic) 실질적으로 변화가 없을(invariable) 수 있다. 따라서, 비디오 게임(112)의 특정 구현에서의 특정 명령어에 대한 지연의 측정치가 반복 가능할 수 있다는 것은, 복수의 테스트 반복 사이에서 실질적으로 동일한 결과를 제공할 수 있다. 특정 실시예에서, 블록(318)과 연관된 동작은 선택적이거나 생략될 수 있다.
블록(320)에서, 타이머 시스템(120)은 조절된 지연 측정치로부터의 지연 노이즈를 필터링한다. 지연 노이즈(latency noise)는 비디오 게임(112)의 특정 코드, 리소스 또는 자산과 무관하거나 특정되지 않은 지연(latency) 또는 지연(delays)을 포함할 수 있다. 다시 말해, 지연 노이즈는 프로그래머에 의해 생성된 코드 또는 비디오 게임(112)을 개발 시 그래픽 아티스트에 의해 생성될 수 있는 다양한 애니메이션과 관련이 없는 노이즈일 수 있다. 예를 들어, 지연 노이즈는 사용자 컴퓨팅 시스템(110) 자체의 구성에 의해, 또는 비디오 게임(112)을 개발하는데 사용되는 코딩 엔진에 의해 도입된 지연을 포함할 수 있다. 예를 들어, 일부 사용자 컴퓨팅 시스템은 1초마다 60개의 새로운 프레임을 디스플레이하도록 설계되어 구성될 수 있다. 그러나, 일부 경우에서, 비디오 게임(112)은 1초에 60개보다 빠른 속도로 새로운 프레임을 생성할 수 있다. 이러한 경우에서, 프레임이 출력 준비 상태 일 수 있음에도 블구하고, 출력은 사용자 컴퓨팅 시스템(110)이 다른 프레임을 출력할 준비가 될 때까지 정지(stalled)될 수 있다. 프레임이 출력 준비가 될 때 및 사용자 컴퓨팅 시스템(110)이 프레임을 출력할 수 있을 때 사이의 이러한 지연은, 블록(316)에서 결정된 지연 시간 측정치로부터 또는 블록(318)의 조절된 지연 시간 측정치로부터 블록(320)에서 측정되고 감산될 수 있다. 특정 실시예에서, 프레임이 출력 준비가 될 때와 사용자 컴퓨팅 시스템(110)이 프레임을 출력할 준비가 될 때 사이의 지연은 의도적으로 화면 찢김(screen tearing)을 방지(prevent)하기 위한 것일 수 있으며, 수직 동기(vertical synchronization) 또는 Vsync로 지칭될 수 있다.
일부 경우에서, 상이한 유형의 사용자 컴퓨팅 시스템(110)은 상이한 지연 시간 노이즈를 도입할 수 있기 때문에, 비디오 게임(112)의 개발자는 상이한 유형에 대해 본 명세서에 개시된 실시예를 사용하여 지연 테스트를 수행할 수 있으며, 또한 특정 실시예에서 비디오 게임(112)의 개발자는 상이한 유형의 사용자 컴퓨팅 시스템(110)에서의 실행을 위해 상이한 버전의 비디오 게임(112)을 만들거나 프로그래밍할 수 있다. 예를 들어, 플레이스테이션 게임 시스템(PlayStation® game system) 및 엑스박스 게임 시스템(Xbox® game system) 사이에서 내재된 차이는, 동일한 상태 하에서 비디오 게임(112)에 동일한 명령어를 제공하였음에도 서로 다른 지연을 야기할 수 있다. 특정 실시예에서, 블록(320)과 연관된 동작은 선택적이거나 생략될 수 있다.
블록(322)에서, 백 엔드 테스트 시스템(106)은 사용자 컴퓨팅 시스템(110)에서의 명령어의 수신 및 비디오 게임(112)에서의 특정 이벤트의 발생 사이의 지연 또는 측정치로서 필터링(filtered)된 조절(adjusted)된 지연 시간 측정치를 출력한다. 이러한 출력은 테스트 서버(124)의 디스플레이와 같은 스크린에 디스플레이될 수 있다. 대안적으로 또는 부가적으로, 상기 출력은 나중에 사용자 또는 자동화 테스트 시스템에 의해 액세스될 수 있는 저장소에 저장될 수 있다. 일부 실시예에서, 개발자와 같은 사용자는 블록(322)에서 출력된 지연 시간 측정치에 기초하여 비디오 게임(112)과 연관된 코드를 변경할 수 있다. 특정 실시예에서, 자동화 테스트 또는 개발 시스템은 특정 타겟 시간 측정치를 획득하기 위해 지연 시간 측정치에 기초하여 비디오 게임(112)의 코드 또는 파라미터를 자동으로 조절할 수 있다. 비디오 게임 경쟁에서(예를 들어, 이스포츠 경쟁에서) 사용되는 컴퓨팅 시스템을 테스트할 때와 같은 특정 실시예에서, 사용자는 블록(322)에서의 지연 시간 측정치의 출력에 적어도 부분적으로 기초하여 사용자 컴퓨팅 시스템(110)의 구성을 변경할 수 있다.
일부 실시예에서, 프론트 엔드 테스트 시스템(104)은 블록(320)에서 결정된 필터링된 조절된 지연 시간 측정치에 적어도 부분적으로 기초하여 테스트 중인 비디오 게임을 실행하는 사용자 컴퓨팅 시스템에 로드 및/또는 전달하기 위한 후속적인 명령어를 결정할 수 있다. 이러한 후속적인 명령어는, 블록(304)에 이전에 전달된 동일한 명령어의 반복일 수 있거나, 다른 명령어일 수 있다.
또한, 일부 실시예에서 로드하기 위한 명령어에 대한 결정 또는 사용자 컴퓨팅 시스템에 명령을 제공하려는 시간은, 픽셀의 서브세트에 포함된 임베디드 데이터에 적어도 부분적으로 기초하여 이루어질 수 있다. 유리하게는, 특정 실시예에서 자동화 테스트는, 제공할 특정 명령어, 및 테스트 중인 비디오 게임의 특정 상태의 검출에 기초하여 명령어를 제공하려는 시간의 타이밍을 결정하는 것을 포함하여 수행될 수 있다. 테스트 중인 비디오 게임의 이러한 특정 상태는 픽셀의 서브세트에 임베디드된 데이터를 통해 프론트 엔드 테스트 시스템(104)에 전달될 수 있다.
일부 실시예에서, 비디오 게임의 코드의 효율성에 대한 측정치는 블록(304)에 제공된 하나 이상의 명령어의 측정된 지연에 적어도 부분적으로 기초하여 결정될 수 있다. 또한, 비디오 게임 내의 상이한 포인트에서의 효율성은 비디오 게임의 상이한 상태 동안 수행된 명령의 지연을 측정함으로써 비교될 수 있다. 또한, 상이한 유형의 컴퓨팅 시스템 및/또는 동일한 유형의 컴퓨팅 시스템에서 동작 할 수 있는, 그러나 비디오 게임(112)의 코드에서만 차이가 있는, 비디오 게임의 상이한 버전 사이에서의 상대적인 효율성을 결정하기 위하여, 상기 비디오 게임의 상이한 버전에 대해 수행된 명령의 지연이 비교될 수 있다.
이러한 개시는 비디오 게임(112)을 테스트하기 위해 시각적인 출력을 사용하는 것과 주로 관련되지만, 특정 실시예에서는 오디오 출력이 사용될 수 있다. 예를 들어, 비디오 게임(112)은 이벤트가 발생할 때 특정 사운드를 플레이할 수 있다. 사운드가 백 엔드 테스트 시스템(106)에 의해 캡쳐될 수 있으며, 이것이 타이머가 중단(cease)되어야 하고, 지연 측정치가 결정되지 않았다는 것을 나타낼 수 있다.
임베디드 데이터를 가지는 예시적인 출력 프레임(Example Output Frame with Embedded Data)
도 4는 특정 실시예에 따른 임베디드 데이터를 포함하는 예시적인 출력 프레임(400)을 도시한다. 출력 프레임(400)은 비디오 게임(112)에 의해 출력되는 애니메이션의 한 프레임일 수 있다. 이러한 애니메이션은 플레이되는 비디오 또는 상호동작하지 않는(non-interactive) 애니메이션의 일부일 수 있거나, 또는 사용자로부터의 입력에 응답하여 변화하는 상호동작적인 장면(interactive scene)의 일부일 수 있다. 출력 프레임(400)의 일부는 비디오 게임(112)의 개발 중에 사용되는 API, SDK 또는 라이브러리에 의해 프레임(400)에 삽입된 임베디드 데이터를 포함하도록 구성될 수 있다. 출력 프레임의 이러한 부분은 개발자가 비디오 게임(112)으로부터 획득하기 원하는 정보에 대응하는 특정 컬러 또는 불투명 값을 갖도록 지정된 픽셀의 특정 세트일 수 있다. 이러한 정보는 비디오 게임(112) 내의 이벤트의 발생 또는 트리거일 수 있다. 프레임(400)의 이러한 부분은 페이로드(402)로 지칭될 수 있고, 임베디드된 정보는 페이로드 데이터로 지칭될 수 있다.
특정 실시예에서, 상이한 컬러 또는 불투명 값은 비디오 게임(112) 내의 상이한 정보 또는 상이한 이벤트의 발생을 나타낼 수 있다. 유사하게, 페이로드(402) 내의 상이한 픽셀은 모니터링되고 있는 상이한 이벤트와 연관될 수 있다. 프레임(400)의 페이로드(402)는, 예를 들어 수신된 명령에 의해 트리거된 이벤트를 식별하는 통신의 매체인 것으로 이해해야 한다. 그러나, 이벤트는 애니메이션 자체의 프레임 또는 애니메이션의 발생(occurrence)일 수도 있고 그렇지 않을 수도 있다. 예를 들어, 상기 이벤트는 캐릭터의 인벤토리(inventory)에 아이템을 추가하는 것과 같이 사용자에게 보이지 않을 수 있는 비디오 게임(112) 내 특정 상태의 설정(setting)일 수 있다. 사용자가 아이템을 보기 위해 인벤토리에 액세스 할 수 있음에도 불구하고, 아이템이 인벤토리에 추가되는 시간에 인벤토리가 디스플레이될 필요는 없다. 테스터는 사용자가 픽업하려는 아이템과 상호동작할 때 얼마나 빨리 아이템이 사용자의 인벤토리에 추가되는지 결정하도록 원할 수 있다. 다른 예로, 이벤트는 소리에 대한 플레이 또는 발사체(projectile)가 적을 칠(hits) 때의 특정 시점에 보이지 않는 적의 발사(shooting)일 수 있다.
도 5는 특정 실시예에 따른 도 4의 예시적인 출력 프레임의 일부에 대한 확대도를 도시한다. 라인(502)은 비디오 게임(112)에서의 이벤트의 발생을 나타낼 수 있다. 라인(502)과 라인(504)을 비교하면, 임베디드 데이터는 상이한 컬러일 수 있고 상이한 수의 픽셀에 걸쳐 퍼질(spread) 수 있음을 알 수 있다. 라인(502 및 504) 각각은 모니터링되고 있는 상이한 이벤트와 연관될 수 있다. 일부 실시예에서, 임베디드 데이터는 스톱 태그이거나, 스톱 조건이 발생했다는 것을 식별하는 데이터를 포함한다. 라인(502) 및 라인(504) 사이의 갭(506)은 아직 발생하지 않았거나 트리거된 이벤트에 대응할 수 있고, 따라서 임베디드 데이터는 갭(506)에 포함되지 않는다.
임베디드 데이터를 포함하는 픽셀은 도 4 및 5에서 볼 수 있지만, 어떤 경우에는 임베디드 데이터를 포함하는 픽셀은 볼 수 없는 것일 수도 있다는 것을 이해해야 한다. 예를 들어, 픽셀은 개수가 충분하지 않아서 관찰자가 볼 수 없을 수 있다. 다른 예로서, 임베디드 데이터를 가지는 픽셀은 디스플레이되고 있는 애니메이션 프레임으로 블렌딩(blend)될 수 있다.
컴퓨팅 시스템의 개요
도 6은 사용자 컴퓨팅 시스템(110)의 일 실시예를 도시하며, 이는 또한 게이밍 시스템(gaming system)으로 지칭될 수 있다. 도시된 바와 같이, 사용자 컴퓨팅 시스템(110)은 복수의 구성 요소를 포함할 수 있는 단일 컴퓨팅 장치일 수 있다. 그러나, 일부 경우들에서, 사용자 컴퓨팅 시스템(110)은 복수의 장치(multiple devices)을 포함할 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)은 중앙 처리 장치(central processing unit) 및 그래픽 처리 장치를 포함하는 하나의 장치, 디스플레이를 포함하는 다른 장치, 및 키보드 또는 마우스와 같은 입력 메커니즘(input mechanism)을 포함하는 다른 장치를 포함할 수 있다.
사용자 컴퓨팅 시스템(110)은 게임 시스템을 실행할 수 있는 컴퓨팅 시스템의 일 실시예일 수 있다. 도 6의 비 제한적인 예시에서, 사용자 컴퓨팅 시스템(110)은 터치스크린 디스플레이(touchscreen display)(602)를 통해 사용자로부터 입력을 수신할 수 있는 터치 가능 컴퓨팅 장치(touch-capable computing device)이다. 그러나, 사용자 컴퓨팅 시스템(110)은 터치스크린 디스플레이(602)를 포함하지 않는 비접촉식 실시예(non-touch capable embodiment)를 포함하지만, 이에 한정되지 않는다.
사용자 컴퓨팅 시스템(110)은 터치스크린 디스플레이(602) 및 터치스크린 인터페이스(touchscreen interface)(604)를 포함하고, 게임 애플리케이션(610)을 실행하도록 구성된다. 이러한 게임 애플리케이션은 비디오 게임(112) 또는 비디오 게임 실행 환경(video game execution environment)과 같은 비디오 게임(112)과 함께 또는 그 지원으로 실행하는 애플리케이션일 수 있다. 게임 애플리케이션(610)으로 설명되었지만, 일부 실시예에서 애플리케이션(610)은 교육 소프트웨어와 같은 사용자의 선호도 또는 능력에 적어도 부분적으로 기초하여 가변 실행 상태(variable execution state)를 가질 수 있는 다른 유형의 애플리케이션일 수 있다. 사용자 컴퓨팅 시스템(110)은 터치스크린 디스플레이(602)를 포함하지만, 터치스크린 디스플레이(602)에 추가하여 또는 그 대신에 다양한 입력 장치가 사용될 수 있다는 것이 인식된다.
사용자 컴퓨팅 시스템(110)은 중앙 처리 장치(CPU: central processing units), 그래픽 처리 장치(GPU: graphics processing units) 및 가속 처리 장치(APU: accelerated processing units)와 같은 하나 이상의 프로세서를 포함할 수 있다. 또한, 사용자 컴퓨팅 시스템(110)은 하나 이상의 데이터 저장 요소를 포함할 수 있다. 일부 실시예에서, 사용자 컴퓨팅 시스템(110)은 게임 애플리케이션(610)을 실행하기 위한 목적으로 생성된 특수 컴퓨팅 장치일 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)은 비디오 게임 콘솔(video game console)일 수 있다. 사용자 컴퓨팅 시스템(110)에 의해 실행되는 게임 애플리케이션(610)은 특정 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 사용하여 생성되거나 사용자 컴퓨팅 시스템(110)에 특정될 수 있는 특정 명령 세트로 컴파일(compiled)될 수 있다. 일부 실시예에서, 사용자 컴퓨팅 시스템(110)은 게임 애플리케이션(610) 및 비 게임 애플리케이션을 실행할 수 있는 범용 컴퓨팅 장치(general purpose computing device)일 수 있다. 예를 들어, 사용자 컴퓨팅 시스템(110)은 외부 터치스크린 디스플레이(external touchscreen display)를 갖는 통합 터치스크린 디스플레이(integrated touchscreen display) 또는 데스크탑 컴퓨터(desktop computer)를 구비한 랩탑일 수 있다. 사용자 컴퓨팅 시스템(110)의 일 예시적인 실시예의 구성 요소는 도 7과 관련하여 보다 상세하게 설명된다.
터치 스크린 디스플레이(602)는 정전식 터치스크린(capacitive touchscreen), 저항식 터치스크린(resistive touchscreen), 표면 탄성파 터치스크린(surface acoustic wave touchscreen), 또는 사용자로부터 터치 입력으로도 지칭되는 접촉식 입력(tactile inputs)을 수신하도록 구성된 다른 유형의 터치스크린 기술일 수 있다. 예를 들어, 터치 입력은 스크린을 터치하는 손가락, 스크린을 터치하는 복수의 손가락(multiple fingers), 스타일러스(stylus), 또는 터치스크린 디스플레이(602) 상에 터치 입력을 등록하는데 사용될 수 있는 다른 자극(stimuli)을 통해 수신될 수 있다. 터치스크린 인터페이스(604)는 터치 입력을 데이터로 변환(translate)하고 데이터를 출력하도록 구성될 수 있어, 운영 시스템 및 게임 애플리케이션(610)과 같은 사용자 컴퓨팅 시스템(110)의 구성 요소에 의해 해석(interpreted)될 수 있도록 한다. 터치스크린 인터페이스(604)는 촉각 터치 입력 터치(the tactile touch input touch)의 특성을 터치 입력 데이터(touch input data)로 변환할 수 있다. 터치 입력의 일부 예시적인 특성은 형상, 크기, 압력, 위치, 방향, 운동량(momentum), 지속 시간(duration) 및/또는 다른 특성을 포함할 수 있다. 터치스크린 인터페이스(604)는, 예를 들어 탭(tap)(예를 들어, 단일 위치에서의 터치 및 릴리스(release) 또는 스와이프(swipe)(예를 들어, 단일 터치 입력으로 터치스크린 상의 복수의 위치를 통한 움직임(movement))와 같은 유형의 터치 입력을 결정하도록 구성될 수 있다. 터치스크린 인터페이스(604)는 동시에 또는 실질적으로 병렬로 발생하는 다수의 터치 입력과 연관된 터치 입력 데이터를 검출 및 출력하도록 구성될 수 있다. 일부 경우에서, 동시 터치 입력은 사용자가 터치스크린 디스플레이(602) 상에 제1 터치를 유지하는 한편 터치스크린 디스플레이(602) 상에 제2 터치를 수행하는 경우를 포함할 수 있다. 터치스크린 인터페이스(604)는 터치 입력의 움직임을 검출하도록 구성될 수 있다. 터치 입력 데이터는 프로세싱을 위해 사용자 컴퓨팅 시스템(110)의 구성 요소로 전송될 수 있다. 예를 들어, 터치 입력 데이터는 프로세싱을 위해 게임 애플리케이션(610)에 직접 전송될 수 있다.
일부 실시예에서, 터치 입력 데이터는 게임 애플리케이션(610)에 출력되기 전에 터치스크린 인터페이스(604), 운영 시스템(operating system) 또는 다른 구성 요소에 의한 프로세싱 및/또는 필터링을 거칠 수 있다. 일 예시로서, 원시 터치 입력 데이터(raw touch input data)는 터치 입력으로부터 캡쳐될 수 있다. 원시 데이터는 필터링되어 배경 잡음을 제거하고, 입력과 연관된 압력 값이 측정될 수 있으며, 터치 입력과 연관된 위치 좌표는 계산될 수 있다. 게임 애플리케이션(610)에 제공된 터치 입력 데이터의 유형은 터치스크린 인터페이스(604)의 특정 구현 및 터치스크린 인터페이스(604)와 연관된 특정 API에 의존될 수 있다. 일부 실시예에서, 터치 입력 데이터는 터치 입력의 위치 좌표를 포함할 수 있다. 터치 신호 데이터는 정의된 주파수로 출력될 수 있다. 터치 입력을 프로세싱하는 것은 초당 여러 번 계산될 수 있으며, 터치 입력 데이터는 추가 프로세싱을 위해 게임 애플리케이션에 출력될 수 있다.
게임 애플리케이션(610)은 사용자 컴퓨팅 시스템(110)상에서 실행되도록 구성될 수 있다. 또한, 게임 애플리케이션(610)은 비디오 게임, 게임, 게임 코드 및/또는 게임 프로그램으로 지칭될 수 있다. 게임 애플리케이션은 사용자 컴퓨팅 시스템(110)이 사용자가 게임을 플레이하기 위해 사용할 수 있는 소프트웨어 코드(software code)를 포함하는 것으로 이해되어야 한다. 게임 애플리케이션(610)은 실행을 위한 프로세서 명령어를 사용자 컴퓨팅 시스템(110)에 알리는 소프트웨어 코드를 포함할 수 있지만, 상수(constants), 이미지 및 다른 데이터 구조와 관련된 데이터와 같이 게임의 플레이에 사용되는 데이터를 포함할 수도 있다. 예를 들어, 도시된 실시예에서, 게임 애플리케이션은 게임 엔진(612), 게임 데이터(614) 및 게임 상태 정보(game state information)(616)를 포함한다.
터치스크린 인터페이스(604) 또는 운영 시스템과 같은 사용자 컴퓨팅 시스템(110)의 다른 구성 요소는 터치 입력과 같은 사용자 입력을 게임 애플리케이션(610)에 제공할 수 있다. 일부 실시예에서, 사용자 컴퓨팅 시스템(110)은 마우스, 키보드, 카메라, 게임 컨트롤러 등과 같은 대안적인 또는 추가의 사용자 입력 장치를 포함할 수 있다. 사용자는 터치스크린 인터페이스(604) 및/또는 하나 이상의 대안적인 또는 추가의 사용자 입력 장치를 통해 게임 애플리케이션(610)과 상호동작할 수 있다. 게임 엔진(612)은 사용자 컴퓨팅 시스템(110) 내의 게임 애플리케이션(610)의 동작의 측면을 실행하도록 구성될 수 있다. 게임 애플리케이션 내의 게임플레이의 측면의 실행은 수신된 사용자 입력, 게임 데이터(614) 및 게임 상태 정보(616)에 적어도 부분적으로 기초할 수 있다. 게임 데이터(614)는 게임 규칙, 미리 기록된 모션 캡쳐 포즈/경로(prerecorded motion capture poses/paths), 환경 설정, 제약(constraints), 애니메이션 기준 곡선(animation reference curves), 골격 모델(skeleton models) 및/또한 다른 게임 애플리케이션 정보를 포함할 수 있다. 또한, 게임 데이터(614)는 게임 애플리케이션(610)의 난이도(difficulty)를 설정 또는 조절하는데 사용되는 정보를 포함할 수 있다.
게임 엔진(612)은 게임 규칙에 따라 게임 내에서 게임플레이를 실행할 수 있다. 게임 규칙의 몇몇 예시는 스코어링을 위한 규칙(rules for scoring), 가능한 입력, 액션/이벤트, 입력에 응답한 움직임 등을 포함할 수 있다. 다른 구성 요소는 어떤 입력이 받아들여지고 게임이 어떻게 진행되는지, 그리고 게임플레이의 다른 측면을 제어할 수 있다. 게임 애플리케이션(610)의 실행 동안, 게임 애플리케이션(610)은 게임 상태 정보(616)를 저장할 수 있으며, 이는 캐릭터 상태, 환경 상태, 장면 오브젝트 저장(scene object storage), 및/또는 게임 애플리케이션(610)의 실행의 상태와 연관된 다른 정보를 포함할 수 있다. 예를 들어, 게임 상태 정보(616)는 캐릭터 위치, 캐릭터 액션, 게임 레벨 속성 및 게임 애플리케이션의 상태에 기여하는 다른 정보와 같은 특정 시점에서 게임 애플리케이션의 상태를 식별할 수 있다.
게임 엔진(612)은 사용자 입력을 수신하여 게임 애플리케이션(610)에 적합한 액션, 충돌(collisions), 달리기(runs), 던지기(throws), 공격 및 다른 이벤트와 같은 게임 내 이벤트를 결정할 수 있다. 동작 동안, 게임 엔진(612)은 적절한 게임 내 이벤트를 결정하기 위하여 게임 데이터(614) 및 게임 상태 정보(616)를 판독할 수 있다. 일 예시에서, 게임 엔진(612)이 캐릭터 이벤트를 결정한 후에, 캐릭터 이벤트는 캐릭터가 이벤트에 응답하여 만들어야 하는 적절한 모션을 결정하고 그 모션을 애니메이션 엔진(animation engine)으로 패스(passes)할 수 있는 움직임 엔진(movement engine)으로 전달될 수 있다. 애니메이션 엔진은 캐릭터를 위한 새로운 포즈를 결정하고 스키닝 및 렌더링 엔진(skinning and rendering engine)에 새로운 포즈를 제공할 수 있다. 스키닝 및 렌더링 엔진은 전체 장면으로 움직이는(animate), 움직이지 않는(inanimate) 및 백그라운드 오브젝트(background objects)를 조합하기 위하여 오브젝트 결합기(object combiner)에 캐릭터 이미지를 제공할 수 있다. 전체 장면은 렌더러(renderer)로 전달될 수 있으며, 이는 사용자에 대한 디스플레이를 위한 새로운 프레임을 생성할 수 있다. 프로세스는 게임 애플리케이션의 실행 동안 각 프레임을 렌더링하기 위해 반복될 수 있다. 프로세스가 캐릭터의 컨텍스트(context)로 설명되었지만, 프로세스는 이벤트를 처리하고 사용자에 대한 디스플레이를 위한 출력을 렌더링하는 임의의 프로세스에 적용될 수 있다.
컴퓨팅 시스템의 하드웨어 구성 예시
도 7은 도 6의 사용자 컴퓨팅 시스템(110)에 대한 하드웨어 구성의 일 실시예를 도시한다. 사용자 컴퓨팅 시스템(110)의 다른 변형은 사용자 컴퓨팅 시스템(110)에 구성 요소를 제거하거나 추가하는 것과 같이, 본 명세서에 명시적으로 제시된 예시를 대체할 수 있다. 사용자 컴퓨팅 시스템(110)는 전용 게임 장치(dedicated game device), 스마트 폰, 태블릿, 개인용 컴퓨터, 데스크탑, 랩탑, 스마트 텔레비전(smart television), 자동차 콘솔 디스플레이(car console display) 등을 포함할 수 있다. 또한, (도 7에 명시적으로 도시되어 있지 않지만) 도 6에 관해 설명된 바와 같이, 사용자 컴퓨팅 시스템(110)은 터치스크린 디스플레이(602) 및 터치스크린 인터페이스(604)를 선택적으로 포함할 수 있다.
도시된 바와 같이, 사용자 컴퓨팅 시스템(110)은 사용자 컴퓨팅 시스템(110)의 다른 구성 요소 및 사용자 컴퓨팅 시스템(110)에 대한 외부 구성 요소와 상호동작하는 프로세싱 유닛(620)을 포함한다. 게임 매체(12)와 통신할 수 있는 게임 매체 판독기(game media reader)(22)가 포함될 수 있다. 게임 매체 판독기(22)는 CD-ROM 또는 DVD와 같은 광학 디스크(optical discs)를 판독할 수 있는 광학 디스크 판독기(optical disc reader) 또는 게임 매체(12)로부터 데이터를 수신하고 판독할 수 있는 임의의 다른 유형의 판독기일 수 있다. 일부 실시예에서, 게임 매체 판독기(22)는 선택적이거나 생략될 수 있다. 예를 들어, 게임 콘텐츠(game content) 또는 애플리케이션은 네트워크 I/O(38)를 통해 네트워크에 액세스되어 게임 매체 판독기(22) 및/또는 게임 매체(12)를 선택적으로 렌더링할 수 있다.
사용자 컴퓨팅 시스템(110)은 별도의 그래픽 프로세서(graphics processor)(24)를 포함할 수 있다. 일부 경우에서, 그래픽 프로세서(24)는 APU와 같은 프로세싱 유닛(20)에 내장(built)될 수 있다. 일부 이러한 경우에서, 그래픽 프로세서(24)는 랜덤 액세스 메모리(RAM: random access memory)를 프로세싱 유닛(620)과 공유할 수 있다. 대안적으로 또는 부가적으로, 사용자 컴퓨팅 시스템(110)은 프로세싱 유닛(20)과 별도인 이산 그래픽 프로세서(discrete graphics processor)(24)를 포함할 수 있다. 일부 이러한 경우에서, 그래픽 프로세서(24)는 프로세싱 유닛(20)과 별도인 RAM을 가질 수 있다. 또한, 일부 경우에서, 그래픽 프로세서(24)는 하나 이상의 추가적인 그래픽 프로세서 및/또는 임베디드 또는 비-이산 그래픽 프로세싱 유닛(embedded or non-discrete graphics processing unit)과 함께 동작할 수 있으며, 이는 마더보드(motherboard)에 내장(embedded)될 수 있고, 때때로 온-보드 그래픽 칩 또는 장치(on-board graphics chip or device)로 지칭된다.
또한, 사용자 컴퓨팅 시스템(110)은 I/O(32), 사용자 I/O(user I/O)(34), 디스플레이 I/O(display I/O)(36) 및 네트워크 I/O(network I/O)(38)와 같은 입력/출력을 가능하게 하기 위한 다양한 구성 요소를 포함한다. 전술한 바와 같이, 입력/출력 구성 요소는 일부 경우에서 터치 가능한 장치(touch-enabled devices)를 포함할 수 있다. I/O(32)는 장치(42)를 통해 컴퓨팅 장치(110)를 위한 스토리지를 제공하기 위하여 이동식 스토리지 매체(removable storage media)(44) 및 스토리지 엘리먼트(storage element)(40)와 상호동작한다. 프로세싱 유닛(20)은 게임 상태 데이터 및 임의의 공유 데이터 파일과 같은 데이터를 저장하기 위해 I/O(32)를 통해 통신할 수 있다. 또한, 스토리지(40) 및 이동식 스토리지 매체(44)에 추가하여, 컴퓨팅 장치(600)는 ROM(Read-Only Memory)(46) 및 RAM(48)을 포함하여 도시된다. RAM(48)은 비디오 게임이 플레이될 때와 같이, 자주 액세스되는 데이터를 위해 사용될 수 있다.
사용자 I/O(34)는 프로세싱 유닛(20)과 게임 컨트롤러(game controllers)와 같은 사용자 장치 사이에서 명령을 전송 및 수신하기 위해 사용된다. 일부 실시예에서, 사용자 I/O(34)는 터치스크린 입력을 포함할 수 있다. 앞서 설명된 바와 같이, 터치스크린은 정전식 터치스크린(capacitive touchscreen), 저항성 터치스크린(resistive touchscreen) 또는 사용자로부터의 촉각 입력(tactile inputs)을 통해 사용자 입력을 수신하도록 구성된 다른 유형의 터치스크린 기술일 수 있다. 디스플레이 I/O(36)는 플레이되고 있는 게임의 이미지를 디스플레이하는 데 사용되는 입력/출력 기능을 제공한다. 네트워크 I/O(38)는 네트워크에 대한 입력/출력 기능을 위해 사용된다. 네트워크 I/O(38)는 게임이 온라인으로 플레이되고 있거나 온라인으로 액세스되고 있을 때와 같이, 게임의 실행 중에 사용될 수 있다.
디스플레이 출력 신호는 디스플레이 I/O(36)에 의해 생성될 수 있고, 그래픽, 사용자 인터페이스, 비디오 및/또는 다른 시각적 콘텐츠와 같은 디스플레이 장치 상에 컴퓨팅 장치(110)에 의해 생성된 시각적 콘텐츠를 디스플레이하기 위한 신호를 포함한다. 사용자 컴퓨팅 시스템(110)은 디스플레이 I/O(36)에 의해 생성된 디스플레이 출력 신호를 수신하도록 구성된 하나 이상의 통합된 디스플레이를 포함할 수 있으며, 이는 사용자에게 디스플레이하기 위해 출력될 수 있다. 일부 실시예에 따르면, 디스플레이 I/O(36)에 의해 생성된 디스플레이 출력 신호는 또한 컴퓨팅 장치(110) 외부의 하나 이상의 디스플레이 장치에 출력될 수 있다.
또한, 사용자 컴퓨팅 시스템(110)은 클록(clock)(50), 플래시 메모리(flash memory)(52) 및 다른 구성 요소와 같은 게임과 함께 사용될 수 있는 다른 특징들을 포함할 수 있다. 오디오/비디오 플레이어(56)는 또한 무비와 같은 비디오 시퀀스(video sequence)를 플레이하는데 사용될 수 있다. 다른 구성 요소가 사용자 컴퓨팅 시스템(110)에 제공될 수 있고, 당업자는 사용자 컴퓨팅 시스템(110)의 다른 변형을 이해할 수 있음을 이해해야 한다.
프로그램 코드는 ROM(46), RAM(48) 또는 스토리지(storage)(40)(이는 하드 디스크, 다른 자기 스토리지(magnetic storage), 광학 스토리지, 솔리드 스테이트 드라이브(solid state drives) 및/또는 다른 비 휘발성 스토리지 또는 이들의 조합 또는 변형을 포함할 수 있음)에 저장될 수 있다. 프로그램 코드의 적어도 일부는 스토리지(40)에서, 프로그램 가능한 ROM(ROM, PROM, EPROM, EEPROM 등)에 저장될 수 있고, 및/또는 게임 매체(12)와 같은 이동식 매체(removable media)(CD-ROM, 카트리지(cartridge), 메모리 칩(memory chip) 등일 수 있거나, 필요에 따라 네트워크 또는 다른 전자 채널(electronic channel)을 통해 획득될 수 있음)에 저장될 수 있다. 일반적으로, 프로그램 코드는 유형의 비일시적 신호 베어링 매체(tangible non-transitory signal-bearing medium)로 구체화될 수 있다.
랜덤 액세스 메모리(RAM)(48)(및 가능하게는 다른 스토리지)는 필요에 따라 변수 및 다른 게임 및 프로세서 데이터를 저장하는데 사용될 수 있다. RAM(48)은 사용되고, 게임의 플레이 중에 생성되는 데이터를 보유하고, 그 일부는 프레임 버퍼(frame buffers), 게임 상태(game state), 및/또는 사용자 입력을 해석하고 게임 디스플레이를 생성하는데 필요하거나 사용될 수 있는 다른 데이터를 위해 확보(reserved)될 수 있다. 일반적으로, RAM(48)은 휘발성 스토리지이고, RAM(48) 내에 저장된 데이터는 사용자 컴퓨팅 시스템(110)이 꺼지거나 전력을 잃을 때 손실될 수 있다.
사용자 컴퓨팅 시스템(110)이 게임 매체(12)를 판독하고, 게임을 제공함에 따라, 정보는 게임 매체(12)로부터 판독될 수 있고 RAM(48)과 같은 메모리 장치에 저장될 수 있다. 또한, 스토리지(40), ROM(46), 네트워크(미도시)를 통해 액세스된 서버 또는 이동식 스토리지 매체(removable storage media)(46)로부터의 데이터가 판독되어 RAM(48)에 로드(loaded)될 수 있다. 데이터가 RAM(48)에서 발견되는 것으로 설명되었지만, 데이터는 RAM(48)에 저장될 필요가 없고 게임 매체(12) 및 스토리지(40)와 같은 몇몇 매체들 사이에 분산되거나 프로세싱 유닛(20)에 액세스 가능한 다른 메모리 저장될 수 있다.
예시적인 실시예
본 개시의 실시예는 다음과 같은 조항의 관점에서 설명될 수 있다.
<제1항>
비디오 게임의 실행 중에 이벤트 지연을 테스트하도록 구성된 비디오 게임 테스트 시스템에 있어서,
프론트 엔드 시스템; 및
백 엔드 시스템
을 포함하고,
상기 프론트 엔드 시스템은,
사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 사용자에 의한 상호동작을 에뮬레이트하는 제1 명령을 액세스하고; 및
상기 사용자 컴퓨팅 시스템에 의해 호스팅된 비디오 게임과 상호동작하도록 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공
하도록 구성되고,
상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것은, 타이머를 트리거하고,
상기 백 엔드 시스템은,
상기 사용자 컴퓨팅 시스템으로부터 하나 이상의 출력 신호를 수신하고;
상기 하나 이상의 출력 신호를 픽셀의 세트로 변환하고 - 상기 픽셀의 세트는 상기 사용자 컴퓨팅 시스템에 의한 디스플레이를 위한 프레임 출력에 대응함 -;
상기 픽셀의 세트에 임베디드된 스톱 조건(stop condition)의 존재를 식별하고; 및
상기 타이머가 트리거된 제1 시간, 및 상기 스톱 조건의 존재의 식별과 연관된 제2 시간에 적어도 부분적으로 기초하여 이벤트의 이벤트 지연(event latency)을 결정
하도록 구성되고,
상기 이벤트는 적어도 부분적으로 상기 제1 명령의 실행에 의해 트리거되는,
비디오 게임 테스트 시스템.
<제2항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 사용자 인터페이스 장치와의 하나 이상의 상호동작 시퀀스에 대응하는 하나 이상의 명령 시퀀스를 저장하도록 구성된 비휘발성 스토리지
를 포함하고,
상기 하나 이상의 명령 시퀀스 중 적어도 하나는 상기 제1 명령을 포함하는,
비디오 게임 테스트 시스템.
<제3항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 제1 명령을 저장하도록 구성된 스토리지; 및
상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하도록 구성된 사용자 인터페이스 회로
를 포함하고,
상기 스토리지는,
상기 사용자 컴퓨팅 시스템에 대한 사용자 입력을 시뮬레이션하는 것과 연관된 입력 지연을 감소시키는 상기 사용자 인터페이스 회로와 배치되는,
비디오 게임 테스트 시스템.
<제4항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것과 실질적으로 병렬적으로 상기 타이머를 트리거하도록 더 구성된,
비디오 게임 테스트 시스템.
<제5항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 사용자 컴퓨팅 시스템에 제2 명령을 제공할 때, 제2 타이머를 트리거하도록 더 구성된,
비디오 게임 테스트 시스템.
<제6항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 사용자 컴퓨팅 시스템의 인터페이스 포트를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공함으로써 상기 사용자에 의한 상기 사용자 인터페이스와의 상호동작을 에뮬레이트하도록 구성된 사용자 인터페이스 회로
를 포함하는 비디오 게임 테스트 시스템.
<제7항>
제1항에 있어서,
상기 백 엔드 시스템은 상기 타이머를 포함하는,
비디오 게임 테스트 시스템.
<제8항>
제1항에 있어서,
상기 백 엔드 시스템은,
상기 픽셀의 세트로부터 픽셀의 서브세트를 필터링하고 - 상기 픽셀의 서브세트는 임베디드 데이터를 저장하도록 구성됨 -;
상기 임베디드 데이터를 획득하기 위하여 상기 픽셀의 서브세트를 디코딩하고; 및
상기 임베디드 데이터가 상기 스톱 조건을 포함하는지 결정함으로써,
상기 스톱 조건을 식별하도록 더 구성된,
비디오 게임 테스트 시스템.
<제9항>
제1항에 있어서,
상기 백 엔드 시스템은,
상기 픽셀의 세트로부터 상기 타이머로 픽셀의 서브세트를 제공하도록 구성된 제어기
를 포함하는 비디오 게임 테스트 시스템.
<제10항>
제9항에 있어서,
상기 백 엔드 시스템은,
상기 제1 시간, 상기 제2 시간, 및 상기 제어기와 상기 타이머 사이의 통신 지연에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하도록 더 구성된,
비디오 게임 테스트 시스템.
<제11항>
제1항에 있어서,
상기 프론트 엔드 시스템은 하나 이상의 집적 회로를 포함하고,
상기 백 엔드 시스템은,
상기 프론트 엔드 시스템과 별개인 하나 이상의 집적 회로
를 포함하는,
비디오 게임 테스트 시스템.
<제12항>
제1항에 있어서,
상기 이벤트는,
애니메이션의 출력,
상기 애니메이션 내의 프레임의 출력,
사운드의 출력,
상기 비디오 게임의 상태에서의 변화, 또는
상기 비디오 게임의 구성 요소의 상태에서의 변화
중 적어도 하나를 포함하는,
비디오 게임 테스트 시스템.
<제13항>
제1항에 있어서,
상기 프론트 엔드 시스템은,
상기 이벤트의 상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 비디오 게임의 테스트를 변경하도록 구성된,
비디오 게임 테스트 시스템.
<제14항>
비디오 게임의 실행 중에 이벤트 지연을 테스트하는 방법에 있어서,
상기 방법은,
하드웨어로 구현되는 비디오 게임 테스트 시스템에 의해 구현되고,
상기 방법은,
비디오 게임 내 이벤트의 이벤트 지연을 테스트하기 위한 트리거를 수신하는 단계 - 상기 이벤트 지연은 상기 비디오 게임을 호스팅하는 사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 상호동작과 상기 이벤트의 발생 사이의 시간의 크기를 포함함 -;
상기 트리거를 수신하는 것에 응답하여, 명령 시퀀스 스토리지로부터 제1 명령을 액세스하는 단계 - 상기 제1 명령은 상기 사용자의 의한 상기 사용자 인터페이스 장치와의 상호동작을 에뮬레이트함 -;
상기 사용자 인터페이스 장치와 통신하도록 구성된 상기 사용자 컴퓨팅 시스템의 인터페이스를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공하는 단계 - 상기 비디오 게임 테스트 시스템은 상기 사용자 인터페이스 장치에 대한 대체(substitute)로서 상기 사용자 컴퓨팅 시스템과 인터페이스함 -;
상기 사용자 컴퓨팅 시스템의 출력 포트로부터 출력 신호의 세트를 수신하는 단계;
상기 출력 신호의 세트를 픽셀의 세트로 변환하는 단계;
상기 픽셀의 세트에 임베디드된 스톱 플래그를 식별하는 단계; 및
상기 스톱 플래그를 식별하는 것에 응답하여, 상기 제1 명령을 제공하는 것과 연관된 제1 시간 및 상기 스톱 플래그를 식별하는 것과 연관된 제2 시간에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하는 단계
를 포함하는 방법.
<제15항>
제14항에 있어서,
상기 이벤트 지연을 결정하는 단계는,
상기 비디오 게임 테스트 시스템의 구성 요소 사이의 통신과 연관된 통신 오버헤드 시간에 의하여 결정된 지연을 변경하는 단계
를 더 포함하는 방법.
<제16항>
제14항에 있어서,
상기 이벤트 지연을 결정하는 단계는,
상기 사용자 컴퓨팅 시스템과 연관된 수직 동기화 지연에 의하여 결정된 지연을 변경하는 단계
를 더 포함하는 방법.
<제17항>
제14항에 있어서,
임베디드 데이터를 포함하는 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트를 필터링하는 단계
를 더 포함하고,
상기 픽셀의 세트에 임베디드된 상기 스톱 플래그를 식별하는 단계는,
상기 픽셀의 서브세트에 임베디드 데이터를 추출하는 단계; 및
상기 추출된 데이터가 상기 스톱 플래그를 포함하는지 결정하는 단계
를 포함하는 방법.
<제18항>
제14항에 있어서,
사용자 인터페이스에서 사용자에 대한 프리젠테이션을 위해 상기 이벤트 지연을 출력하는 단계
를 더 포함하는 방법.
<제19항>
제14항에 있어서,
상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 사용자 컴퓨팅 시스템에 제공하기 위한 제2 명령을 선택하는 단계
를 더 포함하는 방법.
<제20항>
비디오 게임의 실행 중에 명령 실행 지연을 테스트하도록 구성된 비디오 게임 테스트 시스템에 있어서,
사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 사용자에 의한 상호동작을 에뮬레이트하는 하나 이상의 명령을 저장하도록 구성된 스토리지; 및
프로세싱 회로
를 포함하고,
상기 프로세싱 회로는,
상기 스토리지로부터 명령을 액세스하고;
상기 사용자 컴퓨팅 시스템에 의해 호스팅되는 비디오 게임과 상호동작하기 위해 상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하고;
상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 제1 시간에 타이머를 시작하고;
상기 사용자 컴퓨팅 시스템으로부터 출력 신호의 세트를 획득하고 - 상기 출력 신호는 디스플레이에서의 디스플레이를 위한 프레임 출력과 연관됨 -;
상기 출력 신호를 픽셀의 세트로 변환하고;
상기 픽셀의 세트의 서브세트에 포함된 임베디드 데이터를 획득하기 위하여 상기 픽셀의 세트를 처리하고;
상기 임베디드 데이터가 스톱 조건을 포함하는 것으로 결정된 제2 시간에 상기 타이머를 스톱시키고; 및
상기 제1 시간 및 상기 제2 시간에 적어도 부분적으로 기초하여 상기 명령과 연관된 명령 실행 지연을 결정하도록 구성된,
비디오 게임 테스트 시스템.
을 더 포함하는 비일시적 컴퓨터 판독 가능 저장 매체.
본 개시의 추가적인 실시예는 다음과 같은 조항의 관점에서 설명될 수 있다.
<제1항>
애플리케이션의 코드 효율성을 테스트하도록 구성된 애플리케이션 테스트 시스템에 있어서,
하드웨어 프로세서
를 포함하고,
상기 하드웨어 프로세서는,
애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하고 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 병렬적으로 타이머를 시작하고 - 상기 타이머가 시작되는 것과 상기 사용자 명령이 상기 컴퓨팅 시스템에 제공되는 것의 사이는 임계 시간 차보다 적게 걸림 -;
상기 컴퓨팅 시스템의 디스플레이 포트를 통해 출력되는, 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하고;
상기 출력이 스톱 이벤트와 연관된 임베디드 데이터를 포함하는지 결정하고; 및
상기 출력이 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함한다고 결정된 경우, 상기 타이머에 기초하여 명령 지연 값을 결정하도록 구성된,
애플리케이션 테스트 시스템.
<제2항>
제1항에 있어서,
상기 타이머는 시간의 경과를 측정하는,
애플리케이션 테스트 시스템.
<제3항>
제1항에 있어서,
상기 타이머는,
상기 타이머의 시작 및 상기 스톱 이벤트의 검출 사이에서 발생하는 이벤트의 수를 측정하는,
애플리케이션 테스트 시스템.
<제4항>
제3항에 있어서,
상기 이벤트는 디스플레이에 출력된 프레임을 포함하는,
애플리케이션 테스트 시스템.
<제5항>
제1항에 있어서,
상기 컴퓨팅 시스템으로부터의 상기 출력을 캡쳐하는 것은,
상기 출력이 상기 디스플레이 포트를 통해 디스플레이에 제공되는 것을 금지하지 않는,
애플리케이션 테스트 시스템.
<제6항>
제1항에 있어서,
상기 스톱 이벤트는,
상기 사용자 명령에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트
를 포함하는 애플리케이션 테스트 시스템.
<제7항>
제1항에 있어서,
상기 애플리케이션은 비디오 게임을 포함하는,
애플리케이션 테스트 시스템.
<제8항>
제1항에 있어서,
상기 하드웨어 프로세서는,
상기 출력을 애니메이션 프레임의 픽셀의 세트로 변환하고;
디코딩된 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트의 적어도 일부를 디코딩하고; 및
상기 디코딩된 픽셀의 서브세트가 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함하는지 결정함으로써,
상기 출력이 상기 스톱 이벤트와 연관된 임베디드 데이터를 포함하는지 결정하도록 더 구성된,
애플리케이션 테스트 시스템.
<제9항>
제1항에 있어서,
상기 명령 지연 값은,
이벤트 트리거 및 대응하는 이벤트의 발생 간의 시간에 대한 측정치
를 포함하고,
상기 이벤트 트리거는,
상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것
을 포함하는 애플리케이션 테스트 시스템.
<제10항>
제1항에 있어서,
상기 하드웨어 프로세서는,
상기 명령 지연 값에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하도록 더 구성된
애플리케이션 테스트 시스템.
<제11항>
애플리케이션의 코드 효율성을 테스트하는 방법에 있어서,
상기 방법은,
특정 컴퓨터 실행 가능 명령어를 이용하여 구성된 애플리케이션 테스트 시스템에 의해 구현되고,
상기 방법은,
애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 단계 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터(counter)를 시작하는 단계;
상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 단계;
상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계; 및
상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함한다고 결정된 경우, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 단계
를 포함하는 방법.
<제12항>
제11항에 있어서,
상기 카운터는,
상기 카운터를 시작하는 것과
상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것
사이에 경과된 시간의 크기를 카운트하는,
방법.
<제13항>
제11항에 있어서,
상기 카운터는,
상기 카운터를 시작하는 것과
상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것
사이에 출력된 프레임 또는 발생된 이벤트의 수를 카운트하는,
방법.
<제14항>
제11항에 있어서,
상기 타겟 이벤트는,
상기 사용자 명령 및 상기 애플리케이션의 상태에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트
를 포함하는 방법.
<제15항>
제11항에 있어서,
상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계는,
상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 단계;
디코딩된 픽셀의 서브세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 단계; 및
상기 디코딩된 픽셀의 서브세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 단계
를 포함하는 방법.
<제16항>
제15항에 있어서,
상기 타겟 이벤트와 연관된 상기 데이터는,
상기 애플리케이션에 삽입된 테스트 코드에 의해 상기 이미지의 픽셀 데이터에 대한 대체로서 상기 이미지에 삽입되는,
방법.
<제17항>
제11항에 있어서,
상기 명령 지연에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하는 단계
를 더 포함하는 방법.
<제18항>
컴퓨터 실행 가능 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서,
상기 컴퓨터 실행 가능 명령어는,
하나 이상의 컴퓨팅 장치에 의해 실행될 때, 상기 하나 이상의 컴퓨팅 장치가,
애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 동작 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터를 시작하는 동작;
상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 동작;
상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작; 및
상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것에 응답하여, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 동작
을 포함하는 동작들을 수행하도록 구성하는 비일시적 컴퓨터 판독 가능 저장 매체.
<제19항>
제18항에 있어서,
상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작은,
상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 동작;
디코딩된 픽셀의 세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 동작; 및
상기 디코딩된 픽셀의 세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 동작
을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체.
<제20항>
제18항에 있어서,
상기 동작들은,
상기 명령 지연에 적어도 부분적으로 기초하여 상기 애플리케이션에 대해 수행할 자동화된 테스트를 선택하는 동작
추가적인 실시예
반드시 모든 목적 또는 이점이 본 명세서에 설명된 임의의 특정 실시예에 따라 달성될 수 있는 것은 아님을 이해해야 한다. 따라서, 예를 들어, 당업자는 특정 실시예들이 본 명세서에서 교시되거나 제안될 수 있는 이점들 또는 다른 목적을 반드시 달성하지 않으면서 본 명세서에서 교시된 이점들의 그룹 또는 하나의 이점을 달성하거나 최적화하는 방식으로 동작하도록 구성될 수 있다는 것을 인식할 것이다.
본 명세서에 설명된 모든 프로세스는 하나 이상의 컴퓨터 또는 프로세서를 포함하는 컴퓨팅 시스템에 의해 실행되는 소프트웨어 코드 모듈(software code modules)을 통해 구현될 수 있으며 완전히 자동화될 수 있다. 코드 모듈은 임의의 유형의 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium) 또는 다른 컴퓨터 저장 장치(computer storage device)에 저장될 수 있다. 일부 또는 모든 방법은 특수한 컴퓨터 하드웨어로 구체화될 수 있다.
본 명세서에 설명된 것 이외의 많은 다른 변형이 이 발명으로부터 명백할 것이다. 예를 들어, 실시예에 따라, 본 명세서에 설명된 임의의 알고리즘의 특정 동작(acts), 이벤트 또는 함수(functions)는 상이한 시퀀스로 수행될 수 있고, 합산되거나, 병합되거나, 생략될 수 있다(예를 들어, 설명된 모든 동작(acts) 또는 이벤트는 알고리즘의 실행에 필요하지 않음). 또한, 특정 실시예에서, 동작 또는 이벤트는 예를 들어, 다중-스레드 프로세싱(multi-threaded processing), 인터럽트 프로세싱(interrupt processing), 또는 다중 프로세서(multiple processors) 또는 프로세서 코어(processor cores)를 통해 또는 순차적으로 수행되는 것이 아니라 다른 병렬 아키텍처(parallel architectures)를 통해 동시에 수행될 수 있다. 또한, 서로 다른 작업(tasks) 또는 프로세스가 함께 기능(function)할 수 있는 컴퓨팅 시스템 및/또는 상이한 머신에 의해 수행될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명된 다양한 예시적인 논리 블록 및 모듈은 프로세싱 유닛 또는 프로세서, 디지털 신호 프로세서(DSP: digital signal processor), 주문형 집적 회로(ASIC: application specific integrated circuit), 필드 프로그램 가능 게이트 어레이(FPGA: field programmable gate array) 또는 다른 프로그래머블 로직 장치(or other programmable logic device), 이산 게이트 또는 트랜지스터 로직(discrete gate or transistor logic), 이산 하드웨어 컴포넌트(discrete hardware components), 또는 본 명세서에 설명된 기능을 수행하도록 설계된 이들의 임의의 조합 등과 같은 머신에 의해 구현되거나 수행될 수 있다. 프로세서는 마이크로프로세서(microprocessor)일 수 있지만, 대안적으로, 프로세서는 컨트롤러, 마이크로컨트롤러(microcontroller) 또는 상태 머신(state machine), 이들의 조합 등일 수 있다. 프로세서는 컴퓨터 실행 가능 명령어(computer-executable instructions)를 처리하도록 구성된 전기 회로를 포함할 수 있다. 다른 실시예에서, 프로세서는 컴퓨터 실행 가능 명령어들을 처리하지 않고 로직 동작들을 수행하는 FPGA 또는 다른 프로그램 가능한 장치를 포함한다. 또한 프로세서는 컴퓨팅 장치의 조합, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로 구현될 수 있다. 본 명세서에서 주로 디지털 기술과 관련하여 설명되었지만, 프로세서는 또한 주로 아날로그 컴포넌트(analog components)를 포함할 수 있다. 컴퓨팅 환경은 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터(mainframe computer), 디지털 신호 프로세서, 휴대용 컴퓨팅 장치, 장치 제어기, 또는 어플라이언스(appliance) 내의 컴퓨팅 엔진(computational engine)을 기반으로 하는 컴퓨터 시스템을 포함하지만 이에 제한되지 않는 임의의 유형의 컴퓨터 시스템을 포함할 수 있다.
무엇보다, 달리 명시하지 않는 한, "할 수 있다(can)", "할 수 있을 것이다(could)", "일 것이다(might)" 또는 "일 수 있다(may)"와 같은 조건 언어(Conditional language)는, 구체적으로 다르게 기술되지 않은 한, 특정 실시예가 특정한 특징, 요소 및/또는 단계를 포함한다는 것 - 다른 실시예에서는 포함하지 않을 수 있지만 - 을 전달하기 위한 것으로 일반적으로 사용되는 컨텍스트 내에서 이해되어야 한다. 따라서, 그러한 조건 언어는 특징, 요소 및/또는 단계가 하나 이상의 실시예에 대해 어떤 방식으로든 요구된다는 것을 의미하는 것으로 일반적으로 의도된 것은 아니며, 이러한 특징, 요소 및/또는 단계가 어떤 특정 실시예에 포함되거나 어떤 특정 실시예에서 수행되는지, 사용자 입력 또는 프롬프팅(prompting)을 가지거나 가지지 않고, 결정하기 위한 로직을 하나 이상의 실시예가 반드시 포함해야 한다는 것을 의미하는 것으로 일반적으로 의도된 것도 아니다.
달리 명시하지 않는 한, "X, Y 또는 Z 중 적어도 하나(at least one of X, Y, or Z)"와 같은 분리 언어(Disjunctive language)는 일반적으로 아이템, 용어 등이 존재한다는 것을 제시하는데 사용되는 컨텍스트와 함께 이해되며, X, Y 또는 Z, 또는 이들의 임의의 조합(예를 들어, X, Y 및/또는 Z) 일 수 있다. 따라서, 이러한 분리 언어는 특정 실시예가 X 중 적어도 하나, Y 중 적어도 하나 또는 Z 중 적어도 하나를 각각 존재(present)할 것을 요구한다는 것을 일반적으로 의미하도록 의도되지 않으며, 의미하지도 않는다.
본 명세서에 설명되거나 및/또는 첨부된 도면에 도시된 흐름도의 임의의 프로세스 설명, 구성 요소 또는 블록은, 프로세스에서 특정 논리 함수(specific logical functions) 또는 구성 요소를 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드의 부분들로 잠재적으로 나타내는 것으로서 이해되어야 한다. 당업자들이 이해할 수 있는 바와 같이, 관련된 기능(functionality)에 따라, 여기에 설명된 실시예들의 범위 내에 대안적인 구현들도 포함된다. 대안적인 구현들에서, 구성 요소(elements) 또는 기능(functions)은 삭제될 수도 있고, 실질적으로 동시에 수행되거나 또는 역순으로 수행되는 것을 포함하여, 도시되거나 설명된 순서와 다르게 수행될 수도 있다.
달리 명시하지 않는 한, "하나의(a)" 또는 "일(an)"과 같은 관사는 일반적으로 하나 이상의 설명된 아이템을 포함하도록 해석되어야 한다. 따라서, "~하도록 구성된 장치(a device configured to)"와 같은 문구는 하나 이상의 인용된 장치를 포함하도록 의도된다. 이러한 하나 이상의 열거된 장치는 명시된 기재 사항을 수행하도록 집합적으로 구성될 수도 있다. 예를 들어, "설명 A, B 및 C를 수행하도록 구성된 프로세서(a processor configured to carry out recitations A, B and C)"는 설명 B 및 C를 수행하도록 구성된 제2 프로세서와 함께 동작하는 설명 A를 수행하도록 구성된 제1 프로세서를 포함할 수 있다.
전술한 실시예에 많은 변형 및 수정이 이루어질 수 있으며, 구성 요소는 다른 허용 가능한 예시들 중 하나로 이해되어야 한다는 점을 강조해야 한다. 이러한 모든 수정 및 변형은 본 명세서의 범위 내에 포함되는 것으로 의도된다.

Claims (40)

  1. 비디오 게임의 실행 중에 이벤트 지연을 테스트하도록 구성된 비디오 게임 테스트 시스템에 있어서,
    프론트 엔드 시스템; 및
    백 엔드 시스템
    을 포함하고,
    상기 프론트 엔드 시스템은,
    사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 사용자에 의한 상호동작을 에뮬레이트하는 제1 명령을 액세스하고; 및
    상기 사용자 컴퓨팅 시스템에 의해 호스팅된 비디오 게임과 상호동작하도록 상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하도록
    구성되고,
    상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것은, 타이머를 트리거하고,
    상기 백 엔드 시스템은,
    상기 사용자 컴퓨팅 시스템으로부터 하나 이상의 출력 신호를 수신하고;
    상기 하나 이상의 출력 신호를 픽셀의 세트로 변환하고 - 상기 픽셀의 세트는 상기 사용자 컴퓨팅 시스템에 의한 디스플레이를 위한 프레임 출력에 대응함 -;
    상기 픽셀의 세트에서 스톱 조건(stop condition)의 존재를 식별하고; 및
    상기 타이머가 트리거된 제1 시간, 및 상기 스톱 조건의 존재의 식별과 연관된 제2 시간에 적어도 부분적으로 기초하여 이벤트의 이벤트 지연을 결정하도록
    구성되고,
    상기 이벤트는 적어도 부분적으로 상기 제1 명령의 실행에 의해 트리거되고,
    상기 스톱 조건은, 상기 프레임 출력에 대응하는 상기 픽셀의 세트 중 일부에 임베디드(embeded) 되는,
    비디오 게임 테스트 시스템.
  2. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 사용자 인터페이스 장치와의 하나 이상의 상호동작 시퀀스에 대응하는 하나 이상의 명령 시퀀스를 저장하도록 구성된 비휘발성 스토리지
    를 포함하고,
    상기 하나 이상의 명령 시퀀스 중 적어도 하나는 상기 제1 명령을 포함하는,
    비디오 게임 테스트 시스템.
  3. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 제1 명령을 저장하도록 구성된 스토리지; 및
    상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하도록 구성된 사용자 인터페이스 회로
    를 포함하고,
    상기 스토리지는,
    상기 사용자 컴퓨팅 시스템에 대한 사용자 입력을 시뮬레이션하는 것과 연관된 입력 지연을 감소시키는 상기 사용자 인터페이스 회로와 배치되는,
    비디오 게임 테스트 시스템.
  4. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 제1 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 것과 실질적으로 병렬적으로 상기 타이머를 트리거하도록 더 구성된,
    비디오 게임 테스트 시스템.
  5. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 사용자 컴퓨팅 시스템에 제2 명령을 제공할 때, 제2 타이머를 트리거하도록 더 구성된,
    비디오 게임 테스트 시스템.
  6. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 사용자 컴퓨팅 시스템의 인터페이스 포트를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공함으로써 상기 사용자에 의한 상기 사용자 인터페이스와의 상호동작을 에뮬레이트하도록 구성된 사용자 인터페이스 회로
    를 포함하는 비디오 게임 테스트 시스템.
  7. 제1항에 있어서,
    상기 백 엔드 시스템은 상기 타이머를 포함하는,
    비디오 게임 테스트 시스템.
  8. 제1항에 있어서,
    상기 백 엔드 시스템은,
    상기 픽셀의 세트로부터 픽셀의 서브세트를 필터링하고 - 상기 픽셀의 서브세트는 임베디드 데이터를 저장하도록 구성됨 -;
    상기 임베디드 데이터를 획득하기 위하여 상기 픽셀의 서브세트를 디코딩하고; 및
    상기 임베디드 데이터가 상기 스톱 조건을 포함하는지 결정함으로써,
    상기 스톱 조건을 식별하도록 더 구성된,
    비디오 게임 테스트 시스템.
  9. 제1항에 있어서,
    상기 백 엔드 시스템은,
    상기 픽셀의 세트로부터 상기 타이머로 픽셀의 서브세트를 제공하도록 구성된 제어기
    를 포함하는 비디오 게임 테스트 시스템.
  10. 제9항에 있어서,
    상기 백 엔드 시스템은,
    상기 제1 시간, 상기 제2 시간, 및 상기 제어기와 상기 타이머 사이의 통신 지연에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하도록 더 구성된,
    비디오 게임 테스트 시스템.
  11. 제1항에 있어서,
    상기 프론트 엔드 시스템은 하나 이상의 집적 회로를 포함하고,
    상기 백 엔드 시스템은,
    상기 프론트 엔드 시스템과 별개인 하나 이상의 집적 회로
    를 포함하는,
    비디오 게임 테스트 시스템.
  12. 제1항에 있어서,
    상기 이벤트는,
    애니메이션의 출력,
    상기 애니메이션 내의 프레임의 출력,
    사운드의 출력,
    상기 비디오 게임의 상태에서의 변화, 또는
    상기 비디오 게임의 구성 요소의 상태에서의 변화
    중 적어도 하나를 포함하는,
    비디오 게임 테스트 시스템.
  13. 제1항에 있어서,
    상기 프론트 엔드 시스템은,
    상기 이벤트의 상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 비디오 게임의 테스트를 변경하도록 구성된,
    비디오 게임 테스트 시스템.
  14. 비디오 게임의 실행 중에 이벤트 지연을 테스트하는 방법에 있어서,
    상기 방법은,
    하드웨어로 구현되는 비디오 게임 테스트 시스템에 의해 구현되고,
    상기 방법은,
    비디오 게임 내 이벤트의 이벤트 지연을 테스트하기 위한 트리거를 수신하는 단계 - 상기 이벤트 지연은 상기 비디오 게임을 호스팅하는 사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 상호동작과 상기 이벤트의 발생 사이의 시간의 크기를 포함함 -;
    상기 트리거를 수신하는 것에 응답하여, 명령 시퀀스 스토리지로부터 제1 명령을 액세스하는 단계 - 상기 제1 명령은 상기 사용자의 의한 상기 사용자 인터페이스 장치와의 상호동작을 에뮬레이트함 -;
    상기 사용자 인터페이스 장치와 통신하도록 구성된 상기 사용자 컴퓨팅 시스템의 인터페이스를 통해 상기 사용자 컴퓨팅 시스템에 상기 제1 명령을 제공하는 단계 - 상기 비디오 게임 테스트 시스템은 상기 사용자 인터페이스 장치에 대한 대체(substitute)로서 상기 사용자 컴퓨팅 시스템과 인터페이스함 -;
    상기 사용자 컴퓨팅 시스템의 출력 포트로부터 출력 신호의 세트를 수신하는 단계;
    상기 출력 신호의 세트를 픽셀의 세트로 변환하는 단계;
    상기 픽셀의 세트에서 스톱 플래그를 식별하는 단계; 및
    상기 스톱 플래그를 식별하는 것에 응답하여, 상기 제1 명령을 제공하는 것과 연관된 제1 시간 및 상기 스톱 플래그를 식별하는 것과 연관된 제2 시간에 적어도 부분적으로 기초하여 상기 이벤트의 상기 이벤트 지연을 결정하는 단계
    를 포함하고,
    상기 스톱 플래그는, 상기 픽셀의 세트 중 일부에 임베디드 되는,
    방법.
  15. 제14항에 있어서,
    상기 이벤트 지연을 결정하는 단계는,
    상기 비디오 게임 테스트 시스템의 구성 요소 사이의 통신과 연관된 통신 오버헤드 시간에 의하여 결정된 지연을 변경하는 단계
    를 더 포함하는 방법.
  16. 제14항에 있어서,
    상기 이벤트 지연을 결정하는 단계는,
    상기 사용자 컴퓨팅 시스템과 연관된 수직 동기화 지연에 의하여 결정된 지연을 변경하는 단계
    를 더 포함하는 방법.
  17. 제14항에 있어서,
    임베디드 데이터를 포함하는 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트를 필터링하는 단계
    를 더 포함하고,
    상기 픽셀의 세트에 임베디드된 상기 스톱 플래그를 식별하는 단계는,
    상기 픽셀의 서브세트에 임베디드 데이터를 추출하는 단계; 및
    상기 추출된 데이터가 상기 스톱 플래그를 포함하는지 결정하는 단계
    를 포함하는 방법.
  18. 제14항에 있어서,
    사용자 인터페이스에서 사용자에 대한 프리젠테이션을 위해 상기 이벤트 지연을 출력하는 단계
    를 더 포함하는 방법.
  19. 제14항에 있어서,
    상기 이벤트 지연에 적어도 부분적으로 기초하여 상기 사용자 컴퓨팅 시스템에 제공하기 위한 제2 명령을 선택하는 단계
    를 더 포함하는 방법.
  20. 비디오 게임의 실행 중에 명령 실행 지연을 테스트하도록 구성된 비디오 게임 테스트 시스템에 있어서,
    사용자 컴퓨팅 시스템의 사용자 인터페이스 장치와의 사용자에 의한 상호동작을 에뮬레이트하는 하나 이상의 명령을 저장하도록 구성된 스토리지; 및
    프로세싱 회로
    를 포함하고,
    상기 프로세싱 회로는,
    상기 스토리지로부터 명령을 액세스하고;
    상기 사용자 컴퓨팅 시스템에 의해 호스팅되는 비디오 게임과 상호동작하기 위해 상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하고;
    상기 명령을 상기 사용자 컴퓨팅 시스템에 제공하는 제1 시간에 타이머를 시작하고;
    상기 사용자 컴퓨팅 시스템으로부터 출력 신호의 세트를 획득하고 - 상기 출력 신호는 디스플레이에서의 디스플레이를 위한 프레임 출력과 연관됨 -;
    상기 출력 신호를 픽셀의 세트로 변환하고;
    상기 픽셀의 세트의 서브세트에 포함된 임베디드 데이터를 획득하기 위하여 상기 픽셀의 세트를 처리하고;
    상기 임베디드 데이터가 스톱 조건을 포함하는 것으로 결정된 제2 시간에 상기 타이머를 스톱시키고; 및
    상기 제1 시간 및 상기 제2 시간에 적어도 부분적으로 기초하여 상기 명령과 연관된 명령 실행 지연을 결정하도록 구성되고,
    상기 스톱 조건은, 상기 프레임 출력에 연관되는 상기 픽셀의 세트 중 일부에 임베디드 되는,
    비디오 게임 테스트 시스템.
  21. 애플리케이션의 코드 효율성을 테스트하도록 구성된 애플리케이션 테스트 시스템에 있어서,
    하드웨어 프로세서
    를 포함하고,
    상기 하드웨어 프로세서는,
    애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하고 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
    상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 병렬적으로 타이머를 시작하고 - 상기 타이머가 시작되는 것과 상기 사용자 명령이 상기 컴퓨팅 시스템에 제공되는 것의 사이는 임계 시간 차보다 적게 걸림 -;
    상기 컴퓨팅 시스템의 디스플레이 포트를 통해 출력되는, 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하고;
    상기 출력이 스톱 이벤트와 연관된 임베디드 데이터를 포함하는지 결정하고; 및
    상기 출력이 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함한다고 결정된 경우, 상기 타이머에 기초하여 명령 지연 값을 결정하도록 구성되고,
    상기 스톱 이벤트와 연관된 상기 임베디드 데이터는, 상기 출력의 일부에 임베디드 되는,
    애플리케이션 테스트 시스템.
  22. 제21항에 있어서,
    상기 타이머는 시간의 경과를 측정하는,
    애플리케이션 테스트 시스템.
  23. 제21항에 있어서,
    상기 타이머는,
    상기 타이머의 시작 및 상기 스톱 이벤트의 검출 사이에서 발생하는 이벤트의 수를 측정하는,
    애플리케이션 테스트 시스템.
  24. 제23항에 있어서,
    상기 이벤트는 디스플레이에 출력된 프레임을 포함하는,
    애플리케이션 테스트 시스템.
  25. 제21항에 있어서,
    상기 컴퓨팅 시스템으로부터의 상기 출력을 캡쳐하는 것은,
    상기 출력이 상기 디스플레이 포트를 통해 디스플레이에 제공되는 것을 금지하지 않는,
    애플리케이션 테스트 시스템.
  26. 제21항에 있어서,
    상기 스톱 이벤트는,
    상기 사용자 명령에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트
    를 포함하는 애플리케이션 테스트 시스템.
  27. 제21항에 있어서,
    상기 애플리케이션은 비디오 게임을 포함하는,
    애플리케이션 테스트 시스템.
  28. 제21항에 있어서,
    상기 하드웨어 프로세서는,
    상기 출력을 애니메이션 프레임의 픽셀의 세트로 변환하고;
    디코딩된 픽셀의 서브세트를 획득하기 위하여 상기 픽셀의 세트의 적어도 일부를 디코딩하고; 및
    상기 디코딩된 픽셀의 서브세트가 상기 스톱 이벤트와 연관된 상기 임베디드 데이터를 포함하는지 결정함으로써,
    상기 출력이 상기 스톱 이벤트와 연관된 임베디드 데이터를 포함하는지 결정하도록 더 구성된,
    애플리케이션 테스트 시스템.
  29. 제21항에 있어서,
    상기 명령 지연 값은,
    이벤트 트리거 및 대응하는 이벤트의 발생 간의 시간에 대한 측정치
    를 포함하고,
    상기 이벤트 트리거는,
    상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것
    을 포함하는 애플리케이션 테스트 시스템.
  30. 제21항에 있어서,
    상기 하드웨어 프로세서는,
    상기 명령 지연 값에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하도록 더 구성된
    애플리케이션 테스트 시스템.
  31. 애플리케이션의 코드 효율성을 테스트하는 방법에 있어서,
    상기 방법은,
    특정 컴퓨터 실행 가능 명령어를 이용하여 구성된 애플리케이션 테스트 시스템에 의해 구현되고,
    상기 방법은,
    애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 단계 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
    상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터(counter)를 시작하는 단계;
    상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 단계;
    상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계; 및
    상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함한다고 결정된 경우, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 단계
    를 포함하고,
    상기 타겟 이벤트와 연관된 상기 데이터는, 상기 출력의 일부에 임베디드 되는,
    방법.
  32. 제31항에 있어서,
    상기 카운터는,
    상기 카운터를 시작하는 것과
    상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것
    사이에 경과된 시간의 크기를 카운트하는,
    방법.
  33. 제31항에 있어서,
    상기 카운터는,
    상기 카운터를 시작하는 것과
    상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것
    사이에 출력된 프레임 또는 발생된 이벤트의 수를 카운트하는,
    방법.
  34. 제31항에 있어서,
    상기 타겟 이벤트는,
    상기 사용자 명령 및 상기 애플리케이션의 상태에 응답하여 상기 애플리케이션에 의해 수행되는 이벤트
    를 포함하는 방법.
  35. 제31항에 있어서,
    상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 단계는,
    상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 단계;
    디코딩된 픽셀의 서브세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 단계; 및
    상기 디코딩된 픽셀의 서브세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 단계
    를 포함하는 방법.
  36. 제35항에 있어서,
    상기 타겟 이벤트와 연관된 상기 데이터는,
    상기 애플리케이션에 삽입된 테스트 코드에 의해 상기 이미지의 픽셀 데이터에 대한 대체로서 상기 이미지에 삽입되는,
    방법.
  37. 제31항에 있어서,
    상기 명령 지연에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 제공할 제2 사용자 명령을 선택하는 단계
    를 더 포함하는 방법.
  38. 컴퓨터 실행 가능 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 실행 가능 명령어는,
    하나 이상의 컴퓨팅 장치에 의해 실행될 때, 상기 하나 이상의 컴퓨팅 장치가,
    애플리케이션을 호스팅하는 컴퓨팅 시스템에 사용자 명령을 제공하는 동작 - 상기 사용자 명령은 상기 컴퓨팅 시스템에서 상기 애플리케이션과의 사용자 상호동작을 시뮬레이션함 -;
    상기 컴퓨팅 시스템에 상기 사용자 명령을 제공하는 것과 실질적으로 병렬적으로 카운터를 시작하는 동작;
    상기 컴퓨팅 시스템의 출력 포트를 통해 출력되는 상기 컴퓨팅 시스템으로부터의 출력을 캡쳐하는 동작;
    상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작; 및
    상기 출력이 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 것에 응답하여, 상기 카운터의 값에 기초하여 명령 지연을 결정하는 동작
    을 포함하는 동작들을 수행하도록 구성되고,
    상기 타겟 이벤트와 연관된 상기 데이터는, 상기 출력의 일부에 임베디드 되는,
    비일시적 컴퓨터 판독 가능 저장 매체.
  39. 제38항에 있어서,
    상기 출력이 타겟 이벤트와 연관된 데이터를 포함하는지 결정하는 동작은,
    상기 출력을 이미지에 대한 픽셀의 세트로 변환하는 동작;
    디코딩된 픽셀의 세트를 획득하기 위하여, 상기 픽셀의 세트의 적어도 일부를 디코딩하는 동작; 및
    상기 디코딩된 픽셀의 세트가 상기 타겟 이벤트와 연관된 상기 데이터를 포함하는지 결정하는 동작
    을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체.
  40. 제38항에 있어서,
    상기 동작들은,
    상기 명령 지연에 적어도 부분적으로 기초하여 상기 애플리케이션에 대해 수행할 자동화된 테스트를 선택하는 동작
    을 더 포함하는 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020190050794A 2019-03-20 2019-04-30 비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템 KR102265017B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/359,802 2019-03-20
US16/359,836 2019-03-20
US16/359,802 US11020658B2 (en) 2019-03-20 2019-03-20 System for testing command execution latency within a video game
US16/359,836 US10963365B2 (en) 2019-03-20 2019-03-20 System for testing command execution latency within an application

Publications (2)

Publication Number Publication Date
KR20200112568A KR20200112568A (ko) 2020-10-05
KR102265017B1 true KR102265017B1 (ko) 2021-06-15

Family

ID=72563848

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190050794A KR102265017B1 (ko) 2019-03-20 2019-04-30 비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템

Country Status (2)

Country Link
KR (1) KR102265017B1 (ko)
CN (1) CN111714875B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220517B (zh) * 2021-05-28 2023-01-10 Oppo广东移动通信有限公司 操作耗时测试系统、信号处理设备及信号处理方法
CN113426101B (zh) * 2021-06-22 2023-10-20 咪咕互动娱乐有限公司 教学方法、装置、设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120071236A1 (en) * 2009-09-30 2012-03-22 Zynga Inc. Apparatuses, methods and systems for a live online game tester
JP2012139448A (ja) * 2011-01-05 2012-07-26 Nintendo Co Ltd 遅延測定システムおよび遅延測定方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4150410B2 (ja) * 2007-02-23 2008-09-17 株式会社コナミデジタルエンタテインメント ゲームシステム、ゲーム制御方法、ならびに、プログラム
US9808724B2 (en) * 2010-09-20 2017-11-07 Activision Publishing, Inc. Music game software and input device utilizing a video player
CN104158696B (zh) * 2013-05-13 2018-03-06 华为技术有限公司 一种测量操作延时的确定方法、装置及终端
CN105718363B (zh) * 2016-01-15 2019-05-03 青岛海信移动通信技术股份有限公司 手机响应启动时间点获取方法和装置
CN108704314B (zh) * 2018-05-25 2021-10-26 网易(杭州)网络有限公司 一种音乐游戏中延迟校准的方法、装置和电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120071236A1 (en) * 2009-09-30 2012-03-22 Zynga Inc. Apparatuses, methods and systems for a live online game tester
JP2012139448A (ja) * 2011-01-05 2012-07-26 Nintendo Co Ltd 遅延測定システムおよび遅延測定方法

Also Published As

Publication number Publication date
KR20200112568A (ko) 2020-10-05
CN111714875A (zh) 2020-09-29
CN111714875B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
US10963365B2 (en) System for testing command execution latency within an application
US11904238B2 (en) System for testing command execution latency within a video game
US10282280B1 (en) Automated scalable video game testing system
US11318390B2 (en) Systems and methods for hardware-based matchmaking
US9717989B2 (en) Adding triggers to cloud-based emulated games
JP5739872B2 (ja) モーションキャプチャにモデルトラッキングを適用するための方法及びシステム
US9095775B2 (en) User interface and method of user interaction
US11654365B2 (en) Secure anti-cheat system
JP7171766B2 (ja) チャレンジゲームシステム
US9044672B2 (en) Game system, game apparatus, storage medium and game controlling method
US8360856B2 (en) Entertainment apparatus and method
KR102265017B1 (ko) 비디오 게임 내에서 명령 실행 지연을 테스트하기 위한 시스템
GB2555596A (en) System and method of input verification
JP6959267B2 (ja) 場所ベースゲームプレイコンパニオンアプリケーションを使用するチャレンジの生成
US20240058700A1 (en) Mobile game trainer using console controller
Hurmuzi et al. COMPARATIVE ANALYSIS OF CHEAP SINGLE-BOARD COMPUTER FOR OPTIMAL PERFORMANCE IN NINTENDO WII EMULATION
CN118098032A (zh) 一种增强现实仿真方法及ar设备
JP2001252471A (ja) ゲーム装置、画像表示の制御方法及び記録媒体
JP2009219525A (ja) プログラム、情報記憶媒体及びゲーム装置

Legal Events

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