KR20230108961A - 전자 장치 및 방법 - Google Patents

전자 장치 및 방법 Download PDF

Info

Publication number
KR20230108961A
KR20230108961A KR1020220004741A KR20220004741A KR20230108961A KR 20230108961 A KR20230108961 A KR 20230108961A KR 1020220004741 A KR1020220004741 A KR 1020220004741A KR 20220004741 A KR20220004741 A KR 20220004741A KR 20230108961 A KR20230108961 A KR 20230108961A
Authority
KR
South Korea
Prior art keywords
game
user input
input
module
user
Prior art date
Application number
KR1020220004741A
Other languages
English (en)
Inventor
최주현
김성주
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020220004741A priority Critical patent/KR20230108961A/ko
Priority to PCT/KR2022/021609 priority patent/WO2023136516A1/ko
Priority to EP22920843.4A priority patent/EP4406630A1/en
Publication of KR20230108961A publication Critical patent/KR20230108961A/ko
Priority to US18/647,978 priority patent/US20240293737A1/en

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/73Authorising game programs or game devices, e.g. checking authenticity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 개시의 다양한 실시예는, 클라우드 게임 환경에 있어서, 사용자의 게임 명령 입력을 전담하는 프로세스를 별도로 분리하여, 사용자의 게임 명령 입력을 게임 서버로 전달하는 단계에서 발생하는 지연을 최소화하는 전자 장치를 제공한다.

Description

