METHOD AND SYSTEM FOR DISTRIBUTING BROWSER-BASED COMPUTER GAMES AND FILES
A method for securing, distributing, and updating a browser-based game includes encrypting a compiled browser-based computer game and wrapping the encrypted compiled browser-based computer game within a browser-based game loader. The browser-based game loader is executable by a web browser to decrypt the encrypted browser-based computer game and, in some embodiments, update the browser-based computer game to a newer version prior to execution.
The present disclosure relates generally to methods and systems for distributing browser-based computer games, and more particularly, to methods and systems for securing, distributing, and updating browser-based computer games.
BACKGROUNDBrowser-based computer games are games playable within a web browser of a computer. Depending on the type of browser-based computer game, the web browser may be required to include a plug-in, extension, or other additional feature or capability to properly execute the browser-based computer game. For example, if the browser-based computer game is embodied as a Flash game, the web browser may be required to include a Flash plug-in to properly execute the Flash game. Browser-based computer games are different from other online games in that the majority, if not all, of the gaming code is stored and executed by the end-user client. Additionally, browser-based computer games are different from other end-user games in that browser-based computer games are executed or otherwise playable via a web browser as discussed above.
Browser-based computer games may be distributed across a network, such as the Internet, by the game developer or other third-party. Version control of browser-based computer games is challenging because the breadth of distribution of the games and the general ability of end-users to decompile, and thereafter modify, the game code of the browser-based computer game.
SUMMARYAccording to one aspect, a method for securing a browser-based computer game may include receiving a compiled browser-based computer game over a network such as, for example, the Internet. The method may also include encrypting the compiled browser-based computer game to generate an encrypted compiled browser-based computer game. The method may further include generating a browser-based game loader. The browser-based game loader may include the encrypted compiled browser-based computer game. The encryption of the compiled browser-based computer game may include generating an encryption key. In some embodiments, the browser-based game loader may include the encryption key. Additionally or alternatively, the method may include storing the encryption key on, for example, the server.
In some embodiments, execution of the browser-based game loader by a web browser may cause the web browser to decrypt the encrypted compiled browser-based computer game and execute the compiled browser based computer game. Additionally, execution of the browser-based game loader by the web browser may cause the browser-based game loader to decrypt the encrypted compiled browser-based computer game using the encryption key. Execution of the browser-based game loader by the web browser may also cause the browser-based game loader to retrieve the encryption key from the server and decrypt the encrypted compiled browser-based computer game using the encryption key.
In some embodiments, the method may further include receiving an updated version of the compiled browser-based computer game over the network. In such embodiments, the method may include determining differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game and generating an update file based on the differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game. The update file may include, for example, programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
The method may also include generating a browser-executable game patch file, the browser-executable game patch file including the update file. Execution of the browser-executable game patch file by a web browser may cause the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game. Additionally, the method may include storing the browser-executable game patch file on the server. In some embodiments, execution of the browser-based game loader may cause the web browser to retrieve the browser-executable game patch file from the server and execute the browser-executable game patch file. Additionally or alternatively, the method may merging the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
According to another aspect, a method for executing a browser-based computer game may include downloading a browser-based game loader over a network and executing the browser-based game loader with a web browser. The browser-based game loader may include an encrypted compiled browser-based computer game. Execution of the browser-based game loader may cause the web browser to decrypt the encrypted compiled browser-based computer game and execute the compiled browser based computer game. For example, in some embodiments, the execution of the browser-based game loader may cause the web browser to decrypt the encrypted compiled browser-based computer game using an encryption key. Additionally or alternatively, the execution of the browser-based game loader may cause the web browser to retrieve an encryption key from a server and decrypt the encrypted compiled browser-based computer game using the encryption key.
In some embodiments, the method may also include communicating with a server to determine whether an updated version of the compiled browser-based computer game exists. Additionally, the method may include retrieving a browser-executable game patch file from the server if the updated version of the compiled browser-based computer game exists. The browser-executable game patch file may include programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game. Further, the method may include merging the programming code and the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
In some embodiments, the execution of the browser-based game loader may also cause the web browser to communicate with a server to retrieve an advertisement and display the advertisement in the web browser. The advertisement may be displayed in the web browser contemporaneously with the compiled browser-based computer game. Additionally or alternatively, the advertisement may be displayed in the web browser between game segments of the compiled browser-based computer game.
According to a further aspect, a method for updating a browser-based computer game may include downloading an encrypted compiled browser-based computer game over a network, decrypting the encrypted compiled browser-based computer game to generate a compiled browser-based computer game, communicating with a server over the network to determine whether an update version of the compiled browser-based computer game is available, retrieving programming code from the server if the updated version of the compiled browser-based computer game is available, and/or updating the compiled browser-based computer game with the programming code to generate an updated compiled browser-based computer game substantially similar to the updated version of the compiled browser-based computer game.
The detailed description particularly refers to the following figures, in which:
While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific exemplary embodiments thereof have been shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the appended claims.
In the following description, low-level hardware architecture and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation.
References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention implemented in a computer system may include one or more bus-based interconnects between components and/or one or more point-to-point interconnects between components. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; and others.
Referring now to
The server 102 is communicatively coupled to the network 108 via a number of communication links 110. Similarly, the game developer client/server 104 is communicatively coupled to the network 108 via a number of communication links 112. Additionally, each of the end-user clients 104 is communicatively coupled to the network 108 via a number of communication links 114. Each of the communication links 110, 112, 114 may be embodied as any type of communication links capable of facilitating communication between the respective server 102, developer client/server 104, and clients 106 and the network 108. For example, any one or more of the communication links 110, 112, 114 may be embodied as any number of wires, cables, printed circuit board traces, vias, and/or other communication links. Additionally, any one or more of the communication links 110, 112, 114 and/or the network 108 may include any number of communication devices such as routers, switches, modems, and the like to facilitate communication therebetween.
The server 102 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single server 102 is illustrated in
The memory device 122 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 122 is illustrated in
The server 102 also includes a storage device 124. The storage devices 124 may be embodied as any device configured for data storage. That is, the storage device 124 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 124 is separate from the server 102, but communicatively coupled thereto. In addition, the server 102 may include other devices and circuitry typically found in a server or computer for performing the functions described herein including but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
The game developer client/server 106 includes a developer client 130 and a web server 132. In some embodiments, the developer client 130 and the web server 132 may be embodied as the same computer or computing device. In other embodiments, the developer client 130 and web server 132 may be separate, but communicatively coupled computer or computing devices as is shown in
The developer client 130 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single developer client 130 is illustrated in
The memory device 142 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 142 is illustrated in
The developer client 130 also includes a storage device 144. The storage devices 144 may be embodied as any device configured for data storage. That is, the storage device 144 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 144 is separate from the developer client 130, but communicatively coupled thereto. In addition, the developer client 130 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
The web server 132 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single web server 132 is illustrated in
The memory device 152 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 152 is illustrated in
The web server 132 also includes a storage device 154. The storage devices 154 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 154 is separate from the web server 132, but communicatively coupled thereto. The storage device(s) 154 maintain a number of databases and files, which are utilized in construction and operation of an information portal such as a website. As will be described in greater detail below, the web server 132 functions as a web portal for transmitting browser-based games and files to an end-user (e.g., one of the end-user clients 106). The web server 132 may also include other devices and circuitry typically found in a server or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
Each of the end-user clients 106 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. In the illustrative embodiment of
The memory device 162 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 162 is illustrated in
In some embodiments, any one or more of the end-user clients 106 may also include one or more storage devices 164. The storage devices 164 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. In addition, the end-user client 106 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
Referring now to
In step 204, the developer operates the developer client 104 to generate a compiled version of the browser-based computer game. Once compiled, the browser-based computer game is executable by and playable in a web browser. However, as discussed above, the web browser in which the browser-based computer game is to be played may require one or more plug-ins to properly play or execute the browser-based computer game. Once compiled, the developer client 104 transmits the compiled browser-based computer game to the server 102 in step 206.
Referring now to
In step 304, the sever 102 encrypts the browser-based computer game. To do so, the server 102 may use any suitable encryption algorithm. In one particular embodiment, the server 102 uses an RC4™ software stream cipher (also known as or otherwise referred to as “ARC4”, “ARCFOUR”, and/or “Rivest Cipher 4”), but other encryption algorithms may be used in other embodiments. In regard to some encryption algorithms, the server 102 may use an encryption key to encrypt the browser-based computer game. Depending upon the particular encryption algorithm used, the encryption key may be embodied as data such as numerical or alphanumerical data or programming code usable with a suitable decryption algorithm to decrypt the encrypted browser-based computer game. In some embodiments, the server 102 may be configured to store the encryption key in the storage device 124.
In step 306, the server 102 generates a browser-based game loader. The browser-based game loader is embodied as a browser-executable file, which includes the encrypted browser-based computer game and, in some embodiments, the encryption key. As discussed in more detail below, when the browser-based game loader is executed by a web browser, the browser-based game loader is configured to decrypt the encrypted browser-based computer game and execute (or cause the web browser to execute) the compiled browser-based computer game. In some embodiments, the browser-based game loader is generated using the same programming language or application as the browser-based computer game. For example, in embodiments wherein the browser-based computer game is embodied as a Flash game, the browser-based game loader may be embodied as a compiled Flash file (e.g., a .swf file) that is executable by a web browser.
Once the server 102 generates the browser-based game loader, the server 102 transmits the browser-based game loader (including the encrypted browser-based game and encryption key in some embodiments) to the developer client 104 via the network 108.
Referring back to
The browser-based game loader may be made available to the public via links published on suitable websites. It should be appreciated that the browser-based game loader is used in place of the compiled browser-based computer game. That is, as discussed in more detail below, when an end-user desires to play the browser-based game, the browser-based game loader is transmitted to the end-user in place of the compiled browser-based game.
Referring now to
Referring now to
The browser-based game loader may use any suitable decryption algorithm to decrypt the encrypted browser-based computer game. Typically, the decryption algorithm is identical to or based on the encryption algorithm used to generate the encrypted browser-based computer game. In embodiments wherein an encryption key is included in the browser-based game loader, the browser-based game loader may use the encryption key to facilitate decryption of the encrypted browser-based computer game. Alternatively, in embodiments wherein the encryption key is stored in the storage device 124 of the server 102, the browser-based game loader may be configured to communicate with the server 102 via the network 108 to retrieve the encryption key. The retrieved encryption key is then used by the browser-based game loader to decrypt the encrypted browser-based computer game.
In some embodiments, the browser-based game loader may be configured to check for updates to the browser-based game in step 504. If so, the browser-based game loader is configured to communicate with the server 102 to determine whether a new version of the browser-based game is available in step 506. The availability of a new version of the browser-based game may be based on the presence of a browser-executable game patch file on the server 102, notation included in a database or chart, or other algorithm used to identify when a new version of the browser-based game is available. For example, in some embodiments, the browser-based game loader may be configured to transmit the version number of the browser-based game included with the browser-based game loader to the server 102. The server 102 may be configured to compare the version number to the version number of the current version of the browser-based game. If the version of the encrypted browser-based game included in the browser-based game loader is older than the current version, the server 102 may notify the browser-based game loader that a newer version is available. Regardless, if a newer version of the browser-based computer game is available, the browser-based game loader downloads or otherwise retrieves a browser-executable game patch file from the server 102 in step 506.
Referring now to
Once the server 102 has determined the differences between the versions of the browser-based computer game, the server 102 generates a browser-based game update file based on the determined differences. The update file may be embodied as programming code, which when merged with the older version of the compiled browser-based computer game generates a browser-based computer game identical to or otherwise equivalent to the newer version of the browser-based computer game. That is, the generated browser-based computer game may be identical to the new version of the browser-based computer game if the programming code of the generated browser-based computer game is identical to the programming code of the newer version of the compiled browser-based computer game. Alternatively, the generated browser-based computer game may be equivalent to the new version of the browser based computer game if, when executed by a web browser, the generated browser-based computer game causes the web browser to behalf in a manner similar to new version of the browser-based computer game even if the programming code of each browser-based computer game is not identical.
Once the update file has been generated, the server 102 generates an browser-executable game patch file in step 608 The browser-executable game patch file is embodied as a browser-executable file, which includes the update file. As discussed in more detail below, when the browser-executable game patch file is executed by a web browser, the browser executable game patch file (or web browser) merges the update file with the decrypted compiled browser-based computer game included with the browser-based game loader to generate an updated compiled browser-based computer game. As discussed above, the updated compiled browser-based computer game is identical or otherwise equivalent to the new version of the browser-based computer game. Once the browser-executable game patch file is generated, the server 102 stores the browser-executable game patch file in the storage device 124.
Referring back to
Once any applicable updates have been applied to the browser-based game, the browser-based game loader executes the compiled browser-based computer game (or updated compiled browser-based computer game in those embodiments in which a new version of the browser-based computer game was available) in step 512. In some embodiments, the browser-based game loader may also be configured to display advertisements to the end-user before, during, or after execution of the browser-based computer game. If so, the browser-based game loader may execute an algorithm 520 for retrieving and displaying advertisements.
The algorithm 520 begins with step 522 in which the browser-based game loader (or web browser) determines whether any advertisements or new advertisements should be displayed. If so, the browser-based game loader (or web browser) communicates with the server 102 via the network 108 to retrieve a new advertisement in step 524. The advertisement(s) may be embodied as any type of advertisements including, but not limited to, still images or graphics, animation, video, browser-executable files or programs, and/or a combination thereof. The advertisements may be sized for display to the end-user in the same browser as the browser-based computer game or, alternatively, in a separate browser.
Once the new advertisement has been downloaded from the server 102, the browser-based game loader displays the advertisement to the end-user in step 526. The browser-based game loader may display the advertisement to the end-user before execution of the browser-based game, during execution of the browser-based game, or after execution of the browser-based game. For example, in one particular embodiment, the browser-based game loader is configured to display a new advertisement to the end-user between each segment (e.g., each “level” or “chapter”) of the browser-based game. The browser-based game loader may continue retrieving new advertisement and displaying the advertisements to the end-user while the end-user is playing the browser-based game.
While the disclosure has been illustrated and described in detail in the drawings and foregoing description, such an illustration and description is to be considered as exemplary and not restrictive in character, it being understood that only illustrative embodiments have been shown and described and that all changes and modifications that come within the spirit of the disclosure are desired to be protected.
There are a plurality of advantages of the present disclosure arising from the various features of the methods and system described herein. It will be noted that alternative embodiments of the methods and systems of the present disclosure may not include all of the features described yet still benefit from at least some of the advantages of such features. Those of ordinary skill in the art may readily devise their own implementations of the methods and systems that incorporate one or more of the features of the present invention and fall within the spirit and scope of the present disclosure as defined by the appended claims.
Claims
1-21. (canceled)
22. A computer comprising:
- a processor; and
- a memory device coupled to the processor, the memory device having stored therein a plurality of instructions, which when executed by the processor causes the processor to:
- receive a compiled browser-based computer game over a network;
- encrypt the compiled browser-based computer game to generate an encrypted compiled browser-based computer game; and
- generate a browser-based game loader, the browser-based game loader including the encrypted compiled browser-based computer game,
- wherein execution of the browser-based game loader by a web browser causes the web browser to (i) decrypt the encrypted compiled browser-based computer game and (ii) execute the compiled browser based computer game.
23. The computer of claim 22, wherein to encrypt the compiled browser-based computer game comprises to generate an encryption key.
24. The computer of claim 23, wherein the browser-based game loader includes the encryption key.
25. The computer of claim 24, wherein execution of the browser-based game loader by the web browser causes the browser-based game loader to decrypt the encrypted compiled browser-based computer game using the encryption key.
26. The computer of claim 23, wherein the plurality of instructions, when executed by the processor, further causes the processor to store the encryption key on a storage device.
27. The computer of claim 26, wherein execution of the browser-based game loader by the web browser causes the browser-based game loader to retrieve the encryption key over the network and decrypt the encrypted compiled browser-based computer game using the encryption key.
28. The computer of claim 23, wherein the plurality of instructions, when executed by the processor, further causes the processor to receive an updated version of the compiled browser-based computer game over the network.
29. The computer of claim 28, wherein the plurality of instructions, when executed by the processor, further causes the processor to:
- determine differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game, and
- generate an update file based on the differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game, the update file including programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
30. The computer of claim 29, wherein the plurality of instructions, when executed by the processor, further causes the processor to:
- generate a browser-executable game patch file, the browser-executable game patch file including the update file,
- wherein execution of the browser-executable game patch file by a web browser causes the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
31. The computer of claim 30, wherein the plurality of instructions, when executed by the processor, further causes the processor to store the browser-executable game patch file on a storage device.
32. The computer of claim 31, wherein execution of the browser-based game loader by the web browser causes the web browser to (i) retrieve the browser-executable game patch file from the storage device over the network and (ii) execute the browser-executable game patch file.
33. The computer of claim 32, wherein execution of the browser-based game loader by the web browser causes the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
34. A method for executing a browser-based computer game on a client computer, the method comprising:
- downloading a browser-based game loader over a network from a remote computer, the browser-based game loader including an encrypted compiled browser-based computer game; and
- executing the browser-based game loader with a web browser on the client computer,
- wherein execution of the browser-based game loader on the client computer causes the web browser to (i) decrypt the encrypted compiled browser-based computer game and (ii) execute the compiled browser based computer game.
35. The method of claim 34, wherein execution of the browser-based game loader on the client computer causes the web browser to decrypt the encrypted compiled browser-based computer game using an encryption key.
36. The method of claim 34, wherein execution of the browser-based game loader on the client computer causes the web browser to (i) retrieve an encryption key from a remote computer and (ii) decrypt the encrypted compiled browser-based computer game using the encryption key.
37. The method of claim 34, further comprising:
- communicating with a server computer over the network to determine whether an updated version of the compiled browser-based computer game exists; and
- retrieving a browser-executable game patch file from the server computer with the client computer if the updated version of the compiled browser-based computer game exists, wherein the browser-executable game patch file includes programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
38. The method of claim 37, further comprising merging the programming code and the compiled browser-based computer game on the client computer to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
39. The method of claim 34, wherein execution of the browser-based game loader causes the web browser to (i) communicate with a server computer to retrieve an advertisement and (ii) display the advertisement in the web browser on the client computer.
40. The method of claim 39, wherein to display the advertisement in the web browser includes displaying the advertisement in the web browser contemporaneously with the compiled browser-based computer game.
41. The method of claim 39, wherein to display the advertisement in the web browser includes displaying the advertisement in the web browser between game segments of the compiled browser-based computer game.
42. A method for updating a browser-based computer game on a client computer, the method comprising:
- downloading an encrypted compiled browser-based computer game from a remote computer over a network with the client computer;
- decrypting the encrypted compiled browser-based computer game with the client computer to generate a compiled browser-based computer game;
- communicating with a server computer over the network to determine whether an update version of the compiled browser-based computer game is available;
- retrieving programming code from the server computer with the client computer if the updated version of the compiled browser-based computer game is available; and
- updating the compiled browser-based computer game with the programming code on the client computer to generate an updated compiled browser-based computer game substantially similar to the updated version of the compiled browser-based computer game.
Type: Application
Filed: May 30, 2008
Publication Date: Dec 3, 2009
Inventors: Matthew Robert Dempsky (San Francisco, CA), Robert Joseph Ippolito (San Francisco, CA)
Application Number: 12/129,949
International Classification: A63F 9/24 (20060101);