AU2015100110A4 - System and method of implementing a software game controller on a smart phone or tablet - Google Patents

System and method of implementing a software game controller on a smart phone or tablet Download PDF

Info

Publication number
AU2015100110A4
AU2015100110A4 AU2015100110A AU2015100110A AU2015100110A4 AU 2015100110 A4 AU2015100110 A4 AU 2015100110A4 AU 2015100110 A AU2015100110 A AU 2015100110A AU 2015100110 A AU2015100110 A AU 2015100110A AU 2015100110 A4 AU2015100110 A4 AU 2015100110A4
Authority
AU
Australia
Prior art keywords
events
game
tablet
smart phone
server
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
AU2015100110A
Inventor
Thomas Liu
Simon Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HUBI TECHNOLOGY Pty Ltd
Original Assignee
HUBI TECHNOLOGY Pty Ltd
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 HUBI TECHNOLOGY Pty Ltd filed Critical HUBI TECHNOLOGY Pty Ltd
Priority to AU2015100110A priority Critical patent/AU2015100110A4/en
Application granted granted Critical
Publication of AU2015100110A4 publication Critical patent/AU2015100110A4/en
Priority to CN201510315706.1A priority patent/CN104922901A/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Abstract

Abstract The invention implements utilizing a smart phone or tablet as a game controller in the way of simulating a physical one. It includes a software system in client-server architecture and a special method of utilizing the control device's sensors which can detect the device movements. The system comprises a mobile application which is installed on a smart phone or tablet regardless of the platform, a server application which is installed on the game console device, and the communication which relies on the currently popular technologies. The method involves converting the device movement events to directional key events. Smart Phone - Game Screen Console Tablet -' Figure 1 Find , Establish , Capture Device Connection Events Convert to ,Send to the , Dispatch _ Key Events Device Key Events Figure 2

Description