전자 장치 및 방법{ELECTRONIC DEVICE AND METHOD}
본 개시의 다양한 실시예들은 대화형 비디오 게임용 전자 장치 및 방법에 관한 것이다.
클라우드 게임은 클라우드 서버에 게임을 설치해 실행하고 스마트폰, TV, PC와 같은 디스플레이 장치에서 실시간 스트리밍 방식으로 재생하는 게임 서비스이다. 클라우드 게임을 하는 사용자는 디스플레이 장치에 게임 컨트롤러 또는 게임패드를 연결하여, 입력 신호를 클라우드 서버에서 재생되는 화면에 실시간으로 전달하는 방식으로 게임을 진행한다. 게임의 엔진과 게임 데이터 및 게임을 실행하는데 필요한 거의 모든 자원은 클라우드 서버에 저장되어 있고, 사용자는 언제 어디에서나 인터넷과 디스플레이 장치, 게임패드와 같은 사용자 입력 장치만 있다면 게임을 이용할 수 있다.
클라우드 게임 환경에서 전자 장치는 게임 관련 단일 프로세스가 사용자 입력을 게임 서버로 전달하고, 게임 서버로부터 수신한 게임 영상 및/또는 음성 스트림 데이터를 디코딩하고 렌더링하여 출력한다. 이 과정에서 상기 게임 관련 단일 프로세스는 기반 프레임워크인 브라우저 엔진의 UI 이벤트, 입출력 처리, 파일시스템 처리, 네트워크 이벤트 처리와 경쟁하게 된다. 또한 상기 게임 관련 단일 프로세스의 한 스레드가 IO 블록에 빠지면 해당 프로세스의 모든 스레드가 블록 상태가 될 수 있다. 이러한 스레드 경쟁과 병목 현상으로 인해, 사용자가 입력한 게임 명령에 대응하는 화면의 출력이 지연될 수 있다. 특히, 사용자 입력을 게임 서버로 전달하는 부분은 작은 크기의 데이터를 빈번하게 전송한다는 특징으로 인해 스레드 경쟁 현상을 더 가중화하고, 게임의 반응성을 지연시킬 수 있다.
본 개시의 다양한 실시예들은, 전자 장치내의 스레드 경쟁을 완화하고, 사용자의 게임 명령 입력을 게임 서버로 전달하는 단계에서 발생하는 지연을 단축하여, 게임의 반응성을 향상시키는 전자 장치와 방법을 제공할 수 있다.
본 개시의 일 측면에 따르면, 전자 장치는, 외부 네트워크를 통한 게임 서버 또는 입력 장치와 데이터를 송수신하도록 구성된 통신부, 디스플레이부, 오디오 출력부, 적어도 하나의 프로그램을 저장하는 메모리 및 상기 저장하는 메모리 및 상기 디스플레이부, 상기 오디오 출력부, 상기 메모리 또는 상기 통신부와 전기적으로 연결되고, 상기 메모리에 저장된 프로그램의 하나 이상의 명령어를 실행하는 적어도 하나의 프로세서를 포함하며, 상기 적어도 하나의 프로세서는, 사용자로부터 게임 애플리케이션을 선택하는 이벤트를 획득하면, 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하는 동작을 수행하도록 게임 구동 모듈을 실행하도록 구성되며, 상기 게임 구동 모듈은, 게임이 개시되었음을 인지하면, 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하도록 사용자 입력 오프로딩 모듈을 생성하고, 상기 생성된 사용자 입력 오프로딩 모듈로 상기 사용자 입력을 상기 게임 서버로 전달하기 위해 필요한 위임 정보를 제공할 수 있다.
본 개시의 다른 측면에 따르면, 전자 장치에서의 동작 방법은, 사용자로부터 게임 애플리케이션을 선택하는 이벤트를 획득하면 게임 구동 모듈을 실행하는 동작, 상기 게임 구동 모듈이 입력 장치로부터 입력되는 사용자 입력을 통신부를 통해 게임 서버로 전달하는 동작, 상기 게임 구동 모듈이 게임이 개시되었음을 인지하면, 사용자 입력 오프로딩 모듈을 생성하는 동작, 상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈로 위임 정보를 제공하는 동작 및 상기 위임 정보를 이용하여 상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하는 동작을 포함할 수 있다.
본 개시의 다양한 실시예들에 따르면, 전자 장치내의 게임 애플리케이션에서 사용자의 게임 명령 입력을 전담하는 프로세스를 별도로 분리하여, 상기 게임 애플리케이션의 실행 복잡도와 스레드 경쟁으로 인한 병목 현상을 해소하고, 게임의 반응성을 향상시킬 수 있다.
도 1은, 본 개시의 다양한 실시예에 따른, 클라우드 게임 시스템의 구성도이다.
도 2는, 본 개시의 일 실시예에 따른, 디스플레이 장치의 기능 블럭도이다.
도 3은, 본 개시의 일 실시예에 따라, 게임이 진행되는 과정에서 데이터의 흐름을 도시한 도면이다.
도 4는, 본 개시의 일 실시예에 따른, 디스플레이 장치의 동작 흐름도이다.
도 5는, 본 개시의 일 실시예에 따른, 게임 구동 모듈의 동작 흐름도이다.
도 6은, 본 개시의 일 실시예에 따른, 사용자 입력 오프로딩 모듈의 동작 흐름도이다.
도 7은, 본 개시의 일 실시예에 따른, 디스플레이 장치의 메시지 시퀀스 다이어그램이다.
도 8은, 본 개시의 일 실시예에 따른, 게임 플레이 입력 및 게임 출력 시의 메시지 시퀀스 다이어그램이다.
도 9는, 본 개시의 다른 실시예에 따른, 게임 플레이 입력 및 게임 출력 시의 메시지 시퀀스 다이어그램이다.
도 10은, 본 개시의 일 실시예에 따른, 디스플레이 장치의 계층 구조도이다.
도 11은, 본 개시의 일 실시예에 따라, 사용자 입력 오프로딩 모듈이 커널 영역에서 동작할 시 컨텍스트 스위칭의 변화를 도시한 도면이다.
도 12는, 본 개시의 일 실시예에 따른, 게임 구동 모듈의 상태 천이도이다.
도 13은, 본 개시의 일 실시예에 따른, 사용자 입력 오프로딩 모듈의 상태 천이도이다.
이하 첨부된 도면을 참고하여 다양한 실시예들을 상세히 설명한다. 후술될 설명에서, 전자 장치의 일 예는 디스플레이 장치일 수 있다. 상세한 구성 및 구성 요소와 같은 특정 세부 사항은 단지 본 개시의 실시예들에 대한 전반적인 이해를 돕기 위해 제공될 것이다. 도면의 설명과 관련하여, 동일하거나 유사한 구성요소에 대해서는 동일하거나 유사한 참조 부호가 사용될 수 있다. 또한, 도면 및 관련된 설명에서는, 잘 알려진 기능 및 구성에 대한 설명이 명확성과 간결성을 위해 생략될 수 있다.
도 1은, 본 개시의 다양한 실시예에 따른, 클라우드 게임 시스템의 구성도이다.
도 1을 참조하면, 일 실시예에 따른 클라우드 게임 시스템(100)은 게임 서버(110), 디스플레이 장치(120), 또는 하나 이상의 입력 장치(130)를 포함할 수 있다. 상기 게임 서버(110), 상기 디스플레이 장치(120) 또는 상기 입력 장치(130)는 서로 네트워크(140)로 연결되어 통신할 수 있다.
일 실시예에 의하면, 게임 서버(110)는 디스플레이 장치(120)로 게임 서비스를 제공할 수 있다. 상기 게임 서버(110)는 게임 서비스를 제공하는데 필요한 하드웨어, 소프트웨어 또는 데이터를 상기 디스플레이 장치(120)로 제공할 수 있다. 상기 게임 서버(110)는 고 사양을 요구하는 게임을 실행하기 위해 고성능의 GPU(Graphic Processing Unit)가 내장된 그래픽카드를 구비할 수 있다. 상기 게임 서버(110)는 사용자가 선택한 게임을 실행하고, 상기 사용자가 입력하는 게임 플레이 명령에 대응되는 게임 화면을 렌더링하고 압축하여 상기 디스플레이 장치(120)로 스트리밍할 수 있다.
일 실시예에 의하면, 게임 서버(110)는 게임 서비스를 위한 사용자 계정을 관리할 수 있다. 상기 게임 서버(110)는 서비스하는 게임에 대한 사용자 계정, 패스워드, 결제 정보와 같은 속성 데이터를 등록 및 승인하고, 상기 사용자 계정에 따른 설정을 수행하여, 다른 사용자 계정과 구분하여 관리할 수 있다.
일 실시예에 의하면, 게임 서버(110)는 게임 소프트웨어 또는 사용자 계정별 세션 정보를 저장, 관리할 수 있다. 상기 게임 서버(110)는 사용자의 계정별 게임 데이터, 예를 들어, 게임 포인트, 게임 아이템, 게임 레벨, 게임 진행 상태와 같은 게임 세션 정보를 저장할 수 있다.
일 실시예에 의하면, 게임 서버(110)는 디스플레이 장치(120)와 연결 상태의 최적화를 위해 신호 조정 절차를 수행할 수 있다. 상기 게임 서버(110)는, 예를 들어, 게임 영상 스트리밍 중간에 비디오 품질을 변경할 수 있다. 상기 게임 서버(110)는 통신 프로토콜, 가용한 시스템 리소스(예: GPU) 또는 스트리밍 속도에 근거하여, 게임 화면 재생에 관한 최적의 품질을 선택할 수 있다.
일 실시예에 의하면, 게임 서버(110)는 단일 서버 혹은 복수의 서버로 운용될 수 있다. 상기 게임 서버(110)는 스트리밍 서버(미도시) 또는 인증 서버(미도시)와 물리적으로 동일한 서버에 존재할 수 있으며, 별도의 서버로 존재하여 이동 통신망으로 연결될 수 있다.
일 실시예에 의하면, 디스플레이 장치(120)는, 예를 들어, TV, 스마트폰, 태블릿 PC, 랩탑 PC, 게임 콘솔, HMD(Head Mounted Display), 웨어러블 장치와 같은 기기 중 적어도 하나를 포함할 수 있다.
일 실시예에 의하면, 디스플레이 장치(120)는 접속된 네트워크 또는 접속된 네트워크에 링크된 다른 네트워크를 통해, 게임 서버(110)에 접속할 수 있다.
일 실시예에 의하면, 디스플레이 장치(120)는 입력 장치(130)로부터 수신된 게임 플레이 명령을 게임 서버(110)로 전송하고, 상기 게임 플레이 명령에 대응되는 게임 스트림 데이터를 수신할 수 있다. 상기 게임 스트림 데이터는 영상 데이터, 음성 데이터, 촉각 데이터를 포함할 수 있다. 상기 디스플레이 장치(120)는 상기 게임 스트림 데이터를 역다중화(Demultiplexing) 및 디코딩(Decoding)하여 출력할 수 있다. 사용자는 상기 입력 장치(130)를 통해 입력한 게임 플레이 명령이 반영된 게임 화면과 소리를 상기 디스플레이 장치(120)를 통해 받아봄으로써 마치 상기 디스플레이 장치(120)에서 게임이 실행되는 듯한 체험을 할 수 있다.
일 실시예에 의하면, 입력 장치(130)는 게임 패드, 게임 컨트롤러, 가상현실 컨트롤러, 증강현실 컨트롤러, 조이스틱(Joystick), 썸스틱(Thumbstick), 마우스, 키보드 중 적어도 하나를 포함할 수 있다.
일 실시예에 의하면, 입력 장치(130)는 데이터 전송 기능을 구비하고, 사용자의 조작에 따른 입력 신호를 발생하는 키패드, 터치패드, 트랙패드와 같은 방향성 패드, 트랙볼(Trackball), 조그 휠(Jog Wheel) 또는 전자 디지타이저(Electronic Digitizer) 중 적어도 하나를 포함할 수 있다.
일 실시예에 의하면, 입력 장치(130)는 터치 스크린을 활용하여 구현한 가상 컨트롤러 패드를 포함할 수 있다.
일 실시예에 의하면, 입력 장치(130)가 키패드를 구비하지 않은 경우, 디스플레이 장치(120)는 사용자 계정 입력과 같은 입력이 가능하도록 가상 키보드를 화면에 제공할 수 있다. 사용자는 상기 입력 장치(130)를 조작하여 상기 가상 키보드에 접근할 수 있다.
일 실시예에 의하면, 입력 장치(130)는 디스플레이 장치(120)와 유선 또는 무선 통신을 통해 연결될 수 있다.
일 실시예에 의하면, 입력 장치(130)는 디스플레이 장치(120)로 게임 실행을 요청할 수 있다. 사용자가 상기 디스플레이 장치(120)가 제공하는 화면의 메뉴에서 게임 애플리케이션을 선택하면, 상기 입력 장치(130)는 상기 사용자의 선택 내용을 상기 디스플레이 장치(120)로 전송할 수 있다.
일 실시예에 의하면, 입력 장치(130)는 게임 실행을 위한 데이터를 송수신할 수 있다. 예를 들어, 게임 속 캐릭터의 동작을 수행하는 게임 플레이 명령을 디스플레이 장치(120)로 송신할 수 있으며, 상기 입력한 플레이 명령에 대응되는 촉각 데이터(예: 진동)를 수신할 수 있다. 상기 입력 장치(130)가 사용자가 느낄 수 있는 다양한 촉각 효과를 지원하는 햅틱(Haptic) 모듈을 구비하고 있다면, 상기 수신한 촉각 데이터를 재생시킬 수 있다.
일 실시예에 의하면, 다인용 게임의 경우, 복수의 입력 장치(130)들이 디스플레이 장치(120)에 연결될 수 있다. 상기 복수의 입력 장치(130)들은 각자 자신의 제조사, 모델명, MAC(Media Access Control) 주소, 또는 디바이스 고유 식별 정보와 같은 장치 정보 및 각 사용자의 게임 플레이 입력을 상기 디스플레이 장치(120)로 전송할 수 있다.
일 실시예에 의하면, 네트워크(140)는 클라우드 게임 시스템(100)에 포함되는 각 구성 요소들(110 ~ 130)을 통신 채널을 기반으로 상호 연결할 수 있다. 여기서 연결은 상기 각 구성 요소들(110 ~ 130)이 유선 또는 무선 자원을 사용하는 하나 또는 복수의 통신 채널들을 통해 하나 또는 복수의 다른 구성 요소들과 신호 또는 정보를 송신하거나, 수신할 수 있도록 관계 지어져 있음을 의미할 수 있다.
일 실시예에 의하면, 네트워크(140)는 WiFi(Wireless Fidelity), LAN(Local Area Network) 또는 WAN(Wide Area Network)과 같은 네트워크 중 하나일 수 있다. 상기 네트워크(140)는, 예를 들어, 이더넷(Ethernet), GSM(Global System for Mobile Communications), EDGE(Enhanced Data GSM Environment), CDMA(Code Division Multiple Access), TDMA(Time Division Multiplexing Access), 5G, LTE(Long Term Evolution), LTE-A(LTE Advance), 블루투스, VoIP, WiMAX 또는 WiBro(Wireless Broadband)와 같은 임의의 다양한 유선 또는 무선 통신 프로토콜을 이용하여 구현될 수 있다.
도시된 상기 클라우드 게임 시스템(100)의 구성은 이해를 돕기 위해 제시된 것일 뿐이며, 본 개시가 이로써 제한되는 것은 아니다.
도 2는, 본 개시의 일 실시예에 따른, 디스플레이 장치(예: 도 1의 디스플레이 장치(120))의 기능 블럭도이다.
도 2를 참조하면, 디스플레이 장치(120)는 프로세서(210), 메모리(220), 통신부(230), 디스플레이부(240) 또는 오디오 출력부(250)를 포함할 수 있다. 상기 디스플레이 장치(120)는 도시된 구성 요소 이외에 추가적인 구성 요소를 포함하거나, 도시된 구성 요소 중 적어도 하나를 생략할 수 있다.
일 실시예에 의하면, 프로세서(210)는 게임 구동 모듈(211), 사용자 입력 오프로딩 모듈(213)을 포함할 수 있다.
일 실시예에 의하면, 프로세서(210)는 게임 구동 모듈(211), 사용자 입력 오프로딩 모듈(213), 메모리(220), 디스플레이부(240), 오디오 출력부(250), 통신부(230)가 특정 동작을 수행하도록 제어할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 디스플레이 장치(120)에서 게임 애플리케이션을 실행하는 프로세스일 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 예를 들어, 웹 브라우저 엔진(Web Browser Engine) 또는 코발트 엔진(Cobalt Engine)과 같은 브라우저 엔진을 포함할 수 있다. 상기 브라우저 엔진은 HTML(HyperText Markup Language), XML(eXtensible Markup Language), CSS(Cascading Style Sheet) 형태의 데이터를 사용자의 화면에 배치하고 렌더링 할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 블루투스(Bluetooth), BLE(Bluetooth Low Energy) 또는 USB(Universal Serial Bus)로 연결된 입력 장치(130)로부터 장치 정보, 예를 들어, 입력 장치(130)의 제조사, 모델명, MAC 주소 또는 디바이스 고유 식별 정보와 같은 장치 정보를 수신할 수 있다. 상기 장치 정보는, 상기 입력 장치(130)로부터 수신되는 사용자 입력이 저장되는 메모리의 주소에 대한 정보를 포함할 수 있다. 상기 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)로 상기 입력 장치(130)의 장치 정보를 전송할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 게임 서버(110)로 사용자 또는 게임 계정에 대한 자격 증명, 예를 들어 사용자 이름, 로그인 계정, 패스워드를 포함하는 메시지를 전송할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 서버 정보를 수신할 수 있다. 상기 서버 정보는 상기 게임 서버(110)의 URL(Uniform Resource Locator)을 포함할 수 있다. 상기 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)로 상기 서버 정보를 전송할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)와 인증을 수행할 수 있는 정보를 사용자 입력 오프로딩 모듈(213)로 전송할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)이 상기 게임 서버(110)와 새로운 세션을 연결할 때, 상기 서버 정보와 상기 인증을 수행할 수 있는 정보를 이용할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 게임의 플레이가 개시되었다고 판단하면, 상기 사용자 입력 오프로딩 모듈(213)을 생성할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 게임 서버(110)로부터 수신된 영상 스트림 데이터가 일련의 특징적인 조합 즉, I-프레임(Intra-coded frame)과 미리 정의된 임계값 이상의 연속된 P-프레임(Predictive-coded frame)의 조합임을 확인하면, 게임의 플레이가 개시되었다고 판단할 수 있다.
일 실시예에 의하면, 게임 서버(110)와 스트리밍 서버가 분리되어 있는 경우, 게임 구동 모듈(211)은 사용자가 선택한 게임이 화면에 로딩되면서 스트리밍 서버로 리다이렉션(Redirection)될 수 있다. 이 때 게임 구동 모듈(211)은 수신된 게임 스트림 데이터의 URL의 변화를 인지하고, 게임의 플레이가 개시되었다고 판단할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)이 게임 서버(110)로부터 수신하는 데이터에는 게임 출력 데이터와 제어 데이터가 포함되어 있는데, 상기 게임 구동 모듈(211)이 상기 제어 데이터에서 게임의 플레이가 개시되었다는 신호를 획득함으로써 게임의 플레이가 개시되었다고 판단할 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)에 의해 생성될 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 게임 구동 모듈(211)로부터 수신한 서버 정보를 이용하여 게임 서버(110)에 접근할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 게임 구동 모듈(211)이 상기 게임 서버(110)와 사용하던 세션을 그대로 사용하거나, 또는 상기 게임 구동 모듈(211)로부터 수신한 인증 정보를 이용하여 상기 게임 서버(110)와 인증을 수행하고 세션을 새로 생성할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 세션을 통해, 사용자 입력을 상기 게임 서버(110)에 전달할 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 게임의 플레이가 개시되면 입력 장치(130)로부터 사용자 입력을 수신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)로부터 수신한 장치 정보 중 사용자 입력이 저장되는 메모리의 주소 정보를 이용하여 상기 사용자 입력을 상기 게임 구동 모듈(211)을 통하지 않고 직접 획득할 수 있다. 상기 사용자 입력은 게임의 플레이 명령 또는 게임 설정 관련 명령 중 하나일 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 수신한 상기 사용자 입력을 상기 게임 구동 모듈(211)로부터 수신한 서버 정보를 이용하여 게임 서버(110)로 전송할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 사용자 입력이 게임 플레이 명령인지 아니면 게임 설정 관련 명령인지 그 성격을 판단하거나, 상기 사용자 입력을 가공하지 않고, 그대로 상기 게임 서버(110)로 전송할 수 있다. 상기 게임의 플레이가 개시되기 이전까지는 상기 게임 구동 모듈(211)이 상기 입력 장치(130)로부터 사용자 입력을 수신할 수 있다. 예를 들어, 상기 게임 구동 모듈(211)은 상기 입력 장치(130)의 장치 정보를 수신하여 상기 사용자 입력 오프로딩 모듈(213)로 전달하거나, 게임 선택과 같은 사용자 입력을 상기 게임 서버(110)로 전송할 수 있다.
일 실시예에 의하면, 입력 지연은 사용자 입력 시점과 상기 사용자 입력이 화면에 반영된 시점 사이에서 지각되는 지연으로서, 예를 들어, 디스플레이 장치(120)가 1초에 60번 화면을 갱신하고(60fps), 입력 장치(130)가 1초에 60번 사용자 입력을 발생시킨다면, 허용 가능한 입력 지연 시간은 60분의 1초(16.6ms)일 수 있다. 즉, 상기 입력 장치(130)에서 발생하는 사용자 입력을 상기 디스플레이 장치(120)가 수신하여, 게임 서버(110)로 전달하고, 상기 사용자 입력에 대응되는 게임 출력 스트림을 상기 게임 서버(110)로부터 수신하여 역다중화하고 복호화하여 화면에 출력하는 단계까지 소요되는 시간이 가장 길면 16.6ms일 수 있다. 상기 디스플레이 장치(120)와 상기 게임 서버(110)와의 사이에서 발생할 수 있는 네트워크 지연까지 감안하면, 전체적인 입력 지연은 16.6ms보다 증가할 수 있다. 하나의 프로세스가 상기 입력에서부터 출력까지의 전 과정을 수행하는 경우, 기반 프레임워크인 브라우저 엔진의 UI 이벤트, 입출력 처리, 파일시스템 처리 또는 네트워크 이벤트 처리의 각 단계에서 발생하는 스레드 경쟁과 병목 현상으로 인해 상기 입력 지연이 더 증가할 수 있다. 또한 하나의 프로세스가 상기 입력에서부터 출력까지의 전 과정을 수행하는 경우, 연속된 사용자 입력이 발생해도 이전 사용자 입력에 대응되는 게임 화면 출력이 완료된 후에 다음 사용자 입력을 상기 게임 서버(110)로 전달하게 되므로, 입력 지연이 누적될 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)와 별개로 동작하는 독립된 프로세스로서, 게임 플레이가 시작된 이후에 입력 장치(130)에서 발생하는 사용자 입력을 게임 서버(110)로 전송하는 작업을 전담할 수 있다. 즉, 상기 게임 구동 모듈(211)이 사용자의 이전 입력에 대응되는 게임 출력 데이터를 화면에 출력했는지 또는 상기 게임 출력 데이터를 상기 게임 서버(110)로부터 수신했는지 여부와 무관하게, 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)에서 사용자 입력이 발생할 때마다 상기 게임 서버(110)로 상기 사용자 입력을 전송할 수 있다.
다른 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)와 별개로 동작하는 독립된 프로세스로서, 게임을 선택하는 단계부터 입력 장치(130)에서 발생하는 사용자 입력을 게임 서버(110)로 전송하는 작업을 전담할 수 있다. 게임을 선택하는 단계에서 발생하는 사용자 입력은 게임 플레이 개시 이후 발생하는 사용자 입력에 비해 입력 지연에 영향을 미치지 않으므로, 본 개시에서 상기 게임 구동 모듈(211)이 상기 사용자 입력 오프로딩 모듈(213)로 사용자 입력을 위임하는 시점은 게임 플레이 개시 이후로만 제한되는 것은 아니다.
또 다른 실시예에 의하면, 디스플레이 장치(120)의 제품 사양 또는 메모리 점유율이나 프로세서 점유율과 같은 리소스 상태에 따라 사용자가 게임 플레이 시 사용자 입력 오프로딩 모듈(213)에 대한 사용 여부를 지정할 수 있다. 예를 들어, 게임 진행 초기에는 상기 사용자 입력 오프로딩 모듈(213)을 사용하지 않은 상태에서 게임 진행 중간에 상기 사용자 입력 오프로딩 모듈(213)을 사용한다면, 그 시점부터 상기 사용자 입력 오프로딩 모듈(213)이 사용자 입력을 게임 서버(110)로 전달할 수 있다.
일 실시예에 의하면, 메모리(220)는 디스플레이 장치(120)가 사용하는 저장 매체로서 하나 이상의 명령어들(instructions)을 포함하는 프로그램을 포함할 수 있다. 프로그램은 운영체제(operating system, OS) 프로그램 및 응용 프로그램을 포함할 수 있다.
일 실시예에 의하면, 메모리(220)는 플래시 메모리 타입, 하드디스크 타입, 멀티미디어 카드 마이크로 타입, 카드 타입, RAM, SRAM, ROM, EEPROM, PROM, 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
일 실시예에 의하면, 메모리(220)는 게임 서버(110)로부터 수신한 게임 영상 스트림 데이터 또는 음성 스트림 데이터의 임시 저장을 위한 기능을 수행할 수 있다.
일 실시예에 의하면, 메모리(220)는 사용자의 개인 정보에 대한 쿠키(Cookie)를 저장할 수 있다.
일 실시예에 의하면, 메모리(220)는 게임 구동 모듈(211)이 입력 장치(130)를 등록하는 과정에서 획득한 상기 입력 장치(130)의 장치 정보, 예를 들어, 제조사, 모델명, MAC 주소 또는 디바이스 고유 식별 정보와 같은 장치 정보를 저장할 수 있다.
일 실시예에 따르면, 통신부(230)는 클라우드 게임 시스템(100)의 게임 서버(110) 및 입력 장치(130)와의 유무선 통신을 위한 인터페이스를 제공할 수 있다. 상기 통신부(230)는 외부 망(예: 도 1의 네트워크(140))을 통한 통신을 가능하게 하는 네트워크 인터페이스 카드 또는 무선 송/수신부를 포함할 수 있다. 상기 통신부(230)는 무선 통신망에 접속하기 위한 신호 처리를 수행할 수 있다. 상기 무선 통신망은, 예를 들어, GSM(Global System for Mobile Communications), EDGE(Enhanced Data GSM Environment), CDMA(Code Division Multiple Access), TDMA(Time Division Multiplexing Access), 5G, LTE(Long Term Evolution), LTE-A(LTE Advance), 블루투스(Bluetooth), BLE(Bl VoIP, WiMAX 또는 WiBro(Wireless Broadband)와 같은 통신망일 수 있으며, 이에 제한되는 것은 아니다.
일 실시예에 의하면, 통신부(230)는 입력 장치(130)와 블루투스(Bluetooth) 또는 BLE(Bluetooth Low Energy)와 같은 근거리 무선 통신을 수행하거나 USB(Universal Serial Bus)를 이용한 유선 통신을 수행할 수 있다. 게임 구동 모듈(211) 또는 사용자 입력 오프로딩 모듈(213)은 상기 통신부(230)를 통해 상기 입력 장치(130)와 데이터를 송신 또는 수신할 수 있다.
일 실시예에 의하면, 통신부(230)는 게임 서버(110)와 네트워크(예: 도 1의 네트워크(140))를 통해 유무선 통신을 수행할 수 있다. 게임 구동 모듈(211) 또는 사용자 입력 오프로딩 모듈(213)은 상기 통신부(230)를 통해 상기 게임 서버(110)와 데이터를 송신 또는 수신할 수 있다.
일 실시예에 의하면, 디스플레이부(240)는 디스플레이 디바이스로서, 액정(LCD, liquid crystal), 발광 다이오드(LED, Light- Emitting Diode), 유기 발광 다이오드(OLED, Organic Light Emitting Diode), PDP(Plasma Display Panel), 플렉서블 디스플레이(Flexible Display) 또는 3D 디스플레이를 포함할 수 있다.
일 실시예에 의하면, 디스플레이부(240)는 다양한 규격의 디코더(Decoder)를 구비하고, 게임 구동 모듈(211)로부터 전달된 게임 영상 스트림을 복호화하여 출력할 수 있다.
일 실시예에 의하면, 오디오 출력부(250)는 게임 구동 모듈(211)로부터 전달된 게임 음성 스트림을 디코딩하여 전기 신호를 소리로 변환시킬 수 있다. 상기 오디오 출력부(250)는 예를 들어, 스피커, 이어폰을 통해 음성 스트림을 출력할 수 있다.
도 3은, 본 개시의 일 실시예에 따라, 게임이 진행되는 과정에서 데이터의 흐름을 도시한 도면이다.
도 3을 참조하면, 일 실시예에 따라, 게임 구동 모듈(211)은 입력 장치(130)로부터 장치 정보를 획득할 수 있다 (동작 ①). 상기 게임 구동 모듈(211)은 게임 서버(110)로 자격 증명을 요청하고 상기 게임 서버(110)의 서버 정보, 예를 들어 URL(Uniform Resource Locator)을 수신할 수 있다(동작 ②). 상기 게임 구동 모듈(211)은 게임 플레이가 개시되었다고 판단하면, 사용자 입력 오프로딩 모듈(213)을 생성하고, 상기 입력 장치(130)의 장치 정보와 상기 게임 서버(110)의 서버 정보를 상기 사용자 입력 오프로딩 모듈(213)로 전달할 수 있다(동작 ③). 상기 게임 구동 모듈(211)은 상기 입력 장치(130)에서 발생하는 사용자 입력을 상기 사용자 입력 오프로딩 모듈(213)로 위임할 수 있다. 상기 게임 구동 모듈(211)과 상기 사용자 입력 오프로딩 모듈(213)은 독립된 별개의 프로세스이므로, 상기 게임 구동 모듈(211)은 상기 사용자 입력 오프로딩 모듈(213)로 IPC(Inter Process Communication)를 사용하여 위임 메시지를 송신할 수 있다. 사용자가 상기 입력 장치(130)를 통해 입력한 사용자 입력은 사용자 입력 오프로딩 모듈(213)로 전달될 수 있다(동작 ④). 상기 사용자 입력 오프로딩 모듈(213)은 수신된 상기 사용자 입력을 상기 게임 서버(110)로 전달할 수 있다(동작 ⑤). 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 상기 사용자 입력에 대응하는 게임 스트림 데이터를 수신할 수 있다(동작 ⑥). 상기 게임 구동 모듈(211)은 수신한 상기 게임 스트림 데이터를 역다중화하여, 영상 스트림 데이터는 디스플레이부(240)를 통해 출력하고, 음성 스트림 데이터는 오디오 출력부(250)를 통해 출력하고, 진동 데이터는 상기 입력 장치(130)로 전달할 수 있다(동작 ⑦). 상기 입력 장치(130)가 진동 데이터에 의해 구동할 수 있는 진동 소자를 포함한 진동 모듈을 구비하고 있는 경우, 상기 수신한 진동 데이터에 기초하여 진동 효과를 발생시킬 수 있다. 예를 들어, 격투기 게임을 실행할 때, 사용자는 자신의 게임 플레이 명령에 대응하는 상기 입력 장치(130)의 진동 피드백을 통해 실제 타격감을 경험할 수 있다.
도 4는, 본 개시의 일 실시예에 따른, 디스플레이 장치의 동작 흐름도이다.
도 4를 참조하면, 일 실시예에 따른 동작 401에서, 디스플레이 장치(120)는 전원이 인가되거나 홈 화면이 선택되면, 선택 가능한 애플리케이션 목록을 표시할 수 있다.
일 실시예에 따른 동작 403에서, 사용자가 게임 애플리케이션을 선택하면 디스플레이 장치(120)는 동작 405를 수행하고, 상기 게임 애플리케이션을 선택하지 않으면 동작 407을 수행할 수 있다.
일 실시예에 따른 동작 405에서, 디스플레이 장치(120)는 독립적으로 기능하는 분리된 두 모듈 즉, 게임 구동 모듈(211)과 사용자 입력 오프로딩 모듈(213)을 통해 게임을 실행할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 입력 장치(130)를 통해 수신된 사용자 입력을 게임 서버(110)로 전달하는 기능을 수행하고, 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 수신된 게임 스트림 데이터를 출력하는 기능을 수행할 수 있다.
일 실시예에 따른 동작 407에서, 디스플레이 장치(120)는 사용자가 선택한 애플리케이션에 해당되는 프로세스를 실행할 수 있다.
도 5는, 본 개시의 일 실시예에 따른, 게임 구동 모듈(예: 도 2의 게임 구동 모듈(211))의 동작 흐름도이다.
도 5를 참조하면, 일 실시예에 따른 동작 501에서 게임 구동 모듈(211)은 입력 장치(130)가 게임 입력이 가능한 입력 장치인지 판단할 수 있다. 상기 입력 장치(130)가 데이터 송수신 기능을 구비하지 않은 레거시 리모컨(예: IR 리모컨)이라면, 상기 게임 구동 모듈(211)은 게임을 수행하지 않고 종료할 수 있다. 상기 입력 장치(130)가 게임 입력이 가능한 입력 장치라면, 상기 게임 구동 모듈(211)은 동작 503을 수행할 수 있다.
일 실시예에 따른 동작 503에서, 게임 구동 모듈(211)은 입력 장치(130)와 페어링하여 연결을 수행하고, 상기 입력 장치(130)를 등록하는 절차를 진행할 수 있다. 상기 게임 구동 모듈(211)은 상기 입력 장치(130)로부터 제조사, 모델명, MAC 주소 또는 디바이스 고유 식별 정보와 같은 장치 정보를 수신할 수 있다. 또한 상기 게임 구동 모듈(211)은 상기 입력 장치(130)로부터 수신되는 사용자 입력이 저장되는 메모리의 주소에 대한 정보를 수신할 수 있다.
일 실시예에 따른 동작 505에서, 게임 구동 모듈(211)은 게임 서버(110)로부터 상기 게임 서버(110)의 URL과 같은 서버 정보를 수신하고, 자격 증명, 예를 들어 사용자 이름, 로그인 계정, 패스워드를 포함하는 메시지를 송신하여 사용자 인증 과정을 수행할 수 있다.
일 실시예에 따른 동작 507에서, 게임 구동 모듈(211)은 게임 서버(110)로부터 수신한 게임 리스트를 화면에 출력하고 사용자의 선택을 획득할 수 있다.
일 실시예에 따른 동작 509에서, 게임 구동 모듈(211)은 디스플레이 장치(120)의 사용자 입력 오프로딩 모듈(213) 사용 여부를 화면에 출력할 수 있다. 사용자는, 예를 들어 디스플레이 장치(120)가 저 사양 제품인 경우, 상기 사용자 입력 오프로딩 모듈(213)을 사용하지 않을 수 있다. 또는 상기 게임 구동 모듈(211)은 상기 디스플레이 장치(120)의 전원 공급 상태, 전력 모드, 메모리 및 프로세서 점유율과 같은 리소스 정보를 고려하여, 사용자 입력 오프로딩 모듈(213)의 가용 여부를 화면에 출력할 수 있다.
일 실시예에 따른 동작 511에서, 게임 구동 모듈(211)은 사용자로부터 사용자 입력 오프로딩 모듈(213)을 사용하여 사용자 입력을 위임할지 여부에 대한 선택을 획득할 수 있다. 상기 사용자가 상기 사용자 입력 오프로딩 모듈(213)을 사용하는 것을 선택한다면 상기 게임 구동 모듈(211)은 동작 513을 수행할 수 있고, 그렇지 않다면 동작 525를 수행할 수 있다.
일 실시예에 따른 동작 513에서 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)을 생성할 수 있다.
일 실시예에 따른 동작 515에서, 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)로 입력 장치(130)의 장치 정보와 게임 서버(110)의 서버 정보를 전송할 수 있다. 상기 장치 정보는 상기 입력 장치(130)의 제조사, 모델명, MAC 주소, 디바이스 고유 식별 정보 또는 상기 입력 장치(130)로부터 수신되는 사용자 입력이 저장되는 메모리의 주소에 대한 정보를 포함할 수 있다.일 실시예에 따른 동작 517에서, 게임 서버(110)로부터 게임 스트림 데이터를 수신하면 게임 구동 모듈(211)은 동작 519를 수행하고, 수신하지 않으면 게임 스트리밍 수신 대기 상태로 복귀할 수 있다.
일 실시예에 따른 동작 519에서, 게임 구동 모듈(211)은 수신한 게임 스트림 데이터를 역다중화하여 영상 스트림 데이터는 디스플레이부(예: 도 2의 디스플레이부(240))를 통해 출력하고, 음성 스트림 데이터는 오디오 출력부(예: 도 2의 오디오 출력부(250))를 통해 출력할 수 있다.
일 실시예에 따른 동작 521에서, 수신한 게임 스트림 데이터가 게임 종료 시퀀스인 경우, 게임 구동 모듈(211)은 동작 523을 수행하고, 그렇지 않다면 게임 스트리밍 수신 대기 상태로 복귀할 수 있다.
일 실시예에 따른 동작 523에서, 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)을 종료시킬 수 있다.
일 실시예에 따른 동작 525에서, 입력 장치(130)로부터 사용자 입력을 수신하면, 게임 구동 모듈(211)은 동작 527을 수행하고, 수신하지 않으면 사용자 입력 수신 대기 상태로 복귀할 수 있다.
일 실시예에 따른 동작 527에서, 게임 구동 모듈(211)은 입력 장치(130)로부터 수신한 사용자 입력을 게임 서버(110)로 전달할 수 있다.
일 실시예에 따른 동작 529 내지 동작 531은 전술한 동작 517 내지 동작 519와 동일하다.
일 실시예에 따른 동작 533에서, 게임 서버(110)로부터 게임 종료 시퀀스를 수신하면, 게임 구동 모듈(211)은 과정을 종료하고, 게임 종료 시퀀스를 수신하지 않으면 동작 525로 복귀할 수 있다.
도 6은, 본 개시의 일 실시예에 따른, 사용자 입력 오프로딩 모듈(예: 도 2의 사용자 입력 오프로딩 모듈(213))의 동작 흐름도이다.
도 6을 참조하면, 일 실시예에 따른 동작 601에서, 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)로부터 입력 장치(130)의 제조사, 모델명, MAC 주소 또는 디바이스 고유 식별 정보와 같은 장치 정보를 수신할 수 있다. 상기 장치 정보는 상기 입력 장치(130)로부터 수신되는 사용자 입력이 저장되는 메모리의 주소에 대한 정보를 포함할 수 있다.
일 실시예에 따른 동작 603에서, 입력 장치(130)로부터 사용자 입력을 수신하면, 사용자 입력 오프로딩 모듈(213)은 동작 605를 수행하고, 수신하지 않으면 메시지 수신 대기 상태로 복귀할 수 있다.
일 실시예에 따른 동작 605에서, 사용자 입력 오프로딩 모듈(213)은 수신한 사용자 입력을 게임 서버(110)로 전달할 수 있다.
일 실시예에 따른 동작 607에서, 게임 구동 모듈(211)로부터 종료 신호를 수신하면, 사용자 입력 오프로딩 모듈(213)은 과정을 종료하고, 수신하지 않으면 메시지 수신 대기 상태로 복귀할 수 있다.
도 7은, 본 개시의 일 실시예에 따른, 디스플레이 장치의 메시지 시퀀스 다이어그램이다.
도 7을 참고하면, 일 실시예에 따라, 입력 장치(130)(예: 도 1의 입력 장치(130))는 게임 구동 모듈(211)로 등록을 요청할 수 있다 (동작 701). 상기 입력 장치(130)는 상기 게임 구동 모듈(211)와 페어링하여 연결을 수행하고, 자신의 제조사, 모델명, MAC 주소 또는 디바이스 고유 식별 정보를 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 입력 장치(130)가 게임 진행이 가능한 입력 장치라고 판단하면, 상기 입력 장치(130)를 등록할 수 있다. 예를 들어 상기 입력 장치(130)가 데이터 송수신 기능을 구비하지 않은 레거시 리모컨(예: IR 리모컨)이라면, 상기 게임 구동 모듈(211)은 등록 절차를 진행하지 않을 수 있다. 상기 게임 구동 모듈(211)은 상기 입력 장치(130)의 장치 정보를 획득하여, 메모리(예: 도 2의 메모리(220))에 저장할 수 있다.동작 703에서, 상기 게임 구동 모듈(211)은 게임 서버(110)로부터 상기 게임 서버(110)의 서버 정보를 수신할 수 있다. 상기 서버 정보는 상기 게임 서버(110)의 URL을 포함할 수 있다. 상기 게임 서버(110)는 상기 게임 구동 모듈(211)로 자신의 서버 정보를 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로 자격 증명, 예를 들어 사용자 이름, 로그인 계정, 패스워드를 포함하는 메시지를 송신할 수 있다. 상기 게임 서버(110)는 상기 게임 구동 모듈(211)로부터 자격 증명 메시지를 수신할 수 있다. 상기 게임 서버(110)는 사용자 계정 및 사용자의 결제 정보, 계정별 게임 데이터, 예를 들어 게임 포인트, 게임 아이템, 게임 레벨, 게임 진행 상태와 같은 게임 세션 정보를 참고하여 상기 자격 증명 과정을 수행할 수 있다.
동작 705에서, 상기 게임 서버(110)는 상기 게임 구동 모듈(211)로 게임 리스트를 포함하는 영상 데이터를 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 게임 리스트를 포함하는 영상 데이터를 수신할 수 있다. 상기 게임 리스트는 사용자가 보유하고 있는 모든 게임 또는 상기 사용자의 권한 내에서 이용 가능한 모든 게임일 수 있다.
동작 707에서, 상기 게임 구동 모듈(211)은 상기 게임 리스트를 포함하는 영상 데이터를 디스플레이부(240)(예: 도 2의 디스플레이부(240))로 송신하여 화면에 출력할 수 있다. 상기 디스플레이부(240)는 상기 게임 구동 모듈(211)로부터 상기 게임 리스트를 포함하는 영상 데이터를 수신하여, 화면에 출력할 수 있다.
동작 709에서, 사용자가 상기 입력 장치(130)를 통해 화면에 제시된 게임 리스트 중 플레이하고자 하는 게임을 선택하면, 상기 입력 장치(130)는 상기 사용자의 입력을 상기 게임 구동 모듈(211)로 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 입력 장치(130)로부터 사용자 입력을 수신할 수 있다.
동작 711에서, 상기 게임 구동 모듈(211)은 수신한 사용자 입력을 상기 게임 서버(110)로 전달할 수 있다.
동작 713에서, 상기 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213)을 생성하고, 상기 사용자 입력 오프로딩 모듈(213)로 상기 입력 장치(130)의 장치 정보와 상기 게임 서버(110)의 서버 정보를 송신할 수 있다. 상기 장치 정보는 상기 입력 장치(130)의 제조사, 모델명, MAC 주소, 디바이스 고유 식별 정보 또는 상기 입력 장치(130)로부터 수신되는 사용자 입력이 저장되는 메모리의 주소에 대한 정보를 포함할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 게임 구동 모듈(211)로부터 상기 입력 장치(130)의 장치 정보와 상기 게임 서버(110)의 서버 정보를 수신할 수 있다.
동작 715에서, 상기 게임 구동 모듈(211)은 상기 사용자 입력 오프로딩 모듈(213)로 상기 입력 장치(130)로부터 수신되는 사용자 입력 처리를 위임하는 메시지를 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 게임 구동 모듈(211)로부터 사용자 입력 처리를 위임하는 메시지를 수신할 수 있다.
본 개시의 다른 실시예에 의하면, 동작 713 내지 동작 715는 동작 709에 앞서 수행될 수 있는데, 게임 선택을 하는 입력 처리 과정은 게임이 플레이 되는 동안 발생하는 사용자 입력에 비해 입력 지연에 영향을 미칠 만한 수준이 아니므로, 게임 구동 모듈(211)이 게임 선택에 관한 사용자 입력을 처리할 수도 있고, 사용자 입력 오프로딩 모듈(213)이 게임 선택 과정부터 사용자 입력을 처리할 수도 있다.
동작 717에서, 상기 게임 서버(110)는 게임이 종료될 때까지, 상기 게임 구동 모듈(211)로 게임 데이터를 스트리밍 할 수 있다. 상기 게임 구동 모듈(211)은 게임이 종료될 때까지 상기 게임 서버(110)로부터 게임 데이터를 수신할 수 있다.
동작 719에서, 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 수신된 게임 스트림 데이터를 역다중화한 결과 분리된 영상 스트림 데이터를 상기 디스플레이부(240)로 송신할 수 있다. 상기 디스플레이부(240)는 상기 게임 구동 모듈(211)로부터 영상 스트림 데이터를 수신하여 디코딩한 후 화면에 출력할 수 있다.
동작 721에서, 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 수신된 게임 스트림 데이터를 역다중화한 결과 분리된 음성 스트림 데이터를 오디오 출력부(250)로 송신할 수 있다. 상기 오디오 출력부(250)는 상기 게임 구동 모듈(211)로부터 음성 스트림 데이터를 수신하여 디코딩한 후 예컨대, 스피커를 통해 출력할 수 있다.
동작 723에서, 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 수신된 게임 스트림 데이터를 역다중화한 결과 분리된 진동 데이터를 상기 입력 장치(130)로 송신할 수 있다. 상기 입력 장치(130)는 상기 게임 구동 모듈(211)로부터 진동 데이터를 수신할 수 있다. 상기 입력 장치(130)가 진동을 발생하는 진동 모듈을 구비하고 있다면 상기 진동 데이터를 출력할 수 있다.
동작 717 내지 동작 723은 게임 플레이가 진행되는 동안 반복될 수 있다.
동작 725에서, 상기 입력 장치(130)는 상기 사용자 입력 오프로딩 모듈(213)로 사용자 입력을 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)로부터 사용자 입력을 수신할 수 있다.
동작 727에서, 상기 사용자 입력 오프로딩 모듈(213)은 상기 사용자 입력을 상기 게임 서버(110)로 전달할 수 있다. 상기 게임 서버(110)는 상기 사용자 입력 오프로딩 모듈(213)로부터 상기 사용자 입력을 수신할 수 있다.
동작 725 내지 동작 727은 게임 플레이가 진행되는 동안 반복될 수 있다. 동작 725 내지 동작 727은, 동작 717 내지 동작 723과 동시에 수행될 수 있다.
도 8은, 본 개시의 일 실시예에 따른, 게임 플레이 입력 및 게임 출력 시의 메시지 시퀀스 다이어그램이다.
도 8을 참조하면, 일 실시예에 따라, 게임이 개시된 이후 입력 장치(130)로부터 수신되는 사용자 입력은 사용자 입력 오프로딩 모듈(213)로 위임될 수 있고, 상기 게임의 스트림 데이터는 영상 스트림 데이터와 음성 스트림 데이터를 다중화(Multiplexing)한 데이터일 수 있다.
동작 801에서, 상기 입력 장치(130)는 제1 사용자 입력을 상기 사용자 입력 오프로딩 모듈(213)로 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)로부터 상기 제1 사용자 입력을 수신할 수 있다.
동작 803에서, 상기 사용자 입력 오프로딩 모듈(213)은 상기 제1 사용자 입력을 게임 서버(110)로 송신할 수 있다. 상기 게임 서버(110)는 상기 사용자 입력 오프로딩 모듈(213)로부터 상기 제1 사용자 입력을 수신할 수 있다.
동작 805에서, 상기 게임 서버(110)는 상기 제1 사용자 입력에 대응되는 제1 게임 스트림 데이터를 게임 구동 모듈(211)로 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 상기 제1 게임 스트림 데이터를 수신할 수 있다.
동작 807에서, 상기 게임 구동 모듈(211)은 상기 제1 게임 스트림 데이터를 역다중화하여 획득한 제1 영상 스트림 데이터를 디스플레이부(240)로 송신할 수 있다. 상기 디스플레이부(240)는 상기 제1 영상 스트림 데이터를 상기 게임 구동 모듈(211)로부터 수신할 수 있다.
동작 809에서, 상기 게임 구동 모듈(211)은 상기 제1 게임 스트림 데이터를 역다중화하여 획득한 제1 음성 스트림 데이터를 오디오 출력부(250)로 송신할 수 있다. 상기 오디오 출력부(250)는 상기 제1 음성 스트림 데이터를 상기 게임 구동 모듈(211)로부터 수신할 수 있다.
동작 811에서, 상기 입력 장치(130)는 제2 사용자 입력을 상기 사용자 입력 오프로딩 모듈(213)로 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)로부터 상기 제2 사용자 입력을 수신할 수 있다.
동작 813에서, 상기 사용자 입력 오프로딩 모듈(213)은 상기 제2 사용자 입력을 게임 서버(110)로 송신할 수 있다. 상기 게임 서버(110)는 상기 사용자 입력 오프로딩 모듈(213)로부터 상기 제2 사용자 입력을 수신할 수 있다.
동작 815에서, 상기 게임 서버(110)는 상기 제2 사용자 입력에 대응되는 제2 게임 스트림 데이터를 게임 구동 모듈(211)로 송신할 수 있다. 상기 게임 구동 모듈(211)은 상기 게임 서버(110)로부터 상기 제2 게임 스트림 데이터를 수신할 수 있다.
동작 817에서, 상기 게임 구동 모듈(211)은 상기 제2 게임 스트림 데이터를 역다중화하여 획득한 제2 영상 스트림 데이터를 디스플레이부(240)로 송신할 수 있다. 상기 디스플레이부(240)는 상기 제2 영상 스트림 데이터를 상기 게임 구동 모듈(211)로부터 수신할 수 있다.
동작 819에서, 상기 게임 구동 모듈(211)은 상기 제2 게임 스트림 데이터를 역다중화하여 획득한 제2 음성 스트림 데이터를 오디오 출력부(250)로 송신할 수 있다. 상기 오디오 출력부(250)는 상기 제2 음성 스트림 데이터를 상기 게임 구동 모듈(211)로부터 수신할 수 있다.
도 9는, 본 개시의 다른 실시예에 따른, 게임 플레이 입력 및 게임 출력 시의 메시지 시퀀스 다이어그램이다.
도 9를 참조하면, 일 실시예에 따라, 게임이 개시된 이후 입력 장치(130)로부터 수신되는 사용자 입력은 사용자 입력 오프로딩 모듈(213)로 위임될 수 있고, 상기 게임의 스트림 데이터는 영상 스트림 데이터와 음성 스트림 데이터를 다중화한 데이터일 수 있다.
동작 901에서, 상기 입력 장치(130)는 제1 사용자 입력을 상기 사용자 입력 오프로딩 모듈(213)로 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)로부터 상기 제1 사용자 입력을 수신할 수 있다.
동작 903에서, 상기 사용자 입력 오프로딩 모듈(213)은 상기 제1 사용자 입력을 게임 서버(110)로 송신할 수 있다. 상기 게임 서버(110)는 상기 사용자 입력 오프로딩 모듈(213)로부터 상기 제1 사용자 입력을 수신할 수 있다.
동작 905에서, 상기 입력 장치(130)는 제2 사용자 입력을 상기 사용자 입력 오프로딩 모듈(213)로 송신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 상기 입력 장치(130)로부터 상기 제2 사용자 입력을 수신할 수 있다.
동작 907에서, 상기 사용자 입력 오프로딩 모듈(213)은 상기 제2 사용자 입력을 상기 게임 서버(110)로 송신할 수 있다. 상기 게임 서버(110)는 상기 사용자 입력 오프로딩 모듈(213)로부터 상기 제2 사용자 입력을 수신할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 게임 구동 모듈(211)이 상기 제1 사용자 입력에 대응하는 게임 스트림 데이터를 수신했는지 여부와 무관하게, 상기 입력 장치(130)로부터 사용자 입력을 수신할 때마다 상기 사용자 입력을 상기 게임 서버(110)로 전달할 수 있다.
동작 909 내지 동작 913은 전술한 도 8의 동작 805 내지 동작 809와 동일하고, 동작 915 내지 동작 919는 전술한 도 8의 동작 815 내지 동작 819와 동일하므로 설명을 생략한다.
도 10은, 본 개시의 일 실시예에 따른, 디스플레이 장치(120)의 계층 구조도이다.
도 10을 참조하면, 일 실시예에 따른 디스플레이 장치(120)의 계층을 하드웨어(1010), 커널 영역(Kernel Space)(1020), 사용자 영역(User Space)(1030)으로 구분할 수 있다.
일 실시예에 의하면, 디스플레이부(240)와 오디오 출력부(250)는 하드웨어(1010) 계층에 포함될 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 커널 영역(1020)에 위치할 수 있다. 커널은 운영체제의 핵심 부분으로서 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공할 수 있다. 상기 커널 영역(1020)에는 커널의 구성 요소, 즉 태스크(Task) 관리자, 메모리 관리자, 파일시스템 관리자, 네트워크 관리자, 디바이스 드라이버 관리자들이 존재할 수 있다. 사용자 영역(1030)에서 동작하는 프로세스가 커널이 관리하는 자원에 접근해야 할 필요가 있으면, 시스템 호출(System Call)을 통해 커널 영역(1020)의 자원 관리자에게 요청이 전달될 수 있다. 상기 자원 관리자는 상기 요청에 해당되는 자원으로 상기 프로세스의 요청을 전달하고 작업을 처리할 수 있다.
일 실시예에 의하면, 리눅스 기반 커널에서는 유연성 향상을 위해 커널의 일부 기능을 모듈로 분리한 후 필요에 따라 커널에 결합하는 방식을 제공하므로, 사용자 입력 오프로딩 모듈(213)을 상기 커널에 결합할 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)이 커널 영역(1020)에서 동작함으로써 컨텍스트 스위칭(Context Switching) 발생이 감소될 수 있는데, 이 과정은 도 11을 참고하여 후술할 것이다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 데몬(Daemon) 형태로 동작할 수 있다. 상기 사용자 입력 오프로딩 모듈(213)은 운영체제의 백그라운드에서 동작하면서 사용자 입력을 게임 서버(110)로 전달하는 서비스를 제공하는 프로세스로서, 미리 정해진 특정 이벤트, 예컨대 입력 장치(130)로부터의 메시지 수신이라는 이벤트 발생에 응답하여 호출될 수 있다.
다른 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 드라이버 형태로 구현될 수 있다. 드라이버는 디스플레이 장치(120)의 운영 체제와 입력 장치(130) 사이를 연결하는 통로로서 상기 입력 장치(130)를 상기 디스플레이 장치(120)의 응용 프로그램에서 사용할 수 있도록 커널에서 제공하는 라이브러리일 수 있다.
또 다른 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 사용자 영역(1030)에서 게임 구동 모듈(211)와 별개로 독립적으로 동작할 수 있다.
본 개시의 다양한 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)은 입력 장치(130)에서 발생하는 사용자 입력을 게임 서버(110)로 전달하는 작업을 게임 구동 모듈(211)로부터 위임받아 동작하는 별도의 소프트웨어 모듈로서, 동작하는 영역이 특정한 영역으로 제한되거나, 특정한 형태로 제한되는 것은 아니다.
일 실시예에 의하면, 게임 구동 모듈(211)은 사용자 영역(1030)에 위치할 수 있다. 상기 게임 구동 모듈(211)를 포함하여 상기 사용자 영역(1030)에서 동작하는 프로세스는 시스템 호출을 통해 커널에서 관리하는 자원을 사용할 수 있다.
일 실시예에 의하면, 게임 구동 모듈(211)은 브라우저 엔진(211), 예를 들어, 웹 브라우저 엔진(Web Browser Engine) 또는 코발트 엔진(Cobalt Engine)과 같은 브라우저 엔진을 포함할 수 있다. 상기 브라우저 엔진(211)은 HTML(HyperText Markup Language), XML(eXtensible Markup Language), CSS(Cascading Style Sheet) 형태의 데이터를 사용자의 화면에 배치하고 렌더링하는 소프트웨어로서 웹 콘텐츠 기반의 다양한 응용 프로그램에 포함될 수 있다.
도 11은, 본 개시의 일 실시예에 따라, 사용자 입력 오프로딩 모듈(213)이 커널 영역에서 동작할 시 컨텍스트 스위칭의 변화를 도시한 도면이다.
도 11을 참조하면, 일 실시예에 따른 (a)(1110)는 사용자 입력 오프로딩 모듈(213)이 사용자 영역(예: 도 10의 사용자 영역(1030))에서 동작하는 경우일 수 있다.
일 실시예에 의하면, 컨텍스트 스위칭(Context Switching)은 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 속성을 나타내는 구조를 PCB(Process Control Block)에 보관하고 새로 실행될 프로세스의 상태를 로딩 하는 작업일 수 있다. 상기 PCB에는 생성, 준비, 수행, 대기, 중지와 같은 프로세스의 상태, 프로세스가 다음에 실행할 명령어 주소인 프로그램 카운터(Program Counter), 레지스터, 프로세스 고유 식별 정보와 같은 데이터가 저장될 수 있다.
일 실시예에 의하면, 컨텍스트 스위칭은 시스템 호출을 처리하는 과정이나 입출력 장치로부터의 인터럽트, 또는 타이머 만료로 인한 인터럽트로 인해 발생할 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)이 사용자 영역에서 동작하는 경우(1110), 입력 장치(130)로부터 수신된 사용자 입력을 게임 서버(110)로 전송하는 과정에서 시스템 호출(예: sendto()와 같은 전송 함수)을 사용하므로, 사용자 영역에서 커널 영역으로 컨텍스트 스위칭이 발생할 수 있다. 게임용 입력 장치의 특성상 상기 사용자 입력은 데이터의 크기는 작지만 빈번히 발생하며, 상기 사용자 입력이 상기 게임 서버(110)로 전송될 때마다 컨텍스트 스위칭이 발생할 수 있다. 잦은 컨텍스트 스위칭은 디스플레이 장치(120)에 오버헤드로 작용하고, 상기 디스플레이 장치(120)의 전반적인 성능 저하로 인해 사용자 입력 지연이 발생하여 게임의 반응성이 저하될 수 있다.
일 실시예에 의하면, (b)(1120)는 사용자 입력 오프로딩 모듈(213)이 커널 영역(예: 도 10의 커널 영역(1020))에서 동작하는 경우일 수 있다.
일 실시예에 의하면, 사용자 입력 오프로딩 모듈(213)이 커널 영역에서 동작하는 경우(1120), 입력 장치(130)로부터 수신된 사용자 입력을 게임 서버(110)로 전송하는 과정에서 컨텍스트 스위칭이 발생하지 않을 수 있다.
도 12는, 본 개시의 일 실시예에 따른, 게임 구동 모듈(예: 도 2의 게임 구동 모듈(211))의 상태 천이도이다.
도 12를 참조하면, 게임 구동 모듈(211)이 천이 가능한 상태는, 초기 모드(1210), 연결 모드(1220), 수신 대기 모드(1230), 출력 모드(1240), 종료 모드(1250)를 포함할 수 있다.
일 실시예에 의하면, 초기 모드(1210)는 게임 구동 모듈(211) 프로세스가 생성되어 디스플레이 장치(120)의 메모리(예: 도 2의 메모리(220))에 적재된 상태 일 수 있다. 사용자가 디스플레이 장치(120)에서 게임 애플리케이션을 선택하는 이벤트가 발생하면, 상기 게임 구동 모듈(211)은 상기 초기 모드(1210)로 진입할 수 있다. 상기 초기 모드(1210)에서 상기 게임 구동 모듈(211)의 내부 자원과 변수들을 초기화하는 동작을 수행(동작 1211)하면, 상기 게임 구동 모듈(211)의 상태는 상기 초기 모드(1210)에서 연결 모드(1220)로 천이될 수 있다.
일 실시예에 의하면, 연결 모드(1220)는 게임 구동 모듈(211)이 입력 장치(130) 또는 게임 서버(110)와 연결을 수행하는 상태일 수 있다. 상기 연결 과정이 완료(동작 1221)되면, 상기 게임 구동 모듈(211)의 상태는 상기 연결 모드(1220)에서 수신 대기 모드(1230)로 천이될 수 있다. 사용자로부터 게임 애플리케이션을 종료(동작 1222)하는 이벤트가 발생하면, 상기 게임 구동 모듈(211)의 상태는 상기 연결 모드(1220)에서 종료 모드(1250)로 천이될 수 있다.
일 실시예에 의하면, 수신 대기 모드(1230)는 게임 구동 모듈(211)이 사용자 입력 오프로딩 모듈(213)을 생성(동작 1233)하고, 게임 서버(110)로부터 게임 스트림 데이터를 수신하기를 대기하는 상태일 수 있다. 상기 게임 구동 모듈(211)이 상기 게임 서버(110)로부터 상기 게임 스트림 데이터를 수신(동작 1231)하면, 상기 게임 구동 모듈(211)의 상태는 상기 수신 대기 모드(1230)에서 출력 모드(1240)로 천이될 수 있다. 사용자로부터 게임 애플리케이션을 종료(동작 1232)하는 이벤트가 발생하면, 상기 게임 구동 모듈(211)의 상태는 상기 수신 대기 모드(1230)에서 종료 모드(1250)로 천이될 수 있다.
일 실시예에 의하면, 출력 모드(1240)는 게임 구동 모듈(211)이 수신한 게임 스트림 데이터를 역다중화하여 분리된 영상 및/또는 음성 스트림 데이터를 디스플레이부(예: 도 2의 디스플레이부(240)) 및/또는 오디오 출력부(예: 도 2의 오디오 출력부(250))를 통해 출력하는 상태일 수 있다. 상기 게임 구동 모듈(211)이 상기 게임 스트림 데이터 출력을 완료(동작 1241)하면, 상기 게임 구동 모듈(211)의 상태는 상기 출력 모드(1240)에서 수신 대기 모드(1230)로 천이될 수 있다. 사용자로부터 게임 애플리케이션을 종료(동작 1242)하는 이벤트가 발생하면, 상기 게임 구동 모듈(211)의 상태는 상기 출력 모드(1240)에서 종료 모드(1250)로 천이될 수 있다.
일 실시예에 의하면, 종료 모드(1250)는 게임 구동 모듈(211)이 종료되는 상태로서, 상기 게임 구동 모듈(211)은 사용자 입력 오프로딩 모듈(213) 프로세스를 먼저 종료시키고, 자신이 사용하던 자원을 해제하는 상태일 수 있다.
도 13은, 본 개시의 일 실시예에 따른, 사용자 입력 오프로딩 모듈(예: 도 2의 사용자 입력 오프로딩 모듈(213))의 상태 천이도이다.
도 13을 참조하면, 사용자 입력 오프로딩 모듈(213)이 천이 가능한 상태는, 초기 모드(1310), 수신 대기 모드(1320), 전달 모드(1330), 종료 모드(1340)를 포함할 수 있다.
일 실시예에 의하면, 초기 모드(1310)는 사용자 입력 오프로딩 모듈(213)이 게임 구동 모듈(211)에 의해 생성되어 디스플레이 장치(120)의 메모리(예: 도 2의 메모리(220))에 적재된 상태일 수 있다. 상기 초기 모드(1310)에서 상기 사용자 입력 오프로딩 모듈(213)의 내부 자원과 변수들을 초기화하는 동작을 수행(동작 1311)하면, 상기 사용자 입력 오프로딩 모듈(213)의 상태는 상기 초기 모드(1310)에서 수신 대기 모드(1320)로 천이될 수 있다.
일 실시예에 의하면, 수신 대기 모드(1320)는 사용자 입력 오프로딩 모듈(213)이 입력 장치(130)로부터 사용자 입력을 수신하기를 대기하는 상태일 수 있다. 상기 사용자 입력 오프로딩 모듈(213)이 상기 입력 장치(130)로부터 사용자 입력을 수신하는 이벤트가 발생하면, 상기 사용자 입력 오프로딩 모듈(213)의 상태는 상기 수신 대기 모드(1320)에서 전달 모드(1330)로 천이될 수 있다. 게임 애플리케이션이 종료(동작 1322)되는 이벤트가 발생하면, 상기 사용자 입력 오프로딩 모듈(213)의 상태는 상기 수신 대기 모드(1320)에서 종료 모드(1340)로 천이될 수 있다.
일 실시예에 의하면, 전달 모드(1330)는 사용자 입력 오프로딩 모듈(213)이 사용자 입력을 게임 서버(110)로 전달하는 상태일 수 있다. 상기 사용자 입력 오프로딩 모듈(213)이 상기 사용자 입력을 상기 게임 서버(110)로 전달(동작 1331)하면, 상기 사용자 입력 오프로딩 모듈(213)의 상태는 상기 전달 모드(1330)에서 수신 대기 모드(1320)로 복귀할 수 있다. 게임 애플리케이션이 종료(동작 1332)되는 이벤트가 발생하면, 상기 사용자 입력 오프로딩 모듈(213)의 상태는 상기 전달 모드(1330)에서 종료 모드(1340)로 천이될 수 있다.
일 실시예에 의하면, 종료 모드(1340)는 사용자 입력 오프로딩 모듈(213)이 종료되는 상태로서, 상기 사용자 입력 오프로딩 모듈(213)은 자신이 사용하던 자원을 해제하는 상태일 수 있다.
본 개시에서 설명된 전자 장치 및 각각의 모듈에 의해 실행되는 기능들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합에 의해 구현될 수 있다. 소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령어(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 제어할 수 있다. 소프트웨어는, 컴퓨터 판독가능 저장 매체(computer-readable storage media)에 저장된 명령어를 포함하는 컴퓨터 프로그램으로 구현될 수 있다. 컴퓨터 판독가능 저장 매체에는, 예를 들어 ROM(Read-Only Memory), RAM(Random-Access Memory), 플로피 디스크, 하드 디스크 등의 마그네틱 저장 매체, CD-ROM, DVD(Digital Versatile Disc) 등의 광학 저장 매체 등이 포함될 수 있다. 컴퓨터 판독가능 저장 매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 개시의 실시예들에 따른 프로그램은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 소프트웨어 프로그램, 소프트웨어 프로그램이 저장된 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 디바이스의 제조사 또는 전자 마켓(예를 들어, 구글 플레이스토어, 앱 스토어)을 통해 전자적으로 배포되는 소프트웨어 프로그램 형태의 상품(예를 들어, 다운로드 가능한 애플리케이션 (downloadable application))을 포함할 수 있다. 전자적 배포를 위하여, 소프트웨어 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 소프트웨어 프로그램을 임시적으로 저장하는 중계 서버의 저장 매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 디바이스로 구성되는 시스템에서, 서버의 저장 매체 또는 디바이스의 저장 매체를 포함할 수 있다. 또는, 서버 또는 디바이스와 통신 연결되는 제3의 디바이스(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3의 디바이스의 저장 매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 디바이스 또는 제3 디바이스로 전송되거나, 제3 디바이스로부터 디바이스로 전송되는 소프트웨어 프로그램 자체를 포함할 수 있다. 이 경우, 서버, 디바이스 및 제3 디바이스 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 디바이스 및 제3 디바이스 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다. 예를 들면, 서버가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 디바이스가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다. 또 다른 예로, 제3 디바이스가 컴퓨터 프로그램 제품을 실행하여, 제3 디바이스와 통신 연결된 디바이스가 개시된 실시예에 따른 방법을 수행하도록 제어할 수 있다. 제3 디바이스가 컴퓨터 프로그램 제품을 실행하는 경우, 제3 디바이스는 서버로부터 컴퓨터 프로그램 제품을 다운로드하고, 다운로드된 컴퓨터 프로그램 제품을 실행할 수 있다. 또는, 제3 디바이스는 프리로드(pre-loaded)된 상태로 제공된 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수도 있다.
본 개시에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로 본 개시를 한정하려는 의도에서 사용된 것이 아니다. 예를 들면, 단수로 표현된 구성요소는 문맥상 명백하게 단수만을 의미하지 않는다면 복수의 구성요소를 포함하는 개념으로 이해되어야 한다. 본 개시에서 사용되는 '및/또는'이라는 용어는, 열거되는 항목들 중 하나 이상의 항목에 의한 임의의 가능한 모든 조합들을 포괄하는 것임이 이해되어야 한다. 본 개시에서 사용되는 '포함하다,' '가지다,' '구성되다' 등의 용어는 본 개시 상에 기재된 특징, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐이고, 이러한 용어의 사용에 의해 하나 또는 그 이상의 다른 특징들이나 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하려는 것은 아니다. 본 개시에서 사용된 '제1,' '제2' 등의 표현은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
본 개시에서 전술한 설명은 구체적인 실시예들을 중심으로 이루어졌으나, 본 개시가 그러한 특정 실시예들로 한정되는 것은 아니며, 다양한 실시예들의 다양한 변경, 균등물, 및/또는 대체물을 모두 포괄하는 것으로 이해되어야 한다.

Claims (20)

  1. 전자 장치에 있어서,
    외부 네트워크를 통한 게임 서버 또는 입력 장치와 데이터를 송수신하도록 구성된 통신부;
    디스플레이부;
    오디오 출력부;
    적어도 하나의 프로그램을 저장하는 메모리; 및
    상기 디스플레이부, 상기 오디오 출력부, 상기 메모리 또는 상기 통신부와 전기적으로 연결되고, 상기 메모리에 저장된 프로그램의 하나 이상의 명령어를 실행하는 적어도 하나의 프로세서를 포함하며;
    상기 적어도 하나의 프로세서는,
    사용자로부터 게임 애플리케이션을 선택하는 이벤트를 획득하면, 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하는 동작을 수행하도록 게임 구동 모듈을 실행하도록 구성되며,
    상기 게임 구동 모듈은, 게임이 개시되었음을 인지하면, 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하도록 사용자 입력 오프로딩 모듈을 생성하고, 상기 생성된 사용자 입력 오프로딩 모듈로 상기 사용자 입력을 상기 게임 서버로 전달하기 위해 필요한 위임 정보를 제공하도록 구성된, 전자 장치.
  2. 제1항에 있어서,
    상기 위임 정보는 상기 입력 장치의 장치 정보와 상기 게임 서버의 서버 정보를 포함하며, 상기 장치 정보는 상기 입력 장치의 디바이스 고유 식별 정보, 제조사, 제품 정보, MAC 주소, 상기 입력 장치로부터 수신되는 사용자 입력이 상기 전자 장치내에 저장되는 메모리 주소에 대한 정보 중 적어도 하나를 포함하는, 전자 장치.
  3. 제1항에 있어서,
    상기 사용자 입력은 게임의 플레이 명령과 게임 설정 관련 명령 중 하나 이상의 명령을 포함하는, 전자 장치.
  4. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 제2 사용자 입력을 수신할 때,
    상기 게임 서버로 전송한 제1 사용자 입력에 대응되는 게임 스트림 데이터를 수신했는지 여부와 무관하게, 상기 사용자 입력 오프로딩 모듈이 상기 제2 사용자 입력을 상기 게임 서버로 전달하도록 제어하는, 전자 장치.
  5. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 제2 사용자 입력을 수신할 때,
    상기 게임 서버로 전송한 제1 사용자 입력에 대응되는 게임 스트림 데이터를 상기 디스플레이부 및/또는 상기 오디오 출력부를 통해 출력하는 동작을 완료했는지 여부와 무관하게, 상기 사용자 입력 오프로딩 모듈이 상기 제2 사용자 입력을 상기 게임 서버로 전달하도록 제어하는, 전자 장치.
  6. 제1항에 있어서,
    상기 사용자 입력 오프로딩 모듈은 커널 영역에서 동작하는 것을 특징으로 하는, 전자 장치.
  7. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 게임 구동 모듈이 상기 전자 장치의 사양 또는 리소스 상태 중 적어도 하나를 고려하여, 상기 사용자 입력 오프로딩 모듈의 가용 여부 및/또는 사용 여부를 화면에 출력하도록 제어하는, 전자 장치.
  8. 제7항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈의 사용 여부를 사용자에게 제시하고, 상기 사용자로부터 상기 사용자 입력 오프로딩 모듈을 사용하지 않는다는 입력을 획득할 시, 상기 게임 구동 모듈이 상기 사용자 입력을 상기 게임 서버로 전달하도록 제어하는, 전자 장치.
  9. 제7항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈의 사용 여부를 사용자에게 제시하고, 상기 사용자로부터 상기 사용자 입력 오프로딩 모듈을 사용한다는 입력을 획득할 시, 상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈을 생성하도록 제어하는, 전자 장치.
  10. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 게임 서버로부터 수신된 게임 스트림 데이터가 게임 플레이 시작을 의미하는 특징적인 일련의 프레임의 조합을 포함할 때, 상기 게임이 개시되었다고 판단하는, 전자 장치.
  11. 전자 장치에서의 동작 방법에 있어서,
    사용자로부터 게임 애플리케이션을 선택하는 이벤트를 획득하면, 게임 구동 모듈을 실행하는 동작;
    상기 게임 구동 모듈이 입력 장치로부터 입력되는 사용자 입력을 통신부를 통해 게임 서버로 전달하는 동작;
    상기 게임 구동 모듈이 게임이 개시되었음을 인지하면, 사용자 입력 오프로딩 모듈을 생성하는 동작;
    상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈로 위임 정보를 제공하는 동작; 및
    상기 위임 정보를 이용하여 상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 입력되는 사용자 입력을 상기 통신부를 통해 상기 게임 서버로 전달하는 동작을 포함하는, 방법.
  12. 제11항에 있어서,
    상기 위임 정보는 상기 입력 장치의 장치 정보와 상기 게임 서버의 서버 정보를 포함하며, 상기 장치 정보는 상기 입력 장치의 디바이스 고유 식별 정보, 제조사, 제품 정보, MAC 주소, 상기 입력 장치로부터 수신되는 사용자 입력이 상기 전자 장치내에 저장되는 메모리 주소에 대한 정보 중 적어도 하나를 포함하는 것을 특징으로 하는, 방법.
  13. 제11항에 있어서,
    상기 사용자 입력은 게임의 플레이 명령과 게임 설정 관련 명령 중 하나 이상의 명령을 포함하는 것을 특징으로 하는, 방법.
  14. 제11항에 있어서,
    상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 제2 사용자 입력을 수신할 때,
    상기 게임 서버로 전송한 제1 사용자 입력에 대응되는 게임 스트림 데이터를 수신했는지 여부와 무관하게, 상기 사용자 입력 오프로딩 모듈이 상기 제2 사용자 입력을 상기 게임 서버로 전달하는 동작을 포함하는, 방법.
  15. 제11항에 있어서,
    상기 사용자 입력 오프로딩 모듈이 상기 입력 장치로부터 제2 사용자 입력을 수신할 때,
    상기 게임 서버로 전송한 제1 사용자 입력에 대응되는 게임 스트림 데이터를 디스플레이부 및/또는 오디오 출력부를 통해 출력하는 동작을 완료했는지 여부와 무관하게, 상기 사용자 입력 오프로딩 모듈이 상기 제2 사용자 입력을 상기 게임 서버로 전달하는 동작을 포함하는, 방법.
  16. 제11항에 있어서,
    상기 사용자 입력 오프로딩 모듈은 커널 영역에서 동작하는 것을 특징으로 하는, 방법.
  17. 제11항에 있어서,
    상기 게임 구동 모듈이 상기 전자 장치의 사양 또는 리소스 상태 중 적어도 하나를 고려하여, 상기 사용자 입력 오프로딩 모듈의 가용 여부 및/또는 사용 여부를 화면에 출력하는 동작을 포함하는, 방법.
  18. 제17항에 있어서,
    상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈의 사용 여부를 사용자에게 제시하고, 상기 사용자로부터 상기 사용자 입력 오프로딩 모듈을 사용하지 않는다는 입력을 획득할 시, 상기 게임 구동 모듈이 상기 사용자 입력을 상기 게임 서버로 전달하는 동작을 포함하는, 방법.
  19. 제17항에 있어서,
    상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈의 사용 여부를 사용자에게 제시하고, 상기 사용자로부터 상기 사용자 입력 오프로딩 모듈을 사용한다는 입력을 획득할 시, 상기 게임 구동 모듈이 상기 사용자 입력 오프로딩 모듈을 생성하는 동작을 포함하는, 방법.
  20. 제11항에 있어서,
    상기 게임 서버로부터 수신된 게임 스트림 데이터가 게임 플레이 시작을 의미하는 특징적인 일련의 프레임의 조합을 포함할 때, 상기 게임이 개시되었다고 판단하는 동작을 포함하는, 방법.
KR1020220004741A 2022-01-12 2022-01-12 전자 장치 및 방법 KR20230108961A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220004741A KR20230108961A (ko) 2022-01-12 2022-01-12 전자 장치 및 방법
PCT/KR2022/021609 WO2023136516A1 (ko) 2022-01-12 2022-12-29 전자 장치 및 방법
EP22920843.4A EP4406630A1 (en) 2022-01-12 2022-12-29 Electronic device and method
US18/647,978 US20240293737A1 (en) 2022-01-12 2024-04-26 Electronic device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220004741A KR20230108961A (ko) 2022-01-12 2022-01-12 전자 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230108961A true KR20230108961A (ko) 2023-07-19

Family

ID=87279406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220004741A KR20230108961A (ko) 2022-01-12 2022-01-12 전자 장치 및 방법

Country Status (4)

Country Link
US (1) US20240293737A1 (ko)
EP (1) EP4406630A1 (ko)
KR (1) KR20230108961A (ko)
WO (1) WO2023136516A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10046236B2 (en) * 2016-06-13 2018-08-14 Sony Interactive Entertainment America, LLC Browser-based cloud gaming
CN109126122A (zh) * 2017-06-16 2019-01-04 上海拆名晃信息科技有限公司 一种用于虚拟现实的云游戏系统实现方法
KR20190033022A (ko) * 2017-09-20 2019-03-28 경희대학교 산학협력단 계산 오프로딩을 이용한 클라우드 멀티미디어 서비스 제공 장치 및 방법
KR102368096B1 (ko) * 2019-10-21 2022-02-25 주식회사 엔씨소프트 게임 플레이 위임 방법 및 장치
US11446571B2 (en) * 2020-04-30 2022-09-20 Intel Corporation Cloud gaming adaptive synchronization mechanism

Also Published As

Publication number Publication date
WO2023136516A1 (ko) 2023-07-20
EP4406630A1 (en) 2024-07-31
US20240293737A1 (en) 2024-09-05

Similar Documents

Publication Publication Date Title
US12064687B2 (en) System, method, and graphical user interface for controlling an application executing on a server
US10080966B2 (en) System and method for experiencing advertised interactive applications
KR102493861B1 (ko) 대화형 클라우드 게임용 방법, 디바이스 및 시스템
CN111526927B (zh) 在失去主动控制之后通过用户模拟的临时游戏控制
US10771565B2 (en) Sending application input commands over a network
EP3662980B1 (en) User save data management in cloud gaming
US20130013671A1 (en) System and method for providing interactive content to non-native application environments
CN109568947A (zh) 一种云游戏控制方法、装置、设备和计算机存储介质
TW201446011A (zh) 一種設備智慧化控制方法及裝置、系統、隨插即用設備
CN107256154A (zh) 虚拟桌面服务
US11284160B2 (en) Start-up performance improvement for remote application
CN106569737A (zh) 云控制台服务器的动态网络存储
CN111880845A (zh) 控制目标应用的方法、系统及装置
US20130324242A1 (en) System, method, and graphical user interface for entering text with a physical or virtual game controller
WO2023001086A1 (zh) 基于云应用的设备控制方法、装置、电子设备和可读介质
KR20230108961A (ko) 전자 장치 및 방법
CN114090085A (zh) 对象控制方法及相关装置
US20240137425A1 (en) System and method for remotely controlling cloud-based client applications
CN110337044A (zh) 游戏电视的音视频输出方法、游戏电视及存储介质