WO2009146375A1 - 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 PDF

Info

Publication number
WO2009146375A1
WO2009146375A1 PCT/US2009/045491 US2009045491W WO2009146375A1 WO 2009146375 A1 WO2009146375 A1 WO 2009146375A1 US 2009045491 W US2009045491 W US 2009045491W WO 2009146375 A1 WO2009146375 A1 WO 2009146375A1
Authority
WO
WIPO (PCT)
Prior art keywords
browser
game
compiled
based computer
computer
Prior art date
Application number
PCT/US2009/045491
Other languages
French (fr)
Inventor
Matthew R. Dempsky
Robert J. Ippolito
Original Assignee
Mochi Media, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mochi Media, Inc. filed Critical Mochi Media, Inc.
Publication of WO2009146375A1 publication Critical patent/WO2009146375A1/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/335Interconnection 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating 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/61Generating 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/40Features 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/407Data transfer via internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features 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/53Features 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/532Features 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features 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/55Details of game data or player data management
    • A63F2300/552Details 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.
  • 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. 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.
  • 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. DETAILED DESCRIPTION OF THE DRAWINGS
  • an example embodiment indicates 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. [0022] 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.
  • 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, 1 12, 114 may be embodied as any number of wires, cables, printed circuit board traces, vias, and/or other communication links.
  • 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. [0027] The server 102 also includes a storage device 124. The storage devices
  • the storage device 124 may be embodied as any device configured for data storage. That is, the storage device 124 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 124 is separate from the server 102, but communicatively coupled thereto. In addition, the server 102 may include other devices and circuitry typically found in a server or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
  • the game developer client/server 106 includes a developer client 130 and a web server 132.
  • 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. [0034] The web server 132 also includes a storage device 154. The storage devices 154 may be embodied as any device configured for data storage.
  • 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.
  • 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. As discussed in more detail below in regard to FIG. 6, 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 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 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. Subsequently, in step 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.
  • a third- party web server 132 i.e., a web server controlled and operated by a third-party
  • 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 (or web browser itself) 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.

Abstract

A method, computer, and system 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