1 Title [0001] System and method of implementing a software game controller on a smart phone or tablet. Technical Field [0002] This invention relates to a game controller. In particular, this invention relates to a software system which implements utilizing a smart phone or tablet as a game controller. Background Art [0003] Smart phones and tablets are extremely popular nowadays in many countries. There are hundreds of thousands of games are available in App stores over the two main platforms: Android and iOS. People can download and play a game on the smart phone or tablet, with using the touch screen or gravity sensors to control the game which is displayed on the same screen. Some physical game controllers had been available to separate the screen and the control, which normally uses Bluetooth to connect with the device. In this way, it can greatly reduce the interference between the game display and the control, although the small screen cannot be changed. [0004] Along with the increasing popularity of digital contents, now Smart TVs, TV boxes, TV dongles, Mini Computers and so on are entering people's life, which are not only used to watch a TV program or a movie, but also used to play games. Particularly, the Android devices are becoming more and more popular because of its open-source feature and the great number of App resources over the platform, including games. Now Google is moving its Android mobile resources onto a TV screen. It is foreseen that, in the near future, people would be able to play all sorts of games on a TV screen with a Smart TV or a top-set box, and most of these devices would be Android based. A game controller is an essential part to play the game no matter it is a physical one or software one.
2 Summary of Invention [0005] This invention implements a software game controller on a smart phone or tablet to control a game console device which is based on Linux-kernel such as Android TV sets and Android TV boxes. [0006] Briefly summarizing the invention, it includes a system and a method. The system is in client-server architecture where a client application is installed on a smart phone or tablet and a server application is installed on the game console device; it simulates the way in which a physical controller works, that the client mobile application captures events from the GUI (Graphical User Interface) and convert them into the events which a physical controller uses; and then send them to the controlled device; the server dispatches the received events to the local operating system; before starting capturing the GUI events, the target device must be found first and a connection must be established as well. The method is about how to utilize the smart phone or tablet's movements to control a game. [0007] By this invention, the user can simply use his or her smart phone or tablet to play a game over the screen, without having to buy a physical controller. In addition, the invention enables users to control a game by swinging the smart phone or tablet rather than pressing buttons, which can bring a different experience that an ordinary game controller is unable to achieve. [0008] The technologies and methods involved in this invention are not limited to the devices or systems mentioned in this document; for example, the event conversion method can be used for any systems. Drawings [0009] Figure 1 shows the general system devices. [0010] Figure 2 shows the general work flow involving six processes. [0011] Figure 3 shows the key components of the system.
3 [0012] Figure 4 shows a game controller GUI which simulates the traditional game one. [0013] Figure 5 shows the gravity GUI which uses the gravity sensor events to control directions. [0014] Figure 6 shows the effect on the gravity GUI when the gravity sensor event is converted to the "Down" event of the direction key "KEYLEFT". [0015] Figure 7 shows the effect on the gravity GUI when the gravity sensor event is converted to the "Down" event of the direction key "KEYRIGHT". [0016] Figure 8 shows the effect on the gravity GUI when the gravity sensor event is converted to the "Down" event of the direction key "KEYUP". [0017] Figure 9 shows the effect on the gravity GUI when the gravity sensor event is converted to the "Down" event of the direction key "KEYDOWN". [0018] Figure 10 shows the packet format for sending the converted events from the client to the server. Invention Embodiments [0019] The invention includes a system in client-server architecture and a method of converting gravity sensor events to the key events. For the system, the client is a mobile application which can be installed on a smart phone or tablet, regardless of the platform; the server is a service application which is installed on the game console device; and the communication involves existing technologies such as TCP, UDP and Bluetooth. Figure 1 shows the involved devices in the system. For the conversion method, it is about how to utilize the smart phone or tablet's gravity sensor or similar sensors to control a game. [0020] The system comprises six main processes, as shown in Figure 2, including "Find 4 Device", "Establish Connection", "Capture Events", "Convert to Key Events", "Send to the Device" and "Dispatch Key Events". The key components involved in the six processes are shown in Figure 3, including GUI, Device Finder, Event Handlers, Key Event Sender at the client side; and Broadcast Responder, Key Event Receiver and Key Event Dispatcher at the server side. [0021] The first process is to find the controlled device. This can be implemented by UDP broadcast in the local network. To find a device, the client's Device Finder sends a UDP package containing a pre-defined flag such as "100" in one byte, with a destination IP address "255.255.255.255" and a pre-defined port number like "1001"; after that, the Finder will keep listening to a pre-defined port like "1002" of the UDP socket for a response; the device's Broadcast Responder always listens to the pre-defined port ("1001") of a UDP socket and when it receives a broadcast with the "100", it sends a response with the device name and ID to the sender by the pre-defined port ("1002") and the sender's IP address; the client will keep a target list containing the found devices and the corresponding information like name, ID and IP address. This is a universal way to find a device which is supported by nearly all the current operating systems. By Bluetooth, different operating systems may provide different APIs, and it can just utilize these APIs to find a device; for example, for an Android mobile device, "BluetoothAdapter" class is used to find a Bluetooth device and at the server side, it just needs to set the device discoverable. [0022] The second process is to establish a connection. In a universal way, it can be a TCP connection. Open a TCP socket connection by the target device's IP address and a pre defined port number. When the connection is opened successfully, a verification code such as "101" in one byte can be sent to the device to avoid unauthorised connections. If the device's Key Event Receiver receives the verification code, it will keep the connection and start to listen to the input stream waiting for key events; otherwise just drop the connection. At the client side, the Key Event Sender will keep the output stream preparing to be called to send key events. By Bluetooth, it is the same with finding a device that, using the provided AlPs to establish a connection; for example, for an Android mobile device, the "BluetoothSocket" can be used to establish the connection and communicate with the "BluetoothServerSocket" at the server side.
5 [0023] The third process is to capture events from GUI. As shown in Figure 4, the GUI is a simulated physical game controller, containing the common game control keys. To capture the events of these keys are simply registering an "OnTouchListener" on the view and capture the "Down" and "Up" events in a CallBack function or method "onTouch". Figure 5 shows a special layout of the keys excluding the "Start" and "Select" keys. This GUI is for gravity control. In this case, the four direction keys are put in the centre in a small size. They are not used as touch buttons but used for displaying the effects of the gravity control. For example, when the gravity events are calculated to a "Left Key Down Motion", the "Left Key" (20 in Figure 6) will be highlighted meaning the direction control key "Left" is pressed. The gravity events can be captured by a "SensorEventListener" and the CallBack function or method "onSensorChanged". Different operating systems may have different names but they do the same things. [0024] After capturing the touch or gravity events, the next process is to convert them to the game control key events which can be recognized by the operation system on the game console device. Every operation system may have its own definitions on the key values, which are mapped to the kernel level key values, for example, in Android, the "Direction Up" key is recognized as "KeyEvent.KEYCODEDPADUP" and the corresponding integer value is 19 while the Linux kennel defines it as "KEYUP" which has a value of 103. In this system, the original key values in kennel level are used, which are defined as the following. 1. KEYUP: 103 (11 in Figure 4) 2. KEYDOWN: 108 (10 in Figure 4) 3. KEYLEFT: 105 (9 in Figure 4) 4. KEYRIGHT: 106 (12 in Figure 4) 5. BTN_X: 307 (15 in Figure 4) 6. BTN_Y: 308 (16 in Figure 4) 7. BTN_A: 304 (18 in Figure 4) 8. BTN_B: 305 (17 in Figure 4) 9. BTNTL: 310 (7 in Figure 4) 10. BTNTR: 311 (8 in Figure 4) 6 11. BTN_START: 315 (13 in Figure 4) 12. BTNSELECT: 314 (14 in Figure 4) There are two events on each of the keys above: Up and Down with the integer codes 0 and 1 respectively. [0025] To convert gravity events to the key events, it is to calculate the offset of the sensor movement from the balance point. Every captured "SensorEvent" has three float values which represent the movement in X, Y and Z dimensions respectively. For this application, only the X and Y dimensions are required. Y value is used to judge KEYLEFT and KEYRIGHT events; and X value is used to judge KEYUP and KEYDOWN events. Figure 6 to Figure 9 show the movements which trigger the direction key events. The conversion involves two values x and y, two flags last_x, last-y, and one gap. x and y are the values in X axis and Y axis in the coordinate when capturing each SensorEvent; last_x and last y are two flags recording the values of previous x and y; and the gap is used to keep a movement space where no key events are triggered. Take the KEYLEFT and KEYRIGHT events as an example, the simplest algorithm is that, If y<0 then If last_y>0 then send KEYRIGHT Up event and KEYLEFT Down event Else if y>0 then If lasty<0 then send KEYLEFT Up event and KEYRIGHT Down event With the algorithm above, it is always switching between KEYLEFT and KEYRIGHT keys because 0 is the balance point. To keep a movement range where no key events are triggered, the gap value can be used as the following: If y<(0-gap) then If last_y> (0-gap) then send KEYLEFT Down event Else if y>(0-gap) & y<gap then If last_y< (0-gap) then send KEYLEFT Up event If last_y>gap then send KEYRIGH Up event Else if y>gap then If last_y<gap then send KEYRIGHT Down event The gap's value decides the range of swinging the device to control "left" and "right". This conversion method can be applied in any mobile devices which have the gravity sensor or 7 similar sensors. For an advanced controller, the Z value can be also used to add one more dimension control. [0026] After a key event has been converted, the next process is to send it to the server. Four bytes are sufficient to represent all the key events. As shown in Figure 10, the first byte is used to store the event type; the second byte and the third byte together is used to store the key value; the last byte is used to store the status: 0 means Down, 1 means Up. Every converted event is sent to the server and the server will check the event type and dispatch the events accordingly. The event type may be used to distinguish a connection verification message or messages with specific purposes from the real events. [0027] The last process is to dispatch the events. There are two ways to dispatch the events: by the operating system's APIs and by "uinput" in Linux kernel level. The operating system like Android has its own mechanism to dispatch all the events and the corresponding APIs can be used to achieve the job. For example, in Android, "Instrumentation" class has a method "sendKeySync(KeyEvent event)" which can be used to dispatch any key events to the currently focused view; another way is to use "IWindowManager" class to "injectKeyEvent" but it is an unpublished API. The second method to dispatch the events is to use "uinput" in Linux kernel level by JNI (Java Native Interface). First of all, create an input device by C language: "open("/dev/uinput", ORDWR)" ; then directly write the event in a system struct "uinput event", for example, "write(device, event, sizeof(event)" where the "device is the opened device reference, and the "event" is the system struct "uinput event" which contains the key value and the status. The "uinput" method can be applied on any Linux kernel based operating systems.

