KR20220047724A - 멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라 - Google Patents

멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라 Download PDF

Info

Publication number
KR20220047724A
KR20220047724A KR1020217038847A KR20217038847A KR20220047724A KR 20220047724 A KR20220047724 A KR 20220047724A KR 1020217038847 A KR1020217038847 A KR 1020217038847A KR 20217038847 A KR20217038847 A KR 20217038847A KR 20220047724 A KR20220047724 A KR 20220047724A
Authority
KR
South Korea
Prior art keywords
game
broker
client
lobby
session
Prior art date
Application number
KR1020217038847A
Other languages
English (en)
Inventor
셀컥 애틀리
제이슨 리앙
조단 홀렛
Original Assignee
번치 라이브, 인코퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 번치 라이브, 인코퍼레이션 filed Critical 번치 라이브, 인코퍼레이션
Publication of KR20220047724A publication Critical patent/KR20220047724A/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/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
    • 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
    • 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/45Controlling the progress of the video game
    • A63F13/48Starting a game, e.g. activating a game device or waiting for other players to join a multiplayer session
    • 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
    • A63F13/795Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for finding other players; for building a team; for providing a buddy list
    • 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/85Providing additional services to players
    • A63F13/87Communicating with other players during game play, e.g. by e-mail or chat

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)

Abstract

멀티플레이어 게임 환경 내에서 게임 중개 인프라는 멀티플레이어 게임 세션의 생성 및 사용을 용이하게 한다.
게임 중개 인프라는 게임 내 기존 게임플레이 세션의 컨텍스트(예: 플레이 중인 게임, 참가자의 신원)를 활용하여 게임 중개 애플리케이션에서 상기 세션을 시작할 수 있다.
게임 중개자 응용 프로그램의 세션은 게임 자체에서 제공되는 것보다 우수한 기능(예: 게임 관련 통신 기능)을 제공한다.
게임 중개 인프라에 의한 이러한 동작들은 사용자가 수행해야 하는 단계를 줄이거나 제거하여 멀티플레이어멀티플레이어 사용자 조정을 크게 단순화한다.

Description

멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라
관련출원에 대한 상호참조
본 출원은 본 명세서에 참조로 포함되는 2019년 4월 29일에 출원된 가출원 번호 62/840,311 및 2020년 4월 6일에 출원된 출원 번호 16/841,501의 이익을 주장한다.
본 발명은 멀티플레이어 전자 게임 세션을 설정하고 중개하는 것에 관한 것이다.
많은 전자 게임들은 멀티플레이어 게임플레이를 통해 플레이어들이 게임의 세션 내에서 함께 플레이할 수 있거나 서로 경쟁할 수 있게 한다. 일부 전자 게임들은 멀티플레이어 게임플레이가 각 게임들의 복사본을 실행하는 다수 개의 장치들을 포함할 수 있게 한다.
종종, 여러 플레이어들 사이에서 멀티플레이어 게임플레이의 조율은 어려울 수 있다. 예를 들어, 플레이어들은 게임을 함께 시작하지 못할 수도 있다; 플레이어들은 인게임 중 네비게이션과 컨트롤을 잃을 수 있다; 일부 플레이어들은 그들의 장치에 게임의 복사본이 없을 수도 있다; 또는 플레이어들이 서로 말할 수 있는 거리 내에 있는 게 아닌 경우, 실시간 통신은 어려울 수도 있다. 마지막으로, 플레이어들은 공동 게임의 영향을 적게 받는 멀티플레이어 게임플레이는 플레이어들 사이의 행동과 상호작용을 충분히 이해하지 못한다는 것을 경험할 수 있다.
환경은 하나 이상의 클라이언트 장치, 게임 중개자 서버 및 네트워크로 연결된 게임 서버를 포함한다. 각 클라이언트 장치는 게임 중개자 및/또는 게임을 포함한다. 게임 서버는 해당 게임의 게임 실행 세션을 실행한다. 게임 중개자 서버와 클라이언트의 게임 중개자는 게임플레이 세션을 중개하기 위해 게임 중개 인프라를 형성한다. 예를 들어, 게임 중개 인프라는 게임플레이 세션을 위한 "로비"를 생성하고 로비에 참가된 클라이언트가 서로 통신할 수 있게 한다. 게임은 클라이언트 장치에서 상호작용을 수신하고 게임 서버와 통신하여 게임플레이 세션의 실행에 영향을 준다. 일 실시예에서, 방법은 게임 중개자를 시작하고 게임을 선택하는 제1 클라이언트 장치를 포함한다. 게임 중개자 서버는 선택된 게임에 대한 로비를 구성한다. 제1 클라이언트 장치는 제2 클라이언트 장치를 로비로 초대한다. 제2 클라이언트 장치는 로비에 참가한다. 제1 클라이언트 장치는 게임 중개자 서버에 게임을 시작하도록 명령한다. 게임 중개자 서버는 로비 멤버를 확인하고 제2 클라이언트에 딥 링크(deep link)를 전송한다. 딥 링크는 게임과 같은 리소스에 연결되고, 추가적으로 게임의 특정 단계 또는 상태와 같은 리소스 내에서 보다 구체적인 컨텍스트를 지정한다. 제2 클라이언트는 게임을 설치한다.
게임 중개자 서버는 제1 클라이언트 장치에 제1 클라이언트 장치가 추가 클라이언트 장치를 로비로 초대하도록 제안한다. 제1 클라이언트 장치가 게임을 시작할 준비가 되었음을 표시한 후, 게임 중개자 서버는 게임 서버와 통신하여 게임을 시작한다. 게임 서버는 게임플레이 세션을 실행하기 시작한다.
일 실시예에서, 방법은 플레이 전 게임플레이를 구성하기 위해 로비를 초기화하는 게임 중개자를 시작하는 제1 클라이언트 장치를 포함한다. 게임 중개자는 로비를 생성한다. 제1 클라이언트 장치는 제2 클라이언트 장치를 로비로 초대한다.
제2 클라이언트 장치가 로비에 참가한다. 제1 클라이언트 장치는 게임을 선택한다.
게임 중개자 서버는 게임을 위한 로비를 구성한다. 제1 클라이언트 장치는 게임 중개자 서버에 게임을 시작하도록 지시한다. 게임 중개자 서버는 클라이언트 장치에 게임이 설치되어 있는지 여부를 확인하고, 제2 클라이언트 장치에 게임이 설치되어 있지 않다고 결정하자마자, 제2 클라이언트 장치에 게임을 설치하게 하는 딥 링크를 제2 클라이언트 장치에 전송한다. 게임 중개자 서버는 제1 클라이언트 장치가 추가 클라이언트 장치를 로비로 초대할 것을 제1 클라이언트 장치에 제안한다. 게임 중개자 서버는 게임 서버에 게임플레이 세션을 시작하도록 지시한다. 게임 서버는 게임플레이 세션을 시작한다.
일부 실시예에서, 게임 중개 인프라는 게임 자체 외부의 통신 채널을 제공하고 플레이될 게임의 현재 컨텍스트와 같이, 문맥 정보에 기초하여 통신 채널의 빠른 설정을 가능하게 한다. 예를 들어, 쉽게 구성 가능한 표준 사용자 인터페이스가 있는 개인용 컴퓨터 또는 스마트폰에서 실행되는 게임에서 특히 유용할 한 시나리오에서, 게임은 게임이 사용될 때 게임 자체 내에서 현재 게임플레이 세션을 설정하고 있는 사용자를 포함하도록 통신 채널(예: 음성 및 비디오)을 구성하는 사용자 인터페이스 요소를 제공한다. 게임 자체에서 사용자가 그룹(이하 "게임 정의 그룹")에 참가하기를 가능하게 하는 다른 시나리오에서, 게임 정의 그룹의 모든 멤버들에게 사용자 인터페이스 요소를 제공하고 멤버 중 한 명이 게임을 사용할 때 통신 채널(예: 문자 메시징)이 해당 멤버를 포함하도록 구성한다. 이를 통해 게임 정의 그룹에 속한 사용자들의 하위 집합은 통신할 수 있고 게임플레이 세션을 시작할 수 있다. 다른 시나리오에서, 사용자는 하나의 클라이언트 장치(예: 게임용 콘솔)에서 게임을 플레이하고, 다른 클라이언트 장치(예: 스마트폰)에서 게임 중개자를 사용한다. 게임은 게임 중개 서버에 게임이 현재 플레이 중이고 주어진 로컬 네트워크 ID(예: 와이파이 네트워크)를 통해 네트워크 연결이 있음을 알린다. 게임 중개 서버는 일부 클라이언트 장치의 게임 중개자의 인스턴스 또한 동일한 로컬 네트워크 ID를 사용하는 것으로 등록했는지 여부를 결정하고, 등록이 된 경우, 게임 중개자 인스턴스로부터 특정 게임에 사용할 로비 사용자 인터페이스를 구성하도록 지시한다. 사용자는 로비 사용자 인터페이스를 이용하여 게임 세션에 참가하도록 다른 사용자를 초대할 수 있다.
도 1은 일 실시예에 따른, 게임 중개 환경을 도시하는 고수준의 블록도이다.
도 2는 일 실시예에 따른, 게임 중개 시스템이 작동하는 소프트웨어 스택의 고수준의 블록도이다.
도 3은 제1 실시예에 따른, 게임 중개 시스템을 이용하여 멀티플레이어 게임플레이 세션을 시작하는 프로세스를 도시한다.
도 4는 제2 실시예에 따른, 게임 중개 시스템을 이용하여 멀티플레이어 게임플레이 세션을 시작하는 프로세스를 도시한다.
도 5a 및 도 5b는 일부 실시예에 따라, 멀티플레이어 게임 세션을 설정하고 사용할 때 도 1의 환경의 다양한 구성요소 간의 상호작용을 도시한다.
도 5c는 게임과 게임 중개자가 서로 다른 장치에서 실행되는 일 실시예에 따라, 멀티플레이어 게임 세션을 설정하고 사용할 때 도 1의 환경의 다양한 구성요소 간의 상호작용을 도시한다.
도 5d는 게임과 게임 중개자가 다른 장치에서 실행되는 다른 실시예에 따라, 멀티플레이어 게임 세션을 설정하고 사용할 때 도 1의 환경의 다양한 구성요소들 사이의 상호작용을 도시한다.
도 6은 게임(514A)의 사용자 인터페이스 내에 포함된 세션 초기화 제어를 예시한다.
도 7은 제1 실시예에 따른 로비의 간략화된 예를 예시한다.
도 8은 제2 실시예에 따른 로비의 간략화된 예를 예시한다.
도면은 단지 예시의 목적으로 다양한 실시예를 묘사한다. 본 발명의 기술 분야에 속한 통상의 기술자는 본 명세서에 설명된 구조 및 방법의 대안적인 실시예가 본 명세서에 설명된 본 발명의 원리를 벗어남 없이 채용될 수 있음을 후술하는 설명으로부터 쉽게 인식할 것이다.
도 1은 일 실시예에 따른, 게임 중개가 발생하는 환경(100)을 예시하는 고수준 블록도이다. 도 1은 네트워크(120)로 연결된 2개의 클라이언트(110A, 110B), 게임 중개자 서버(130), 게임 서버(140), 게임 클라이언트(111), 및 앱 스토어 서버(150)를 도시한다. 명확하고 간단한 설명을 위해, 도 1은 2개의 클라이언트(110), 하나의 게임 중개자 서버(130), 하나의 게임 클라이언트(111), 하나의 게임 서버(140) 및 하나의 앱 스토어 서버(150)만을 도시한다. 컴퓨팅 환경(100)의 실시예들은 네트워크(120)와 연결된 다수의 클라이언트(110), 게임 클라이언트(111), 게임 중개자 서버(130), 게임 서버(140), 및 앱 스토어 서버(150)를 가질 수 있다. 마찬가지로, 도 1의 다양한 엔티티에 의해 수행되는 기능들은 다른 실시예들 사이에서 상이할 수 있다.
도 1은 유사한 요소를 식별하기 위해 유사한 참조 번호를 사용한다. "110A"와 같이 참조 번호 뒤의 문자는 텍스트가 해당 특정 참조 번호를 갖는 요소를 구체적으로 참조함을 나타낸다. "110"과 같이, 뒤따르는 문자가 없는 텍스트의 참조 번호는, 해당 참조 번호를 포함하는 도면의 일부 또는 모든 요소를 나타낸다. 예를 들어, 텍스트에서 "110"은 도면에서 참조 번호 "110A" 및/또는 "110B"를 나타낸다.
클라이언트 장치(110) (또는 간결하게 하기 위해, 간단히 "클라이언트")는 다른 클라이언트와의 통신, 다양한 목적을 위한 소프트웨어 애플리케이션 실행, 네트워크(120)의 웹 서버에 의해 호스팅된 콘텐츠와 같은 전자 콘텐츠 소비와 같은 기능을 수행하기 위해 사용자에 의해 사용되는 전자 장치이다. 예를 들어, 클라이언트는 스마트폰, 태블릿 컴퓨터, 노트북 또는 랩탑 컴퓨터, 데스크탑 컴퓨터, 또는 사용자가 전자 게임을 플레이 및/또는 전자 게임과 상호작용할 수 있는 기타 다른 컴퓨팅 시스템일 수 있다. 클라이언트(110)는 사용자가 전자 게임과 같은 콘텐츠를 볼 수 있는 디스플레이를 포함한다. 또한, 클라이언트(110)는 사용자가 클라이언트와 다양한 기능을 수행하기 위해 상호작용할 수 있는, 물리적 및/또는 온스크린 버튼과 같은, 사용자 인터페이스(UI)를 제공한다.
일 실시예에서, 클라이언트(110)는 게임 중개자(112) 및 전자 게임(114)을 포함하고, 게임 중개자(112)는 전자 게임(114) 또는 다른 전자 게임과 멀티플레이어 게임 세션의 생성을 용이하게 한다. 실시예에 따라, 게임 중개자(112) 및/또는 게임(114)은 운영 체제에 통합되거나 클라이언트(110) 상에서 실행되는 애플리케이션 또는 다른 소프트웨어로서 구현될 수 있다. 일부 실시예에서, 게임(114)은 독립적인 소프트웨어 아이템이라기보다는, 게임 중개자(112)의 일부이다. 다른 실시예에서, 게임(114)은 복수의 위치에, 예를 들어, 독립적인 소프트웨어 아이템으로서 클라이언트(110)에 부분적으로, 게임 서버(140)에 부분적으로, 배포된다.
일부 실시예에서, 게임 중개자 및 전자 게임(114)은 동일한 클라이언트(110) 상에서 설치 및/또는 실행될 필요는 없다. 오히려, 일부 실시예에서 게임(114)은 별도의 게임 클라이언트 장치(111)(예를 들어, 닌텐도 스위치, 또는 XBOX ONE X, 또는 SONY 플레이스테이션 4, 또는 마이크로소프트 WINDOWS 또는 애플 Mac OS와 같은 상용 운영 체제를 실행하는 랩탑 또는 데스크탑 컴퓨터와 같은 범용 컴퓨터)에서 플레이될 수 있다. 이러한 실시예에서, 게임(114)은 더 상세하게 후술되는 바와 같이, 게임 중개자 라이브러리(115)를 갖거나 또는 사용할 수 있거나, 또는 게임 클라이언트(111)는 게임 중개자(112)를 가질 수 있다. 게임 중개자 라이브러리(115) 및/또는 게임 중개자(112)는 게임 클라이언트 장치(111)가 게임 중개 인프라의 일부가 되도록 제공한다. 클라이언트 장치(110)는 그 다음 게임 클라이언트 장치(111)와 함께 사용될 수 있고, 다른 게임 세션 참가자와 채팅, 저장 및 공유할 게임 세션 부분 지정, 다른 참가자의 비디오 표시 등과 같이, 게임 중개 인프라를 통해 설정된 게임 세션과 상호작용하는 독립적인 수단으로 수행하는 게임 중개자(112)와 함께 사용될 수 있다.
게임 중개자(112)는, 클라이언트(110)(또는 게임 클라이언트(111)) 상에서 실행되고 멀티플레이어 게임플레이를 중개하는 실행 가능한 애플리케이션과 같은, 소프트웨어 모듈이다. 게임 중개자(112)는 게임 중개자 서버(130)뿐만 아니라 게임(114)과 같은 하나 이상의 게임들과 상호작용한다. 게임 세션을 가능하게 하기 위해 사용되는 게임 중개 인프라는 적어도 게임 중개자(112)를 포함하고, 또한 일부 실시예에서 적어도 하나의 다른 클라이언트(110) 상의 게임 중개자 서버(130) 및/또는 적어도 하나의 다른 게임 중개자(112)를 포함한다. 실시예에 따라, 게임 중개 인프라는 게임플레이 세션에 대한 "로비" 사용자 인터페이스 제공, 및/또는 강화된 게임플레이 제공과 같은, 게임플레이 세션의 다양한 양상을 제어한다. 일 실시예에서, 게임플레이 세션은 "딥 링크"(게임의 특정 단계 또는 상태와 같이, 리소스 내에서 보다 구체적인 컨텍스트를 추가로 지정하는, 게임과 같은 리소스에 대한, URL(Uniform Resource Locator)과 같은, 링크)를 사용하여, 로비와 같은, 로비와 같은 게임 중개자(112)의 UI를 통해 시작될 수 있다. 일 실시예에서, 게임 중개자(112A)는 제1 클라이언트(110A)에서 실행되고 제2 클라이언트(110B) 상의 게임중개자(112B)와 같이, 클라이언트(110A)에 의해 시작된 게임플레이 세션에 클라이언트(110B)가 참가할 수 있도록, 제2 클라이언트(110B)와 함께 상호작용한다. 다른 실시예에서, 복수의 클라이언트(110)는 클라이언트(110A)에 의해 시작된 게임플레이 세션에, 예를 들어, 플레이되고 있는 게임이 지원할 수 있는만큼, 참여 가능하도록 클라이언트(110A)에 의해 상호작용할 수 있다.
로비는 게임플레이 세션과 관련된 클라이언트(110) 간의 통신을 위한 환경을 제공하는 사용자 인터페이스이다. 로비는 클라이언트(110)가 라이브 비디오 피드, 스크린 캡처 피드, 및/또는 음성을 사용하는 것과 같이, 게임플레이 세션 이전, 도중 및/또는 이후에 통신할 수 있게 한다. 일 실시예에서, 로비는 적어도 하나의 클라이언트(110)가 시작될 게임의 게임플레이 설정을 구성할 수 있게 하는 기능을 갖는다. 일 실시예에서, 로비는 게임 중개자 서버(130) 상에서 적어도 부분적으로 실행된다. 로비는 게임에 대한 클라이언트(110)의 사용자 이름 또는 순위뿐만 아니라, 게임의 레벨 또는 게임플레이 세션에 관한 기타 정보와 같은, 게임플레이 세션에 대한 다양한 정보를 더 포함할 수 있다. 예를 들어, 일부 실시예에서 로비는 클라이언트(110A)가 클라이언트(110B)와 문자 메시지를 교환하는 채팅방을 포함한다.
대안적으로 또는 추가적으로, 다른 예로서, 일부 실시예에서 로비는 클라이언트(110)의 사용자가 서로 보고 듣는 화상 통화(라이브 비디오 피드 사용)를 가능하게 한다.
일부 실시예에서, 게임(114)들 중 하나 이상은 게임 중개자 라이브러리(115)에 액세스한다. 게임 중개자 라이브러리(115)는 게임 중개 인프라(예: 게임 중개자(112) 및 게임 중개자 서버(130))의 나머지와 통합하여 멀티플레이어 게임의 플레이를 용이하게 하는 실행 가능한 코드를 포함한다. 게임 중개자 라이브러리(115)는 게임 중개자 라이브러리(115)(게임(114)과 같은)를 통합하는 소프트웨어가 게임 중개자(112)의 동작의 하위 집합을 수행할 수 있도록, 게임 중개자(112)가 설치되지 않은 경우에도, 게임 중개자(112) 자체에 의해 제공되는 기능의 하위 집합일 수 있다.
게임 중개자 라이브러리(115)는 게임(114) 자체에 완전히 또는 부분적으로 고정적으로 링크될 수 있거나, 게임 중개자 라이브러리는 게임 외부에 저장되고 동적 링크에 의해 액세스될 수 있다. 일부 실시예에서, 게임 중개자가 설치되면, 게임 중개자 라이브러리도 함께 설치하기 위하여 게임 중개자 라이브러리(115)는 게임 중개자(112) 내에 포함된다. 게임 중개자(112) 및 게임 중개자 라이브러리(115)는 모두 게임 중개자 서버(140)뿐만 아니라, 클라이언트 장치 상의 게임 중개자(112) 및 게임 중개자 라이브러리(115) 모두를 포함하는 게임 중개 인프라의 일부일 수 있다. 게임 중개자 라이브러리(115)는 게임 중개자(112) 및/또는 게임 중개자 서버(130)의 로직을 생성하는 동일한 조직에 의해 생성될 수 있다(그러나 반드시 그럴 필요는 없음). 게임(114) 자체는 게임 중개자(112) 및/또는 게임 중개 인프라의 다른 구성요소를 생성하는 조직과 다른 독립적인 제3자 게임 개발자와 같은 임의의 조직에 의해 생성될 수 있다. 일부 실시예에서, 게임 중개자 라이브러리(115)가 사용되지 않고, 대신 게임 중개자(112) 자체가 모든 필요한 기능을 제공한다.
도 7은 일 실시예에 따른 로비의 단순화된 예를 예시하며, 로비는 비디오 창(710), 설정 버튼(720), 게임 버튼(730), 초대 버튼(740) 및 참가 아이콘(750)을 포함한다. 도 7-8의 예시는 모바일 장치인 것으로, 로비는 클라이언트(110) 상에서 실행되는 게임 중개자(112)의 페이지 또는 스크린과 같은 사용자 인터페이스를 제공할 수 있다.
예를 들어, 클라이언트(110A 및 110B)가 로비에 참가하는 경우, 도 7에서와 같이, 클라이언트(110A)를 위한 비디오 창(710A) 및 클라이언트(110B)를 위한 비디오 창(710B)이 존재한다. 추가 클라이언트(110)가 로비에 참가하는 경우, 디스플레이 상의 추가 창을 수용하기 위해 기존에 존재하는 창들의 경계들을 수정할 수 있는, 추가 창이 추가될 수 있다. 일 실시예에서, 창 임계값이 도달하거나 초과하는 경우, 추가 창들은 추가되지 않는다. 예를 들어, 창 임계값은 창의 수 또는 창 크기일 수 있다. 각각의 비디오 창(710)은 그래픽 및 오디오 콘텐츠 모두를 포함하는, 연관된 클라이언트(110)로부터 라이브 비디오 피드를 제공한다. 라이브 비디오 피드는, 예를 들어, 클라이언트(110)의 카메라로부터, 예를 들어, 클라이언트의 사용자(또는 카메라의 시야에 있는 것)의 이미지를 디스플레이한 것, 클라이언트의 화면의 콘텐츠(예를 들어, 화면 캡처의 피드) 등일 수 있다. 일 실시예에서, 클라이언트(110)는 예를 들어, 옵션 버튼(730)을 사용하여 클라이언트(110) 라이브 비디오 피드의 그래픽 및/또는 오디오 콘텐츠의 디스플레이를 비활성화할 수 있다. 일 실시예에서, 클라이언트(110)는 클라이언트(110)의 전면 카메라에서 후면 카메라로의 전환과 같이, 라이브 비디오 피드를 생성하는 데 사용되는 카메라를 변경할 수 있다.
옵션 버튼(730)은 게임 중개자(112)의 설정을 제어한다. 예를 들어, 일부 실시예에서, 클라이언트(110)에 의한 옵션 버튼(730)의 선택 시, 게임 중개자(112)는 설정 페이지를 로드한다. 설정 페이지에서, 클라이언트(110)에 의한 오디오 및/또는 그래픽 콘텐츠의 전송 활성화 또는 비활성화, 라이브 비디오 피드 생성에 사용되는 카메라 변경, 로비에 참가한 다른 클라이언트(110)로부터 들어오는 하나 이상의 라이브 비디오 피드를 음소거하는 등과 같이, 클라이언트(110)를 사용하여 하나 이상의 설정이 조정될 수 있다.
옵션 버튼(730)은 또한 게임 중개자(112)에서 게임 선택을 제어한다. 예를 들어, 클라이언트(110)의 사용자가 게임 버튼(730)을 선택하면, 게임 중개자(112)는 플레이 가능한 게임을 나열하는 게임 페이지를 로드한다. 게임 페이지에서, 게임은 클라이언트(110)를 사용하여 선택될 수 있다. 예를 들어, 게임 페이지는 나열된 각각의 게임에 대한 게임 제목, 게임 아이콘 또는 이미지, 게임 요약, 및/또는 게임을 선택하기 위한 온스크린 버튼을 포함하여, 이용 가능한 게임의 목록을 포함할 수 있다. 예를 들어, 나열된 게임은 제목 "FortniteTM", 게임 캐릭터의 이미지, 및 "배틀 로얄에서 경쟁하라"는 요약을 포함할 수 있다. 일 실시예에서, 게임 페이지는 클라이언트(110)가 자동차 경주 게임 내에서 경주하고 싶어 하는 트랙, 또는 로드 시 사용자 캐릭터가 배치되어야 하는 지도 상의 위치와 같이, 클라이언트가 플레이 하고 싶어 하는 게임의 일부를 더 선택할 수 있게 한다.
클라이언트(110)에 의한 게임 선택 시, 게임 중개자(112)는 게임의 하나 이상의 특징에 기초하여 선택된 게임의 룩앤필(look and feel)을 획득하도록 로비를 구성한다. 그래픽 및/또는 텍스트 요소를 표시하도록 구성될 수 있다. 예를 들어, "Fortnite"가 선택되면, 게임 캐릭터의 게임 이미지는 게임 로고(720)가 오버레이된 "Fortnite" 로고와 함께 표시될 수 있다. 비디오 창(710)과 같은, 로비의 다른 측면은, 제2 실시예에 따른 로비의 단순화된 예를 도시하는 도 8에서 보여지는 바와 같이, 구성을 수용하도록 조정될 수 있다.
도 8은 로비의 다른 상태(예: 게임을 선택된 이후)를 예시한다. 도 8은 게임 이미지(810), 게임 로고(820), 옵션 버튼(830), 비디오 창(840) 및 시작 버튼(850)을 포함한다. 게임 이미지(810)는 게임 풍경에서 칼을 들고 있는 게임 캐릭터와 같은, 게임 A로부터의 이미지이다. 게임 로고(820)는 타이틀 화면에서 게임 내 게임 로고가 어떻게 나타날 수 있는지와 같은, 게임의 스타일된 타이틀이다. 옵션 버튼(830)은 라이브 비디오 피드의 일부로서 오디오 및/또는 그래픽 콘텐츠의 전송과 같은, 하나 이상의 설정이 조정되도록 한다.
비디오 창(840)은 비디오 창(710)과 유사한 비디오 창이지만, 다른 차원일 수 있다. 일 실시예에서, 로비에 참가한 각 클라이언트(110)는 연관된 클라이언트(110)의 라이브 비디오 피드를 표시하는 비디오 창과 연관된다. 일 실시예에서, 게임에 대해 허용된 플레이어 수만큼 많은 비디오 창이 존재하고, 로비에 참가한 클라이언트(110)가 게임에 허용되는 플레이어보다 적은 경우, 사용되지 않은 비디오 창에는, 후술되는 초대 페이지에 액세스하기 위해 클라이언트(110)가 선택할 수 있는, "+" 아이콘과 같은, 아이콘이 포함된다. 시작 버튼(850)은 게임 중개자(112)가 게임플레이 세션을 시작하도록, 예를 들어, 게임플레이 세션의 실행을 시작하도록 유도한다.
도 7로 돌아가서, 일 실시예에 따르면, 초대 버튼(740)은 클라이언트(110)의 로비로의 초대를 제어한다. 예를 들어, 클라이언트에 의한 초대 버튼(740)의 선택 시, 게임 중개자(112)는 클라이언트(110)의 사용자가 다른 클라이언트(110)에게 로비에 참가하는 초대를 보낼 수 있게 하는 초대 페이지를 로드한다. 예를 들어, 초대 페이지는 각각의 나열된 기술에 대한 기술 제목 및 기술 아이콘을 포함하는, 초대 기술의 목록을 포함할 수 있다. 예를 들어, iMessageTM 목록에 있는 기술은 제목 "iMessageTM" 및 iMessageTM 아이콘을 포함할 수 있다. 초대 페이지는 또한 초대가 전송될 수 있는 클라이언트(110)의 목록을 포함할 수 있고, 각각의 나열된 클라이언트(110)는 예를 들어, 이름을 포함한다. 초대에 대한 하나 이상의 클라이언트(110)의 선택 및 하나 이상의 초대 기술의 선택 시, 게임 중개자(112)는 초대 메시지를 생성하고 초대 메시지가 전송될 수 있기 위해서 선택된 초대 기술을 구성한다. 예를 들어, 초대 기술이 문자 메시지이고 초대받는 사람이 "Justin"이라는 이름과 연관된 클라이언트(110)인 경우, 게임 중개자(112)는 문자 초대 메시지를 생성하고, 클라이언트(110)에 대한 문자 메시지 애플리케이션을 열고, 초대받는 사람에게 텍스트를 전달하고, 초대 메시지를 텍스트 메시지 애플리케이션의 메시지 부분에 붙여 넣는다. 이후, 클라이언트(110)는 문자 메시지 애플리케이션의 버튼을 사용하여 초대를 피초청자에게 전송할 수 있다.
참가 아이콘(750)은 로비에 참가한 클라이언트(110)의 수를 나타낸다. 도 7의 예시에서, 로비에는 두 개의 클라이언트(110)가 존재하므로, 참가 아이콘(750)은 "2"를 표시한다. 다른 실시예에서, 다른 아이콘뿐만 아니라, 다른 버튼, 그래픽 및/또는 오디오 콘텐츠가 제공될 수 있다. 예를 들어, 로비는 클라이언트(110)와 연관된 이름을 나타내는 로비에 있는 각 클라이언트(110)에 대하여 문자 스트링을 디스플레이할 수 있다. 일 실시예에서, 로비는 게임을 하고 있거나 게임을 할 준비를 하고 있는 다른 클라이언트(110)의 목록을 포함할 수 있고, 클라이언트(110)는 다른 클라이언트(110)의 로비 및/또는 게임플레이 세션에 참여하기 위해 상기 게임을 선택할 수 있다.
일 실시예에서, 로비는 클라이언트(110)가 예를 들어, Facebook Live™YouTube™또는 Twitch™와 같은 라이브스트림 제품을 사용함으로써, 게임플레이의 라이브 스트림을 시작할 수 있게 한다. 게임플레이의 라이브 스트림은 게임플레이 세션에서 플레이하는 클라이언트(110)의 화면에서 보여지는 게임플레이의 비디오를 게임플레이 세션에서 플레이하지 않는 클라이언트(110)로 전송하는 것을 포함한다. 또한, 로비에 참가하거나 로비를 선택한 클라이언트(110)는 게임플레이 세션에 참여하기보다, 오히려 라이브 스트림을 보는 것을 선택할 수 있다. 예를 들어, 게임이 최대 4명의 플레이어를 허용하고 제5 클라이언트(110)가 로비에 참여하는 경우, 제5 클라이언트(110)는 플레이할 수 없음에도 불구하고 게임플레이 세션을 라이브 스트리밍하는 것을 선택할 수 있다.
일 실시예에서, 제1 클라이언트(110)는 게임 중개자 서버(130)를 통해 게임 중개자(112)를 사용하여 게임플레이 세션에 하나 이상의 추가 클라이언트(110)를 초대할 수 있다(예를 들어, 도 7의 실시예에서 초대 버튼(740) 사용함으로써). 초대의 수신 시, 각각의 추가 클라이언트의 게임 중개자(112)는 추가 클라이언트(110)의 사용자에게 초대를 수락하거나 거부하기를 유도한다. 초대가 수락되는 경우, 게임 중개자 서버(130)는 게임플레이 세션에 참가를 활성화할 수 있도록 각각의 수락 클라이언트(110)와 더 상호작용할 수 있다. 또한, 초대가 수락되는 경우, 각각의 클라이언트(110)는 로비에 추가되어, 예를 들어, 채팅방 또는 기타 통신 기능에 참여할 수 있는 능력을 획득한다.
도 1로 돌아가서, 전자 게임(114)은 게임 중개자(112)와 상호작용하여 클라이언트(110)의 사용자에게 게임플레이 세션을 제공한다. 게임(114)은 클라이언트(110)의 운영 체제에서 실행되도록 기본적으로 설정된 전용 소프트웨어 애플리케이션, (일부 실시예에서) 게임 중개자(112), React Native™와 같은 프레임워크로 설정된 게임 등과 같은, 게임플레이 엔진 내에서 실행되는 코드(예: HTML 5 코드)일 수 있다. 게임플레이 세션은 서로 협력하여 게임(114)의 인스턴스 세트를 플레이하기 위해 각각의 클라이언트(110)와 상호작용하는 하나 이상의 사용자를 포함한다. 멀티플레이어 게임플레이 세션에서, 다수의 클라이언트(110)는 동일한 게임을 대화식으로 플레이하면서, 단일 게임플레이 세션에 참여한다. 단일 플레이어 게임플레이 세션에서, 하나의 클라이언트(110)는 단일 게임플레이 세션에 참여한다. 일부 실시예에서, 게임(114)은 게임 중개자 서버(130)에서 실행되고, 게임(114)을 플레이하기 위한 인터페이스를 제공하는 클라이언트(110)를 사용하여 액세스된다. 예를 들어, 게임(114)은 게임(114)의 실행 결과를 클라이언트(110)에 전송하는 게임 중개자 서버(130) 상에서 실행된다. 클라이언트(110)는 게임 중개자 서버(130)로부터 수신된 실행 결과와 상호작용하고 게임(114)의 실행에 영향을 미치는 상호작용을 게임 중개자 서버(130)에 전송한다. 게임플레이 세션은 이러한 방식으로 왔다갔다 진행될 수 있다.
다른 유형의 게임이 있을 수 있고, 게임 중개자(112) 및/또는 게임 중개자 서버(130)는 다른 유형의 게임을 다르게 지원할 수 있다. 일 실시예는 인스턴트 게임 및 다운로드 가능한 게임을 포함한다. 이러한 실시예에서, 인스턴트 게임은 추가적인 소프트웨어를 다운로드하지 않고 플레이할 수 있다. 예를 들어, 인스턴트 게임은 클라이언트(110)가 추가적인 소프트웨어의 사전 설치 없이 게임을 시작할 수 있도록 게임 중개자(112)에 적어도 부분적으로 통합될 수 있다. 클라이언트(110)는 인스턴트 게임을 위한 게임 중개자(112)를 사용하여 게임플레이 세션을 시작하는 경우, 게임 중개자(112)는 클라이언트(110)에 게임이 설치되어 있는지 여부를 확인하지 않는다. 반면, 다운로드 가능한 게임은 게임플레이 세션이 시작될 수 있기 전에 클라이언트(110)에 의한 게임의 다운로드가 필요하다. 클라이언트(110)가 다운로드 가능한 게임에 대하여 게임 중개자(112)를 사용함으로써 게임플레이 세션을 시작하는 경우, 게임 중개자(112)는 클라이언트(110)에 게임이 설치되어 있는지 확인할 수 있다.
게임 중개자 서버(130)는 게임 중개자(112)의 동작을 지원하기 위해 클라이언트(110)와 상호작용한다. 게임 중개자 서버(130)는 로비와 함께 실행되는 게임(114)의 특성에 따라 게임 중개자(112)에 의해 실행되는 로비를 구성한다. 예를 들어, 로비는 특정 게임을 플레이할 준비가 된 플레이어를 보여줄 수 있고, 사용자가 다른 플레이어를 초대하거나 게임플레이의 라이브 스트림을 시작하게 할 수 있고, 게임(114)에서 사용자가 특정한 게임플레이 설정 구성(예를 들어, 사용할 캐릭터 또는 플레이할 경기장 선택 등과 같이)을 가능하게 할 수 있다. 게임 중개자 서버(130)는 로비와 연계하여 시작되는 게임(114)의 특성에 따라 게임 중개자(112)에 의해 시작되는 로비를 구성한다.
게임플레이 세션을 시작하라는 명령 수신 시, 게임 중개자(112)는, 게임플레이 세션에 포함된 각 클라이언트(110)를 확인하는 게임 중개자 서버(130)에 예를 들어, 쿼리를 수행함으로써, 알린다. 게임플레이 세션에 포함된 특정 클라이언트(110)에 게임(114)이 설치되어 있지 않은 경우, 게임 중개자 서버(130)는 클라이언트(110)에 딥 링크, 예를 들어, 애플 앱 스토어(Apple App Store™)또는 구글 플레이 스토어(Google Play Store™)와 같은 애플리케이션 스토어에 대응하는 딥 링크를 전송한다. 이후, 딥 링크는 게임 중개자(112)를 종료하지 않고 특정 클라이언트(110)에 게임 설치를 시작한다. 대안적으로, 딥 링크는 클라이언트(110)에 게임이 설치되어 있는지 여부에 관계없이 게임플레이 세션에 포함된 각 클라이언트(110)로 전송된다. 게임이 설치되지 않은 경우, 딥 링크는 사용자가 로비를 떠나지 않고서도 게임 설치를 용이하게 한다. 딥 링크는 URL(Uniform Resource Locator)일 수 있다. 일 실시예에서, 딥 링크는 예를 들어, 게임 중개자(112)의 웹뷰에서 게임이 다운로드될 수 있는 페이지에 대한 애플리케이션 벤더(예를 들어, 애플리케이션 스토어)를 열도록 클라이언트(110)에 지시한다. 예를 들어, 딥 링크는 페이지로 이동하기 위해 클라이언트(110)에 의해 사용되는 애플리케이션 벤더의 페이지와 연관된 식별자를 포함한다. 다른 실시예에서, 딥 링크는 게임(114)이 게임 중개자 라이브러리(115)를 포함하는지 여부를 확인하는 것을 용이하게 한다. 클라이언트(110) 및/또는 게임 중개자 서버(130)가 딥 링크에 의해 용이하게, 게임에 라이브러리(115)가 있다고 결정하는 경우, 게임에 기능을 전달한다. 예를 들어, 클라이언트(110) 및/또는 게임 중개자 서버(130)는 게임에 음성 및/또는 비디오 스트림 컨트롤을 전달한다.
이러한 전송은 사용자들이 로비로 돌아갈 필요 없이 게임플레이 동안 음성 및/또는 비디오의 다양한 측면을 제어할 수 있게 한다. 다른 실시예에서, 라이브스트림 기능, 게임 초대 기능 등과 같은, 다른 기능이 게임에 전달될 수 있다. 이러한 실시예에서, 클라이언트(110)가 게임에 전달된 기능을 제어하기 위해 상호작용할 수 있는 온스크린 버튼과 같은, 하나 이상의 그래픽 요소는 하나 이상의 그래픽 요소가 게임플레이 세션의 과정에서 디스플레이될 때 게임에 오버레이될 수 있다. (게임 중개자(112) 또는 게임 중개자 라이브러리(115)에 의해 게임에 오버레이된 그래픽 사용자 인터페이스 요소는 이하 "오버레이"로 지칭된다.) 또한, 게임 자체를 시작하는 것은 게임 중개자(112)로부터 직접 게임에 액세스하기 위해 딥 링크를 사용하는 것을 포함할 수 있다. 또한, 일부 실시예에서 게임 중개자 서버(130)는 로비의 상태를 확인하고, 로비에 참여하는 클라이언트(110)의 수에 따라, 나머지 클라이언트들을 초대한 클라이언트(110)에게 더 많은 클라이언트(110)가 초대될 수 있다고 제안한다. 일 실시예에서, 게임 중개자 서버(130)는 로비를 호스팅한다. 일 실시예에서, 게임 중개자 서버(130)가 게임(114)의 특성에 따라 로비를 구성하는 경우, 게임(114)은 로비가 적응하는 게임을 플레이하는 데 필요한 플레이어의 수를 지정한다. 예를 들어, 로비는 필요한 수의 플레이어가 로비에 있을 때까지 게임플레이 세션을 시작하지 않도록 조정한다. 일 실시예에서, 로비에 게임플레이 세션을 시작하기 위한 최소 인원의 플레이어가 존재하지 않는 경우, 로비는 플레이어에게 다른 사람을 초대하도록 유도한다. 또한, 로비는 게임이 허용하는 한 많은 비디오 창을 표시하도록 구성될 수 있다.
일부 실시예에서, 로비는 비공개 또는 공개적일 수 있다. 일 실시예에서, 게임플레이 세션을 생성한 플레이어는 로비를 비공개 또는 공개로 설정한다. 공개 로비는 게임에 참여하고자 하는 사용자들에 의해 검색될 수 있다. 비공개 로비는 초대를 통해서만 액세스될 수 있다. 또한, 로비는 로비에 참가한 플레이어가 게임플레이 세션에서 관중으로서 참여하도록 선택하는 것을 가능하게 한다. 관중은 게임플레이를 시청할 뿐, 스스로 플레이하는 것은 아니다. 게임에 최대 플레이어 수가 도달된 경우, 추가 플레이어는 관중으로서만 참여할 수 있다.
게임 중개자 서버(130)는 딥 링크가 전송된 각 클라이언트(110)가 게임을 설치했다는 알림을 수신하고 게임플레이 세션을 시작하도록 명령한 클라이언트(110)가 더 많은 클라이언트(110)를 초대하는 것을 거부했다는 알림을 수신한 후에 게임을 시작한다. 일 실시예에서, 게임은 게임 서버(140)에서 호스팅되고, 게임 중개자 서버(130)는 게임 서버(140)에, 세션 식별자와 같은, 게임플레이 세션과 연관된 파라미터 뿐만 아니라, 클라이언트 식별자와 같은, 각 클라이언트와 연관된 파라미터를 전송한다. 다른 실시예에서, 게임플레이 세션과 연관된 파라미터는 게임플레이를 조정하기 위해 하나 이상의 다른 목적지로 전송된다.
게임 중개자(112)는 게임플레이를 향상시키기 위해 클라이언트(110) 기능을 사용한다. 게임 중개자(112)는 로비에서와 같은, 게임 중개자(112) 내의 액션이 게임플레이에 영향을 미치도록, 또는 게임 내의 액션이 로비에 영향을 미치도록 동작을 활성활 수 있다. 게임(114)과 같은 게임은 게임 중개자 라이브러리(115)의 방식으로 게임 중개자(112)를 통해 클라이언트(110)의 기능을 사용할 수 있다. 예를 들어, 게임은 게임플레이 세션에 참여하는 로비에 있는 클라이언트(110)의 라이브 비디오 스트림을 사용하여 클라이언트(110)의 비디오 콘텐츠에 액세스할 수 있다.
게임 중개자(112)는 게임플레이 세션에 참여하는 로비에 있는 클라이언트(110)의 라이브 비디오 스트림의 오디오 콘텐츠를 사용하여 게임플레이를 향상시킬 수 있다. 게임 이벤트는 게임 중개자(112)가 감지하고 게임 중개자 라이브러리(115)를 통해 게임(114)과 통신하는 오디오 큐와 관련될 수 있다. 게임 이벤트는 구독 기반의 오디오 큐와 관련된다. 예를 들어, 셔레이드 게임(charades game), 단어 세트의 후보에서 각 단어는 추측되는 단어에 따라 게임 중개자(112)가 감지하도록 설정된 다른 오디오 큐에 구독된다. 단어가 "car"인 경우. 예를 들어, 게임 중개자(112)는 "car"라는 단어를 듣고 "car"가 언급되었다는 것을 셔레이드 게임에 알린다. 일 실시예에서, 게임 중개자(112)는 또한 어떤 클라이언트(110)가 오디오 큐를 생성했는지 게임(114)에 알린다. 오디오 콘텐츠는 또한 음성 인식에 사용될 수 있다. 예를 들어, 여러 플레이어가 말을 하고 있는 경우, 한 플레이어가 정답 키워드를 언급하면 정답을 맞힌 플레이어는 포인트를 부여 받는다.
일부 실시예에서, 게임플레이 세션에 참여하여 로비에 존재하는 클라이언트(110)의 라이브 비디오 스트림의 그래픽 콘텐츠는게임플레이를 강화시키기 위해 제스처 인식에 사용될 수 있고, 즉, 미소와 같은, 특정 제스처를 감지하고(또는 특정 제스처를 구독하고 게임 중개자(112)에 의해 알림받는 것), 이러한 제스처의 검출에 응답하여 게임(114) 내에서 적절하게 제스처하는 사용자에게 포인트를 부여하는 데에 질을 높일 수 있다. 다른 예로서, 게임플레이 세션에 참여하는 특정 클라이언트(110)가 로비에 있는 비디오 창에 늑대의 얼굴 그래픽을 오버레이하도록 선택하는 경우, 게임(114) 내의 캐릭터는 마찬가지로 늑대 외관을 얻을 수 있다.
일 실시예에서, 게임 중개자 서버(130)는 게임플레이를 향상시키기 위해, 로비 내의 라이브 비디오 스트림의 콘텐츠보다는, 외부 라이브 스트리밍을 사용한다. 예를 들어, 그림 추측 게임에서 라이브스트림(Facebook Live™또는 Twitch™와 같은)은 플레이어, 즉 라이브스트림의 시청자가 그림이 무엇인지 추측하는 데 사용될 수 있다. 게임(114)은 게임 중개자(112)를 구독하여 특정 키워드를 듣고, 이러한 키워드의 감지 시, 로비에 있는 클라이언트(110)의 라이브 비디오 스트림의 오디오 콘텐츠의 사용하는 것과 유사하게, 키워드를 말함으로써 특정 키워드를 정확하게 추측한 참가자에게 적절하게 포인트를 부여한다.
일부 실시예에서, 게임 중개자 서버(130)는 게임 이벤트가 로비에 영향을 미칠 수 있게 함으로써 강화된 게임플레이 기능을 제공한다. 게임 이벤트는 게임 SDK/엔진(230)을 사용하여 게임 중개자(112)의 강화를 위해 태깅될 수 있다. 게임플레이 세션 내에서 게임 이벤트 발생 시, 로비는 도 5와 관련하여 후술되는 바와 같이, 태그된 이벤트에 기초하여 조정된다. 실시예에 따라, 로비는 하나 이상의 비디오 창, 오디오 등에 영향을 주어 조정될 수 있다. 예를 들어, 게임플레이 세션 내에서 늑대와 관련된 이벤트가 발생하면, 이벤트를 유도한 클라이언트(110)는 로비에서 그들의 비디오 창에 오버레이된 늑대 마스크 그래픽을 가질 수 있다. 다른 예로서, 플레이어의 오디오 콘텐츠는, 음성을 개 짖는 것 같은 소리로 필터링하는 것과 같이, 오디오 효과를 생성하기 위해 필터링될 수 있다. 세 번째 예로서, 게임 중개자 서버(130)가 두 클라이언트(110)는 서로 지리적 임계 거리 내에 있는 것으로 결정하는 경우, 게임 중개자 서버(130)는 두 클라이언트(110) 중 어느 하나에 명령을 전송하여 복제음이 재생되지 않도록 게임(114)의 볼륨(또는 배경 음악, 또는 라이브 비디오 스트림의 오디오 콘텐츠와 같은 게임(114)의 특정 부분)을 음소거한다. 일부 실시예에서, 클라이언트 사이의 지리적 거리를 결정하기 위해, 게임 중개자 서버(130)는 클라이언트(110)로부터 장치 센서 데이터, 예를 들어, 클라이언트(110)의 지리적 위치(예: GPS 좌표 간의 거리) 및/또는 스피커 입력(예: 에코 또는 게임의 다른 중복 사운드가 있는지 여부)를 획득하고 분석한다. 다른 실시예에서, 게임 중개자 서버(130)의 사용 없이, P2P(peer-to-peer) 구성으로 협력하는 게임 중개자(112)에 의해 강화된 게임플레이 기능이 제공된다.
게임 중개자 서버(130) 및/또는 게임 중개자(112)는 게임 설치 또는 게임플레이 초기화 이외의 목적을 위해 딥 링크를 더 사용할 수 있다. 예를 들어, 게임 중개자 서버(130)는 게임의 다양한 카테고리를 대표하는 게임의 기 결정된 세트와 같은, 게임의 일부 세트 각각에 요청을 전송함으로써, 클라이언트(110) 사용자의 게임플레이 선호도에 대한 정보를 얻을 수 있다.
클라이언트(110)의 운영 체제는 딥 링크 요청을 애플리케이션에 중계하려 한다. 애플리케이션이 클라이언트에 설치되지 않은 경우, 운영 체제는 게임 중개자(112)에 오류를 알린다. 이후, 게임 중개자(112)는 딥 링크 요청의 전송에 응답하여 운영 체제가 오류를 표시했는지 여부에 기초하여 각 게임의 세트가 설치되었는지 여부를 (예를 들어, 비트 벡터로서) 저장한다. 일부 실시예에서, 게임 중개자(112)는 게임의 세트 중 어느 것이 특정 클라이언트(110)에 설치되어 있는지 여부에 기초하여 해당 클라이언트(110)에 대한 암시적 선호도를 결정하거나 식별한다. 예를 들어, 게임 중개자(112)는 주어진 클라이언트(110)에 설치된 게임의 세트에 기초하여 해당 클라이언트(110)의 사용자가 주로 퍼즐 게임을 즐기는지, 결정할 수 있고, 플레이 가능한 게임의 순서 또는, 퍼즐 게임에 대한 사용자의 관심을 반영하여 로비의 룩앤필을 조정할 수 있다. 게임 중개자(112)는 또한 클라이언트(110)와 연관된 사용자, 예를 들어, 상기 사용자의 선호로 결정된 유형의 게임도 즐길 수 있는 사용자의 친구와 같이, 클라이언트(110)와 관련된 사용자와 연결된 사용자를 식별할 수 있다. 게임 중개자(112)는 사용자에게 식별된 친구를 게임에 초대할 것을 제안할 수 있다. 대안적으로, 게임 중개자(112)는 사용자가 연결되어 있지 않고(예를 들어, 함께 플레이한 적이 없는) 유사한 게임을 즐기는 다른 사용자를 식별할 수 있고, 식별된 사용자에게 사용자와 플레이하도록 추천할 수 있다. 또한, 게임 중개자(112)는 사용자의 선호도를 사용하여 사용자가 즐길 수 있는 추가적인 게임, 예를 들어 동일한 유형의 게임을 제안할 수 있다. 게임 중개자(112)는 또한 사용자에게 표시할 광고 또는 다른 후원 콘텐츠를 결정할 때 사용자의 선호도를 사용할 수 있다. 이렇게 다양한 동작들은 딥 링크를 사용하여 수행될 수 있다. 예를 들어, 클라이언트(110)가 후술되는 딥 링크를 사용할 때 클라이언트(110)에 대한 데이터를 수집하고 클라이언트(110)에 대한 암시적 선호도를 개발한다.
딥 링크는 URL의 도메인 부분을 통해 실행할 특정 애플리케이션과 상기 URL의 파라미터를 통해 상기 애플리케이션에 대한 추가 정보를 나타낼 수 있다. 예를 들어, IOS™운영 체제를 실행하는 클라이언트에서 게임(114)을 시작하기 위해, 딥 링크 "https://abcd.app.link/connect?mode=internet&teamPassword:12345&bunchRoom=rkHyuCojz&bunchAuth=SJWpHXZzX"가 사용될 수 있고, “https://abcd.app.link”는 애플리케이션을 나타낸다.
또한, 이러한 예에서,“mode=internet&teamPassword:12345&bunchRoom=rkHyuCojz&bunchAuth=SJWpHXZzX”는 "mode", "teamPassword", "bunchRoom" 및 "bunchAuth. "와 같은 게임 파라미터를 나타내고, 이러한 링크를 사용하여 클라이언트(110)는 인터넷을 통해 팀의 일부로서, "bunchRoom"에 의해 지정되고 "bunchAuth"를 사용하여 승인된 로비에 참가하는, 다른 클라이언트(110)들과 함께 게임 "abcd"를 시작할 수 있다.
추가적인 파라미터는 이러한 방식으로 딥 링크에 추가될 수 있으므로, 각 게임(114)은 다양한 게임플레이 커스터마이제이션(customization)을 통해 게임 중개자(112)를 사용하여 게임(114)을 시작하는 것을 가능하게 하는 맞춤용 딥 링크를 가질 수 있다. 예를 들어, 딥 링크는 게임(114)에서 사용할 특정 캐릭터 그래픽을 지정하는 데 사용되는 "스킨" 파라미터를 더 포함할 수 있다. 두 번째 예로서, 딥 링크는 실행할 게임(114)의 특정 레벨을 지정하는 데 사용되는 "레벨" 매개변수를 더 포함할 수 있다.
일 실시예에서, 하나 이상의 파라미터는 인코딩(예: base 64 페이로드로) 된다. 예를 들어, “https://abcd.onelink.me/4289444349?payload=eyJhY3Rpb24iOiJidW5jaC5yb29tIiwiZ2FtZVR5cGUiOjEsInJvb21Ub2tlbiI6InJrSHl1Q29qeiJ9&bunchUID=rgBU5KlNmWhL7Od0NOGM4kWfEXD3&bunchRoom=rkHyuCojz&bunchAuth=SJWpHXZzX”와 같은 딥 링크에서, "페이로드" 파라미터에 있는 데이터는 다른 파라미터 값들을 획득함으로써 디코딩될 수 있다. Base 64 인코딩의 사용은 페이로드를 나타내는 데 사용되는 특수 유니코드와 같은 유연한 정보 인코딩을 제공한다.
다른 예로서, 게임(114) 다운로드를 초기화시키기 위해서, 딥 링크 https://itunes.apple.com/us/app/id570510529?mt=8가 사용될 수 있고, 여기서, https://itunes.apple.com/us/는 애플리케이션 스토어 ITUNESTM를 나타내고, “app/id570510529?mt=8”는 다운로드 할 게임(114)을 지정하기 위한 어플리케이션 식별자를 나타낸다. 또 다른 예로서, 게임(114)이 클라이언트(110)에 설치되어 있는지 여부를 확인하기 위해, 딥 링크 "abcd://"는 게임(114)이 클라이언트(110)의 메모리에 저장되어 있는지 여부를 결정하는데 사용될 수 있다. 예를 들어, 딥 링크가 메모리의 폴더로 연결되지 않는 경우, 게임 중개자(112)는 게임(114)이 설치되지 않은 것으로 결정할 수 있다.
일부 실시예에서, 게임(114)은 게임플레이 세션을 실행하는 게임 서버(140)에 의해 호스팅된다. 각 게임(114)은 클라이언트(110)에서 게임 경험을 생성하기 위해 게임 서버(140)에서 실행되는 게임과 상호작용한다. 예를 들어, 클라이언트(110)에서 게임(114)을 플레이하는 사용자가 게임(114) 내에서 동작을 수행하는 경우, 동작은 게임 서버(140)에 전달되고, 게임 서버(140)는 해당 동작을 처리하고 대응하는 게임 세션에 적용하여 다른 클라이언트(110)들 또는 상기 세션에 참여하는 게임 중개자(1120)에 해당 동작과 동작의 효과를 채운다. 강화된 게임플레이 기능과 관련된 이벤트가 발생하면(예: 특정 게임 캐릭터와의 게임 내 상호작용), 게임 서버(140)는 이벤트를 게임 중개자 서버(130) 및 이벤트를 트리거한 클라이언트(110)에 알린다. 일 실시예에서, 게임 중개자 서버(130)는 게임 세션을 추적하고 강화된 게임플레이 기능으로 이벤트를 식별한다.
네트워크(120)는 클라이언트(110), 게임 중개자 서버(130), 및 게임 서버(140) 사이의 통신을 가능하게 하고, 인터넷뿐만 아니라, 이동 전화 네트워크를 포함할 수 있다. 일 실시예에서, 네트워크(120)는 표준 통신 기술 및/또는 프로토콜을 사용한다. 네트워크(120)를 통해 교환되는 데이터는 하이퍼텍스트 마크업 언어 (Hypertext Markup Language; HTML), 확장 가능한 마크업 언어 (eXtensible Markup Language; XML) 등을 포함하는 기술 및/또는 형식을 사용하여 제공될 수 있다. 또한, 링크의 일부 또는 전부는 보안 소켓 계층(Secure Sockets Layer; SSL), 전송 계층 보안 (Transport Layer Security; TLS), 가상 사설망(Virtual Private Networks; VPNs), 인터넷 프로토콜 보안(IPsec; Internet Protocol security) 등과 같은 기존 암호화 기술을 사용하여 암호화될 수 있다. 엔터티는 상술한 것을 대신하거나 또는 추가하여, 맞춤형 및/또는 전용 데이터 통신 기술을 사용할 수 있다.
도 2는 일 실시예에서 게임 중개 인프라가 작동하는 소프트웨어 스택의 고수준 블록도이다. 제1 또는 바닥 레이어에는 WebRTC 202, 음성/비디오(204), 라이브스트림(206), GPS(208), 가속도계(210), 터치(212), Wifi/Bluetooth(214)를 포함하고, 하드웨어 기능을 포함한 로우 레벨(low level) 기능을 구동하는 소프트웨어 요소들이 있다. 제2 레이어에는 운영 체제와 같은, 호스트 애플리케이션(220)을 구동하는 소프트웨어가 있다. 제3 레이어에는 게임 중개자 라이브러리(115)가 있다. 제4 또는 최상단 레이어에는 게임(240)(예를 들어, 도 1의 게임(114))이 있다. WebRTC(202) 요소는 웹 브라우저가 실시간으로 통신할 수 있게 한다. 음성/비디오(204) 요소는 클라이언트 장치(110)의 오디오 및/또는 비디오 기능의 사용을 가능하게 한다. 라이브스트림(206) 요소는 실시간으로 비디오 통신을 가능하게 한다. GPS(208) 요소는 클라이언트 장치(110)의 위치 정보를 제공한다. 가속도계(210) 요소는 클라이언트 장치(110)의 가속도 정보를 제공한다. 터치(212) 요소는 클라이언트 장치(110)에 대한 터치 입력을 가능하게 한다. Wifi/Bluetooth(214) 요소는 클라이언트 장치(110)에 대한 Wi-Fi 및/또는 Bluetooth 기능을 가능하게 한다.
호스트 애플리케이션(220)은 클라이언트(110)와 클라이언트의 소프트웨어 및 하드웨어 구성요소의 동작을 관리한다. 게임 중개자 라이브러리(115)(게임 중개 라이브라리를 사용하는 실시예에서)는 게임 중개자(112) 및/또는 게임(240)(예를 들어, 도 1의 게임(114))에 의해 사용되고, 중개 및/또는 강화된 게임플레이 세션을 활성화를 수행하는 데 필요한 상호작용성을 가능하게 하는, 소프트웨어 프레임워크를 제공한다. 일부 실시예에서, 게임 중개자(112) 및 게임(240)은 호스트 애플리케이션(220)에 의해 관리된다. 예를 들어, 호스트 애플리케이션(220)은 게임 중개자(112)와 게임(240) 모두에 메모리를 할당한다.
도 3은 일 실시예에서 게임 중개 시스템(100)을 사용하여 멀티플레이어 게임플레이 세션을 시작하는 프로세스를 도시한다. 이러한 실시예에서, 게임 세션은 게임 서버(140)에서 실행된다. 다른 실시예에서, 게임 세션은 다른 곳, 예: 게임 중개자(112) 내의 클라이언트(110), 또는 클라이언트(110) 상의 게임(114)과 유사한 독립적인 소프트웨어 아이템에서, 실행된다. 게임이 실행되는 위치는, 상술한 설명과 같이, 즉석 게임 대 다운로드 게임과 같이, 게임의 유형에 따라 달라질 수 있다. 도 3의 실시예에서, 게임 중개자(112)는 게임 중개 기능을 제공하기 위해 게임 중개자 서버(130)를 조정한다. 다른 실시예에서, 게임 중개는 게임 중개자(112)에 의해서만 제공된다.
우선, 클라이언트(110A)는 게임 중개자(112A)를 시작(302)한다. 예를 들어, 클라이언트(110A)는 애플리케이션으로서 게임 중개자(112A)를 열어, 사용을 위해 메모리에 게임 중개자를 로드할 수 있다. 게임 중개자(112A)는 게임 중개를 개시하기 위해 게임 중개자 서버(130)와 통신한다. 클라이언트(110A)에 의한 게임(114)의 선택(304) 시, 예를 들어, 게임 중개자(112A)를 사용하여, 게임 중개자(112A)는 게임(114)에 대한 로비를 구성(306)하기 위해 게임 중개자 서버(130)와 통신한다.
일 실시예에서, 게임 중개자(112A) 및/또는 게임 중개자 서버(130)는 게임(114)의 룩앤필을 획득할 뿐만 아니라 로비에서 클라이언트(110) 간의 통신을 제공하는 로비를 구성하도록 조정한다.
클라이언트(110A)는 게임 중개자(112A)를 사용하여 클라이언트(110B)와 같은 다른 클라이언트(308)를 초대한다. 예를 들어, 게임 중개자(112A)는 클라이언트(110B)가 클라이언트(110B)를 게임플레이 세션에 초대했다는 알림을 클라이언트(110B) 상의 게임 중개자(112B)에 전송할 수 있다. 일부 실시예에서, 알림은 클라이언트(110B)의 디스플레이에 대한 텍스트 알림을 포함한다. 실시예에 따라, 알림은 이메일, 전화 통화, 문자 메시지, 또는 Facebook™, Twitter™, GroupMe™, WhatsApp™, Snapchat™, LinkedIn™ 및/또는 다른 애플리케이션과 같은, 기타 소셜 네트워킹 애플리케이션의 방식으로 전송될 수 있다. 예를 들어, 게임 중개자(112A)는, 클라이언트(110A)가 문자 메시지 애플리케이션을 사용하여 전송할 있는, 로비와 연결된 문자 메시지를 클라이언트(110B)에 생성할 수 있다.
클라이언트(110B)의 초대의 수락 시, 예를 들어, 로비에 참가하라는 요청을 게임 중개자 서버(130)에 전송함으로써, 게임 중개자 서버(130)는 클라이언트(110B)를 로비에 참가(310)시킴으로써, 클라이언트(110B) 및 클라이언트(110A)가 통신할 수 있게 한다. 예를 들어, 로비는 로비에 참가한 클라이언트(110)가 통신할 수 있는 비디오, 오디오 및/또는 텍스트 채팅방을 포함할 수 있다. 일 실시예에서, 로비는 새로운 클라이언트(클라이언트(110B))가 로비에 참가했음을 나타내는 것을 업데이트한다. 이를 통해, 로비는 플레이어 수를 업데이트하고, 로비에 비디오 창을 추가하고, 플레이어 그래픽 또는 아이콘 등을 추가할 수 있다.
클라이언트(110A)는 게임 중개자(112A)에게 게임(114)을 시작(312)하도록 명령한다. 이에 대응하여, 게임 중개자(112A)는 게임 중개자 서버(130)에 명령하여 게임 중개자(112)를 통해 로비에 참가한 각 클라이언트(110)에 대하여 클라이언트(110)가 게임(114)을 설치했는지 여부를 확인(314)한다. 도 3의 예에서, 클라이언트(110B)는 설치된 게임(114)을 가지고 있지 않는다. 이와 같은 경우, 게임 중개자 서버(130)는 딥 링크를 클라이언트(110B)에 전송(316)하고, 수신 시, 클라이언트(110B)에 게임(114)의 설치(320)를 개시한다. 예를 들어, 딥 링크의 수신 시, 클라이언트(110B)는 게임(114)에 대한 다운로드 페이지로 연결되는 버튼을 디스플레이한다. 일 실시예에서, 클라이언트(110B)는 또한 게임(114)의 그래픽 및/또는 텍스트 요약을 디스플레이한다. 클라이언트가 버튼을 선택할 때, 클라이언트(110B)가 게임(114)을 다운로드 및 설치(320)할 수 있는 (예를 들어, 게임 중개자(112B) 내의 웹 뷰에서) 곳에서 다운로드 페이지가 열린다. 다운로드 페이지는, 예를 들어, 애플리케이션 스토어의 페이지일 수 있다.
일 실시예에서, 게임 중개자 서버(130)는 게임(114)의 설치를 확인하기 위한 요청을 각 클라이언트(110)에 전송한다. 게임(114)의 설치의 확인 및 요청의 수신 시, 각 클라이언트(110)는 게임(114)이 클라이언트(110)에 설치되었음을 확인하는 알림을 게임 중개자 서버(130)에 전송한다.
일 실시예에서, 로비에 참가한 각각의 클라이언트(110)가 게임플레이 세션을 시작할 준비가 되었다고 결정할 때, 예를 들어, 각 클라이언트(110)가 게임(114)을 다운로드했다는 것을 확인할 때, 게임 중개자 서버(130)는 게임(114)의 특정 지점을 연결하는 로비에 참가한 각 클라이언트(110)에 딥 링크를 전송한다. 게임 세션이 시작되는 경우, 로비에 참가한 클라이언트(110)들은 딥 링크에 지정된 바와 같이, 특정 지점에서 게임(114)을 시작한다. 예를 들어, 게임 세션이 시작되는 경우, 게임(114)을 시작 페이지로 열기보다는 게임(114)은 게임 내 로비 또는 로드아웃 페이지에서 열린다. 두 번째 예로서, 게임 세션이 시작되는 경우, 게임(114)은 게임(114) 내의 특정한 레벨 또는 위치에서 열릴 수 있다.
한편, 더 많은 클라이언트(110)가 게임플레이 세션에 초대될 수 있다고 결정된 때(확인(314)를 통해), 게임 중개자 서버(130)는 클라이언트 (110A)(게임플레이 세션을 개시한 클라이언트(110))에게 예를 들어, 클라이언트(110A)에게 전송된 알림을 통해, 추가적인 클라이언트(110)들에게 초대하기를 더 보낼 것을 제안한다. 이러한 예시에서, 클라이언트(110A)는 더 많은 플레이어를 초대하는 것을 거부(322)하여, 게임 중개자 서버(130)는 게임 서버(140)와 통신함으로써 게임(114)의 세션을 시작(324)한다. 일 실시예에서, 게임(114)의 세션을 시작(324)하는 것은 클라이언트 식별자의 세트를 게임 서버(140)에 전송하는 것을 포함하며, 각 클라이언트 식별자의 세트는 로비에 참가한 클라이언트(110)에 대응된다. 이후, 게임 서버(140)는 게임플레이 세션을 시작한다(326). 일 실시예에서, 게임플레이 세션은 게임 서버(140)에 의해 세션 식별자를 할당 받고, 세션 식별자는 게임플레이 세션을 다른 게임플레이 세션과 구별하는데 사용된다. 이러한 실시예에서, 게임을 시작하는 것은 게임 서버(140)에 의해 수신된 클라이언트 식별자와 연관된 각 클라이언트(110)에 세션 식별자를 전송하는 것을 포함한다. 이러한 실시예에서, 클라이언트(110)는 세션 식별자와 함께 게임 서버(140)에 게임플레이 명령을 전달하고, 게임 서버(140)는 세션과 연관된 클라이언트 식별자를 사용하여 게임플레이 결과를 클라이언트(110)에 전달한다. 예를 들어, 게임(114)을 플레이하는 제1 클라이언트(110)가 검을 휘두르는 경우, 검 휘두르는 게임플레이 명령은 세션 식별자와 함께 게임 서버(140)에 전달되어 관련된 게임플레이 세션에 영향을 미친다. 마찬가지로, 게임플레이 명령의 게임플레이 결과는 렌더링할 그래픽, 재생할 오디오 등과 같이, 제1 클라이언트(110)에 전달된다.
도 4는 게임(114)이 선택되기 전에 로비가 시작되는 제2 실시예에 따른, 게임 중개 시스템(100)을 이용하여 멀티플레이어 게임플레이 세션을 시작하는 프로세스를 도시한다. 클라이언트(110A)는 게임 중개자(112A)를 시작(402)한다. 이후, 클라이언트(110A)는 게임 중개자 서버(130)가 생성하려고 하는 로비를 개시(404)한다. 로비는 특정 게임을 위한 것이 아니기 때문에, 임의의 게임의 룩앤필에 따라 구성되어 있는 것은은 아니다. 대신에, 상기 로비는 일반 로비이다. 예를 들어, 로비는 화상 채팅 프레임과 하나 이상의 아이콘 및/또는 온스크린 버튼을 포함하나, 특정한 색 구성표나 그래픽은 포함하지 않는다. 일 실시예에서, 로비는 게임 중개자(112)의 다른 페이지와 일치하는 색 구성표를 따른다.
클라이언트(110A)(로비를 개시(404)한 클라이언트(110))는 클라이언트(110B)를 로비로 초대(408)한다. 클라이언트(110B)는 초대를 수락하고 이에 따라 로비에 참가한다(410). 이후, 클라이언트(110A)는 로비 내에서 게임(114)을 선택(412)한다. 예를 들어, 클라이언트(110A)는 로비 내의 온스크린 버튼을 선택하여, 클라이언트(110A)가 선택(412)한 목록으로부터, 복수의 게임을 나열하는 페이지를 연다. 게임(이러한 예시에서, 게임(114))의 선택(412) 시, 게임 중개자 서버(130) 및/또는 게임 중개자(112)는 게임(114)에 적절한 룩앤필을 얻기 위해 게임(114)에 대한 로비를 구성(414)한다.
이후, 프로세스는 도 3의 프로세스와 유사하게 진행된다. 클라이언트(110A)는 게임(114)의 세션을 시작(416)한다. 게임 중개자 서버(130) 및/또는 게임 중개자(112)는 로비에 참가한 클라이언트(110)를 확인(418)한다. 게임 중개자 서버(130)는 클라이언트(110B)에 게임(114)이 설치되어 있지 않다고 결정한 후 클라이언트(110B)에 딥 링크를 전송(420)한다. 게임 중개자 서버(130)는 또한 클라이언트(110A)에게 더 많은 초대하기를 보낼 것을 제안(422)한다. 클라이언트(110B)는 게임(114)을 설치(424)하고, 클라이언트(110A)는 추가 클라이언트(110) 초대하기를 거절(426)한다. 따라서, 게임 중개자 서버(130)는 게임 서버(430)가 게임 세션(430)을 시작하도록 유도하는 게임(114)의 세션을 시작(428)한다.
대안적인 실시예에서, 클라이언트(110A)는 게임 중개자(112A)를 시작하고 게임(114)의 세션을 시작하는 게임(114)을 선택한다. 이러한 실시예에서 클라이언트(110A)는 예를 들어, 게임 세션을 오버레이하는 게임 중개자(112A)의 온스크린 버튼을 사용하여, 게임 세션 내에서 게임 세션에 다른 클라이언트(110)를 초대할 수 있다. 도 5a는 일 실시예에 따라, 멀티플레이어 통신을 설정할 때, 도 1의 환경의 다양한 구성요소 사이의 상호작용을 도시한다.
사용자 U1 (501)은 게임 인스턴스(514A) 및 게임 중개자(512A)(클라이언트 장치에서 실행되는 게임 중개자(112)의 프로세스/인스턴스)를 갖는 클라이언트 장치를 갖는다. 사용자 U2(502)는 마찬가지로 게임 인스턴스(514B) 및 게임 중개자(512B)를 갖는 클라이언트 장치를 갖는다. 게임(514) 자체는 게임(514) 플레이 시 사용에 대한 멀티플레이어 게임 세션을 설정하는 사용자 인터페이스를 제공하지만, 상기 사용자 인터페이스는 세션이 설정되는 동안 사용자들 간의 통신 기능을 제공하지 않을 수 있고, 대신에 사용자의 스마트폰과 같이, 시간이 많이 걸리고 불편한, 별도의 채널을 통해 통신하도록 요구할 수 있다. 도 5의 예시에서, 사용자(501) 및 사용자(502)는 모두 게임(514)을 위한 멀티플레이어 게임 세션에 잠정적으로 연결되는데, 게임 내 진행되는 게임플레이 세션을 위해 함께 그룹화되고자 게임(514)의 사용자 인터페이스를 사용한다.
게임(514A)은 게임 중개 인프라 내 멀티플레이어 게임 세션에서 신속하게 사용자들을 함께 참여시키기는 게임 중개 인프라의 기능을 호출하는 사용자 인터페이스 요소인, 세션 초기화 컨트롤(516)을 제공할 뿐만 아니라 멀티플레이어 게임 세션을 빠르게 구성하는 더 많은 방법들을 제공한다. 예를 들어, 도 6은 게임(514A)의 사용자 인터페이스(503) 내에 포함된 세션 초기화 컨트롤(도 6의 예에서 "파티 시작" 버튼)를 예시하여 설명한다.
사용자 U1(501)은 세션 초기화 컨트롤(516)을 사용(550)하여 게임(514A) 내에서 멀티플레이어 게임 세션을 개시한다. 일부 실시예에서, 세션 초기화 컨트롤의 사용(550)은 게임 중개자(512) 및/또는 게임 중개자 라이브러리(115)가 사용자 U1(501)의 클라이언트 장치에 설치되어 있는지 여부를 확인하고, 그렇지 않은 경우 앱 스토어(150)에 컨트롤을 전달하여 게임 중개 라이브러리가 설치(552)될 수 있게 한다.
이후, 플레이 중인 게임(즉, 게임(514))의 식별자 및 현재 함께 게임을 할 준비가 된 사용자들의 목록(예: U1(501) 및 U2(502))에 고유하게 대응하는 식별자와 같은, 관련된 컨텍스트 정보를 포함하는 메시지를 통해 게임 중개자(512A)에 컨트롤이 전달(554)된다. 메시지의 형식은 게임 중개자가 메시지가 주어진 형식을 가질 것으로 예상한다는 점에서 게임 중개자 프로세스(512A)(또는 동등하게, 게임 중개자(112), 또는 하나의 실행 인스턴스인 프로세스(512A))에 의해 지정되고, 게임(114)은 게임 중개자(112)와 상호작용하기 위해 해당 형식을 따른다. 일 실시예에서, 전달(554)의 효과로, 게임 중개자를 참조하는 딥 링크 메시지를 통해, 컨텍스트 정보가 제공된다. 예를 들어, 일 실시예에서 딥 링크의 형식은 <gameMediatorAppName>/<roomID>/<gameName>인 경우, <gameMediatorAppName>은 게임(514)이 설치된 클라이언트 장치(111)의 운영 체제에 게임 중개자(512)를 시작하기 위한 이름을 나타내고, <roomID> 는 게임(514) 내에서 현재 게임 세션을 설정하는 사용자들에 의해 공유되는 ID이고, <gameName>은 게임의 식별자이다. 예를 들어, 딥 링크 https://bunch.live/A83jiklqw7/clashroyale은 게임 중개자(514)에 대한 애플리케이션의 이름이 "bunch.live"이고, 플레이 중인 게임이 Clash Royale™임을 나타내고, "A83jiklqw7"은 문제에서 해당 사용자의 세션과 고유하게 대응하는 식별자(예: U1 501 및 U2 502)이다. 게임(514)은 현재 게임을 할 준비가 되어 있는 주어진 사용자 집합에 대한 <roomID>를 다른 사용자 집합에 대해 선택된 <roomID>들과와 상이하도록 선택하고, 주어진 사용자 집합에 대한 를 선택할 수 있도록 뿐만 아니라, <gameName>에 대한 자체 식별자를 지정하도록 고안된다.
게임 중개자 프로세스(512)는 컨텍스트 정보의 일부 또는 전부를 게임 중개자 서버(130)에 제공(556)한다. 따라서, 게임 중개자 서버(130)는 게임플레이 세션에 대하여 제공된 컨텍스트 정보를 저장(558)한다. 일부 실시예에서, 게임 중개자 서버(130)는 컨텍스트 정보(예: 상기 게임은 플레이될 게임이 게임(514)이고 상기 U1(501)는 현재 세션에 있다)에 따라 사용자(501)의 게임 중개자(512A)에게 로비를 구성하도록 명령(560)한다. 일부 실시예에서, 게임 중개자(512A)는 게임 중개자 서버(130)로부터의 명령(560)에 응답하기 보다는 전달(554)에 응답하여 로비 구성을 수행한다.
단계 550-560의 방식과 유사한 방식으로, 사용자(502)가 마찬가지로 게임플레이 세션에 참가하기를 원하는 경우, 게임(514)은 사용자(501)에게 제공된 것과 같이, 게임 중개 인프라가 사용자(502)를 사용자(501)와 동일한 게임플레이 세션(및 대응하는 로비)에 배치하도록 유발할, <roomID><gameName>을 제공할 것이다. 게임 중개자 서버(130)는 사용자가 세션에 참가할 때 관련된 사용자의 게임 중개자(512)에게 통지할 수 있고, 따라서, 게임 중개자(512)는 예를 들어, 새로운 사용자가 참가했음을 나타내어, 로비를 업데이트할 수 있다. 일부 실시예에서, 또한 게임 중개자 서버(130)는 사용자(502)가 게임플레이 세션에 참가하기 위해 수동으로 컨트롤(550)을 사용하기 보다, 오히려 세션에 참가하는 데에 사용자(502)가 동의하도록 유도할 수 있다. 예를 들어, 게임(514A)은 단계(554)에서 다른 정보와 함께 사용자(502)의 식별자를 포함할 수 있다. 이후, 게임 중개자 서버(130)는 상기 식별자를 사용하여 사용자(502)의 게임 중개자(512B)가 상기 사용자(501)에 의해 설정된 게임 세션에 참여하도록 사용자를 유도할 수 있다.
이때, 로비는 플레이 중인 게임(게임 514) 및 현재 참가자(사용자 U1(501) 및 U2(502))에 따라 구성된다. 이를 통해, 사용자들은 게임 중개자(512)를 명시적으로 사용하고 세션에 참여시킬 필요가 없고; 오히려, 게임 중개자(512)의 로비를 적절히 구성하기 위해 이미 게임(514)에 함께 있다는 사실을 활용할 수 있다. 게임 용이 인프라(예: 게임 중개자 서버 130) 에 의해 저장된 사용자의 알려진 친구 목록을 통해 게임 세션에 더 많은 사용자를 추가하거나, 또는 게임(514)의 실제 게임플레이를 시작하는 것(또는 다른 방법으로 게임 제어 권한을 다시 게임으로 이전)과 같은, 기타 동작은 도 4의 단계 416 이후에서처럼, 예를 들어, 게임 514A로 제어 권한을 이전하고 적절한 게임 구성 파라미터를 전달하기 위해 딥 링크를 사용하여 로비 인터페이스 내에서 진행될 수 있다. 음성 및 화상 채팅과 같은, 로비 사용자 인터페이스의 통신 기능은 게임플레이 세션의 나머지 부분을 조정하고 실제 게임플레이가 진행되는 동안 서로 통신해야 하는 부담을 덜어주기 위해 사용될 수도 있다.
도 5b는 일 실시예에 따른, 게임의 다른 정보에 따라 멀티플레이어 통신을 설정하고 사용하는 경우, 도 1의 환경의 다양한 구성요소 사이의 상호작용을 도시한다.
도 5a와 같이, 사용자 U1(501)은 게임 인스턴스(514A) 및 게임 중개자(512A)를 갖는 클라이언트 장치를 갖는다. 사용자 U2(502)는 마찬가지로 게임 인스턴스(514B) 및 게임 중개자(512B)를 갖는 클라이언트 장치를 가지고 있다. 게임(514) 자체는 게임(514)(예를 들어, Clash Royale™의 클랜)을 플레이할 때 사용을 위해 멀티플레이어 게임 세션을 설정하는 게임 인터페이스의 사용자 그룹의 정의를 허용한다. 그러나, 도 5a에 관하여 설명된 바와 같이, 이러한 사용자 인터페이스는 세션이 설정될 때 사용자 사이에 어떠한 통신 능력도 제공하지 않을 수 있으나, 대신 별도의 채널을 통해 통신하도록 요구할 수 있다. 도 5b에서, 사용자(501) 및 사용자(502)는 둘 다 게임(514)에 의해 정의된 그룹(예를 들어, 사용자(501)에 의해 설정되고 사용자(502)가 연결한 게임(514) 내에서 설정된 그룹)의 멤버다.
게임(514A)은 인게임 그룹(예를 들어, 사용자(501, 502)의 사용자 간의 빠르고 편리한 통신 기능을 가능하기 위해 게임 중개 인프라의 기능을 호출하는 사용자 인터페이스인, 게임 그룹 디스커션 컨트롤(520)을 제공할 뿐만 아니라, 멀티플레이어 게임 세션을 보다 신속하게 구성하는 추가적인 방법을 제공한다. 예를 들어, 도 6은 게임(514A)의 사용자 인터페이스(503) 내에 포함된 게임 그룹 디스커션 컨트롤(520)(도 6의 예에서 "클랜 채팅" 버튼)을 예시한다. 인게임 그룹은 50명, 100명 등과 같이 클 수 있다. 이러한 모든 사용자 간의 조정 및 통신은 게임 그룹에 대한 컨텍스트가 부족한 이메일 또는 전화 문자 메시지와 같은 외부 채널과 같은 전통적인 수단을 사용하는데 어려울 것이다.
사용자 U1(501)은 게임(514A) 내에서 게임 그룹 통신을 개시하기 위해 게임 그룹 디스커션 컨트롤(520)을 사용(570)한다. 일부 실시예에서, 세션 시작 컨트롤의 사용(570)은 게임 중개자(512) 및/또는 게임 중개자 라이브러리(115)가 사용자 U1(501)의 클라이언트 장치에 설치되어 있는지 여부를 확인하여 컨트롤을 앱 스토어(150)에 전달하고, 설치되지 않은 경우 설치를 수행할 수 있다.
이후, 컨트롤은 플레이 중인 게임(즉, 게임(514))의 식별자, 및 인게임 그룹의 식별자와 같은 임의의 관련된 컨텍스트 정보와 함께 게임 중개자(512A)로 전달(574)된다. 일 실시예에서, 전달(574)이 수행되고, 게임 중개자를 참조하는 딥 링크를 통해 컨텍스트 정보가 제공된다. 예를 들어, 일 실시예는 딥 링크의 형식이 <gameMediatorAppName>/chat/<gamegroupID>이고, 여기서 <gameMediatorAppName>은 게임(514)이 설치된 클라이언트 장치(111)의 운영 체제에 게임 중개자(512)를 시작하기 위한 이름을 나타내고, <gamegroupID>는 게임(514) 내에서 특정한 게임 그룹을 고유하게 식별하는 ID이다. 예를 들어, 딥 링크 Bunch.live/chat/clashroyale은 게임 중개자(514)에 대한 애플리케이션의 이름이 "bunch.live"이고 채팅 통신이 필요하고 플레이 중인 게임이 Clash Royale™임을 나타낸다. 게임(514)은 주어진 게임 그룹에 대한 <gamegroupID>가 다른 그룹에 대해 선택된 <gamegroupID>들과 다르도록 선택하도록 설계된다. 상기 예시와 같이 <gamegroupID>는 사람이 읽을 수 있어야 하는 것은 아니고 특정 게임 그룹에 고유하게 매핑되기만 하면 된다.
따라서, 게임 중개자 서버(130)는 게임플레이 세션에 대하여 제공된 컨텍스트 정보를 저장(578)한다. 일부 실시예에서, 게임 중개자 서버(130)는 적절한 디스커션 사용자 인터페이스를 구성하도록 사용자(501)의 게임 중개자(512A)에 지시(580)한다. 인게임 그룹이 크다(예를 들어, 50명의 플레이어)고 가정할 때, 그룹의 각 멤버에 대해―도 7에서 예시된 바와 같이 2명의 사용자―클라이언트 장치 디스플레이의 각기 다른 부분을 할당하는 것은 비실용적이다. 따라서, 다른 통신 메커니즘이 선택된다. 예를 들어, 일부 실시예에서 텍스트 채팅 인터페이스가 사용된다. 또한, 이러한 채팅 인터페이스는 사용자가 채팅에서 다른 사용자의 서브세트를 지정할 수 있게 하고, 상기 서브세트에 대한 별도의 로비 인터페이스를 생성하도록 할 수 있다. 예를 들어, 채팅 인터페이스로부터 4명의 다른 사용자들을 지정하고 상기 사용자들을 위한 로비 인터페이스를 생성하는 것은 5명의 사용자가 (즉, 나머지 사용자들을 지정한 사용자와 4명의 사용자들)가 아니라면, 도 7의 것과 유사한 사용자 인터페이스가 생성된다.
게임플레이를 위해 서로 통신하기를 원하는 게임 그룹의 다른 멤버는 상기 단계 570-598과 유사한 작업을 수행한다. 게임은 동일한 인게임 그룹이라면 모든 멤버들에게 동일한 <gamegroupID>를 제공할 것이기 때문에 모두가 동일한 디스커션 UI(예: 텍스트 채팅 UI)에 참여하여 서로 즉각적인 상호작용을 시작할 수 있다.
유리하게는, 게임 중개 인프라의 사용은 게임(114)의 제작자가 핵심 게임플레이의 개발에 집중할 수 있도록, 멀티플레이어 게임 세션의 설정에 대한 많은 또는 모든 세부사항을 게임 중개 인프라에 위임할 수 있게 한다. 게임 사용자의 관점에서 멀티플레이어 게임 세션을 설정하는 게임 중개 인프라의 기능은 게임플레이(현저하게 간소화된 게임플레이) 시작 전에 필요한 사용자 인터페이스 작업을 줄이거나 제거한다.
상술한 바와 같이, 일부 동작들은 게임 중개자(512)에 의해 수행된다. 게임 중개자 라이브러리(115)를 게임(114) 자체 내에 포함할 수 있도록 하는 실시예에서, 이러한 동작들 중 일부는 게임 내에 포함된 게임 중개자 라이브러리(115)에 의해 대신 수행될 수 있다. 일부 실시예에서, 주어진 동작은 게임 중개자(512) 또는 게임 중개자 라이브러리(115)에 의하든 다양하게 수행된다. 예를 들어, 일부 실시예에서 게임 중개자 라이브러리(115)는 게임 중개자(512)에 의해 수행되는 것처럼, 가능하면 더 가벼운 형태로 도 5a 및 도 5b에서 나타난 동작을 수행할 수 있다. 예를 들어, 게임 중개자 라이브러리(115)는 특정 목적을 위해 게임 중개자(512)의 별도의 사용자 인터페이스를 사용하기보다는 멀티플레이어 게임 세션을 설정하고 게임(514) 자체 내에서 참가자를 초대하기 위한 사용자 인터페이스를 보여줄 수 있다.
또한, 도 5a 및 5b에서 게임 중개자 서버(130)가 멀티플레이어 게임 세션에 관련된 다양한 클라이언트 장치를 조정하는 실시예를 설명하였으나, 다른 실시예에서 다양한 클라이언트 장치 상의 게임 중개자(512) 및/또는 게임 중개자 라이브러리(115)는 피어-투-피어 방식으로 상호작용할 수 있어 게임 중개자 서버(130)가 불필요하다.
도 5c는 게임(114) 및 게임 중개자가 다른 장치에서 실행되고 있는 실시예에 따라, 멀티플레이어 게임 세션을 설정하고 사용하는 경우 도 1의 환경의 다양한 구성요소들 사이의 상호작용을 도시한다. 구체적으로, 도 5c의 예시에서, 게임(114)은 클라이언트 장치(111)(예를 들어, 닌텐도 스위치와 같은 게임용 콘솔)에서 실행되고, 게임 중개자(112)는 클라이언트 장치(110)(예를 들어, 게임(114)을 플레이하는 사용자의 스마트폰)에서 실행된다. 이러한 환경에서, 클라이언트 장치(111)(예를 들어, 게임 콘솔)는 게임 세션을 설정하고 상호작용하기 위한 사용자 인터페이스를 거의 제공하지 않거나 아에 제공하지 않으므로, 사용자의 개별적인 클라이언트 장치(110)는 상기 목적을 위한 사용자 인터페이스로서의 역할을 수행할 수 있다. 클라이언트 장치(110 및 111)를 동일한 게임 세션과 연관시키는 프로세스를 단순화하는 것이 중요한다.
이를 달성하기 위해, 게임(114)은 게임(114) 내에서 현재 설정되는 게임플레이 세션 및 플레이 중인 게임을 식별하는 코드를 생성 및 디스플레이하고, 게임 중개자(512A)는 세션에 참가하기 위해 코드를 스캔한다.
구체적으로, 사용자(501)는 게임(514A)을 플레이하기 시작했고 게임 내에서 다른 사용자와 게임플레이 세션을 설정하기 시작했다. 게임(514A)은 도 5에서와 같이, 플레이 중인 게임과 설정되는 게임플레이 세션을 나타내는 코드를 생성 및 디스플레이(581)한다. 일부 실시예에서 코드는 그래픽으로 디스플레이되고 스캔될 수 있는 QR 코드 구현된다; 다른 실시예에서, 코드는 텍스트(예를 들어, 핀번호)로 구현된다. 이후, 사용자(501)는 디스플레이 된 코드를 사용(583)하여 게임 중개자(112)가 게임플레이에 참여하게 한다. 예를 들어, 코드가 QR 코드인 실시예에서, 사용자(501)는 코드를 스캔하기 위해 클라이언트 장치(110)를 사용할 수 있고; 코드가 텍스트인 다른 실시예에서, 사용자는 수동으로 코드를 클라이언트 장치(110)의 사용자 인터페이스에 입력할 수 있다. 일부 실시예에서, 코드는 <gameMediatorAppName>/<roomID>/<gameName>와 같이 도 5a와 관련하여 상술한 것과 유사한 형식을 갖는 딥 링크에 고유하게 매핑된다. 어떠한 경우에도, 게임 중개자(112)는 수신된 코드로부터 다양한 구성요소(예를 들어, <gameMediatorAppName>, <roomID>, <gameName>)를 디코딩한다. 이후, 정, 588, 590단계는 도 5a의 566, 568, 570단계와 동일하게 진행된다.
도 5d는 게임(114) 및 게임 중개자(112)가 다른 장치에서 실행되는 다른 실시예에 따라, 멀티플레이어 게임 세션을 설정하고 사용하는 경우, 도 1의 환경의 다양한 구성요소들 사이의 상호작용을 도시한다. 도 5c의 예시와 같이, 도 5d의 예시에서, 게임(114)은 클라이언트 장치(111)(예를 들어, 닌텐도 스위치와 같은 게임용 콘솔)에서 실행되고, 게임 중개자(112)는 클라이언트 장치(110)(예를 들어, 게임(114)을 플레이하는 사용자의 스마트폰)에서 실행된다. 그러나, 도 5d의 예시에서, 게임 중개 인프라는 수동 또는 반수동 공유 코드의 사용에 의존하지 않고 대신 무선 네트워크 정보를 사용하여 게임플레이 세션 내에서 클라이언트 장치(110, 111)와 자동으로 연결한다
구체적으로, 사용자(501)는 사용자의 클라이언트 장치(110)에 게임 중개자(512A)를 설치한다. 또한, 사용자(501)는 이미 하나 이상의 다른 사용자와 게임(514A)의 세션을 시작(591)하고, 게임은 (예를 들어, 원격 게임 서버를 통해) 상기 게임플레이 세션에 고유 ID를 할당한다. 클라이언트 장치(110)가 네트워크(예를 들어, Wi-Fi 네트워크)에 연결되고, 게임 중개자(512A)가 실행되는 경우(예를 들어, 게임에 대한 통신 채널로서 게임 중개자(512A)를 실행하도록 사용자에게 프롬프트하는 게임(514A)에 응답하여), 게임 중개자는 게임 중개자 서버(130)에 네트워크 연결(예: Wi-Fi 네트워크의 고유 식별자) 뿐만 아니라 그것의 고유 ID에 대한 네트워크 데이터를 제공(592)하고, 게임 중개자 서버(130)는 이러한 데이터를 사용자의 사용 가능한 장치에 대한 정보에 추가한다.
이 시점에서, 클라이언트 장치(110)와 같은 사용자(501)의 추가 클라이언트 장치를 자동적으로 사용하기 위하여, 게임플레이 세션과의 상호작용에 대하여, 게임(514A)은 게임 중개 인프라를 사용하여 사용자의 사용 가능한 장치에 대한 게임 중개자 서버(130)에 쿼리(593)를 수행한다. 쿼리는 클라이언트 장치(111)가 현재 연결되어 있는 네트워크에 대한 정보(예를 들어, 클라이언트 장치가 연결된 Wi-Fi 네트워크의 식별자), 게임 중개자 서버(130)에 대해 게임을 고유하게 식별하는, 현재 플레이되고 있는 게임(514A)의 식별자, 및 사용자(501)가 현재 플레이하고 있는 게임(514A)에 대한 새로운 세션에 대응하는 식별자를 포함한다.
쿼리에 응답하여, 게임 중개자 서버(130)는 동일한 네트워크 상에서 이용 가능한 것으로 이전에 등록되었던(예를 들어, 단계 592의 결과로서) 클라이언트 장치를 조회(595)한다. 도 5d의 예시에서, 게임 중개자 서버(130)는 클라이언트 장치(110)가 현재 클라이언트 장치(111)와 동일한 Wi-Fi 네트워크에 연결되어 있는 경우 클라이언트 장치(110)에 대한 엔트리를 찾는다. 게임 중개자 서버(130)는 클라이언트 장치(111)를 게임(514A) 및 게임플레이 세션과 연관시키고(596), 쿼리(1005)를 발행한 것은 클라이언트 장치(111)였다. 게임 중개자 서버(130)는 또한 클라이언트 장치(110) 상의 게임 중개자(112)에게 세션에 참가하도록 명령(597)한다. 결과적으로, 사용자(501)는 클라이언트 장치(111)에서 게임을 플레이(598)할 수 있을 뿐만 아니라, 클라이언트 장치(110) 상의 게임 중개자(512A)를 사용하여 새로운 세션으로 상호작용(599)할 수 있고, 예를 들어 상호작용은 상기 세션에서 다른 플레이어(들)와(과) 통신하고(이러한 플레이어들은 또한 그들 자신의 게임 중개자(112) 도 가지고 있는 경우), 게임 중개자(512A)의 로비 UI를 사용하여 게임 세션에 더 많은 사용자를 추가하고, 게임(114)에 컨트롤을 다시 전달하는 등과 같은 예시가 있다.
게임(514A)이 게임 중개자 라이브러리(115)를 포함하는 실시예에서, 게임 중개자 서버(130)는 매칭 클라이언트 장치(110)에 대한 정보(예를 들어, 하드웨어 ID, 사용자(501)의 고유 ID를 게임 중개자 서버(130) 등)을 게임(514A)으로 다시 전송함으로써 쿼리에 응답할 수 있다. 게임(514A)은 게임 중개자 라이브러리(115)를 사용하여 게임(514A)에서 사용자의 고유 ID와 게임 중개자 서버(130)에서 사용자의 고유 ID 사이의 연관관계를 저장할 수 있다. 이후, 게임(514A)은 게임 중개자 라이브러리(115)를 통해 게임(514)의 사용자를 게임 중개자 서버(130)의 사용자와 즉시 연관시키고 게임 중개자(512A)를 자동으로 런칭하고 게임 통신을 가능하게 하는 것과 같은 관련된 작업을 수행할 수 있다.
다른 네트워크 상의 다른 플레이어가 게임을 하고 싶어하는 경우에도, 프로세스는 유사한다. 즉, 다른 플레이어의 클라이언트 장치의 게임 인스턴스(114)는 단계 593에서와 같이, 다른 등록된 장치에 대해 게임 중개자 서버(130)에 마찬가지로 쿼리를 수행할 것이고; 게임 중개자 서버(130)는 다른 플레이어의 클라이언트 장치와 동일한 네트워크에 등록된 다른 장치를 조회하고 동일한 네트워크에 있는 다른 등록된 장치에 게임플레이 세션에 참가하도록 명령한다.
기타 고려사항
본 발명은 특히 하나의 가능한 실시예와 관련하여 상세하게 설명된다. 본 발명의 기술분야에 속한 통상의 기술자는 본 발명이 다른 실시예에서 실시될 수 있음을 이해할 것이다. 우선, 구성요소 및 변수의 특정한 네이밍, 용어, 속성, 데이터 구조 또는 기타 프로그래밍의 대문자 사용 또는 구조적 측면은 의무적이거나 중요치 않고, 본 발명 또는 본 발명의 기능을 구현하는 메커니즘은 다른 이름, 형식 또는 프로토콜을 가질 수 있다. 또한, 본 명세서에에 설명된 다양한 시스템 구성 요소 간의 특정 기능 분할은 단지 예시를 목적으로, 필수적인 것은 아니다; 단일 시스템 구성 요소에 의해 수행되는 기능은 여러 구성 요소에 의해 대신 수행될 수 있으며, 다중 구성 요소에 의해 수행되는 기능은 단일 구성 요소에 의해 대신 수행될 수 있다.
상술한 설명의 일부는 정보에 대한 작업들의 알고리즘 및 상징적 표현의 관점에서 본 발명의 특징을 제시한다. 이러한 알고리즘적 설명 및 표현은 데이터 처리 기술 분야의 기술자가 자신의 작업 내용을 해당 기술 분야의 다른 사람에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 이러한 작업들은 기능적으로 또는 논리적으로 설명되지만, 컴퓨터 프로그램에 의해 구현되는 것으로 이해된다. 또한, 보편적으로, 이러한 작업의 배열을 모듈 또는 기능적인 이름으로 참조하는 것은 때때로 편리한 것으로 입증된다. 본 명세서에서 사용된 "모듈"이라는 용어는 지정된 기능을 제공하는 데 사용되는 컴퓨터 프로그램 로직을 나타낸다. 따라서 모듈은 하드웨어, 펌웨어 및/또는 소프트웨어로 구현될 수 있다.
상술한 설명에서 명백하게 달리 명시되지 않는 한, 명세서 전반에 걸쳐, "결정하는" 또는 "디스플레이 하는" 등과 같은 용어를 사용하는 설명은, 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 정보 저장, 전송 또는 디스플레이 장치 내에서 물리적인(전자적인) 용량으로 표시된 데이터를 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅의 장치의 동작 및 프로세스를 참조하는 것으로 이해된다.
본 발명의 특정한 측면은 알고리즘의 형태로 본 명세서에서 설명된 프로세스 단계 및 명령을 포함한다. 본 발명의 프로세스 단계 및 명령은 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있고, 소프트웨어로 구현되는 경우, 실시간 네트워크 운영 체제에 의해 사용되는 다른 플랫폼에 상주하고 그 플랫폼에서 작동하도록 다운로드될 수 있다는 점에 유의해야 한다.
본 발명은 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 필요한 목적을 위해 특별히 구성되거나, 컴퓨터에 의해 액세스될 수 있는 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 비일시적 컴퓨터 판독 가능 저장 매체에 저장될 수 있고, 예를 들어, 비일시적 컴퓨터 판독 가능 저장 매체에는 플로피 디스크, 광 디스크, CD-ROM, 광자기 디스크, 롬(read-only memories; ROMs), 램(random access memories; RAM), EPROM, EEPROM, 자기 또는 광학 카드, 특정 용도용 집적 회로(ASIC application specific integrated circuits), 또는 전자 명령을 저장하기에 적합한 모든 유형의 컴퓨터 판독 가능 저장 매체를 포함하고 컴퓨터 시스템 버스에 각각 연결된 모든 유형의 디스크가 있을 수 있으나, 반드시 이에 한정되는 것은 아니다. 또한, 본 명세서에서 언급된 컴퓨터는 단일 프로세서를 포함할 수 있거나 향상된 컴퓨팅 능력을 위해 다중 프로세서 설계를 사용하는 아키텍처일 수 있다.
본 명세서에서 제시된 알고리즘 및 작업은 본질적으로 특정 컴퓨터 또는 기타 장치와 관련있는 것은 아니다. 다양한 범용 시스템이 본 명세서의 교시에 따라 프로그램과 함께 사용될 수도 있고, 필요한 방법의 단계를 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 판명될 수도 있다. 이러한 다양한 시스템에 대하여 요구되는 구조는 등가 변형과 함께 당업자에게 명백할 것이다. 또한, 본 발명은 특정한 프로그래밍 언어에 대해 설명되는 것은 아니다. 본 명세서에서 설명된 바와 같이, 본 발명의 교시를 구현하는 데 다양한 프로그래밍 언어가 사용될 수 있고, 특정 언어에 대해서는 본 발명의 구현 및 최선의 실시예를 위해 제공되는 것으로 이해된다.
본 발명은 수많은 토폴로지에 걸친 다양한 컴퓨터 네트워크 시스템에 적합하다. 이 분야에서 대규모 네트워크의 구성 및 관리는 인터넷과 같은 네트워크를 통해 이기종 컴퓨터 및 저장 장치에 통신 가능하게 연결된 저장 장치 및 컴퓨터를 포함한다.
마지막으로, 본 명세서에 사용된 언어는 주로 가독성과 교육 목적을 위해 선택되었고, 발명적 특허대상을 설명하거나 제한하기 위해 선택되지 않았을 수 있다. 따라서, 본 발명의 개시는 하기 청구범위에 기재된 본 발명의 범위를 예시하여 설명하기 위한 것일 뿐, 제한하기 위함은 아니다.

Claims (20)

  1. 전자 게임의 그룹 게임플레이 세션을 설정하기 위한 컴퓨터로 구현되는 방법으로서,
    게임 중개자 프로세스가 상기 전자 게임으로부터 상기 게임 중개자 프로세스에 의해 정의된 형식의 메시지를 수신하는 단계;
    상기 메시지는 상기 전자 게임의 고유한 게임플레이 세션에 대응하도록 상기 전자 게임이 할당한 식별자를 포함하는 컨텍스트 정보를 포함함;
    상기 게임플레이 세션의 설정을 위해 컨텍스트 정보의 적어도 일부를 원격 게임 중개자 서버에 제공하는 단계; 및
    상기 고유한 게임플레이 세션 및 전자 게임을 반영하기 위해 상기 게임 중개자 프로세스가 로비 사용자 인터페이스를 구성하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    상기 로비 사용자 인터페이스는 상기 전자 게임 및 상기 게임플레이 세션에 현재 존재하는 사용자를 시각적으로 나타내는, 컴퓨터로 구현되는 방법.
  3. 제1항에 있어서,
    상기 로비 사용자 인터페이스는 컨트롤을 상기 전자 게임으로 이전시키기 위한 메커니즘을 포함하는, 컴퓨터로 구현되는 방법.
  4. 제1항에 있어서,
    상기 메시지는 운영 체제가 컨트롤을 상기 게임 중개자 프로세스로 이전시키게 하는 딥 링크인, 컴퓨터로 구현되는 방법.
  5. 제1항에 있어서,
    상기 컨텍스트 정보는 상기 전자 게임의 식별자를 더 포함하고,
    상기 로비 사용자 인터페이스는 음성 및 영상 채팅 기능을 포함하는, 컴퓨터로 구현되는 방법.
  6. 제1항에 있어서,
    상기 전자 게임은 상기 게임 중개자 프로세스가 실행되는 클라이언트 장치와 다른 게임 클라이언트 장치에서 실행되고,
    상기 메시지를 수신하는 단계는 게임 중개자 프로세스가 상기 게임 클라이언트 장치 상의 전자 게임에 의해 디스플레이되는 코드를 획득하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  7. 제6항에 있어서,
    상기 코드는 QR 코드이고,
    상기 게임 중개자 프로세스는 상기 QR 코드를 스캔함으로써 상기 코드를 획득하는, 컴퓨터 구현 방법.
  8. 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어는 프로세서에 의해 실행될 때, 동작들을 실행하고, 상기 동작들은:
    게임 중개자 프로세스가 전자 게임으로부터 상기 게임 중개자 프로세스에 의해 정의된 형식의 메시지를 수신하는 동작;
    상기 메시지는 상기 전자 게임의 고유한 게임플레이 세션에 대응하도록 상기 전자 게임이 할당한 식별자를 포함하는 컨텍스트 정보를 포함함;
    상기 게임플레이 세션의 설정을 위해 컨텍스트 정보의 적어도 일부를 원격 게임 중개자 서버에 제공하는 동작; 및
    상기 고유한 게임플레이 세션 및 전자 게임을 반영하기 위해 상기 게임 중개자 프로세스가 로비 사용자 인터페이스를 구성하는 동작을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  9. 제8항에 있어서,
    상기 로비 사용자 인터페이스는 상기 전자 게임 및 상기 게임플레이 세션에 현재 존재하는 사용자를 시각적으로 나타내는, 비일시적 컴퓨터 판독 가능 저장 매체.
  10. 제8항에 있어서,
    상기 로비 사용자 인터페이스는 컨트롤을 상기 전자 게임으로 이전시키기 위한 메커니즘을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  11. 제8항에 있어서,
    상기 메시지는 운영 체제가 컨트롤을 상기 게임 중개자 프로세스로 이전시키게 하는 딥 링크인, 비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제8항에 있어서,
    상기 컨텍스트 정보는 상기 전자 게임의 식별자를 더 포함하고,
    상기 로비 사용자 인터페이스는 음성 및 영상 채팅 기능을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제8항에 있어서,
    상기 전자 게임은 상기 게임 중개자 프로세스가 실행되는 클라이언트 장치와 다른 게임 클라이언트 장치에서 실행되고,
    상기 메시지를 수신하는 동작은 게임 중개자 프로세스가 상기 게임 클라이언트 장치 상의 전자 게임에 의해 디스플레이되는 코드를 획득하는 동작을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서,
    상기 코드는 QR 코드이고,
    상기 게임 중개자 프로세스는 상기 QR 코드를 스캔함으로써 상기 코드를 획득하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 컴퓨터 프로세서; 및
    명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하고, 상기 명령어는 프로세서에 의해 실행될 때, 동작들을 실행하고, 상기 동작들은:
    게임 중개자 프로세스가 전자 게임으로부터 상기 게임 중개자 프로세스에 의해 정의된 형식의 메시지를 수신하는 동작;
    상기 메시지는 상기 전자 게임의 고유한 게임플레이 세션에 대응하도록 상기 전자 게임이 할당한 식별자를 포함하는 컨텍스트 정보를 포함함;
    상기 게임플레이 세션의 설정을 위해 컨텍스트 정보의 적어도 일부를 원격 게임 중개자 서버에 제공하는 동작; 및
    상기 고유한 게임플레이 세션 및 전자 게임을 반영하기 위해 상기 게임 중개자 프로세스가 로비 사용자 인터페이스를 구성하는 동작을 포함하는, 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 로비 사용자 인터페이스는 상기 전자 게임 및 상기 게임플레이 세션에 현재 존재하는 사용자를 시각적으로 나타내는, 컴퓨터 시스템.
  17. 제15항에 있어서,
    상기 로비 사용자 인터페이스는 컨트롤을 상기 전자 게임으로 이전시키기 위한 메커니즘을 포함하는, 컴퓨터 시스템.
  18. 제15항에 있어서,
    상기 메시지는 운영 체제가 컨트롤을 상기 게임 중개자 프로세스로 이전시키게 하는 딥 링크인, 컴퓨터 시스템.
  19. 제15항에 있어서,
    상기 컨텍스트 정보는 상기 전자 게임의 식별자를 더 포함하고,
    상기 로비 사용자 인터페이스는 음성 및 영상 채팅 기능을 포함하는, 컴퓨터 시스템.
  20. 제15항에 있어서,
    상기 전자 게임은 상기 게임 중개자 프로세스가 실행되는 클라이언트 장치와 다른 게임 클라이언트 장치에서 실행되고,
    상기 메시지를 수신하는 동작은 게임 중개자 프로세스가 상기 게임 클라이언트 장치 상의 전자 게임에 의해 디스플레이되는 코드를 획득하는 동작을 포함하는, 컴퓨터 시스템.
KR1020217038847A 2019-04-29 2020-04-22 멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라 KR20220047724A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962840311P 2019-04-29 2019-04-29
US62/840,311 2019-04-29
US16/841,501 2020-04-06
US16/841,501 US11642596B2 (en) 2019-04-29 2020-04-06 Game mediation infrastructure for establishment of multiplayer gaming sessions
PCT/US2020/029184 WO2020223066A1 (en) 2019-04-29 2020-04-22 Game mediation infrastructure for establishment of multiplayer gaming sessions

Publications (1)

Publication Number Publication Date
KR20220047724A true KR20220047724A (ko) 2022-04-19

Family

ID=72921140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217038847A KR20220047724A (ko) 2019-04-29 2020-04-22 멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라

Country Status (3)

Country Link
US (1) US11642596B2 (ko)
KR (1) KR20220047724A (ko)
WO (1) WO2020223066A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7355554B2 (ja) * 2019-08-20 2023-10-03 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびチャット方法
US10951564B1 (en) 2020-04-17 2021-03-16 Slack Technologies, Inc. Direct messaging instance generation
JP7061649B2 (ja) * 2020-08-27 2022-04-28 株式会社バンダイ ゲーム観戦システム、プログラム、観戦端末及び接続装置
US11784949B2 (en) 2020-10-06 2023-10-10 Salesforce, Inc. Limited functionality interface for communication platform
CN112642153A (zh) * 2020-12-31 2021-04-13 星瀛科技(北京)有限公司 云游戏直播过程中转移游戏控制权的方法、系统和设备
CN113467676A (zh) * 2021-05-31 2021-10-01 北京达佳互联信息技术有限公司 一种虚拟空间操作方法、装置、电子设备及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711847B2 (en) 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US8241129B2 (en) 2005-06-20 2012-08-14 Microsoft Corporation Setting up on-line game sessions out of a game context
EP1925349A4 (en) * 2005-09-14 2008-12-10 Sega Kk Dba Sega Corp ONLINE GAMING SYSTEM
US20070078000A1 (en) * 2005-10-04 2007-04-05 Pico Mobile Networks, Inc. Distributed wireless gaming
GB2447096B (en) * 2007-03-01 2011-10-12 Sony Comp Entertainment Europe Entertainment device and method
US8763090B2 (en) 2009-08-11 2014-06-24 Sony Computer Entertainment America Llc Management of ancillary content delivery and presentation
US8793624B2 (en) 2011-05-18 2014-07-29 Google Inc. Control of a device using gestures
US20130231129A1 (en) 2012-03-01 2013-09-05 Kendall Saville Geolocation Based Action Authorization Application And Method And System Using Same
US9022870B2 (en) 2012-05-02 2015-05-05 Aquimo, Llc Web-based game platform with mobile device motion sensor input
US8715077B2 (en) * 2012-08-08 2014-05-06 Skillz Inc. Dynamic gameplay advertisements
JP2016502694A (ja) 2012-10-04 2016-01-28 ディズニー エンタープライゼス インコーポレイテッド 没入型環境用のインタラクティブ型オブジェクト
US9495397B2 (en) 2013-03-12 2016-11-15 Intel Corporation Sensor associated data of multiple devices based computing
US9430186B2 (en) 2014-03-17 2016-08-30 Google Inc Visual indication of a recognized voice-initiated action
JP5638716B1 (ja) 2014-05-14 2014-12-10 株式会社 ディー・エヌ・エー ゲームを提供するシステム、方法、及びプログラム
US9459454B1 (en) 2014-05-23 2016-10-04 Google Inc. Interactive social games on head-mountable devices
US20160082353A1 (en) * 2014-09-18 2016-03-24 Maurice David CHRISTOVALE Method and system to use an interruption component in an interactive game session to encourage gamers to exercise
US9943754B2 (en) 2014-11-14 2018-04-17 United Services Automobile Association System, method and apparatus for collecting and utilizing big data for online gameplay
US20160166923A1 (en) 2014-12-13 2016-06-16 Sunder Rathnavelu Raj Online Interactive Game Using QR Codes
US9529454B1 (en) 2015-06-19 2016-12-27 Microsoft Technology Licensing, Llc Three-dimensional user input
US20170113146A1 (en) 2015-10-26 2017-04-27 Joseph James Chung Ryan's play mobile sports application system and method
US20170157511A1 (en) 2015-12-04 2017-06-08 John Feghali System and Method for Making One or More Toys User Interactive to Time of Day, Signal Strength and Frequency and to One Another
US10080970B2 (en) 2016-03-21 2018-09-25 Roblox Corporation GPS tracking with map overlay
KR20180077355A (ko) 2016-12-28 2018-07-09 엔에이치엔엔터테인먼트 주식회사 카드 게임 제공 방법 및 시스템
US10404851B2 (en) 2017-07-07 2019-09-03 Tile, Inc. Task completion in a tracking device environment
US10661148B2 (en) 2017-09-22 2020-05-26 Rosa Mei-Mei Huang Dual motion sensor bands for real time gesture tracking and interactive gaming
US11103772B2 (en) * 2018-01-12 2021-08-31 Bunch Live, Inc. Mediating multiplayer electronic game sessions
US10905957B2 (en) * 2018-04-30 2021-02-02 Krikey, Inc. Networking in mobile augmented reality environments
US10891823B2 (en) * 2018-09-13 2021-01-12 Jcm American Corporation Network architecture for gaming industry accounting
US20210205715A1 (en) * 2020-01-08 2021-07-08 Wesley John Boudville Contextual ads for esports fans

Also Published As

Publication number Publication date
WO2020223066A1 (en) 2020-11-05
US20200338456A1 (en) 2020-10-29
US11642596B2 (en) 2023-05-09

Similar Documents

Publication Publication Date Title
US11701576B2 (en) Mediating multiplayer electronic game sessions
KR20220047724A (ko) 멀티플레이어 게임 세션 구축을 위한 게임 중개 인프라
JP7073526B2 (ja) インタラクティブなクラウドゲームのための方法、デバイス、およびシステム
JP7022734B2 (ja) ゲームセッションへの参加を容易にするための方法およびシステム
WO2017211170A1 (zh) 跨平台游戏对战的方法及装置、终端、系统
US20060015560A1 (en) Multi-sensory emoticons in a communication system
US8195809B2 (en) Multigame multiplayer party session
JP2015524677A (ja) インタラクティブ・ゲームプレイのためのシステム及び方法
JP2006247381A (ja) マルチメディアコンソール内でシステムレベルユーザインターフェースを提供するためのシステムおよび方法
WO2009026354A1 (en) System and method for linking a player computer system directly to a predetermined shared game environment
US10905957B2 (en) Networking in mobile augmented reality environments
US8152644B2 (en) Data stream processing
US10471350B2 (en) Persistent game sessions with multiplayer support
TW201541357A (zh) 傳遞行動
US20090158171A1 (en) Computer method and system for creating spontaneous icebreaking activities in a shared synchronous online environment using social data
US11465056B2 (en) Game mediation component for enriching multiplayer gaming sessions
CN116850604A (zh) 信息交互方法、装置、电子设备和计算机可读存储介质
US20240033621A1 (en) Non-transitory storage medium, information processing apparatus, server apparatus, information processing system, and information processing method
JP2024017418A (ja) 情報処理プログラム、情報処理方法、情報処理装置、情報処理システム
CN117205575A (zh) 组队邀请方法和装置、存储介质及电子设备
CN116126184A (zh) 一种数据处理方法、设备以及可读存储介质
CN116999858A (zh) 一种游戏中组队信息的处理方法、装置、设备及存储介质