METHOD AND SYSTEM FOR DISTRIBUTING BROWSER-BASED COMPUTER GAMES AND FILES
TECHNICAL FIELD
[0001] 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.
BACKGROUND
[0002] 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.
[0003] 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.
SUMMARY
[0004] 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. [0005] 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.
[0006] 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.
[0007] 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. [0008] 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.
[0009] 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.
[0010] 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. [0011] 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.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] The detailed description particularly refers to the following figures, in which:
[0013] FIG. 1 is a simplified block diagram of a system for distributing browser- based computer games and files;
[0014] FIG. 2 is a simplified flow diagram of one embodiment of a method for distributing a browser-based computer game and files;
[0015] 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 ;
[0016] 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;
[0017] 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; and
[0018] 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. DETAILED DESCRIPTION OF THE DRAWINGS
[0019] 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.
[0020] 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. [0021] 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. [0022] 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. [0023] Referring now to FIG. 1, 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. For example, 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). In one particular embodiment, the network 108 is embodied as or otherwise includes a publically-accessible global network such as the Internet.
[0024] The server 102 is communicatively coupled to the network 108 via a number of communication links 110. Similarly, the game developer client/server 104 is communicatively coupled to the network 108 via a number of communication links 112. Additionally, each of the end-user clients 104 is communicatively coupled to the network 108 via a number of communication links 114. Each of the communication links 110, 112, 114 may be embodied as any type of communication links capable of facilitating communication between the respective server 102, developer client/server 104, and clients 106 and the network 108. For example, any one or more of the communication links 110, 1 12, 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.
[0025] 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). Although the server 102 includes only a single processor 120 in the embodiment illustrated in FIG. 1, the server 102 may include any number of processors (or processor cores) in other embodiments.
[0026] 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. [0027] The server 102 also includes a storage device 124. The storage devices
124 may be embodied as any device configured for data storage. That is, the storage device 124 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 124 is separate from the server 102, but communicatively coupled thereto. In addition, the server 102 may include other devices and circuitry typically found in a server or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
[0028] The game developer client/server 106 includes a developer client 130 and a web server 132. In some embodiments, the developer client 130 and the web server 132 may be embodied as the same computer or computing device. In other embodiments, the developer client 130 and web server 132 may be separate, but communicatively coupled computer or computing devices as is shown in FIG. 1. Further, in some embodiments, 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.
[0029] 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). Although the developer client 130 includes only a single processor 140 in the embodiment illustrated in FIG. 1, the developer client 130 may include any number of processors (or processor cores) in other embodiments.
[0030] 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.
[0031] The developer client 130 also includes a storage device 144. The storage devices 144 may be embodied as any device configured for data storage. That is, the storage device 144 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 144 is separate from the developer client 130, but communicatively coupled thereto. In addition, the developer client 130 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
[0032] 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). Although the web server 132 includes only a single processor 150 in the embodiment illustrated in FIG. 1, the web server 132 may include any number of processors (or processor cores) in other embodiments.
[0033] 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. [0034] The web server 132 also includes a storage device 154. The storage devices 154 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 154 is separate from the web server 132, but communicatively coupled thereto. The storage device(s) 154 maintain a number of databases and files, which are utilized in construction and operation of an information portal such as a website. As will be described in greater detail below, the web server 132 functions as a web portal for transmitting browser-based games and files to an end-user (e.g., one of the end-user clients 106). The web server 132 may also include other devices and circuitry typically found in a server or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
[0035] Each of the end-user clients 106 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. In the illustrative embodiment of FIG. 1, 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). Although 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.
[0036] 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.
[0037] In some embodiments, any one or more of the end-user clients 106 may also include one or more storage devices 164. The storage devices 164 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. In addition, the end-user client 106 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.
[0038] Referring now to FIG. 2, 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. 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. [0039] In step 204, the developer operates the developer client 104 to generate a compiled version of the browser-based computer game. Once compiled, the browser- based computer game is executable by and playable in a web browser. However, as discussed above, the web browser in which the browser-based computer game is to be played may require one or more plug-ins to properly play or execute the browser-based computer game. Once compiled, the developer client 104 transmits the compiled browser-based computer game to the server 102 in step 206.
[0040] Referring now to FIG. 3, in one embodiment, 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. In some embodiments, the server 102 may be configured to store the compiled browser-based game in, for example, the storage device 124. As discussed in more detail below in regard to FIG. 6, the stored browser-based game may be retrieved at a later time for version control and/or other purposes.
[0041] In step 304, the sever 102 encrypts the browser-based computer game. To do so, the server 102 may use any suitable encryption algorithm. In one particular embodiment, the server 102 uses an RC4™ software stream cipher (also known as or otherwise referred to as "ARC4", "ARCFOUR", and/or "Rivest Cipher 4"), but other encryption algorithms may be used in other embodiments. In regard to some encryption algorithms, the server 102 may use an encryption key to encrypt the browser-based computer game. Depending upon the particular encryption algorithm used, the encryption key may be embodied as data such as numerical or alphanumerical data or programming code usable with a suitable decryption algorithm to decrypt the encrypted browser-based computer game. In some embodiments, the server 102 may be configured to store the encryption key in the storage device 124.
[0042] In step 306, the server 102 generates a browser-based game loader. The browser-based game loader is embodied as a browser-executable file, which includes the encrypted browser-based computer game and, in some embodiments, the encryption key. As discussed in more detail below, when the browser-based game loader is executed by a web browser, the browser-based game loader is configured to decrypt the encrypted browser-based computer game and execute (or cause the web browser to execute) the compiled browser-based computer game. In some embodiments, the browser-based game loader is generated using the same programming language or application as the browser-based computer game. For example, in embodiments wherein the browser- based computer game is embodied as a Flash game, the browser-based game loader may be embodied as a compiled Flash file (e.g., a .swf file) that is executable by a web browser.
[0043] Once the server 102 generates the browser-based game loader, the server
102 transmits the browser-based game loader (including the encrypted browser-based game and encryption key in some embodiments) to the developer client 104 via the network 108.
[0044] Referring back to FIG. 2, the developer client 104 receives the browser- based game loader from the server 102 in step 208. Subsequently, in step 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 a web 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.
[0045] 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.
[0046] Referring now to FIG. 4, 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. 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 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. 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) in step 404.
[0047] 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 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. 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.
[0048] The browser-based game loader may use any suitable decryption algorithm to decrypt the encrypted browser-based computer game. Typically, the decryption algorithm is identical to or based on the encryption algorithm used to generate the encrypted browser-based computer game. In embodiments wherein an encryption key is included in the browser-based game loader, the browser-based game loader may use the encryption key to facilitate decryption of the encrypted browser-based computer game. Alternatively, in embodiments wherein the encryption key is stored in the storage device 124 of the server 102, the browser-based game loader may be configured to communicate with the server 102 via the network 108 to retrieve the encryption key. The retrieved encryption key is then used by the browser-based game loader to decrypt the encrypted browser-based computer game.
[0049] In some embodiments, the browser-based game loader may be configured to check for updates to the browser-based game in step 504. If so, the browser-based game loader is configured to communicate with the server 102 to determine whether a new version of the browser-based game is available in step 506. The availability of a new version of the browser-based game may be based on the presence of a browser- executable game patch file on the server 102, notation included in a database or chart, or other algorithm used to identify when a new version of the browser-based game is available. For example, in some embodiments, the browser-based game loader may be configured to transmit the version number of the browser-based game included with the browser-based game loader to the server 102. The server 102 may be configured to compare the version number to the version number of the current version of the browser- based game. If the version of the encrypted browser-based game included in the browser-based game loader is older than the current version, the server 102 may notify the browser-based game loader that a newer version is available. Regardless, if a newer version of the browser-based computer game is available, the browser-based game loader downloads or otherwise retrieves a browser-executable game patch file from the server 102 in step 506.
[0050] Referring now to FIG. 6, 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. To do so, 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. In step 604, 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. Based on the comparison of the versions of the browser-based computer game, 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. In one particular embodiment, 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. 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.
[0051] Once the server 102 has determined the differences between the versions of the browser-based computer game, the server 102 generates a browser-based game update file based on the determined differences. The update file may be embodied as programming code, which when merged with the older version of the compiled browser- based computer game generates a browser-based computer game identical to or otherwise equivalent to the newer version of the browser-based computer game. That is, the generated browser-based computer game may be identical to the new version of the browser-based computer game if the programming code of the generated browser-based computer game is identical to the programming code of the newer version of the compiled browser-based computer game. Alternatively, the generated browser-based computer game may be equivalent to the new version of the browser based computer game if, when executed by a web browser, the generated browser-based computer game causes the web browser to behalf in a manner similar to new version of the browser- based computer game even if the programming code of each browser-based computer game is not identical.
[0052] Once the update file has been generated, the server 102 generates an browser-executable game patch file in step 608 The browser-executable game patch file is embodied as a browser-executable file, which includes the update file. As discussed in more detail below, when the browser-executable game patch file is executed by a web browser, the browser executable game patch file (or web browser) merges the update file with the decrypted compiled browser-based computer game included with the browser- based game loader to generate an updated compiled browser-based computer game. As discussed above, the updated compiled browser-based computer game is identical or otherwise equivalent to the new version of the browser-based computer game. Once the browser-executable game patch file is generated, the server 102 stores the browser- executable game patch file in the storage device 124.
[0053] Referring back to FIG. 5, after the end-user client 104 has retrieved the browser-executable game patch file from the server 102 in step 506, the web browser of the end-user client 104 executes the browser-executable game patch file in step 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.
[0054] Once any applicable updates have been applied to the browser-based game, the browser-based game loader executes the compiled browser-based computer game (or updated compiled browser-based computer game in those embodiments in which a new version of the browser-based computer game was available) in step 512. In some embodiments, the browser-based game loader may also be configured to display advertisements to the end-user before, during, or after execution of the browser-based computer game. If so, the browser-based game loader may execute an algorithm 520 for retrieving and displaying advertisements.
[0055] 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.
[0056] Once the new advertisement has been downloaded from the server 102, the browser-based game loader displays the advertisement to the end-user in step 526. The browser-based game loader may display the advertisement to the end-user before execution of the browser-based game, during execution of the browser-based game, or after execution of the browser-based game. For example, in one particular embodiment, the browser-based game loader is configured to display a new advertisement to the end- user between each segment (e.g., each "level" or "chapter") of the browser-based game. The browser-based game loader may continue retrieving new advertisement and displaying the advertisements to the end-user while the end-user is playing the browser- based game.
[0057] 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. [0058] There are a plurality of advantages of the present disclosure arising from the various features of the methods and system described herein. It will be noted that alternative embodiments of the methods and systems of the present disclosure may not include all of the features described yet still benefit from at least some of the advantages of such features. Those of ordinary skill in the art may readily devise their own implementations of the methods and systems that incorporate one or more of the features of the present invention and fall within the spirit and scope of the present disclosure as defined by the appended claims.