Claims (4)

1. A system for remotely controlling a software game, comprising: client-server architecture, wherein a client application is installed on a touch device, and a server application is installed on the controlled game console device; finding device process, wherein the client application sends broadcasts in local network and receive a response with identification and connection information from the controlled device; establishing connection process, wherein the client application initializes the connection to the server application with the received connection information; capturing events process, wherein the client application captures touch and other sensor events from a GUI (Graphical User Interface); converting events process, wherein the client application converts the captured events into commonly recognized events; sending events process, wherein the client application sends the converted events to the server application in a certain format; dispatching events process, wherein the server application dispatches the received events to the local operating system.
2. The converting events process of claim 1, wherein the commonly recognized events are the events which a supported physical game controller sends to the game console device.
3. The dispatching events process of claim 1, wherein the server application dispatches the events either by the kernel's interface of the operating system or by the APIs (application programming interface) provided by the operating system.
4. A method of converting gravity sensor events to the commonly recognized events, comprising: the source events, which are the events from a sensor or sensors which can detect the movement of the device; the target events, which are the commonly recognized events defined in claim 2.
AU2015100110A 2015-02-01 2015-02-01 System and method of implementing a software game controller on a smart phone or tablet Ceased AU2015100110A4 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AU2015100110A AU2015100110A4 (en) 2015-02-01 2015-02-01 System and method of implementing a software game controller on a smart phone or tablet
CN201510315706.1A CN104922901A (en) 2015-02-01 2015-06-10 Game system of implementing a game controller by means of mobile equipment and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2015100110A AU2015100110A4 (en) 2015-02-01 2015-02-01 System and method of implementing a software game controller on a smart phone or tablet

