Abstract:
A game distribution server configured to separately distribute game data comprising active game data and passive game data to a plurality of remote computers each provided with a client application, comprising: storage for active game data and passive game data configured to be distributed separately and recombined at a remote computer by a client application, wherein passive game data comprise files having a larger average file size than the average file size of active game data; an active data controller configured to control supply of active game data to said remote computer responsive to events occurring during game play; a passive data controller operable to control supply of passive game data separately from said active game data; and a communications interface.

Description:
FIELD 
       [0001]    The invention relates to the field of gaming. More specifically, an embodiment of this invention relates to a gaming server for enabling a user to play games, and methods and apparatus for electronically deploying games. 
       BACKGROUND 
       [0002]    Digital distribution is the principle of providing digital content over the Internet, and other networks, in the form of products or services. With broadband internet becoming evermore ubiquitous, the digital distribution of all types of media content is becoming increasingly desirable. Content delivery networks consisting of systems of servers and desktop computers have been deployed to deliver digital content to end users operating for example desktop PCs or consoles across the Internet. 
         [0003]    One existing platform of this type for example is Valve Corporation&#39;s “Steam” product, which is a digital distribution, multiplayer and communications suite. It is primarily used to digitally distribute and manage various kinds of computer games, ranging from first-person shooters and RPGs (role playing games) to racing games. 
         [0004]    Systems such as this allow users to purchase and acquire games access through a digital distribution network. In this regard, instead of receiving a box with a CD/DVD, purchased software is distributed by a server to the user, for example, via a pre-registered user account through which the software can be accessed and downloaded to a local client application running on the user&#39;s computer. 
         [0005]    Known digital distribution platforms have operated with a distributed file system. The distributed file system allows a game to launch before it has been completely downloaded locally on to the player&#39;s computer. Most typically, this has been done by creating lists of essential game files and having a pre-loader request them from the distribution server only when they are needed or are about to be needed. According to these systems, it has been possible for a linear game to begin playing with only the executable code and a buffer of the first few areas downloaded. Such systems have been problematic up to now for various reasons. One major problem is that the game play will generally hang whilst data downloads in the background because modern games are many hundreds or even thousands of megabytes in size. Another problem is that downloads are vastly slowed down on slower connections or when the service providers get busy and are less able to cope with providing high bandwidth downloads. This problem is increased further for non-linear games, where the possibilities for game play are vast and the data required is always changing. For these reasons, this kind of content delivery has not been used extensively to date, since it has been impractical and frustrating for the end user. 
         [0006]    The present invention aims to provide an improved content delivery system for computer games. More specifically, the present invention provides a server which allows a user to receive game data to their computer quickly and securely over a network such as the internet. 
       SUMMARY 
       [0007]    According to one embodiment of the invention, there is provided a game distribution server configured to separately distribute game data comprising active game data and passive game data to a plurality of remote computers each provided with a client application. The game distribution server comprising: storage for active game data and passive game data configured to be distributed separately and recombined at a remote computer by a client application, wherein passive game data comprise files having a larger average file size than the average file size of active game data; an active data controller configured to control supply oil active game data to said remote computer responsive to events occurring during game play; a passive data controller operable to control supply of passive game data separately from said active game data; and a communications interface. 
         [0008]    According to another embodiment of the invention, each passive game data flies is associated with a unique reference. 
         [0009]    According to another embodiment of the invention, the active data controller is configured to receive game event indicators indicating events occurring during game play and to determine active game data likely to be required by the client application for use in said game. 
         [0010]    According to another embodiment of the invention, the game distribution server further comprises: a passive data checking module configured to receive game event indicators indicating events occurring during game play and to determine passive game data likely to be required by the client application for use in said game. 
         [0011]    According to another embodiment of the invention, the passive data checking module is configured to determine whether the passive game data likely to be required already exists on said remote computer; and to supply passive game data determined not to exist on said remote computer. 
         [0012]    According to another embodiment of the invention, the passive data checking module is configured to transmit a first list of references associated with the passive game data likely to be required to the said remote computer, and to receive a second list of references associated with the passive game data likely to be required that does not exist on said remote computer. 
         [0013]    According to another embodiment of the invention, the game distribution server further comprises: a buffer controller operable to set an amount of active game data and an amount of passive game data required to be buffered at said remote computer. 
         [0014]    According to another embodiment of the invention, the amount of passive data transferred for buffering exceeds the amount of active data transferred for buffering. 
         [0015]    According to another embodiment of the invention, the game distribution server further comprises: an administration module operable to determine, in respect of said remote computer, connection bandwidth and response time parameters. 
         [0016]    According to another embodiment of the invention, the amount of active game data and the amount of passive game data required to be buffered at said remote computer is determined in dependence on one or more of the connection bandwidth and the response time parameters. 
         [0017]    According to another embodiment of the invention, the game distribution server further comprises: an essential minimum module operable to determine what essential minimum data is required in order to begin game play at said remote computer. 
         [0018]    According to another embodiment of the invention, the essential minimum data comprises only passive data. 
         [0019]    According to another embodiment of the invention, the amount of essential minimum data required at said remote computer is determined in dependence on one or more of: the connection bandwidth and the response time parameters. 
         [0020]    According to another embodiment of the invention, the storage for active game data and passive game data comprise an active game data storage device and a separate passive game data storage device. 
         [0021]    According to one embodiment of the invention, there is provided a game distribution server configured to distribute games to a plurality of remote computers each provided with a client application. The game distribution server comprising: an administration module operable to determine, in respect of a remote computer, connection bandwidth and response time parameters; and a further module operable to determine what essential minimum data is required in order to begin game play. 
         [0022]    According to another embodiment of the invention, the essential minimum data required at said remote computer is determined in dependence on one or more of: the connection bandwidth and the response time parameters. 
         [0023]    According to one embodiment of the invention, there is provided a game distribution server configured to separately distribute game data comprising active data objects and passive data to a plurality of remote computers each provided with a client application, comprising: a store for active data objects connected to an active data objects controller configured to control supply of active data objects to said remote computer responsive to events occurring during game play at said remote computer; a store for passive data connected to a passive data controller operable to control the supply of passive data separately from said active data objects; and at least one communications interface for connecting to remote computers. 
         [0024]    According to another embodiment of the invention, each passive data file is associated with a unique reference. 
         [0025]    According to another embodiment of the invention, the active data objects controller is configured to receive game event indicators indicating events occurring during game play and to determine active data objects likely to be required by the client application for use in said game. 
         [0026]    According to another embodiment of the invention, the game distribution server further comprises: a passive data checking module configured to receive game event indicators indicating events occurring during game play and to determine passive data likely to be required by the client application for use in said game. 
         [0027]    According to another embodiment of the invention, the passive data checking module is configured to determine whether the passive data likely to be required already exists on said remote computer; and to supply passive data determined not to exist on said remote computer. 
         [0028]    According to another embodiment of the invention, the passive data checking module is configured to transmit a first list of references associated with the passive data likely to be required to the said remote computer, and to receive a second list of references associated with the passive data likely to be required that does not exist on said remote computer. 
         [0029]    According to another embodiment of the invention, the game distribution server further comprises: a buffer controller operable to set an amount of active game data and an amount of passive game data required to be buffered at said remote computer. 
         [0030]    According to another embodiment of the invention, the amount of passive data transferred for buffering exceeds the amount of active data transferred for buffering. 
         [0031]    According to another embodiment of the invention, the game distribution server further comprises: an administration module operable to determine, in respect of said remote computer, connection bandwidth and response time parameters. 
         [0032]    According to another embodiment of the invention, the amount of active game data and the amount of passive game data required to be buffered at said remote computer is determined in dependence on one or more of the connection bandwidth and the response time parameters. 
         [0033]    According to another embodiment of the invention, the game distribution server further comprises: an essential minimum module operable to determine what essential minimum data is required in order to begin game play at said remote computer. 
         [0034]    According to another embodiment of the invention, the essential minimum data comprises only passive data. 
         [0035]    According to another embodiment of the invention, the amount of essential minimum data required at said remote computer is determined in dependence on one or more of: the connection bandwidth and the response time parameters. 
         [0036]    According to another embodiment of the invention, the active data objects comprise data having a file size below a predetermined size threshold. 
         [0037]    According to another embodiment of the invention, the stores for active and passive data comprise separate storage devices. 
         [0038]    According to one embodiment of the invention, there is provided a game distribution server configured to distribute game data comprising active data objects to a plurality of remote computers each provided with a client application, wherein active data objects comprise data objects supplied responsive to events occurring during the game and which are automatically deleted by the client application after use. The game distribution server comprising: a game content processing module configured to receive game event indicators during game play and to determine active data objects likely to be required by the client application for use in said game; at least one controller for supplying active data objects to said client application responsive to said determination. 
         [0039]    According to another embodiment of the invention, the game distribution server further comprises: an administration module operable to determine, in respect of said remote computer, connection bandwidth and response time parameters. 
         [0040]    According to another embodiment of the invention, the amount of active data objects required to be supplied at said remote computer is determined in dependence on one or more of the connection bandwidth and the response time parameters. 
         [0041]    According to another embodiment of the invention, the active data objects comprise data having a file size below a predetermined size threshold. 
         [0042]    According to another embodiment of the invention, deleted after use comprises one or more of: deleted after an active data objects buffer capacity is exceeded; deleted after a predetermined period of time; deleted after implementation in game play. 
         [0043]    According to one embodiment of the invention, there is provided a game distribution server configured to distribute game data comprising passive data to a plurality of remote computers each provided with a client application, wherein passive data comprises game data which after game play resides on a remote computer and is identifiable as available passive data by the client application. The game distribution server comprising: a processing module configured to identify during game play passive data likely to be required by said client application in future; a content checking module operable to determine whether the passive data likely to be required already exists on said remote computer; and a data controller operable to transmit passive data determined not to exist on said remote computer. 
         [0044]    According to another embodiment of the invention, the game distribution server further comprises: an administration module operable to determine, in respect of said remote computer, connection bandwidth and response time parameters; and an essential minimum module operable to determine what essential minimum data is required in order to begin game play at said remote computer. 
         [0045]    According to another embodiment of the invention, the essential minimum data comprises only passive data. 
         [0046]    According to another embodiment of the invention, the amount of essential minimum data required at said remote computer is determined in dependence on one or more of: the connection bandwidth and the response time parameters. 
         [0047]    According to another embodiment of the invention, the amount of passive data required to be transmitted to said remote computer is determined in dependence on one or more of the connection bandwidth and the response time parameters. 
         [0048]    According to one embodiment of the invention, there is provided a game distribution server configured to separately distribute game data comprising active data objects and passive data objects to a remote computer provided with a client application, comprising: at least one controller operable to set an amount of active data objects and an amount of passive data objects required to be buffered at said remote computer in dependence on one or more of bandwidth and response times, wherein said amount of passive data objects transferred for buffering exceeds the amount of active data objects. 
         [0049]    According to another embodiment of the invention, the active data objects comprise data objects supplied responsive to events occurring during the game and which are automatically deleted by the client application after use. 
         [0050]    According to another embodiment of the invention, deleted after use comprises one or more of: deleted after an active data objects buffer capacity is exceeded; deleted after a predetermined period of time; deleted after implementation in game play. 
         [0051]    According to another embodiment of the invention, the active data objects comprise objects having a file size below a predetermined size threshold. 
         [0052]    According to one embodiment of the invention, there is provided a method of operating a computer to distribute game data comprising active data and passive data to a plurality of remote computers each provided with a client application, wherein passive data comprises game data which after game play resides on a remote computer and is identifiable as available passive data by the client application. The method comprising: identifying during game play passive data likely to be required by said client application in future; determining whether the passive data likely to be required already exists on said remote computer; and transmitting passive data determined not to exist on said remote computer to said remote computer. 
         [0053]    According to another embodiment of the invention, the step of determining whether the passive data likely to be required already exists on said remote computer further comprises: transmitting a first list of references of the passive data likely to be required by said client application in future to said remote computer; receiving from said remote computer a second list of references of the passive data likely to be required by said client application in future which is not stored at the remote computer; and retrieving the passive data associated with said second list of references. 
         [0054]    According to one embodiment of the invention, there is provided a computer readable medium recorded with computer readable code arranged to cause a computer to perform the method described above. 
         [0055]    According to one embodiment of the invention, there is provided a computer program product comprising programme code means for performing the method described above. 
         [0056]    According to one embodiment of the invention, there is provided computer programme code means for performing the method described above. 
     
    
     
       DESCRIPTION OF THE DRAWINGS 
         [0057]    For a better understanding of the invention and to show how the same may be carried into effect, reference will now be made by way of example to the accompanying drawings: 
           [0058]      FIG. 1  illustrates a gaming system; 
           [0059]      FIG. 2  illustrates a game server for use in the gaming system of  FIG. 1 ; 
           [0060]      FIG. 3  illustrates a process flow diagram; 
           [0061]      FIG. 4  illustrates schematically the potential position of a user in a game within a predetermined period; and 
           [0062]      FIG. 5  illustrates another process flow diagram. 
       
    
    
     DETAILED DESCRIPTION 
       [0063]    Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings. 
         [0064]      FIG. 1  illustrates the main components of a gaming system  1 . The gaming system  1  comprises game conversion module  10 , game server  20  and user devices  30 . The user devices  30  are connected to the game server  20  over a network such as the internet  40 . 
         [0065]    The game conversion module  10  converts a game of known format into a format suitable for use in the gaming system  1 . The game conversion module  10  then transfers the converted game (in one embodiment a copy of the converted game) to the game server  20 . 
         [0066]    The game conversion module  10  may not have a permanent connection to the game server  20 . Therefore, following conversion of a game, the game conversion module  10  establishes a connection with the game server  20 , transfers the converted game to the game server  20  and then terminates the connection. This is illustrated by the dotted line in  FIG. 1 . Alternatively, the game conversion module  10  may have a permanent connection to the game server  20 . In either example the connection may be a wired or wireless connection. In another embodiment, the game conversion module  10  may not have a connection to the game server  20 . In this instance, following conversion of a game, the game is provided to the game server  20  via a storage medium such as a CD, DVD or memory stick etc. In another embodiment, the game server  20  may request a game or update from the game conversion module  10 . 
         [0067]    Further details of the game conversion module  10  can be found in co-pending patent application entitled: “Apparatus and Methods for Game Conversion” filed by the same applicant as this application, although this is not required to understand and implement the present invention. 
         [0068]    In brief, in order to convert a game of known format into a format suitable for use with the gaming system  1 , the game conversion module  10  converts the game into active data elements and passive data elements, such that the whole game can be transferred to the game server  20  as a combination of active data or passive data. 
         [0069]    Typical examples of passive data are the elements of textures, mp3 files, wave files, text files and such like. However, broadly speaking, passive data is any data which can be downloaded to and stored locally on a user&#39;s device  30 , and can potentially be replaced by a reference identifier. The game engine (for example: Unreal engine, Torque engine, Quake engine, Half Life engine) can also be classed as passive data because it is possible to use a version of the game engine stored locally on a user&#39;s device  30 . 
         [0070]    Active data is supplied to the user&#39;s device  30  running the game from the game server  20  in substantially real time or close to it. Active data is usually data which is required in order to give the passive data behaviour during game play. Potentially, any type of data can be classified as active data. However, according to one example, it is the game object data (for example parameter data) which is classified as active data. To this effect, in order for there to be a composition of all the basic data components in the game to create the sophisticated, interactive virtual object (or game token) as seen by the player during game play, the passive data (e.g. the textures, the game engine, etc.) is combined with the active data (parameters describing its behaviour). Without the active data, therefore, the game cannot be played because the passive data will not compile/render/behave properly on the user&#39;s device  30  due to the fact that there is no data describing how the game elements are combined and how they interact with each other in the game environment. The active data is downloaded, from the game server  20 , separately from the passive data to the user&#39;s device  30 , and combined with the download passive data stored at the user&#39;s device  30  in order to create the playable game at the user&#39;s device  30 . According to one example, the active data and passive data may be combined on-the-fly upon separate arrival at the user&#39;s device  30 . 
         [0071]    Certain types of game object data are relatively small when compared with other data elements such as textures, audio files and the game engine, which can all have very large file sizes. It is therefore advantageous to have the object data as active data for two reasons. Firstly, having the object data as active data operates as a form of digital rights management in that the game cannot be played by a user without the necessary active data to compose the game play. Therefore active data is only stored momentarily on a user&#39;s device  30  and must be downloaded from the server  20  separate from the passive data. Secondly, the object data (generally active data) being so small means that games can be distributed using only a limited amount of network bandwidth, with all (or at least a large majority) of the large data (generally passive data) files being stored locally on the user&#39;s device  30 . 
         [0072]    According to one example, a site threshold is used to define data suitable for categorisation as active data. For example, any data file smaller than 256 kB is selected as potentially active data. Then a predetermined percentage of that selection, e.g. 40%, is classified as active data (the other 60% being classified as passive data). 
         [0073]    As stated above, the passive data can be replaced by a reference. In conventional games an element of data, for example the texture grass may appear numerous times throughout the game. In order to convert a conventional game into a format of the gaming system  1 , the game conversion module  10 , identifies all the instances where an element of passive data appears more than once (either identical or similar), by checking the data content of each file, associates an unique reference with one of the elements of data files and replaces all further instances of the element of data file with the unique associated reference (and deleting all the further instances of the element of data file). For example the determination may be made pixel by pixel in the case of a texture, however, any suitable technique well known in the art may be used to assess similarity of the file contents as required. This greatly reduces the size of the game (for example a game of known format may be 1.2 GB but following conversion is reduced to 190 MB). 
         [0074]    For example, the texture grass may appear 100 times in a game, in numerous levels, each texture grass file looking the same in a game but having different file names. The game conversion module  10  identifies each instance when the texture grass appears, associates an unique reference with one instance of the texture grass, and replaces the remaining 99 instances with the associated unique reference. Therefore, the game conversion module  10  reduces the size of the game by deleting repeated (and thus redundant) data. This results in a converted game which is of the same quality as a non-converted game, since all necessary source code of the game is not changed, but is of a reduced size. Consequently, the look, feel and game play is not altered by the game conversion module  10 . 
         [0075]    The game conversion module  10  also determines a game essential minimum. The essential minimum identifies the minimum amount of data required in order for a user to begin playing the game, for example, the minimum amount of data to enable the game to start up, or to start up and load the first level, or a portion of the first level or an otherwise fully playable portion of the game. The essential minimum is comprised entirely of passive data. Therefore, any data which may have been classified active data, due to its content or size is classified passive data if it is part of the essential minimum. Following download of the essential minimum to a user&#39;s device  30 , the user can begin playing the game (for a limited period of time). In another embodiment, the user may need a supply of active data in real time or substantially real time in order to play the game at all. In either case, in order to continue/start playing the game, further active and passive data will be required and, accordingly, the user&#39;s device  30  requires a connection to the game server  20 . 
         [0076]    Each converted game which is output from the game conversion module  10  may be identifiable by a ContainerID. The ContainerID comprises a GameID with an additional suffix describing game packets. The GameID is a unique code to identify the game throughout the entire gaming system  1 . According to one embodiment, the unique code is an alpha-numeric code, e.g. two letters and five digits in length, optionally with a regional suffix (e.g. “DE” for Germany, “UK” for United Kingdom etc.) indicating the language version of the game. Note that each language version of the game will generally undergo a separate conversion process, although in some circumstances, this may not be necessary. The additional suffix describing game packets may be a four digit code. For instance, the GameID “TR000001DE” plus the ContainerID suffix “0109” may represent the first packet (01) of the German language version of Tomb Raider 1, which has a total of 9 packets (09). In this context, the first packet “01” is the essential minimum as described above. 
         [0077]    These Containers may contain both active and passive data for a game. Alternatively, there may be corresponding containers and packets for each of the active and passive data. In any case, the passive data and associated references of the converted game and the active data of the converted game are stored and/or labelled separately so they can be deployed to the client separately. 
         [0078]    In one embodiment the passive data is divided into categories for storage. For example, all textures are stored in one table, all mp3 files are stored in another table, all wave files are stored in another table etc. Therefore, the passive data is stored in one storage device but the storage device is divided into separate tables based on the category of passive data. 
         [0079]    A passive data storage device and an active data storage device at the game conversion module  10  stores all the converted games which have been converted by the game conversion module  10 . 
         [0080]    The same element of passive data may appear in numerous games. For example, the texture grass may appear in five different games. Therefore, in order to avoid the duplication of passive data within the game conversion passive data storage device, the game conversion module  10  also identifies all the instances where an element of passive data within the game being converted appears (either identical or similar) in the passive data storage device (i.e. the passive data appears in another game already converted by the game conversion module  10 ). Therefore, if an element of passive data which appears in a game being converted is already in the passive data storage device, then the unique reference associated with the element of passive data in the passive data storage device is used to replace all instance of that element of passive data within the game. 
         [0081]    Taking the example above of the texture grass appearing in numerous different games, when a new game is to be converted, the game conversion module  10  identifies all instance of the texture grass within the new game, compares the texture grass with the data stored in the game conversion passive data storage device, determines that the texture grass is already stored in the game conversion passive data storage device, identifies the unique reference which is associated with the texture grass in the game conversion passive data storage device, and replaces all instances of the texture grass within the new game with the unique reference. 
         [0082]    Each passive and active data element may comprise metadata provided by the game conversion module  10 . The metadata may comprise:
       FileID—a unique code to identify the file throughout the entire gaming system  1 . According to one embodiment, the unique code is an alpha-numeric code, e.g. two letters and ten digits in length.   FileName—a record containing the given name of the file including its extension e.g. “tree1.jpg”, “bang2.wav” etc.   FileTypeID—a record indicating the file extension, e.g. “bmp”, “jpg”, “mp3”, “wav” and such like. According to one embodiment, proprietary file extensions are standardised during the conversion process. For instance, a standard “*.jpg” file may be renamed as “*.abc” by a given game developer for a number of reasons. This process may be reversed so that all standard files have the correct, accepted file extension format. According to one embodiment, file extensions are standardised according to a labelling system representing each individual file types. For instance, the following numbering system may be employed: 00100 representing the general category of “graphics files” with 00101=jpeg files, 00102=bmp files, 00103=png files etc; and 00400 representing “sound files” with 00401=wav files, 00402=ogg files, 00403=mp3 files etc.   FileLink—is a marker indicating the position of the file within the file structure of the installed game. In other words, it is a route indicator.   GameID—a unique code to identify the game throughout the entire gaming system  1 . According to one embodiment, the unique code is an alpha-numeric code, e.g. two letters and five digits in length, optionally with a regional suffix (e.g. “DE” for Germany, “UK” for United Kingdom etc.) indicating the language version of the game. Note that each language version of the game will generally undergo a separate conversion process, although in some circumstances, this may not be necessary.   FileSize—the size of the file, for example in kilobytes   ReferenceStatusID—made up of three sub-metadata flags: “No” (0), “Yes” (1) and “Not Tested Yet” (2), each indicating whether or not the file is replaceable by a file already present in the game conversion database.   ReplacementFileID—if the ReferenceStatusID=1, then the ReplacementFileIDs comprises a list of all other IDs which the file is a reference file to. In other words, it comprises a list of all equivalent files that can be replaced by the present file.   ClassID—is made up of two sub-metadata flags: an indicator of whether the file is classified as active (0) or passive (1).   SubClassID—is a locking flag which prevents an active file being replaced by another file. Accordingly, a file may be marked “locked” (0) or “replaceable” (1). This feature enables the prevention, for example, of a certain file being replaced based on performance considerations, and prevents collision between ClassIDs.       
 
         [0093]    The game conversion passive data storage device comprise all the passive data required for all the games which have been converted by the game conversion module  10  and the game conversion active data storage device comprise all the active data required for all the games which have been converted by the game conversion module  10 . The passive data storage device is essentially a shared library of passive data. 
         [0094]    As illustrated in  FIG. 1 , the game server  20  is connected to the user devices  30  over a network, such as the internet  40 . The connection may be a wired or wireless connection. The user devices  30  may be, for example (but not limited to), desktop computers, laptop computers, game consoles, portable game consoles etc. 
         [0095]    Further details of the game server  20  will now be given with reference to  FIG. 2 . The game server  20  comprises an active data storage device  100  and a passive data storage device  110 . These storage devices  100 ,  110  are populated with converted games, converted by the game conversion module  10 , and are updated whenever a converted game is transferred to the game server  20 . The storage devices  100 ,  110  can store the active data and passive data for a plurality of converted games converted by the game conversion module  10 . 
         [0096]    Essentially, the game server active data storage device  100  contains a copy of the active data stored in the game conversion active data storage device and the game server passive data storage device  110  contains a copy of the passive data stored in the game conversion passive data storage device for all the games which have been converted by the game conversion module  10  and transferred to the game server  20 . 
         [0097]    When a new game has been converted by the game conversion module  10  and is to be transferred to the game server  20 , the game conversion module  10  identifies the passive data elements of the new game which have been replaced by a unique reference to passive data already stored in the passive data storage device (a copy of which is stored in the passive data storage device  110  at the server  20 ). Indicators (for example, the FileID&#39;s) of the identified passive data elements are then transferred to the server  20  and the metadata of the identified passive data elements in the storage device  110  at the server  20 , is updated. For example, the ReplacementFileID of an identified passive data element may be amended to include the GameID of the new game for which the identified passive data element is a reference file. In addition all new data which is not already stored at the game server  20 , i.e. all the new game active data and any new game passive data which is not already stored in the storage device  110  is transferred (in the case of passive data, together with its associated unique reference) to the server  20  and stored in the appropriate storage device  100 ,  110 . 
         [0098]    In one embodiment, as with the game conversion module  10 , the passive data storage device  110  of the game server  20  stores the passive data based on categories, such that, for example, all textures are stored in one table, all mp3 files are stored in another table, all wave files are stored in another table etc. Therefore, the passive data storage device  110  of the game server  20  is one storage device  110  storing all the passive data but is divided into separate tables based on the category of passive data. In another embodiment, a plurality of passive data storage devices  110  could be used. 
         [0099]    The game conversion module  10  also transfers all the active data of the new game to the active data storage device  100  of the game server  20 . The active data is unique to each game. Therefore, it is not necessary to perform a comparison of the active data already stored in the active data storage device  100  and the new active data. 
         [0100]    It is possible to remove specific game data from the storage devices  100 ,  110  if required, for example, when a game is no longer popular. Moreover, updates of the active and/or passive data stored at the storage devices  100 ,  110  of the game server  20  can be performed if required. For example, if an updated version of the texture grass becomes available it can be saved over the current version of the texture grass stored in the passive data storage device  110  and associated with the unique reference which indicates the texture grass. 
         [0101]    The quality of the updated files may be better (for example in terms of resolution etc.) than the original files, yet the overall game may still be smaller due to the amount of redundant data deleted from the game. In this regard, the visual and audio quality of a computer game may be improved, enhancing the user&#39;s experience whilst still reducing the overall size of the game. 
         [0102]    A user can access the game server  20  over the internet  40  from a user device  30 , via the web interface  140 . Upon first use the user may optionally be required to set-up a user account with the gaming server  20 , for example, the user may be required to enter data such as, their name, address, date of birth, financial account details etc. A user account is then created for each user by the administration and user set-up module  170 , such that the user can then access the game server  20  and play any of the converted games which are stored in the active and passive data storage devices  100 ,  110 . The user account data is stored in the user database  160 . 
         [0103]    Upon first use of the gaming server  20 , the administration and user set-up module  170  determines whether the user&#39;s device  30  comprises the game processing application (game user software) required in order to play games converted by the game conversion module  10 . If it is determined that the user&#39;s device  30  does not comprises the game user software, then the user is prompted to download a copy of the game user software from the storage device  180  at the server  20 , via the web interface  140 . 
         [0104]    Although not required to understand and implement the present invention, further details of the game user software can be found in co-pending patent application entitled: “Game User Software” filed by the same applicant as this application. 
         [0105]    In addition upon first use of the gaming server  20 , the administration and user set-up module  170  identifies the hardware environment of the user&#39;s device  30 , such as the graphics card the user&#39;s device  30  comprises and the processing speed of the CPU (central processing unit) of the user&#39;s device  30 . 
         [0106]    The game server  20  requires a two-way interactive communication with the user&#39;s device  30  at all times during game play. This is because during game play, not only is it necessary for the game server  20  to download data (active and passive data) to the user&#39;s device  30 , but it is also necessary for the user&#39;s device  30  to send data to the game server  20 , such as information about decisions made by the game player (user) during game play, and thus which data is required next in the game. 
         [0107]    Consequently, the administration and user set-up module  170  also determines the ping time and bandwidth of the user&#39;s connection upon first (and subsequent) use of the gaming server  20 . The ping time and bandwidth of the user&#39;s connection affects the speed with which the user&#39;s device  30  gets a response from the game server  20  when the user&#39;s device  30  sends a request for data to the game server  20 . 
         [0108]    In one embodiment, the hardware environment of the user&#39;s device  30  and/or the ping time and bandwidth of the user&#39;s device  30  is checked at predetermined intervals, for example each time the user connects to the game server  20 , or each time the user selects a new game for playing. In addition, the hardware environment of the user&#39;s device  30  and/or the ping time and bandwidth of the user&#39;s device  30  may be checked throughout game play. 
         [0109]    In order to avoid pauses during game play whilst data is being downloaded from the game server  20 , the administration and user set-up module  170  may alter the buffer zone (explained in further detail below) for each user as a result of their hardware environment, ping time and bandwidth. Users with poor ping time and bandwidth are assigned a larger buffer zone than users who have good ping time and bandwidth. 
         [0110]    As well as storing the user account data, the user database  160  can also be used to monitor and store user behaviour during game play. This data can then be transferred to game manufactures such that the games can be modified if required. For example, if 50% of users are not going through a particular door, because a secret code is needed, the game maker can establish that the code is too hard and thus can adjust the code/game. 
         [0111]    Following set-up of an user account (if required), the user becomes an authorised user. An authorised user may be required to enter a user name and password via the web interface  140  in order to gain access to the game server  20 . The administration and user set-up module  170  then compares the entered user name and password with authorised user data held in the user database  160  in order to verify if the user is an authorised user. Once it is confirmed that the user is an authorised user, the user is allowed to access the game server  20  and play games. 
         [0112]    The user database  160  may also store user account data. For example, a user may be required to pay in order to play a game at the game server  20 . Therefore, the user account data may be data regarding whether the user has sufficient funds in order to play a game at the game server  20 . If it is determined that the user does not have sufficient funds in their account, then access to game play via the game server  20  may be denied until sufficient funds have been added to the user&#39;s account. In addition, if it is determined that the user is an authorised user, but does not have sufficient funds in their account, then access to game play via the game server  20  may be denied until sufficient funds have been added to the user&#39;s account. 
         [0113]    Following confirmation that the user has sufficient funds and/or is an authorised user, the user can select any one of the converted games stored in the storage devices  100 ,  110  to play. This selection can be made via the web interface  140 . 
         [0114]    In a further embodiment, the user may not be required to be an authorised user and/or may not be required to pay in order to play a game stored at the game server  20 . 
         [0115]    The optional CMS (content management system) module  150  is used to manage the content of the web-interface  140  as known in the art. 
         [0116]    The user&#39;s game selection is transferred to the game content processing module  120  together with confirmation from the administration and user set-up module  170  that the user is an authorised user and/or has sufficient funds in their account if required. The game content processing module  120  comprises an active object communication module  122 , a content checking and delivery module  124  and a passive data controller module  126 . 
         [0117]    The game content processing module  120  interfaces with the game user software at the user&#39;s device  30  via the game server communication interface  130 . 
         [0118]    The game user software at the user&#39;s device  30  uses an user passive data storage device (not illustrated). In one embodiment, the user passive data storage device is initially empty. In another embodiment, initial passive data may be transferred with the game user software from the administration and user set-up module  170  to the user device  30  in order to populate the user passive data storage device. In another or additional embodiment, passive data may be provided on a CD (compact disc)/DVD/memory stick etc. which the user purchases in order to populate the user passive data storage device. 
         [0119]    In order to play the selected game the essential minimum data (discussed above) is downloaded from the passive data storage device  110  at the server  20  to the user passive data storage device. In addition the connection between the server  20  and the user&#39;s device  30  must be active, so that active data and further passive data can be downloaded to the user&#39;s device  30  as required during game play. 
         [0120]    As stated above the game engine is considered a special type of passive data. Prior to, or after, download of the essential minimum data it is determined whether the user&#39;s device  30  has the required game engine, and if the user&#39;s device  30  does not have the required game engine, then it is (a copy is) downloaded to, and stored at, the user&#39;s device  30  together with, or separately from the essential minimum data. The game is then run on this locally stored game engine which combines the necessary active data received from the game server  20  and the necessary passive data downloaded to the user passive data storage device from the game server  20  and retrieved from the user passive data storage device by the game engine. 
         [0121]      FIG. 3  illustrates schematically the process of the essential minimum data download from the passive data storage device  110  at the game server  20  to the user passive data storage device at the user&#39;s device  30 . 
         [0122]    When a user selects a game for playing (at step S 200 ), the users selection is transferred via the web interface  140  to the game content processing module  120 . The content checking and delivery module  124  determines what game engine is required to play the selected game and checks whether the user&#39;s device  30  has this game engine (step S 202 ). If the user&#39;s device  30  does not have the required game engine, then the game engine is transferred to the user&#39;s device  30  (step S 204 ). The passive (and active) data is transferred to the user&#39;s device  30  via the game server communication interface  130 . 
         [0123]    The game engine is a special type of passive data and as such it is stored in the user passive data storage device. 
         [0124]    In addition to determining what game engine is required by the game, the content checking and delivery module  124  also determines what administrative features, such as physics engine, control application etc. are required by the game and transfers those which are required to the user&#39;s device  30 , if not available at the users device  30 . In one embodiment, all the administrative features of the game are downloaded to the users device  30  at the beginning of the game download. 
         [0125]    The content checking and delivery module  124  also determines what essential minimum data is required in order to play the selected game (step  5206 ). The passive data which is stored in the passive data storage device  110  is associated with an unique reference, as discussed above, which is used to identify the passive data. Each passive data also contains an indication as to which game requires the passive data. The content checking and delivery module  124  transfers a first list of unique references indicating the essential minimum data which is required for the selected game to the user&#39;s device  30  (step S 208 ). 
         [0126]    The user device  30  comprises an user passive data manager. The user passive data manager compares the first list of unique references with the unique references associated with passive data stored in the user&#39;s passive data storage device (step S 210 ) and determines which of the first listed passive data is not already stored in an user passive data storage device (step S 212 ). The user passive data manager then returns a second list of unique references to the content checking and delivery module  124  (step S 214 ) via the server communication interface  130 . The second list indicates which of the first listed essential minimum data is not stored in the user passive data storage device at the user&#39;s device  30  and thus is required by the user passive data storage device. 
         [0127]    In one embodiment, if the user device  30  does not have any data stored in the user passive data storage device, then the second list of references is identical to the first list of references. However, if some of the required essential minimum data is already stored in the user passive data storage device, then this passive data does not need to be transferred from the passive data storage device  110  of the game server  20  to the user passive data storage device of the user&#39;s device  30 . Consequently, the second list of references is likely to be smaller than the first list of references. 
         [0128]    In one embodiment, as discussed above, the game conversion module  10  identifies all the instances where an element of passive data within a game appears (either identical or similar) in another game already converted by the game conversion module  10  and associated the existing unique reference with the element of passive data. The game conversion module  10  amends the ReplacementFileID of the element of passive data element to include the GameID of each new game for which the identified passive data element is a reference file. Consequently, the passive data stored in the passive data storage device  110  at the game server (which was converted by the game conversion module  10 ) does not include any duplications of passive data. 
         [0129]    As a result, the passive data which is transferred to the users device from the game server  20  details the GameID of each converted game for which the identified passive data element is a reference file. 
         [0130]    The content checking and delivery module  124  uses the second list of references to determine what passive data and its associated reference is required to be transferred to the user&#39;s device  30 . The content checking and delivery module  124  then retrieves the required essential minimum passive data and its associated reference from the passive data storage device  110  (step S 216 ) and transfers a copy of the passive data and its associated reference to the user device  30  (step S 218 ). Therefore, only new passive data (passive data not already stored in the user passive data storage device) is transferred to the user device  30 . 
         [0131]    The user passive data manager then stores the transferred passive data and associated reference in the user passive data storage device. 
         [0132]    Steps S 202  and S 204  may be performed after steps S 206  to S 218 , i.e. the game engine may be transferred after the essential minimum data. In addition, the game engine may be transferred at the same time as the essential minimum data at step S 218 . 
         [0133]    In one embodiment, as with the game conversion module  10  and the game server  20 , the passive data storage device of the user&#39;s device  30  stores the passive data based on categories, such as all textures are stored in one table, all mp3 files are stored in another table, all wave files are stored in another table etc. Therefore, the passive data storage device of the user device  30  is one storage device storing all the passive data but is divided into separate tables based on the category of passive data. 
         [0134]    Since only new passive data (passive data not already stored in the user passive data storage device) is transferred to the user device  30 , the more games that the user has selected for playing, the more passive data will be stored in the user passive data storage device. Thus, the amount of passive data required to be transferred from the game server  20  to the user device  30  should reduce with each game, such that the time required to download the essential minimum data to the user&#39;s device  30  may decrease with each game. In addition the time required to download the passive data to the user&#39;s device  30  during game play may decrease with each game. 
         [0135]    The essential minimum data required for initial download may also be supplemented with further initial download data (if required) depending on the determined ping time and bandwidth of the connection to the user&#39;s device  30  (as discussed above). For example, if the user&#39;s connection is slow, the game content processing module  120  may determine that the user&#39;s device  30  requires the essential minimum data and further additional active and/or passive data to be downloaded to the user&#39;s device  30  before game play can commence. In this instance the extra passive data is transferred together with or separately from the essential minimum data using a similar process to that described in  FIG. 3 . The extra active data may also be transferred together with or separately from the essential minimum data. However, since the active data cannot be replaced by a reference and is not permanently stored at the user&#39;s device  30 , no comparison (such as steps S 210  to S 218 ) is required. 
         [0136]    The process of  FIG. 3  is performed prior to commencement of game play. Not all of the selected game passive data may be transferred before commencement of game play. For example, only the passive data which is required for the first three levels of the selected game may be identified and transferred, using the process described above with reference to  FIG. 3 , to the user&#39;s device  30  before game play commences. 
         [0137]    During game play the passive data is downloaded from the storage device  110  at the server  20  to the user passive data storage device at the user&#39;s device  30  (in the background), using a process similar to that of  FIG. 3 . The passive data is then read from the user passive data storage device when required. In contrast the active data is downloaded when required, and is not permanently stored at the user&#39;s device  30 . The user passive data storage device functions as a virtual drive at the user&#39;s device  30  from which the passive data is read, in contrast to conventional games which are read from a disc. 
         [0138]    It may not necessary for the process of  FIG. 3  to be carried out when the user selects the game for playing the second and subsequent times, since the essential minimum data required to begin game play has been downloaded to the user passive data storage device at the user&#39;s device  30 . 
         [0139]    Following download of the essential minimum data (including the game engine if required) game play can begin. The entire game is not required to be downloaded before game play begins, only the essential minimum is required. The game data (active and passive data) is then downloaded in the background during game play, as required. 
         [0140]    According to one embodiment, active data and passive data are distributed by separate servers. For example, passive data can be distributed by a web server, since its delivery speed does not directly affect game play; a slower delivery speed simply means the user has to wait longer to begin playing the game (and the buffer zone is increased, as discussed below). The delivery speed of active data, on the other hand, is more critical in the sense that the game cannot be played without it and most games will be prepared by the game conversion module  10  in a manner that requires a constant feed of active data in order for the game to be played. In this regard, therefore, it is more desirable to have a fast server for distributing the active data. According to one example, active data is distributed by a blade server and passive data is distributed by a web server. 
         [0141]    To ensure that there are not any delays during game play whilst passive (and active) data is downloaded from the game server  20 , it is necessary to determine a buffer zone which surrounds the players (user&#39;s game token) current position in the game. This buffer zone indicates all the passive (and active) data which may be required during the next predetermined period of game play. 
         [0142]    As illustrated in  FIG. 4 , if the player is currently at the centre position (indicated by the solid black diamond ♦) at time t=0, then the player could be anywhere within the first circle  1  at t=1, anywhere within the second circle  5  at t=5 and anywhere within the third circle  10  at t=10. In most games the player is not required to move in one direction, such as direction A, B or C, and can turn around and double back on himself or can change direction, game play may not be linear and different users (or the same user) can play the same game in different ways, based on decisions taken during the game. Consequently, at any one time, the player could be about to move to any one of plurality of different environments each requiring different (or the same) active and passive data. For example, if the passive data buffer zone is defined by the dotted circle  10  in  FIG. 4  and the active data buffer zone is defined by the dotted circle  1  in  FIG. 4 , then the game server  20 , and in this example, the game content processing module  120 , needs to monitor game play and determine all the passive data that may be required within the zones  0  to  10  and all the active data that may be required within the zones  0  to  1 . The zones of the game may be defined for example in terms of time, distance, memory, rooms or levels within a game. 
         [0143]    The active data buffer zone is smaller than the passive data buffer zone so as to avoid permanently storing (for any significant period of time/amount of data) active data at the user&#39;s device  30  and thus prevents the game being played when connection to the server  20  is broken. 
         [0144]    The content checking and delivery module  124  can then download the required (buffer zone) passive data to the user passive data storage device at the user&#39;s device  30  and the required (buffer zone) active data to the user active data storage device at the user&#39;s device  30  in the background during game play. 
         [0145]    Monitoring of game play and dynamic determination of buffer zone(s) can occur at either the game server  20  or at the user device  30 . In the latter case, the user device  30  needs to request the buffer zone data (active and passive) required to be stored at the user device  30 . 
         [0146]    In one embodiment, the passive data buffer zone may be set as one level, in this case the game server  20  downloads each level of passive data one level before it is required. 
         [0147]      FIG. 5  illustrates an exemplary server monitoring process of game play and for downloading data from the game server  20  to the user&#39;s device  30  during game play. 
         [0148]    The game content processing module  120  receives an indication of the current game play (for example, which level the player is on and where in the level the player is) together with a request for active and passive data from the user&#39;s device  30  via the game server communication module  130  (step S 300 ). The content checking and delivery module  124  than determines what passive data is required for the next predetermined period of game play (the buffer zone) at step S 302 . 
         [0149]    The content checking and delivery module  124  then transfers a first list of unique references indicating the passive data which is required for the next predetermined period of game play to the user device  30  (step S 304 ). 
         [0150]    As stated above, the user device  30  comprises an user passive data manager. The user passive data manager compares the first list of unique references with the unique references associated with passive data stored in an user&#39;s passive data storage device (step S 306 ) and determines which of the first listed passive data is not already stored in an user passive data storage device (step S 308 ). The user passive data manager then returns a second list of unique references to the content checking and delivery module  124  (step S 310 ) via the server communication interface  130 . The second list indicates which of the first listed passive data is not stored in the user passive data storage device and thus is required to be downloaded to the user passive data storage device. 
         [0151]    The content checking and delivery module  124  uses the second list of references to determine what passive data and its associated reference is required to be transferred to the user device  30  and the passive data controller  126  determines the order in which the passive data is to be downloaded to the user device  30  (step S 312 ). The content checking and delivery module  124  then retrieves the second list of passive data and its associated reference from the passive data storage device  110  (step S 314 ) and transfers a copy of the passive data and its associated reference to the user device  30  (step S 316 ). 
         [0152]    The user passive data manager then stores the transferred passive data and associated reference in the user passive data storage device at the user&#39;s device  30 . 
         [0153]    The active data is only downloaded to the user&#39;s device  30  during game play and the active data is not permanently stored at the user&#39;s device  30 . 
         [0154]    The active data is downloaded to the user&#39;s device  30  with a buffer zone. However, the buffer zone for the passive data is set to be larger than the buffer zone for the active data. This is because, in most instances, more passive data is required for one zone and passive data tends to have larger file sizes than the active data, thus the passive data requires longer download times. In addition, the active data is only stored temporarily, for a very short period of time, on the users device  30 . The active data is constantly being overwritten at the user&#39;s device  30  when it is no longer required. Therefore, a live connection between the user&#39;s device  30  and the game server  20  is required during all game play. It is not possible for the user to play a downloaded game if they are not connected to the game server  20  since the user&#39;s device  30  does not store any of the active data required for game play only the passive data is stored at the users device  30 . In addition, it is not possible for a user to create a copy of the game (for resell for example) since the user&#39;s device  30  does not store any of the active data required for game play. Additionally the game cannot be used through a peer-to-peer sharing network, as again the user&#39;s device  30  does not store any of the active data required for game play. 
         [0155]    The active object communication module  122  retrieves the active data required for game play from the active data storage device  100  and transfers it to the user&#39;s device  30  via the game server communication interface  130  during game play. The active data is not transferred prior to game play and is not stored at the user&#39;s device  30 . 
         [0156]    It is also possible for the game user apparatus at the user&#39;s device  30  to be launched through a conventional internet browser. For example by clicking a game listed on a website hosted by the game server  20 , via the web interface  140 , an extension of the browser automatically launches the game user apparatus on the user&#39;s device  30  and begins to initiate the essential minimum download or game play (i.e. active and passive data stream) if the game has been played before. 
         [0157]    The gaming system  1  prevents users from copying games. In addition, the gaming system  1  enables multiplayer game play to be easier as long at all the players are connected to the game server  20 . 
         [0158]    The invention has been described with particular illustrative embodiments. It is to be understood that the invention is not limited to the above-described embodiments and that various changes and modifications may be made by those of ordinary skill in the art without departing from the scope of the invention.