Claims

1. 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.
2. The computer of claim 1, wherein to encrypt the compiled browser-based computer game comprises to generate an encryption key.
3. The computer of claim 1, wherein the browser-based game loader includes the encryption key.
4. The computer of claim 3, 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.
5. The computer of claim 3, wherein the plurality of instructions, when executed by the processor, further causes the processor to store the encryption key on a storage device.
6. The computer of claim 5, 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.
7. The computer of claim 3, 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.
8. The computer of claim 7, 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.
9. The computer of claim 8, 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.
10. The computer of claim 9, 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.
11. The computer of claim 10, 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.
12. The computer of claim 11, 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.
13. 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.
14. The method of claim 13, 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.
15. The method of claim 13, 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.
16. The method of claim 13, 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.
17. The method of claim 16, 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.
18. The method of claim 13, 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.
19. The method of claim 18, 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.
20. The method of claim 18, 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.
21. 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.
PCT/US2009/045491 2008-05-30 2009-05-28 Method and system for distributing browser-based computer games and files WO2009146375A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/129,949 2008-05-30
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
WO2009146375A1 true WO2009146375A1 (en) 2009-12-03

Family

ID=40852584

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/045491 WO2009146375A1 (en) 2008-05-30 2009-05-28 Method and system for distributing browser-based computer games and files