Publications (1)

Publication Number Publication Date
AU2015100110A4 true AU2015100110A4 (en) 2015-03-12

Family

ID=52629217

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2015100110A Ceased AU2015100110A4 (en) 2015-02-01 2015-02-01 System and method of implementing a software game controller on a smart phone or tablet

Country Status (2)

Country Link
CN (1) CN104922901A (en)
AU (1) AU2015100110A4 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105451046A (en) * 2015-11-11 2016-03-30 网宿科技股份有限公司 Intelligent terminal-based intelligent set-top box virtual handle generation method and system
CN106422319A (en) * 2016-09-27 2017-02-22 陈甘鑫 Game training gun
CN108187342A (en) * 2017-12-19 2018-06-22 广州小鸡快跑网络科技有限公司 A kind of game command processing method touches game paddle and games system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101879375B (en) * 2009-05-06 2013-04-03 鼎亿数码科技(上海)有限公司 Mobile-phone game handle based on Bluetooth transmission and realization method thereof
CN103079019A (en) * 2012-12-21 2013-05-01 康佳集团股份有限公司 Control method and system for controlling intelligent terminal through mobile equipment
CN104144145A (en) * 2013-05-08 2014-11-12 上海恺达广告有限公司 Method and system for playing online game through palm mobile terminal
CN103634645A (en) * 2013-12-10 2014-03-12 青岛海尔软件有限公司 Method for controlling smart television by using mobile phone
CN103763595B (en) * 2013-12-24 2018-03-20 康佳集团股份有限公司 A kind of RTV remote television game terminal system based on MHL
CN103888820A (en) * 2014-03-28 2014-06-25 湖南网圣腾飞信息技术有限公司 Game control system and method with smart mobile phone and intelligent television combined
CN103908778A (en) * 2014-04-04 2014-07-09 深圳市同洲电子股份有限公司 Game control method and related terminals

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105451046A (en) * 2015-11-11 2016-03-30 网宿科技股份有限公司 Intelligent terminal-based intelligent set-top box virtual handle generation method and system
CN106422319A (en) * 2016-09-27 2017-02-22 陈甘鑫 Game training gun
CN108187342A (en) * 2017-12-19 2018-06-22 广州小鸡快跑网络科技有限公司 A kind of game command processing method touches game paddle and games system

Also Published As

Publication number Publication date
CN104922901A (en) 2015-09-23

Similar Documents

Publication Publication Date Title
CN105867925B (en) Shortcut establishing method and electronic equipment
CN109395372B (en) Method, system and electronic equipment for realizing remote control of computer game by gamepad
CN102932695B (en) A kind of remote control thereof, intelligent terminal and intelligent remote control system
US20150304712A1 (en) Method, apparatus, and system for transferring digital media content playback
CN104866083B (en) Gesture recognition method, device and system
US10362158B2 (en) Appliance control system and method
CN110035004B (en) User name card sharing method, friend adding method and related device
US10165058B2 (en) Dynamic local function binding apparatus and method
CN103687060B (en) Terminal communicating method, device and terminal
CN103473027A (en) Split-screen multi-task interaction method for communication terminal and communication terminal
CN104049866A (en) Mobile terminal and method and device for achieving screen splitting of mobile terminal
AU2015100110A4 (en) System and method of implementing a software game controller on a smart phone or tablet
CN107071551A (en) Applied to the multi-screen interactive screen response method in intelligent television system
CN102109959A (en) Method for realizing rotation of JAVA application programming interface (API) with rotation of screen
EP3112984A1 (en) Hand gesture recognition method, device, system, and computer storage medium
US20090029694A1 (en) Control device, mobile communication system, and communication terminal
CN110109598A (en) A kind of animation interaction implementation method, device and electronic equipment
EP2860689A1 (en) Method and system for message service in multi-device environment, and apparatus therefor
US20080254813A1 (en) Control Device, Mobile Communication System, and Communication Terminal
CN103813202A (en) Smart television with interactive function, handheld device with interactive function and interactive method of smart television and handheld device
WO2015074069A1 (en) Methods and systems of operating computing device
CN107038024B (en) Operation configuration method and equipment thereof
US20110252384A1 (en) Wireless display application
US20060069543A1 (en) Emulated universal serial bus input devices
CN104702701A (en) Method and device for sharing data

Legal Events

Date Code Title Description
FGI Letters patent sealed or granted (innovation patent)
MK21 Patent ceased section 101c(b)/section 143a(c)/reg. 9a.4 - examination under section 101b had not been carried out within the period prescribed