U.S. Pat. No. 11,185,783
CONTROLLER EMULATION FOR CLOUD GAMING
AssigneeSony Interactive Entertainment Inc.
Issue DateMarch 4, 2014
Illustrative Figure
Abstract
A server may determine a client device type from an identifier and generate a user interface configuration profile for the client device using the client device type. The client device can use the profile to configure a first user interface to provide inputs for a software title emulated by the server. The software title is configured for use with a device having a second user interface. The server sends the profile to the client device and emulates the software title with inputs received from the client device. It is emphasized that this abstract is provided to comply with the rules requiring an abstract that will allow a searcher or other reader to quickly ascertain the subject matter of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
Description
DESCRIPTION Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the present disclosure. Accordingly, the aspects of the present disclosure described below are set forth without any loss of generality to, and without imposing limitations upon, the claims that follow this description. According to aspects of the present disclosure, a server may obtain information about what functionality the client device has. The server may use this information to generate a user interface (UI) configuration profile for the particular client device. In general, when a client device connects to a server to play a game the server can find out what type of device the client is. The server may then use this information to generate a user interface configuration profile that it sends to the client device. The client device uses the profile to configure its user interface for playing a game being emulated on the server. According to certain aspects of the present disclosure a server may suggest a best way to configure the client device interface if the server has sufficient information about the game and how people play it. The server could provide such a UI configuration profile to the user community (e.g., via bulletin boards). Users could share UI configuration profiles the same way. To put certain aspects of the present disclosure into context it is useful to understand emulation of a game on a server.FIG. 1is a schematic diagram illustrating a system containing components that can implement controller emulation in accordance with aspects of the present disclosure. An emulator server107may be accessed by a client device platform103over a network160. The client device platform103may access alternative emulators107over the ...
DESCRIPTION
Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the present disclosure. Accordingly, the aspects of the present disclosure described below are set forth without any loss of generality to, and without imposing limitations upon, the claims that follow this description.
According to aspects of the present disclosure, a server may obtain information about what functionality the client device has. The server may use this information to generate a user interface (UI) configuration profile for the particular client device. In general, when a client device connects to a server to play a game the server can find out what type of device the client is. The server may then use this information to generate a user interface configuration profile that it sends to the client device. The client device uses the profile to configure its user interface for playing a game being emulated on the server.
According to certain aspects of the present disclosure a server may suggest a best way to configure the client device interface if the server has sufficient information about the game and how people play it.
The server could provide such a UI configuration profile to the user community (e.g., via bulletin boards). Users could share UI configuration profiles the same way.
To put certain aspects of the present disclosure into context it is useful to understand emulation of a game on a server.FIG. 1is a schematic diagram illustrating a system containing components that can implement controller emulation in accordance with aspects of the present disclosure. An emulator server107may be accessed by a client device platform103over a network160. The client device platform103may access alternative emulators107over the network160. The emulators107may be identical to each other, or they may each be programmed to emulate unique legacy game titles106or unique sets of legacy game titles106. Furthermore, other client devices (not shown) may communicate with the client device103and/or access the emulator server107via the network160.
The client device platform103may include a central processor unit (CPU)131. By way of example, a CPU131may include one or more processors, which may be configured according to any suitable processor architecture, e.g., a dual-core, quad-core, multi-core, or Cell processor architecture. The client device platform103may also include a memory132(e.g., RAM, DRAM, ROM, and the like). The CPU131may execute a process-control program133, portions of which may be stored in the memory132. The client device platform103may also include well-known support circuits140, such as input/output (I/O) circuits141, power supplies (P/S)142, a clock (CLK)143and cache144. The client device platform103may optionally include a mass storage device134such as a disk drive, CD-ROM drive, tape drive, or the like to store programs and/or data. The client device platform103may also optionally include a display unit137and a user interface unit138to facilitate interaction between the client device platform103and a user. The display unit137may be in the form of a cathode ray tube (CRT) or flat panel screen that displays text, numerals, or graphical symbols. The user interface unit138may include a keyboard, mouse, joystick, light pen, or other device. A controller145may be connected to the client device platform103through the I/O circuit141or it may be directly integrated into the client device platform103. The controller145may facilitate interaction between the client device platform103and a user. The controller145may include a keyboard, mouse, joystick, light pen, hand-held controls or other device. The controller145may also be capable of generating a haptic response146. By way of example and not by way of limitation, the haptic response146may be implemented in the form of mechanical vibrations or any other feedback corresponding to the sense of touch. The client device platform103may include a network interface139, configured to enable the use of Wi-Fi, an Ethernet port, or other communication methods.
The network interface139may incorporate suitable hardware, software, firmware or some combination of two or more of these to facilitate communication via an electronic communications network160. The network interface139may be configured to implement wired or wireless communication over local area networks and wide area networks such as the Internet. The client device platform103may send and receive data and/or requests for files via one or more data packets over the network160.
The preceding components may exchange signals with each other via an internal system bus150. The client device platform103may be a general purpose computer that becomes a special purpose computer when running code that implements embodiments of the present invention as described herein.
The emulator107may include a central processor unit (CPU)131′. By way of example, a CPU131′ may include one or more processors, which may be configured according to any suitable processor architecture, e.g., a dual-core, quad-core, multi-core, or Cell processor architecture. The emulator107may also include a memory132′ (e.g., RAM, DRAM, ROM, and the like). The CPU131′ may execute a process-control program133′, portions of which may be stored in the memory132′. The emulator107may also include well-known support circuits140′, such as input/output (I/O) circuits141′, power supplies (P/S)142′, a clock (CLK)143′ and cache144′. The emulator107may optionally include a mass storage device134′ such as a disk drive, CD-ROM drive, tape drive, or the like to store programs and/or data. The emulator107may also optionally include a display unit137′ and user interface unit138′ to facilitate interaction between the emulator107and a user who requires direct access to the emulator107. By way of example and not by way of limitation a client device platform or engineer103may need direct access to the emulator107in order to program the emulator107to properly emulate a desired legacy game106or to add additional mini-game capabilities to a legacy game106. The display unit137′ may be in the form of a cathode ray tube (CRT) or flat panel screen that displays text, numerals, or graphical symbols. The user interface unit138′ may include a keyboard, touchpad, touch screen, mouse, joystick, light pen, or other device. The emulator107may include a network interface139′, configured to enable the use of Wi-Fi, an Ethernet port, or other communication methods.
The network interface139′ may incorporate suitable hardware, software, firmware or some combination of two or more of these to facilitate communication via the electronic communications network160. The network interface139′ may be configured to implement wired or wireless communication over local area networks and wide area networks such as the Internet. The emulator server107may send and receive data and/or requests for files via one or more data packets over the network160.
The preceding components may exchange signals with each other via an internal system bus150′. The emulator server107may be a general purpose computer that becomes a special purpose computer when running code that implements embodiments of the present invention as described herein.
The emulator server107may access a legacy game106that has been selected by the client device platform103for emulation through the internal system bus150′. There may be more than one legacy game106stored in the emulator. The legacy games may also be stored in the memory132′ or in the mass storage device134′. Additionally, one or more legacy games106may be stored at a remote location accessible to the emulator server107over the network160. Each legacy game106contains game code108. When the legacy game106is emulated, the game code108produces legacy game data109. Legacy game data109may be received by the client device platform103and displayed on the display unit137.
By way of example, a legacy game106may be any game that is not compatible with a client device platform103. By way of example and not by way of limitation, the legacy game106may have been designed to be played on Sony Computer Entertainment's PlayStation Vita portable gaming device having, among other things, a touch screen, back touch interface, inertial sensor and analog joysticks, but the client device platform103is a home computer having a screen, keyboard, and mouse.
As shown inFIG. 2A, the emulator server107may be configured to implement a method for controller emulation while emulating a legacy game106according to an inventive method200. Various aspects of the method200may be implemented by execution of computer executable instructions running on the client device platform103and/or the emulator107in conjunction with the actions of a client device platform103. Specifically, a client device platform103may be configured, e.g., by suitable programming, to implement certain client device platform instructions270, which may be part of the program133executed by the CPU131of the client device103. In addition, the emulator107server may be configured to implement certain emulator instructions271, which may be part of the program133′ executed by the CPU131′ of the emulator server107. InFIG. 2Athe dashed arrows represent the flow of data between the client device platform103and the emulator107over the network160.
After logging in to the server107(or as part of the log in), the client device platform103sends a device ID to the server, as indicated at272. The server receives the device ID as indicated at273. The server107may then determine what type of device the client device103is from the device ID as indicated at274. Specifically, each device ID may have an associated device type stored in a database, which can be stored in the server's memory132′ as part of the data136′. The server107can use the program133′ to do a lookup in the database to determine the device ID for the device type sent from the client device103. Device types may include, but are not limited to, personal computers, laptop computers, game console devices, portable game devices, cellular phones, smart phones, tablet computers, personal digital assistants, and the like. The server's database may include generic profiles for a PC, laptop, cellphone, tablet or other devices.
By way of example, and not by way of limitation, the database may include information as shown in Table I below.
TABLE IDeviceTouchTouchIDDevice TypeScreenKeyboardMouseJoystickscreenPadCameraMicrophone1PCYesYesYesNoNoNomaybeMaybe2LaptopYesYesNoNoNoYesyesYes3SmartphoneYesNoNoNoYesNoyesYes4TabletYesNoNoNoYesNoYesYes5GameYesNoNoYesYesNomaybeMaybeconsole6PortableYesNoNoYesYesNoYesYesgamedevice
The server107may generate a UI configuration profile for each device based on the combination of generic device UI features and additional information, which may be provided by a user or the client device itself. The UI configuration profile may include code and or data that maps inputs from the client device to inputs from the device being emulated by the server. The UI configuration profile may also include information that can be presented to the user in the form of text or images. The information can explain to the user how to use the input devices on the client device to play the game being emulated.
In some cases, the database might not have all of the features a given device has. However, if the device type is known, it is possible for the server107to estimate what UI features the client device103can be expected to have. For example, a PC can be expected to have a screen, keyboard and mouse, but not necessarily have a joystick camera or microphone. The server107could set up an initial UI profile for a PC based on the assumed features of screen, keyboard and mouse. In some implementations, the server could optionally query the client device (or the user), as indicated at275to determine whether the client device has certain features that are not standard but possible for that type of device. For example, if a user accesses the server using a PC, the server could query the PC to determine if it has a camera or microphone. Alternatively, the server could send a message that can be read by the user asking for this information. The server could also query the PC (or user) to determine if it has the standard assumed features (e.g., screen, keyboard and mouse). The client device or user may respond as indicated at276. The server107may then generate the UI configuration profile as indicated at277using the standard assumed features and any additional information in the response.
The server107may need to obtain additional information from the client device or user even if certain UI capabilities are verified in response to the query or from the device ID. For example, the client device103might have a camera, but the camera might not be ideal for running games that use a specific type of camera or other interface. The server107may generate a profile for the client device103that takes into account differences between the capabilities of the client device and the controller interface being emulated. By way of example, the PlayStation Eye camera has certain image resolution and zoom capabilities and a microphone array for object tracking. The Kinect interface uses a camera that can swivel and also includes an infrared laser and sensor for depth sensing. The client device user interface138may include a camera might not have such capabilities.
The server107can use the information about the client device's UI capabilities to generate a best fit UI configuration profile for emulating a given controller functionality with a particular client device. By way of example, and not by way of limitation, the user interface138on the client device103may include a keyboard. The client device program133may include a key assignment program. The server107could generate a best fit key assignment that can be included in the UI configuration profile for the client device103.
In extreme cases, the server107could restrict use of or access to a game if the device doesn't have sufficient functionality. This feature could help avoid a situation where a user pays for a game that he can't play on the device that he has.
Once the UI configuration profile has been generated the server may send it to the client device103as indicated at278. The user receives the profile, as indicated at279and may use it to configure the client device user interface138for use in playing the game over the network160with the server107emulating the game. Specifically, the client device103may generate game inputs in response to user input on the user interface138according to the profile. These inputs can be delivered to the server107, as indicated at281. The server may then emulate the game title using the inputs received from the client device103as indicated at282.
In some implementations, the user may be able to customize the profile from the server107to emulate the controller functionality. In particular, the user may use the client device to modify the UI configuration profile to produce a modified profile. The client device103may then configure the user interface138using the modified profile. By way of example, and not by way of limitation, the user may be using a tablet computer with a touch screen but no back touch to emulate a portable game device having a touch screen and a back touch. The UI configuration profile generated by the server107could designate part of the tablet touch screen to perform the function of the back touch on the portable game device. The program133on the client device103could allow the user to change the assignment of the back touch area to a different part of the tablet's touch screen than the one designated by the server107.
In some implementations, the server107may store the UI configuration profile in the server memory132′ for future reference, as indicated at280. In other implementations, the server107may publish the UI configuration profile, e.g., to a social media page, as also indicated at280. Publishing the profile allows other users with similarly configured client devices to access the profile to facilitate interaction with the server107during emulation. If a client device already has a stored profile, the client device may include this information along with the client device ID at272. Also, publishing UI configuration profiles allows users to provide feedback through the social media page.
According to certain aspects of the present disclosure, the server107could handicap the latency or ease of using the client device UI138during emulation at282. This can be particularly useful, e.g., when two or more users are playing each other on different types of client device with different types of UI. There are a number of different ways in which the server may handicap the latency for a given client device103with a given user interface138. For example, the server may add latency for a first client device having a controller that is standard for a given title being emulated and add less latency or no latency to a second client device having a non-standard controller for the title being emulated. There may be different latencies or a user may have an advantage with one type of controller. The server107could collect data from users during gameplay on different devices and compare quality of play for users with different devices to determine the amount of latency handicap to apply to a given type of client device with a given type of user interface.
Alternatively, the server107could change a scoring metric for an emulated game based on the type of client device being used. For example, suppose game being emulated uses a particular type of controller on a specific type of game console. If the client device is the specific game console and uses the specific type of controller, the game scoring may be weighted with a weight of one. If the client device103is different than from the specific game console, the server107may apply a weight greater to the scoring as part of emulating the game or as part of the UI configuration profile. The weight may the degree of difficulty of using the client device interface138with the emulated game. The server107may collect data from users during gameplay on different devices and compare quality of play for users with different devices to determine the amount of weight to apply to scoring for a given type of client device with a given type of user interface.
Aspects of the present disclosure facilitate remote emulation of various types of software titles for client devices that have a different user interface than the software title would normally use. This can enhance the user experience with the emulated title. It is noted that although various aspects are described herein with respect to game titles, the concepts described herein can be extended to other types of software that is remotely emulated.
While the above is a complete description of the preferred embodiment of the present invention, it is possible to use various alternatives, modifications and equivalents. Therefore, the scope of the present invention should be determined not with reference to the above description but should, instead, be determined with reference to the appended claims, along with their full scope of equivalents. Any feature described herein, whether preferred or not, may be combined with any other feature described herein, whether preferred or not. In the claims that follow, the indefinite article “A”, or “An” refers to a quantity of one or more of the item following the article, except where expressly stated otherwise. The appended claims are not to be interpreted as including means-plus-function limitations, unless such a limitation is explicitly recited in a given claim using the phrase “means for.”
Claims
- A method implemented by a server, comprising: receiving a device identifier from a client device having a first user interface;determining a client device type for the client device from the identifier;generating a user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being implemented by the server, wherein the software title being implemented by the server is configured for use with a device having a second user interface;sending the user interface configuration profile to the client device;publishing the user interface configuration profile to allow client devices to access the profile;and implementing the software title with inputs received from the client device wherein implementing the software title with inputs received from the client device includes adjusting a latency for the client device wherein an amount of latency adjustment depends on a user interface type for the first user interface wherein the user interface type consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
- The method of claim 1 , wherein the inputs received from the client device are generated in accordance with the user interface configuration profile.
- The method of claim 1 , further comprising querying the client device in response to determining the client device type from the identifier.
- The method of claim 1 , further comprising storing the user interface configuration profile.
- The method of claim 1 , wherein the first and second user interfaces are different.
- The method of claim 1 , wherein the software title is a game title.
- The method of claim 1 , wherein the software title is a game title and wherein implementing the software title with inputs received from the client device includes adjusting a latency for the client device wherein an amount of latency adjustment depends on an interface type for the first user interface wherein the amount of latency adjustment includes a latency handicap for the first user interface.
- The method of claim 7 , wherein the client device is being used to play the game title against a different client device having a second user interface that is different from the first and wherein the server adjusts the latency for the client device differently than for the different client device.
- The method of claim 1 , wherein the software title is a game title and wherein implementing the software title with inputs received from the client device includes adjusting a scoring for the client device wherein an amount of scoring adjustment depends on an interface type for the first user interface.
- The method of claim 9 , wherein the client device is being used to play the game title against a different client device having a second user interface that is different from the first and wherein the server adjusts the scoring for the client device differently than for the different client device.
- The method of claim 1 , wherein the user interface configuration profile takes in to account differences in capability between the first user interface and the second user interface.
- A non-transitory computer-readable medium having computer executable instructions embodied therein, the instructions being configured to implement a method, the method comprising: receiving a device identifier from a client device having a first user interface;determining a client device type for the client device from the identifier;generating a user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being implemented by a server, wherein the software title being implemented by the server is configured for use with a device having a second user interface;sending the user interface configuration profile to the client device;publishing the user interface configuration profile to allow client devices to access the profile;and implementing the software title with inputs received from the client device wherein implementing the software title with inputs received from the client device includes adjusting a latency for the client device wherein an amount of latency adjustment depends on a user interface type for the first user interface, wherein the user interface type consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
- A system, comprising: a processor;a memory;and one or more instructions embodied in the memory, the instructions being configured to implement a method, the method comprising: receiving a device identifier from a client device having a first user interface;determining a client device type for the client device from the identifier;generating a user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being implemented by the system, wherein the software title being implemented by the system is configured for use with a device having a second user interface;sending the user interface configuration profile to the client device;publishing the user interface configuration profile to allow client devices to access the profile;and implementing the software title with inputs received from the client device wherein implementing the software title with inputs received from the client device includes adjusting a latency for the client device wherein an amount of latency adjustment depends on a user interface type for the first user interface, wherein the user interface consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
- A method implemented by a client device, comprising: obtaining with a client device having a first user interface a previously published user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being implemented by a server, wherein the software title being implemented by the server is configured for use with a device having a second user interface wherein the first user interface is configured to have a different amount of latency compared to the second user interface;informing a server with the client that the client has the previously published user interface configuration profile;sending a device identifier to the server from the client device, wherein the device identifier is usable by the server to determine a client device type for the client device;configuring the first user interface with the client device using the user interface configuration profile;generating one or more inputs for the software title being implemented with the user interface in accordance with the user interface configuration profile;and providing the one or more inputs to the server, wherein the user interface consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
- The method of claim 14 , further comprising modifying the user interface configuration profile with the client device to produce a modified profile and wherein configuring the first user interface with the client device using the user interface configuration profile includes using the modified profile.
- The method of claim 14 , wherein the first and second user interfaces are different.
- The method of claim 16 , wherein the first user interface is configured to have a different amount of latency compared to the second user interface wherein the different amount of latency includes a latency handicap for the first user interface.
- The method of claim 14 , wherein the software title is a game title.
- A non-transitory computer-readable medium having computer executable instructions embodied therein, the instructions being configured to implement a method the method comprising: obtaining with a client device having a first user interface a previously published user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being implemented by a server, wherein the software title being implemented by the server is configured for use with a device having a second user interface wherein the first user interface is configured to have a different amount of latency compared to the second user interface;informing a server with the client that the client has the previously published user interface configuration profile;sending a device identifier to the server from the client device, wherein the device identifier is usable by the server to determine a client device type for the client device;configuring the first user interface with the client device using the user interface configuration profile;generating one or more inputs for the software title being implemented with the user interface in accordance with the user interface configuration profile;and providing the one or more inputs to the server, wherein the user interface consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
- A system, comprising: a processor;a memory;and one or more instructions embodied in the memory, the instructions being configured to implement a method, the method comprising: obtaining a previously published user interface configuration profile for the client device using the client device type, wherein the user interface configuration profile is usable by the client device to configure the first user interface to provide inputs for a software title being emulated by the system, wherein the software title being emulated by the system is configured for use with a device having a second user interface, wherein the first user interface is configured to have a different amount of latency compared to the second user interface;informing a server with the client that the client has the previously published user interface configuration profile;sending a device identifier to the server from the client device, wherein the device identifier is usable by the server to determine a client device type for the client device;configuring the first user interface with the client device using the user interface configuration profile;generating one or more inputs for the software title being emulated with the user interface in accordance with the user interface configuration profile;and providing the one or more inputs to the server, wherein the user interface consists of a camera, light pen, keyboard, mouse, microphone, touch screen, touch pad, joystick, or game controller.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.