Country Status (2)

Country Link
US (1) US20090298582A1 (en)
WO (1) WO2009146375A1 (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9770654B1 (en) * 2009-09-30 2017-09-26 Amazon Technologies, Inc. Cross device operation of games
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
JP5280495B2 (en) * 2011-07-19 2013-09-04 株式会社コナミデジタルエンタテインメント Amusement system
WO2013026048A2 (en) * 2011-08-18 2013-02-21 Utherverse Digital, Inc. Systems and methods of virtual world interaction
CN103297476B (en) * 2012-03-02 2014-08-06 腾讯科技(深圳)有限公司 Method and device for loading webpage game
WO2013135203A1 (en) 2012-03-16 2013-09-19 Tencent Technology (Shenzhen) Company Limited Offline download method and system
CN103457960B (en) * 2012-05-15 2018-03-09 腾讯科技(深圳)有限公司 The method and system of load document in web game
JP6152289B2 (en) * 2012-11-15 2017-06-21 任天堂株式会社 Information processing apparatus, terminal system, information processing program, and application update data acquisition method
US9550119B2 (en) 2013-04-02 2017-01-24 Tencent Technology (Shenzhen) Company Limited Method, apparatus, and system for webgame interaction
CN104065692B (en) * 2013-04-02 2015-08-12 腾讯科技(深圳)有限公司 The method, apparatus and system that web game is mutual
US9981184B2 (en) * 2013-06-17 2018-05-29 Tencent Technology (Shenzhen) Company Limited Method and system for invoking plug-in function
JP7326780B2 (en) * 2019-03-12 2023-08-16 日本電信電話株式会社 Game implementation method, game implementation device and program
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

Citations (6)

* Cited by examiner, † Cited by third party
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
WO2001084418A2 (en) * 2000-04-28 2001-11-08 Intel Corporation Distributing television advertisements over the internet
WO2002044892A2 (en) * 2000-11-28 2002-06-06 4Thpass Inc. Method and system for maintaining and distributing wireless applications
US20020199118A1 (en) * 2001-02-02 2002-12-26 Medinservice.Com, Inc. Internet training course system and methods
WO2003071383A2 (en) * 2002-02-18 2003-08-28 Interactive Sciences, Inc. Development system for multimedia programs and platform for performing such programs

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1643340B1 (en) * 1995-02-13 2013-08-14 Intertrust Technologies Corp. Secure transaction management
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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
WO2001084418A2 (en) * 2000-04-28 2001-11-08 Intel Corporation Distributing television advertisements over the internet
WO2002044892A2 (en) * 2000-11-28 2002-06-06 4Thpass Inc. Method and system for maintaining and distributing wireless applications
US20020199118A1 (en) * 2001-02-02 2002-12-26 Medinservice.Com, Inc. Internet training course system and methods
WO2003071383A2 (en) * 2002-02-18 2003-08-28 Interactive Sciences, Inc. Development system for multimedia programs and platform for performing such programs

Also Published As

Publication number Publication date
US20090298582A1 (en) 2009-12-03

Similar Documents

Publication Publication Date Title
US20090298582A1 (en) Method and system for distributing browser-based computer games and files
US8660964B2 (en) Secure device licensing
US11234033B2 (en) Decentralized content distribution
CN111143869B (en) Application package processing method and device, electronic equipment and storage medium
US9489520B2 (en) Decryption and encryption of application data
CN110178136A (en) The signature verification of field programmable gate array program
US10303857B2 (en) Providing access to content
US8638935B2 (en) System and method for key space division and sub-key derivation for mixed media digital rights management content
US20150121073A1 (en) Software fingerprinting
JP2009302887A (en) Information security method and information security device
US20060136875A1 (en) Development System with Methodology Providing Information Hiding in Executable Programs
US20130067240A1 (en) Content protection via online servers and code execution in a secure operating system
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
US20120109784A1 (en) Method and system for automating protection of media files for download
US10972439B2 (en) System and method for obfuscating initiation values of a cryptography protocol
WO2008157676A2 (en) Securely providing advertising subsidized computer usage
JP2004040209A (en) Server, ic card, method of contents distribution, method of acquiring/processing the contents, and program
KR100784300B1 (en) Unification digital content rights management system and method thereof
US10015170B2 (en) Protecting delivered web distributed content from unauthorized modifications
WO2006000029A1 (en) Content delivery system and player
US20060224894A1 (en) Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key
US10628561B2 (en) Technique for enabling nominal flow of an executable file

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09755736

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09755736

Country of ref document: EP

Kind code of ref document: A1