US20090298582A1 - Method and system for distributing browser-based computer games and files - Google Patents
Method and system for distributing browser-based computer games and files Download PDFInfo
- Publication number
- US20090298582A1 US20090298582A1 US12/129,949 US12994908A US2009298582A1 US 20090298582 A1 US20090298582 A1 US 20090298582A1 US 12994908 A US12994908 A US 12994908A US 2009298582 A1 US2009298582 A1 US 2009298582A1
- Authority
- US
- United States
- Prior art keywords
- browser
- game
- compiled
- based computer
- computer
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004891 communication Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 101150055569 arc4 gene Proteins 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/71—Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
-
- A63F13/12—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/335—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/61—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor using advertising information
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/40—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
- A63F2300/407—Data transfer via internet
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/532—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing using secure communication, e.g. by encryption, authentication
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/552—Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
Definitions
- 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.
- Browser-based computer games are games playable within a web browser of a computer.
- 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.
- 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.
- 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.
- 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.
- the method may further include receiving an updated version of the compiled browser-based computer game over the network.
- 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.
- the method may include storing the browser-executable game patch file on the server.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- FIG. 1 is a simplified block diagram of a system for distributing browser-based computer games and files
- FIG. 2 is a simplified flow diagram of one embodiment of a method for distributing a browser-based computer game and files
- FIG. 3 is a simplified flow diagram of one embodiment of an algorithm for encrypting a browser-based computer game, which may be executed by a server of the system of FIG. 1 ;
- FIG. 4 is a simplified flow diagram of one embodiment of an algorithm for executing a browser-based game, which may be executed by an end-user client of the system of FIG. 1 ;
- FIG. 5 is a simplified flow diagram of one embodiment of an algorithm for decrypting and updating a browser-based computer game, which may be executed by an end-user client of the system of FIG. 1 ;
- FIG. 6 is a simplified flow diagram of one embodiment of an algorithm for generating a game patch file for updating a browser-based computer game.
- 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).
- 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.
- a system 100 for distributing and updating browser-based computer games and files includes a server 102 , a game developer client/server 104 , and one or more end-user clients 106 .
- the server 102 and the developer client/server 104 , and the end-user clients 106 are configured to communicate with each other over a network 108 .
- the network 108 may be embodied as or otherwise include any type of network(s) capable of facilitating communication between the server 102 , the developer client/server 104 , and the end-user clients 106 .
- the network 108 may be embodied as or otherwise include a wired network, a wireless network, a local area network (LAN), and/or a wide area network (WAN).
- the network 108 is embodied as or otherwise includes a publically-accessible global network such as the Internet.
- the server 102 is communicatively coupled to the network 108 via a number of communication links 110 .
- the game developer client/server 104 is communicatively coupled to the network 108 via a number of communication links 112 .
- 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 .
- 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 FIG. 1 , the server 102 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments.
- the server 102 includes a processor 120 and a memory device 122 .
- the processor 120 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs).
- ASICs application specific integrated circuit
- 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 FIG. 1 , in other embodiments, the server 102 may include any number of memory devices.
- ROM read-only memory
- DRAM dynamic random access memory devices
- SDRAM synchronous dynamic random access memory devices
- DDR SDRAM double-data rate dynamic random access memory device
- 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.
- 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 .
- the developer client 130 and the web server 132 may be embodied as the same computer or computing device.
- the developer client 130 and web server 132 may be separate, but communicatively coupled computer or computing devices as is shown in FIG. 1 .
- the developer client 130 is under the control of the browser-game developer while the web server 132 is under the control of a third-party. That is, in some embodiments, the system 100 may include any number of third-party web servers 132 .
- 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 FIG. 1 , the developer client 130 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments.
- the developer client 130 includes a processor 140 and a memory device 142 .
- the processor 140 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs).
- ASICs application specific integrated circuit
- 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 FIG. 1 , in other embodiments, the developer client 130 may include any number of memory devices.
- ROM read-only memory
- DRAM dynamic random access memory devices
- SDRAM synchronous dynamic random access memory devices
- DDR SDRAM double-data rate dynamic random access memory device
- 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.
- 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 FIG. 1 , the web server 132 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments.
- the web server 132 includes a processor 150 and a memory device 152 .
- the processor 150 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs).
- ASICs application specific integrated circuit
- 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 FIG. 1 , in other embodiments, the web server 132 may include any number of memory devices.
- ROM read-only memory
- DRAM dynamic random access memory devices
- SDRAM synchronous dynamic random access memory devices
- DDR SDRAM double-data rate dynamic random access memory device
- 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.
- 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.
- the end-user client 106 includes a processor 160 and a memory device 162 .
- the processor 160 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs).
- ASICs application specific integrated circuit
- the end-user client 106 includes only a single processor 160 in the embodiment illustrated in FIG. 1 , the end-user client 106 may include any number of processors (or processor cores) in other embodiments.
- 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 FIG. 1 , in other embodiments, the end-user client 106 may include any number of memory devices.
- ROM read-only memory
- DRAM dynamic random access memory devices
- SDRAM synchronous dynamic random access memory devices
- DDR SDRAM double-data rate dynamic random access memory device
- 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.
- 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.
- a method 200 for distributing a browser-based computer game and/or files begins with a step 202 in which a game developer designs a browser-based computer game.
- a browser-based computer game is a computer game that is playable within a web browser of a computer.
- the developer may use any one of a number of game development software applications and/or tools to develop the browser-based computer game.
- the browser-based computer game may be embodied as any type of browser-based computer game.
- the browser-based computer game is embodied as a Flash game.
- step 204 the developer operates the developer client 104 to generate a compiled version of the browser-based computer game.
- the browser-based computer game is executable by and playable in a web browser.
- 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.
- the developer client 104 transmits the compiled browser-based computer game to the server 102 in step 206 .
- the server 102 executes an algorithm 300 for encrypting a browser-based computer game.
- the algorithm 300 begins with step 302 in which the compiled browser-based computer game is received by the server 102 .
- the server 102 may be configured to store the compiled browser-based game in, for example, the storage device 124 .
- the stored browser-based game may be retrieved at a later time for version control and/or other purposes.
- the sever 102 encrypts the browser-based computer game.
- the server 102 may use any suitable encryption algorithm.
- the server 102 uses an RC4TM 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.
- the server 102 may use an encryption key to encrypt the browser-based computer game.
- 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.
- the server 102 may be configured to store the encryption key in the storage device 124 .
- 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.
- the browser-based game loader when 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.
- the browser-based game loader is generated using the same programming language or application as the browser-based computer 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.
- a compiled Flash file e.g., a .swf file
- 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 .
- the developer client 104 receives the browser-based game loader from the server 102 in step 208 .
- the developer publishes the browser-based game loader for downloading by the public (via the network 108 ).
- the developer may store the browser-based game loader on a local web server 132 (i.e., a web server operated by the developer).
- the developer may upload or otherwise provide the browser-based game loader to a third-party web server 132 (i.e., a web server controlled and operated by a third-party) for publication thereon.
- an unknown and/or unauthorized third-party may publish the browser-based game loader, or copy thereof, on a web server 132 controlled by the unauthorized third-party.
- a “pirated” or otherwise unauthorized copy of the browser-based game loader may be published on an unknown/unauthorized web server by a third-party.
- 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.
- an end-user may download and play the browser-based game created by the developer by implementing an algorithm 400 .
- the algorithm 400 for executing a browser-based game begins with a step 402 wherein the end-user operates the end-user client 106 to navigate to a network site at which the browser-based game loader is published.
- the network or web site(s) at which the browser-based game loader is available may be maintained on one or more of the web servers 132 , which may be operated by the game developer or, alternatively, by a third-party. It should be appreciated that browser-based game may be obtainable from one of a plurality of web sites.
- the browser-based game loader may be published by a plurality of third-parties in addition to or alternatively to the developer themselves.
- the end-user may operate the end-user client 106 to download the browser-based game (i.e., the browser-based game loader) in step 404 .
- the browser-based game loader executes an algorithm 500 for decrypting and updating a browser-based computer game.
- the algorithm 500 begins with a step 502 in which the browser-based game loader decrypts the encrypted browser-based computer game.
- the encrypted browser-based computer game is included in the browser-based game loader. It should be appreciated that because the compiled browser-based computer game is encrypted, the ability of the end-user to decompile or otherwise obtain the source code of the browser-based computer game may be reduced. In this way, encryption of the compiled browser-based computer game provides an amount of security or obfuscation to the compiled browser-based computer game.
- the browser-based game loader may use any suitable decryption algorithm to decrypt the encrypted browser-based computer game.
- the decryption algorithm is identical to or based on the encryption algorithm used to generate the encrypted browser-based computer game.
- the browser-based game loader may use the encryption key to facilitate decryption of the encrypted browser-based computer game.
- 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.
- 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 .
- the browser-executable game patch file is generated by and stored on the server 102 based on the differences between versions of the browser-based computer game.
- the server 102 may execute an algorithm 600 for generating a game patch file for updating a browser-based computer game.
- the algorithm 600 begins with step 602 in which the server 102 receives a new version of the compiled browser-based game from the developer client 104 .
- the server 102 compares the new version of the compiled browser-based game to the current version of the compiled browser-based game, a copy of which may be stored in the storage device 124 of the server 102 .
- the server 102 determines the differences between the two versions in step 604 .
- the server 102 may use any suitable algorithm or method to compare the versions and determine such differences.
- the server 102 uses a binary difference algorithm, commonly known as “Bsdiff”, to determine the differences between the two versions of the browser based game.
- Bsdiff binary difference algorithm
- other difference algorithms may be used in other embodiments.
- the differences between the two versions of the browser-based computer game may include deleted programming code, additional programming code, and/or other changes to the programming code of the older version of the browser-based computer game relative to the newer version of the browser-based computer game.
- the server 102 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.
- 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.
- 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.
- 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.
- the updated compiled browser-based computer game is identical or otherwise equivalent to the new version of the browser-based computer game.
- the web browser of the end-user client 104 executes the browser-executable game patch file in step 508 .
- the browser-executable game patch file (or web browser) merges the update file, which is included with the browser-executable game patch file as discussed above, with the decrypted compiled browser-based game included with the browser-based game loader.
- the browser-executable game patch file may (or web browser) may use any suitable algorithm to merge the programming code of the update file and the decrypted compiled browser-based game together.
- the browser-executable game patch file may first decompile the compiled browser-based game, merge the programming codes together, and recompile the browser-based game to generate an updated compiled 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 .
- 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.
- 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.
- 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.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
Abstract
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.
Description
- 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.
- Browser-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.
- According 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:
-
FIG. 1 is a simplified block diagram of a system for distributing browser-based computer games and files; -
FIG. 2 is a simplified flow diagram of one embodiment of a method for distributing a browser-based computer game and files; -
FIG. 3 is a simplified flow diagram of one embodiment of an algorithm for encrypting a browser-based computer game, which may be executed by a server of the system ofFIG. 1 ; -
FIG. 4 is a simplified flow diagram of one embodiment of an algorithm for executing a browser-based game, which may be executed by an end-user client of the system ofFIG. 1 ; -
FIG. 5 is a simplified flow diagram of one embodiment of an algorithm for decrypting and updating a browser-based computer game, which may be executed by an end-user client of the system ofFIG. 1 ; and -
FIG. 6 is a simplified flow diagram of one embodiment of an algorithm for generating a game patch file for updating a browser-based computer game. - 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
FIG. 1 , asystem 100 for distributing and updating browser-based computer games and files includes aserver 102, a game developer client/server 104, and one or more end-user clients 106. Theserver 102 and the developer client/server 104, and the end-user clients 106 are configured to communicate with each other over anetwork 108. Thenetwork 108 may be embodied as or otherwise include any type of network(s) capable of facilitating communication between theserver 102, the developer client/server 104, and the end-user clients 106. For example, thenetwork 108 may be embodied as or otherwise include a wired network, a wireless network, a local area network (LAN), and/or a wide area network (WAN). In one particular embodiment, thenetwork 108 is embodied as or otherwise includes a publically-accessible global network such as the Internet. - The
server 102 is communicatively coupled to thenetwork 108 via a number of communication links 110. Similarly, the game developer client/server 104 is communicatively coupled to thenetwork 108 via a number of communication links 112. Additionally, each of the end-user clients 104 is communicatively coupled to thenetwork 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 therespective server 102, developer client/server 104, andclients 106 and thenetwork 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 thenetwork 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 asingle server 102 is illustrated inFIG. 1 , theserver 102 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. Theserver 102 includes aprocessor 120 and amemory device 122. Theprocessor 120 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although theserver 102 includes only asingle processor 120 in the embodiment illustrated inFIG. 1 , theserver 102 may include any number of processors (or processor cores) in other embodiments. - 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 asingle memory device 122 is illustrated inFIG. 1 , in other embodiments, theserver 102 may include any number of memory devices. - The
server 102 also includes astorage device 124. Thestorage devices 124 may be embodied as any device configured for data storage. That is, thestorage 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, thestorage device 124 is separate from theserver 102, but communicatively coupled thereto. In addition, theserver 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 adeveloper client 130 and aweb server 132. In some embodiments, thedeveloper client 130 and theweb server 132 may be embodied as the same computer or computing device. In other embodiments, thedeveloper client 130 andweb server 132 may be separate, but communicatively coupled computer or computing devices as is shown inFIG. 1 . Further, in some embodiments, thedeveloper client 130 is under the control of the browser-game developer while theweb server 132 is under the control of a third-party. That is, in some embodiments, thesystem 100 may include any number of third-party web servers 132. - 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 asingle developer client 130 is illustrated inFIG. 1 , thedeveloper client 130 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. Thedeveloper client 130 includes aprocessor 140 and amemory device 142. Theprocessor 140 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although thedeveloper client 130 includes only asingle processor 140 in the embodiment illustrated inFIG. 1 , thedeveloper client 130 may include any number of processors (or processor cores) in other embodiments. - 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 asingle memory device 142 is illustrated inFIG. 1 , in other embodiments, thedeveloper client 130 may include any number of memory devices. - The
developer client 130 also includes astorage device 144. Thestorage devices 144 may be embodied as any device configured for data storage. That is, thestorage 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, thestorage device 144 is separate from thedeveloper client 130, but communicatively coupled thereto. In addition, thedeveloper 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 asingle web server 132 is illustrated inFIG. 1 , theweb server 132 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. Theweb server 132 includes aprocessor 150 and amemory device 152. Theprocessor 150 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although theweb server 132 includes only asingle processor 150 in the embodiment illustrated inFIG. 1 , theweb server 132 may include any number of processors (or processor cores) in other embodiments. - 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 asingle memory device 152 is illustrated inFIG. 1 , in other embodiments, theweb server 132 may include any number of memory devices. - The
web server 132 also includes astorage device 154. Thestorage devices 154 may be embodied as any device configured for data storage. That is, thestorage 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, thestorage device 154 is separate from theweb 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, theweb 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). Theweb 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 ofFIG. 1 , the end-user client 106 includes aprocessor 160 and amemory device 162. Theprocessor 160 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although the end-user client 106 includes only asingle processor 160 in the embodiment illustrated inFIG. 1 , the end-user client 106 may include any number of processors (or processor cores) in other embodiments. - 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 asingle memory device 162 is illustrated inFIG. 1 , in other embodiments, the end-user client 106 may include any number of memory devices. - In some embodiments, any one or more of the end-
user clients 106 may also include one ormore storage devices 164. Thestorage devices 164 may be embodied as any device configured for data storage. That is, thestorage 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
FIG. 2 , amethod 200 for distributing a browser-based computer game and/or files begins with astep 202 in which a game developer designs a browser-based computer game. As discussed above, a browser-based computer game is a computer game that is playable within a web browser of a computer. The developer may use any one of a number of game development software applications and/or tools to develop the browser-based computer game. As such, the browser-based computer game may be embodied as any type of browser-based computer game. In one particular embodiment, the browser-based computer game is embodied as a Flash game. - In
step 204, the developer operates thedeveloper 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, thedeveloper client 104 transmits the compiled browser-based computer game to theserver 102 instep 206. - Referring now to
FIG. 3 , in one embodiment, theserver 102 executes analgorithm 300 for encrypting a browser-based computer game. Thealgorithm 300 begins withstep 302 in which the compiled browser-based computer game is received by theserver 102. In some embodiments, theserver 102 may be configured to store the compiled browser-based game in, for example, thestorage device 124. As discussed in more detail below in regard toFIG. 6 , the stored browser-based game may be retrieved at a later time for version control and/or other purposes. - In
step 304, thesever 102 encrypts the browser-based computer game. To do so, theserver 102 may use any suitable encryption algorithm. In one particular embodiment, theserver 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, theserver 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, theserver 102 may be configured to store the encryption key in thestorage device 124. - In
step 306, theserver 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, theserver 102 transmits the browser-based game loader (including the encrypted browser-based game and encryption key in some embodiments) to thedeveloper client 104 via thenetwork 108. - Referring back to
FIG. 2 , thedeveloper client 104 receives the browser-based game loader from theserver 102 instep 208. Subsequently, instep 210, the developer publishes the browser-based game loader for downloading by the public (via the network 108). To do so, the developer may store the browser-based game loader on a local web server 132 (i.e., a web server operated by the developer). Alternatively, the developer may upload or otherwise provide the browser-based game loader to a third-party web server 132 (i.e., a web server controlled and operated by a third-party) for publication thereon. Further, in some cases, an unknown and/or unauthorized third-party may publish the browser-based game loader, or copy thereof, on aweb server 132 controlled by the unauthorized third-party. For example, a “pirated” or otherwise unauthorized copy of the browser-based game loader may be published on an unknown/unauthorized web server by a third-party. - 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
FIG. 4 , an end-user may download and play the browser-based game created by the developer by implementing analgorithm 400. Thealgorithm 400 for executing a browser-based game begins with astep 402 wherein the end-user operates the end-user client 106 to navigate to a network site at which the browser-based game loader is published. As discussed above, the network or web site(s) at which the browser-based game loader is available may be maintained on one or more of theweb servers 132, which may be operated by the game developer or, alternatively, by a third-party. It should be appreciated that browser-based game may be obtainable from one of a plurality of web sites. For example, the browser-based game loader may be published by a plurality of third-parties in addition to or alternatively to the developer themselves. Once the end-user has located the browser-based game, the end-user may operate the end-user client 106 to download the browser-based game (i.e., the browser-based game loader) instep 404. - Referring now to
FIG. 5 , when the web browser of the end-user client 106 executes the browser-based game loader, the browser-based game loader (or web browser itself) executes analgorithm 500 for decrypting and updating a browser-based computer game. Thealgorithm 500 begins with astep 502 in which the browser-based game loader decrypts the encrypted browser-based computer game. As discussed above, the encrypted browser-based computer game is included in the browser-based game loader. It should be appreciated that because the compiled browser-based computer game is encrypted, the ability of the end-user to decompile or otherwise obtain the source code of the browser-based computer game may be reduced. In this way, encryption of the compiled browser-based computer game provides an amount of security or obfuscation to the compiled browser-based computer game. - 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 theserver 102, the browser-based game loader may be configured to communicate with theserver 102 via thenetwork 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 theserver 102 to determine whether a new version of the browser-based game is available instep 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 theserver 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 theserver 102. Theserver 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, theserver 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 theserver 102 instep 506. - Referring now to
FIG. 6 , the browser-executable game patch file is generated by and stored on theserver 102 based on the differences between versions of the browser-based computer game. To do so, theserver 102 may execute analgorithm 600 for generating a game patch file for updating a browser-based computer game. Thealgorithm 600 begins withstep 602 in which theserver 102 receives a new version of the compiled browser-based game from thedeveloper client 104. Instep 604, theserver 102 compares the new version of the compiled browser-based game to the current version of the compiled browser-based game, a copy of which may be stored in thestorage device 124 of theserver 102. Based on the comparison of the versions of the browser-based computer game, theserver 102 determines the differences between the two versions instep 604. Theserver 102 may use any suitable algorithm or method to compare the versions and determine such differences. In one particular embodiment, theserver 102 uses a binary difference algorithm, commonly known as “Bsdiff”, to determine the differences between the two versions of the browser based game. However, other difference algorithms may be used in other embodiments. The differences between the two versions of the browser-based computer game may include deleted programming code, additional programming code, and/or other changes to the programming code of the older version of the browser-based computer game relative to the newer version of the browser-based computer game. - Once the
server 102 has determined the differences between the versions of the browser-based computer game, theserver 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 instep 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, theserver 102 stores the browser-executable game patch file in thestorage device 124. - Referring back to
FIG. 5 , after the end-user client 104 has retrieved the browser-executable game patch file from theserver 102 instep 506, the web browser of the end-user client 104 executes the browser-executable game patch file instep 508. In response, the browser-executable game patch file (or web browser) merges the update file, which is included with the browser-executable game patch file as discussed above, with the decrypted compiled browser-based game included with the browser-based game loader. To do so, the browser-executable game patch file may (or web browser) may use any suitable algorithm to merge the programming code of the update file and the decrypted compiled browser-based game together. For example, in some embodiments, the browser-executable game patch file may first decompile the compiled browser-based game, merge the programming codes together, and recompile the browser-based game to generate an updated compiled browser-based game. - 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 analgorithm 520 for retrieving and displaying advertisements. - The
algorithm 520 begins withstep 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 theserver 102 via thenetwork 108 to retrieve a new advertisement instep 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 instep 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 (22)
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.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/129,949 US20090298582A1 (en) | 2008-05-30 | 2008-05-30 | Method and system for distributing browser-based computer games and files |
PCT/US2009/045491 WO2009146375A1 (en) | 2008-05-30 | 2009-05-28 | Method and system for distributing browser-based computer games and files |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/129,949 US20090298582A1 (en) | 2008-05-30 | 2008-05-30 | Method and system for distributing browser-based computer games and files |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090298582A1 true US20090298582A1 (en) | 2009-12-03 |
Family
ID=40852584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/129,949 Abandoned US20090298582A1 (en) | 2008-05-30 | 2008-05-30 | Method and system for distributing browser-based computer games and files |
Country Status (2)
Country | Link |
---|---|
US (1) | US20090298582A1 (en) |
WO (1) | WO2009146375A1 (en) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110086706A1 (en) * | 2009-10-14 | 2011-04-14 | Sony Computer Entertainment America | Playing Browser Based Games with Alternative Controls and Interfaces |
US20110145803A1 (en) * | 2009-12-14 | 2011-06-16 | Soederstedt Torbjoern | Extension mechanism |
CN103297476A (en) * | 2012-03-02 | 2013-09-11 | 腾讯科技(深圳)有限公司 | Method and device for loading webpage game |
WO2013170715A1 (en) * | 2012-05-15 | 2013-11-21 | Tencent Technology (Shenzhen) Company Limited | Method and system for loading file in webgame |
US20140059453A1 (en) * | 2011-08-18 | 2014-02-27 | Brian Shuster | Dynamic serving of multidimensional content |
US20140137097A1 (en) * | 2012-11-15 | 2014-05-15 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for application |
US20140141890A1 (en) * | 2011-07-19 | 2014-05-22 | Konami Digital Entertainment Co., Ltd. | Amusement system |
CN104065692A (en) * | 2013-04-02 | 2014-09-24 | 腾讯科技(深圳)有限公司 | Web-game interaction method, device and system |
US20140370990A1 (en) * | 2013-06-17 | 2014-12-18 | Tencent Technology (Shenzhen) Company Limited | Method and system for invoking plug-in function |
US9491225B2 (en) | 2012-03-16 | 2016-11-08 | Tencent Technology (Shenzhen) Company Limited | Offline download method and system |
US9550119B2 (en) | 2013-04-02 | 2017-01-24 | Tencent Technology (Shenzhen) Company Limited | Method, apparatus, and system for webgame interaction |
US9770654B1 (en) * | 2009-09-30 | 2017-09-26 | Amazon Technologies, Inc. | Cross device operation of games |
WO2020205185A1 (en) * | 2019-03-29 | 2020-10-08 | Microsoft Technology Licensing, Llc | Method for patching and updating encrypted disk images in a reliable and secure fashion |
US20220184500A1 (en) * | 2019-03-12 | 2022-06-16 | Nippon Telegraph And Telephone Corporation | Game realization method, game realization apparatus and program |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216112B1 (en) * | 1998-05-27 | 2001-04-10 | William H. Fuller | Method for software distribution and compensation with replenishable advertisements |
US6298446B1 (en) * | 1998-06-14 | 2001-10-02 | Alchemedia Ltd. | Method and system for copyright protection of digital images transmitted over networks |
US20020112171A1 (en) * | 1995-02-13 | 2002-08-15 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20020199118A1 (en) * | 2001-02-02 | 2002-12-26 | Medinservice.Com, Inc. | Internet training course system and methods |
US20090215512A1 (en) * | 2008-02-25 | 2009-08-27 | Tc Websites Llc | Systems and methods for a gaming platform |
US7665081B1 (en) * | 2006-05-06 | 2010-02-16 | Kaspersky Lab, Zao | System and method for difference-based software updating |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912504B1 (en) * | 2000-04-28 | 2005-06-28 | Blackarrow, Inc. | Distributing television advertisements over the internet |
EP1340167A2 (en) * | 2000-11-28 | 2003-09-03 | 4thPass Inc. | Method and system for maintaining and distributing wireless applications |
WO2003071383A2 (en) * | 2002-02-18 | 2003-08-28 | Interactive Sciences, Inc. | Development system for multimedia programs and platform for performing such programs |
-
2008
- 2008-05-30 US US12/129,949 patent/US20090298582A1/en not_active Abandoned
-
2009
- 2009-05-28 WO PCT/US2009/045491 patent/WO2009146375A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020112171A1 (en) * | 1995-02-13 | 2002-08-15 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6216112B1 (en) * | 1998-05-27 | 2001-04-10 | William H. Fuller | Method for software distribution and compensation with replenishable advertisements |
US6298446B1 (en) * | 1998-06-14 | 2001-10-02 | Alchemedia Ltd. | Method and system for copyright protection of digital images transmitted over networks |
US20020199118A1 (en) * | 2001-02-02 | 2002-12-26 | Medinservice.Com, Inc. | Internet training course system and methods |
US7665081B1 (en) * | 2006-05-06 | 2010-02-16 | Kaspersky Lab, Zao | System and method for difference-based software updating |
US20090215512A1 (en) * | 2008-02-25 | 2009-08-27 | Tc Websites Llc | Systems and methods for a gaming platform |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10413819B2 (en) * | 2009-09-30 | 2019-09-17 | Amazon Technolobies, Inc. | System for providing access to game progress data |
US9770654B1 (en) * | 2009-09-30 | 2017-09-26 | Amazon Technologies, Inc. | Cross device operation of games |
US20170333789A1 (en) * | 2009-09-30 | 2017-11-23 | Amazon Technologies, Inc. | System for providing access to game progress data |
US20130059660A1 (en) * | 2009-10-14 | 2013-03-07 | Gary M. Zalewski | Playing browser based games with alternative controls and interfaces |
US8465367B2 (en) * | 2009-10-14 | 2013-06-18 | Sony Computer Entertainment America Llc | Playing browser based games with alternative controls and interfaces |
US20110086706A1 (en) * | 2009-10-14 | 2011-04-14 | Sony Computer Entertainment America | Playing Browser Based Games with Alternative Controls and Interfaces |
US8313377B2 (en) * | 2009-10-14 | 2012-11-20 | Sony Computer Entertainment America Llc | Playing browser based games with alternative controls and interfaces |
US8701104B2 (en) * | 2009-12-14 | 2014-04-15 | Opera Software Asa | System and method for user agent code patch management |
US20110145803A1 (en) * | 2009-12-14 | 2011-06-16 | Soederstedt Torbjoern | Extension mechanism |
US20140141890A1 (en) * | 2011-07-19 | 2014-05-22 | Konami Digital Entertainment Co., Ltd. | Amusement system |
US20140059453A1 (en) * | 2011-08-18 | 2014-02-27 | Brian Shuster | Dynamic serving of multidimensional content |
CN103297476A (en) * | 2012-03-02 | 2013-09-11 | 腾讯科技(深圳)有限公司 | Method and device for loading webpage game |
US9491225B2 (en) | 2012-03-16 | 2016-11-08 | Tencent Technology (Shenzhen) Company Limited | Offline download method and system |
WO2013170715A1 (en) * | 2012-05-15 | 2013-11-21 | Tencent Technology (Shenzhen) Company Limited | Method and system for loading file in webgame |
US9282141B2 (en) | 2012-05-15 | 2016-03-08 | Tencent Technology (Shenzhen) Company Limited | Method and system for loading file in webgame |
US9753715B2 (en) * | 2012-11-15 | 2017-09-05 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for efficiently updating data for an application |
US20140137097A1 (en) * | 2012-11-15 | 2014-05-15 | Nintendo Co., Ltd. | Information processing apparatus, terminal system, storage medium having stored therein information processing program, and method of obtaining update data for application |
US9550119B2 (en) | 2013-04-02 | 2017-01-24 | Tencent Technology (Shenzhen) Company Limited | Method, apparatus, and system for webgame interaction |
CN104065692A (en) * | 2013-04-02 | 2014-09-24 | 腾讯科技(深圳)有限公司 | Web-game interaction method, device and system |
US20140370990A1 (en) * | 2013-06-17 | 2014-12-18 | Tencent Technology (Shenzhen) Company Limited | Method and system for invoking plug-in function |
US9981184B2 (en) * | 2013-06-17 | 2018-05-29 | Tencent Technology (Shenzhen) Company Limited | Method and system for invoking plug-in function |
US20220184500A1 (en) * | 2019-03-12 | 2022-06-16 | Nippon Telegraph And Telephone Corporation | Game realization method, game realization apparatus and program |
WO2020205185A1 (en) * | 2019-03-29 | 2020-10-08 | Microsoft Technology Licensing, Llc | Method for patching and updating encrypted disk images in a reliable and secure fashion |
US10853495B2 (en) | 2019-03-29 | 2020-12-01 | Microsoft Technology Licensing, Llc | Method for patching and updating encrypted disk images in a reliable and secure fashion |
CN113661478A (en) * | 2019-03-29 | 2021-11-16 | 微软技术许可有限责任公司 | Method for patching and updating encrypted disk images in a reliable and secure manner |
Also Published As
Publication number | Publication date |
---|---|
WO2009146375A1 (en) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090298582A1 (en) | Method and system for distributing browser-based computer games and files | |
US11234033B2 (en) | Decentralized content distribution | |
CN111143869B (en) | Application package processing method and device, electronic equipment and storage medium | |
US8555059B2 (en) | Secure local update of content management software | |
US8660964B2 (en) | Secure device licensing | |
US10303857B2 (en) | Providing access to content | |
US20170208150A1 (en) | Methods and apparatus to selectively provide cached and presently compiled applications | |
US8638935B2 (en) | System and method for key space division and sub-key derivation for mixed media digital rights management content | |
US7664967B2 (en) | Development system with methodology providing information hiding in executable programs | |
US20150121073A1 (en) | Software fingerprinting | |
JP2009302887A (en) | Information security method and information security device | |
WO2020075396A1 (en) | Inference device, inference method, and inference program | |
US20200228346A1 (en) | Encrypted data generation device, digital signature generation device, digital signature-attached data generation device, and digital signature-attached data generation system | |
US8401973B1 (en) | Method and system for managing a license for an add-on software component | |
JP2013175179A (en) | System, devices and methods for collaborative execution of software application comprising at least one encrypted instruction | |
JP2016129403A (en) | System and method for obfuscated initial value of encrypted protocol | |
US20120109784A1 (en) | Method and system for automating protection of media files for download | |
US20070244820A1 (en) | Securely Providing Advertising Subsidized Computer Usage | |
US8516273B2 (en) | Porting digital rights management service to multiple computing platforms | |
JP2004040209A (en) | Server, ic card, method of contents distribution, method of acquiring/processing the contents, and program | |
US8706635B2 (en) | Use of licensed content without identification thereof | |
KR101823226B1 (en) | Method and system for code protection | |
US10015170B2 (en) | Protecting delivered web distributed content from unauthorized modifications | |
US20060224894A1 (en) | Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key | |
WO2016095506A1 (en) | Ciphertext data decryption method, system and computer storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MOCHI MEDIA, INC.,CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DEMPSKY, MATTHEW ROBERT, MR.;IPPOLITO, ROBERT JOSEPH, MR.;SIGNING DATES FROM 20080526 TO 20080529;REEL/FRAME:021066/0889 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |