[0001] The present invention refers to technologies in the field of an online game system.
Background
[0002] For a plurality of users, an online game system provides the opportunity for collaborative
online gaming. The system is provided with a communications network or communications
architecture comprising a central server device and a plurality of client devices.
The client devices are connectable to the central server device for data exchange,
especially for the purpose of implementing an online session for collaborative gaming.
Data exchange may be performed, for example, via the internet. Also, the online game
system is provided with memory device for storing electronic data, such as a central
memory device accessible by the central server device and the client devices. In addition,
the client devices are provided with local memory device which may comprise local
memory of different levels, such as a first level cache and a second level cache.
[0003] In the course of an online gaming session performed for one of the client devices
from the plurality of client devices, substantial data exchange is happening between
the local memory device assigned to that e client device and the central memory device.
Such data exchange, usually, is using a data exchange protocol such as HTTP. Especially
in view of the increasing number of users, there is need for technologies optimizing
processes related to the data exchange in the online game system.
Summary of the invention
[0004] It is an object of the invention to provide new technologies for optimizing the exchange
of data files in an online game system, especially for reducing data traffic during
online game sessions performed by client devices of the online game system.
[0005] The problem is solved by a method according to the independent claim 1. Also, an
online game system according to the independent claim 10 is provided. Advantageous
developments of the proposed technologies are disclosed in dependent claims.
[0006] According to one aspect of the invention, in an online game system, a method is provided,
comprising steps of providing a plurality of data files in a file directory of a file
system, processing encoded file system information by encoding the plurality of data
files and file directory information, storing the encoded file system information
in a central memory device accessible by a plurality of client devices, and performing
an online session in one of the plurality of client devices, comprising steps of:
- receiving a request for a data file of the plurality of data files, the request comprising
request information identifying the data file,
- receiving at least part of the encoded information from the central memory device
in a local memory device assigned to the client device,
- determining whether the data file requested is available in the local memory device,
comprising a step of comparing the request information to the encoded information
received in the local memory device, and
- if it is determined that the data file is not available in the local memory device,
loading the data file from the central memory device into the local memory device.
[0007] According to another aspect of the invention an online game system is provided. The
online game system comprises a plurality of client devices, a file system, a file
directory provided in the file system, the file directory comprising a plurality of
data files, a processor for processing encoded file system information by encoding
the plurality of data files and file directory information, and a central memory device
for storing the encoded file system information, the central memory device being accessible
by the plurality of client devices. The client devices are configured to perform an
online session, comprising steps of: receiving a request for a data file of the plurality
of data files, the request comprising request information identifying the data file,
receiving at least part of the encoded information from the central memory device
in a local memory device assigned to the client device, determining whether the data
file requested is available in the local memory device, comprising a step of comparing
the request information to the encoded information received in the local memory device,
and if it is determined that the data file is not available in the local memory device,
loading the data file from the central memory device into the local memory device.
[0008] The proposed technologies comprise the idea of encoding electronic information related
to the file system comprising a plurality of data files provided in a file directory.
The process of generating encoded file system information comprises a step of encoding
the data files provided in the file directory as well as file directory information.
Preferably, the file directory information comprises structural information about
the file system, for example information about subdirectories provided in the file
directory and, optionally information about the hierarchy of the subdirectories in
the file system. Both, the data files and the file directory information are processed
for encoding, thereby generating the encoded file system information. Such encoded
file system information is stored in a central memory device of the online game system
which is directly or indirectly accessible by a plurality of client devices and a
central server provided in the online game system. By storing the encoded file system
information in the central memory device, the encoded file system information is available
for loading it, at least in part, to a local memory device assigned to one of the
client devices, e.g. at the time of starting an online gaming session in the client
device. Once such online session is started in one or more client devices of the online
game system, the encoded file system information, at least in part, can be loaded
into the local memory device of the client devices for which an online session is
started. By loading such electronic information into the local memory device, the
information loaded is accessible by the client device to which the local memory device
is assigned.
[0009] The processing of the encoded file system information and the loading of the encoded
file system information, at least in part, into one or more local memory devices may
be considered as being steps of a building-up process for providing a virtual file
system in the online game system. In general, a virtual file system may be considered
as an abstraction layer on top of a more concrete file system which, in the present
case, is the file system comprising the plurality of data files in the file directory
assigned to the online game system. The steps of processing the encoded file system
information and storing the encoded file system information in the central memory
device may be provided as part of a pre-processing procedure. In a possible embodiment,
the step of loading at least part of the encoded file system information into the
local memory device of one or more client devices may be part on such pre-processing
procedure. The loading of the encoded file system information into the local memory
device, at least in part, may be performed pro-actively. In an alternative embodiment,
the loading of the encoded file system information may be preformed in response to
the step of receiving a request for a data file in the client device, preferably during
an online session started on the client device.
[0010] During an online session running on the client device, in response to receiving a
request for a data file a step may be performed for determining whether the data file
requested is available in the local memory device assigned to the client device. Such
step of determining the availability of the data file in the local memory device may
comprise a step of comparing request information received by the client device together
with the request for the data file to the encoded file system information in the local
memory device. The request information is identifying the data file for which a request
was received in the client device during the online session. If, in the step of comparing
the request information to the encoded file system information, in the local memory
device it is determined that the data file for which the request was received is not
available in the local memory device, the data file is loaded from the central memory
device into the local memory device of the client device. Following, the data file
is available for processing the data file, for example, in the course of the running
online session.
[0011] In some mode of operation, it may be provided that, if at the time of generating
the encoded file system information one or more client devices are online, i.e. an
online session is running on such client devices, at least some of the encoded file
system information may be transmitted to the client devices being online without storing
having the encoded information stored in the central memory device before. The encoded
information transmitted to the client devices may be stored afterwards and / or at
the time when the transmission to the client devices is happening.
[0012] Using the encoded file system information in the course of the online session running
on the client device for responding to a request for a data file will minimize data
traffic between the plurality of client devices on one side and the central memory
device assigned to the central server of the online game system on the other side.
[0013] In a preferred embodiment, the encoded value is processed as a hash value. There
are several methods for processing a hash value which are known as such in the art.
Therefore, no further explanation needs to be given herein.
[0014] According to an aspect of the invention, the step of processing the encoded file
system information, for each data file of the plurality of data files, further comprises
steps of compressing the data file, and processing an encoded value for the compressed
data file. Further, a step may be provided for linking the encoded value processed
for each of the data files with file directory path information comprising, for example,
information about the name of a subdirectory where the respective data file is provided
in the file directory of the file system. The linking may be performed as a step of
assigning the encoded value, which for example may be processed as a hash value, to
the file directory path information.
[0015] In one embodiment, the file directory is provided with a plurality of subdirectories,
and the step of processing the encoded file system information, for each subdirectory
of the plurality of subdirectories, further comprises steps of processing a subdirectory
content file comprising the encoded value of each data file provided in the subdirectory,
compressing the subdirectory content file, and processing an encoded value for the
subdirectory content file. One or all data files of the plurality of data files in
the file directory may be provided in one of the subdirectories. Of course, one or
more data files may also be provided in the root directory of the file directory.
If additional information is assigned to the encoded value of each data file, for
example, the file directory path information, such information, together with the
encoded value, is provided as part of the subdirectory content file. Therefore, in
the subdirectory content file there may be a listing of the encoded values each of
which is assigned to additional information referring to the data file, for example,
file directory path information. For such directory content file the encoded value
is processed after compression. In a preferred embodiment, for each subdirectory,
the encoded value for the subdirectory content file, which may be processed as a hash
value, may be linked to additional information referring to the respective subdirectory,
for example, subdirectory name information.
[0016] In a preferred embodiment, the step of processing the encoded file system information
further comprises steps of, for each subdirectory of the plurality of subdirectories,
processing a directory content file comprising the encoded value processed for the
subdirectory content files, for each subdirectory of the plurality of subdirectories,
compressing the directory content file, and providing a root directory key by processing
an encoded value of the compressed directory content file. If additional information
is assigned to the encoded values for the subdirectory content files, such additional
information is part of the directory content file which is compressed afterwards.
Finally, the root directory key is generated by processing an encoded value, which
may be generated as a hash value, for all the compressed directory content files.
[0017] According to a further embodiment, the step of receiving at least part of the encoded
information comprises a step of receiving, in the local memory device, at least one
of the following: the encoded value for one or all data files, the encoded value for
one or all subdirectory content files, and the root directory key. In a preferred
embodiment, at least the root directory key is pro-actively transmitted to the local
memory device when an online session is started in the client device to which the
local memory device is assigned. The term "pro-actively" as used herein refers to
a step of loading the respective information or data into the local memory device
without having received a request for such information or data from the client before.
[0018] In still a further embodiment, the step of receiving the request for the data file
comprises steps of receiving data file name information for the data file, and receiving
data file directory path information indicating a directory path assigned to the data
file in the file directory.
[0019] According to a preferred embodiment, the step of determining whether the data file
requested is available in the local memory device comprises a step of determining
the encoded value for the data file requested from the encoded information by comparing
at least one of the data file name information and the data file directory path information
to the encoded information. The encoded value processed for the data file requested
is revealed by the client device by comparing the request information received together
with the request for the data file in the client device to the encoded information
provided in the local memory device assigned to the client device. For example, if
both the request information and the encoded information loaded locally comprise information
about the name and / or a directory path assigned to the data file requested, from
comparing such information the encoded value for the data file may be identified.
[0020] In another preferred embodiment, the step of loading the data file from the central
memory device, in the client device, comprises steps of receiving the data file, processing
a locally processed encoded value of the data file, and storing the data file and
the locally processed encoded value in the local memory device. The locally processed
encoded value represents the data file actually stored in the local memory device.
In a preferred embodiment, whenever a data file is loaded into the local memory device,
the locally processed encoded value is generated. This will ensure that the locally
processed encoded value represents information on the actuality of the data file locally
stored. Therefore, for example, it is not necessary to have expiration information
with respect to the data files in the local memory device provided.
[0021] According to an aspect of the invention, there is further a step of comparing the
encoded value determined to the locally processed encoded value. The comparison of
the locally processed encoded value and the encoded value determined in the process
of comparing the request information to the encoded file system information provided
in the local memory device at least implicitly may provide an up-to-date test for
the data file in the local memory device. Since the encoded value for the data file
was revealed from the encoded file system information loaded to the local memory device,
for example, during the running online session, such encoded value represents up-to-date
information for the data file requested. On the other hand, in the local memory device
there may be an older version of the data file stored. For example, the data file
may be received during an earlier online session. In such case, the locally processed
encoded value will represent the old version of the data file. Therefore, there will
be a mismatch between the encoded value and the locally processed value. In response
to such mismatch information, an up-to-date version of the data file requested in
the request received by the client device may be loaded from the central memory device
to the local memory device. However, in a preferred embodiment, if it is found that
the data file locally stored is up-to-date, in response to the request for the data
file, there is no need to load the data file form the central memory device. As can
be seen from the above, just by comparing encoded information the up-to-data data
file can be made available for the presently running online session on the client
device in the online game system.
[0022] In its different embodiments the proposed technologies may provide one or more of
the following advantages over the art. A virtual read-only file system using the standard
open / read / (write) / close paradigm, for example, as a virtual HTTP file system.
It can be used as a drop- in replacement for conventional file Input / Output without
changing high level code. There is only need for a basic data protocol such as HTTP
protocol; there are no additional server-side requirements. Asynchronous, multithreaded
operations may be used for reducing average latency and making optimal use of available
bandwidth. Transparent file compression can be used in order to make better use of
available bandwidth without additional server overhead. Directory-listing and file-exists-check
capabilities can be provided without server-roundtrips or additional server-side extensions.
A file-granular, hierarchical local cache can be established to dramatically reduce
data traffic, even down to no HTTP traffic at all if cache is up-to-date.
[0023] A version-stamping mechanism may be established instead of file-expiration check
for cache-hit check. A client-side tampering-protection can be provided using encoded
values (e.g. checksums); a negative check-hit test may occur if a cached file has
been tampered with, causing a fresh download. Finally, in a preferred embodiment,
using the standard HTTP protocol through standard HTTP servers for downloading static
data has the advantage that use can be made of existing optimizations both in the
HTTP server (like caching static files in RAM), and the existing network infrastructure
(e.g. making efficient use of Content Delivery Networks).
Description of preferred embodiments
[0024] In the following, the invention will be described in further detail by way of example,
with reference to different embodiments. In the figures show:
- Fig. 1
- a schematic representation of an online game system,
- Fig. 2
- a schematic block diagram for steps of setting-up a virtual file system, and
- Fig. 3
- a schematic block diagram for steps of handling an I / O request for a data file in
a client device.
[0025] Referring to Fig. 1, an online game system comprises central network facilities 1
provided with a central server device 2, and a central memory device 3 in the embodiment
shown. In addition, in the online game system there is a plurality of client devices
4.1, ..., 4.n. The client devices 4.1, ..., 4.n may locally be established on a computer
device, e.g. a personal computer, or a mobile communication device, such as a mobile
phone. The client devices 4.1, ..., 4.n will connect to the central network facilities
1 for running an online game session. Also, client devices 4.1, ..., 4.n are provided
with a local memory device 5.1, ..., 5.n which, preferably, is comprising two ore
more memory entities which may provide several hierarchically organized cache entities.
[0026] Data transfer connections between the components of the online game system will be
provided permanently or non-permanently depending on different modes of operations.
Data communication may be performed, for example, between the client devices 4.1,
..., 4.n and the central network facilities 1. Also, there may be data transfer between
the client devices 4.1, ..., 4.n. In another mode of operation, the local memory device
5.1, ..., 5.n may receive data directly from the central memory device 3. Preferably,
the internet 6 (see Fig. 1) will be used as part of the data transfer connections,
but, also non-public network structures may be included in establishing the data transfer
connections.
[0027] Following, methods are described which may be performed in the online game system.
The methods disclosed provide embodiments. The methods described may be combined by
performing one or more steps of one method and one or more steps of another method.
Also, additional features may be added to the processes explained. Of course, in the
processes of operation of the online game system as described below features may be
left out, the method left still using aspects of the invention.
[0028] In the following it is assumed that for at least some of the data exchange in the
online game system the HTTP protocol is used. However, the disclosure given can be
applied to other protocols as well.
[0029] In pre-processing face during a build-up process of a virtual file system asset data
of the online game system 1 comprising a plurality of data files are prepared for
use with the virtual file system which preferably may be provided as a HTTP virtual
file system. All data files of the asset data are located in a single file directory
tree with one root directory at the top.
[0030] Referring to Fig. 2, in a first step 20 each data file being part of asset data provided
in the file directory is encoded by compressing the data file and processing an encoded
value for the compressed data, e.g. a hash value. For each sub directory, a subdirectory
content file which may also referred to as leaf table-of-content file is generated
in a step 21. The subdirectory content file is listing the encoded values (hash values)
for all data files provided in the sub directory. Also, the subdirectory content file
comprises, in addition to the encoded value, file directory path information indicating
a path in the file directory where the respective data file is located in the file
system. For example, the data received in the subdirectory content file for a data
file may be as follows: [export_win32 / anims / characters] / [ancestral_guard_variations.nax3]
|f| [42c87fbbfc0e108dc3ae3ab3616c0d8b] ([name of subdirectory] / [name of data file]
|f| [encoded value of data file]). The pieces of information "name of subdirectory"
and "name of data file" together provide a kind of path information for the data file
in the file system.
[0031] Following, in step 22 each subdirectory content file is compressed and encoded like
the data files of the asset data.
[0032] In a step 23, a single directory content file which may also referred to as table-of-content
file is created which is listing all sub directories of the file system with its name
and its encoded value processed for respective subdirectory content file. For example,
the data received in the directory content file for a subdirectory may be as follows:
[export_win32/anims/characters] |d| [5469bfde8f4012e4bedda397fe0282df] ([name of subdirectory]
|d| [encoded value of subdirectory content file]).
[0033] Following, in step 24 the directory content file is compressed, and the encoded value
(hash value) for the resulting file is computed. The single encoded value for the
directory content file may be referred to as a root directory key. The root directory
key is saved to a separate location in the deployment directory hierarchy accessible
by the central server device (step 25).
[0034] At the time of starting an online session in the client device, the following steps
are performed (see Fig. 3) for finally setting-up the virtual file system. The client
device receives the directory root key from the central server device in a step 30.
The client device reads the directory content file into its local memory device (step
31), namely a RAM. At this point, the virtual file system is fully operational.
[0035] In a preferred embodiment, a Global Lookup Table is generated in the local memory
device (step 32). It associates each data file with the file's encoded value, for
example, a data file name like the file's URL with the hash value. The URL defines
the location of a data file in the file directory. The Global Lookup Table is empty
at the start of the application and is filled on-demand with downloaded data from
the table-of-content files.
[0036] When an I / O request for a data file identified by its data file name (e.g., URL)
is received in the client device in step 33, the encoded value for the data file is
looked up in the Global Lookup Table. If the URL is already in the Global Lookup Table,
the encoded value for the data file requested is returned (step 34). Otherwise the
subdirectory content file containing the data file requested is loaded to the client
device. The data file's directory path is extracted from the data file's name. Information
identifying the data file's name / encoded value is added to the key / value-pairs
of the Global Lookup Table.
[0037] If, after loading (all) the subdirectory content file(s), the data file's name is
still not in Global Lookup Table, the data file requested does not exist on the central
device side. Following, the IO request is cancelled by a FileNotExists error.
[0038] The I / O request now consists of the data file's name and encoded value, and it
is known that the data file does exist in the file directory. Important to note, the
data file name (URL) and the encoded value are unique for this version of the data
file. If the data file content changes, i.e. a new version is provided the encoded
value in the subdirectory content file (table-of-content-file) will change.
[0039] Next, in step 35 a "TryLoadFromCache" operation is processed. A filename is built
from the data file name (URL) and the encoded value identifying the current version
of the data file. It is checked if a data file with this unique name exists in the
local download memory device. If yes, data the data file are loaded from the local
memory device instead of downloading it from the central device. If no, an operation
"TryLoadFromHttpServer" is processed instead.
[0040] The operation "TryLoadFromHttpServer" provides for a normal HTTP GET for downloading
the data file from central network facilities 1 by using the URL. The downloaded data
are stored into the local memory device. A memory filename is built from the data
file name (URL) and the encoded value for identifying this specific version of the
data file.
[0041] The I / O request received in the client device is now basically finished, and in
step 36 the data file's data are loaded either from the local memory device or the
central network facilities 1.
[0042] Optionally the actual encoded value of the loaded data file's data may be checked
against the expected encoded value from the Global Lookup Table. If they don't match
the file has either been tampered with, or there was an error during download.
[0043] Worth mentioning, the same process may take place when downloading the directory
content file(s). Therefore, there is basically a recursive process with at most two
recursion steps (data file -> subdirectory content file -> directory content file
/ directory content file).
[0044] The technology provided implements a hierarchical file-granular caching system on
a fast local read / write storage device which dramatically reduces HTTP traffic (down
to no HTTP traffic at all) and prevents client-side file tampering. The caching system
implements the following features:
- does not use an expiration date like traditional browser caches, but an encoded hash
of the file content to check whether a file in the cache is up-to-date
- uses table-of-content files generated at build-time to associate encoded hashes with
file-names and to prevent unnecessary HTTP server roundtrips
- no HTTP requests at all if the cache is up-to-date
- prevents file-tampering by examining whether the actual content of a file in cache
is identical with the server-side file by checking the actual encoded hash of a file
against the expected encoded hash
- data files in the cache are named as their encoded hash value
- data files in the cache are compressed (reducing cache size and increasing pre-received
data throughput of the hard disc)
- subdirectory content files are cached just as other data files.
[0045] A cache hit is defined as one of: (i) a data file named like the encoded value of
the tested data file does exist in the cache, and (ii) the actual content of this
data file must match the expected (build-time) encoded value. In case of a cache-hit,
the I / O request is fulfilled completely from the local cache assigned to the client
device, otherwise a request, e.g. an HTTP request, will be issued which fetches the
complete data files from the central server device into the local memory device, namely
into the RAM and into the local file system cache assigned to the client device.
[0046] A client-side tampering protection may be implemented. For each I / O request received
by the client device, the actual data file content is checked against the encoded
value from the subdirectory content files. If there is a mismatch, the local file
system cache assigned to the client device will report a cache mismatch. Following,
the data file requested will be fetched anew from the central server device, e.g.
a HTTP server, and the local cache version will be overwritten with the correct version
from the server. At the same time, the hash value for the data file fetched will be
processed in the local memory device and stored together with the data file.
[0047] This tampering protection works for the subdirectory content files as well. Modifying
the encoded values in the subdirectory content file would cause a cache mismatch when
reading the subdirectory content file itself, in turn causing it to be fetched directly
from the server again. Successful client-side cache-file tampering would require modifying
the root directory key which is communicated to the client device directly from the
central server device at start-up. The client-side tampering-protection is preferably
used in conjunction with a properly secured client / server architecture, where the
client isn't allowed to manipulate sensitive game state in an online session running.
Especially, the client-side tampering-protection is good for preventing client-side
manipulations like so-called "wall-hacks".
[0048] The encoded values may be used on the client device side as follows. Every I / O
request on the client is associated with the encoded value, e.g. the hash value, of
the data file before the data file is actually fetched from the server. The encoded
value is used to check for a cache-hit, enable robust CDN support (see below), and
finally to check whether the data file has been tampered within the local cache assigned
to the client device.
[0049] There is a single root directory key communicated to the client device from the central
server device at a client online session start-up. This root directory key is the
encoded value of the root content file ("root table-of-content file") which contains
the encoded values / keys of all subdirectory content files ("leaf table-of-content
files"). Those subdirectory content files in turn contain the encoded values (hash
values) of single data files. The virtual file system downloads subdirectory content
files on demand and caches them both in RAM and in the local file system cache assigned
to each of the client devices.
[0050] If a data file is requested by the file system, first a check is performed whether
the associated encoded value has already been loaded from the root content file of
the subdirectory where the data file is located. If not, the root content file is
loaded into RAM through a normal file operation (which means, if the root content
file is in the local file system cache, it will be loaded from the cache, otherwise
an GET request will be performed). The required encoded value for loading the subdirectory
content file ("leaf table-of-content files") is in turn looked up in the root content
file ("root table-of-content file") which has been loaded at client start-up.
[0051] In a preferred embodiment, there is only a single type of HTTP requests issued by
the HTTP virtual file system: HTTP GET, which fetches complete, static asset data
files from the server. To make sure that an up-to-date version of a data file is downloaded
when using a CDN ("Content Delivery Network"), the encoded value (checksum) of the
data file is appended to the URL in a __cv tag appended to the file URL. This will
cause a cache-miss and round-trip to the CDN origin server if the CDN proxy only has
an outdated version of the same file (or doesn't have the data file yet at all).
[0052] The basic HTTP protocol doesn't allow listing the content of a directory, and requires
an expensive server roundtrip to check whether a data file exists on the server. Both
checking for the existence of a data file and listing the content of a directory are
commonly used standard file system operations. The virtual file system proposed herein
offers these operations by using the information from content files (subdirectory
content files, root directory file) generated at build time. If a file doesn't exist
in content file, it won't exist on the server as well, and listing the content of
a directory simply means listing the content of a content file.
[0053] There may be asynchronous, parallel file operations. A single HTTP connection works
serially, before a new HTTP request can be issued, the previous request must have
finished. This simple single-connection-scenario has two main drawbacks:
- High latency can be a serious issue for file throughput, in a high latency scenario,
the connection may sit idle waiting for responses for a longer time than actually
transferring data.
- Large, low-priority I / O requests block small, high-priority I / O requests.
[0054] The virtual file system proposed implements a "massively multi-threaded" architecture
to circumvent both problems. Instead of one HTTP request at a time, many requests
can be "in flight" by distributing I / O requests across several threads, each managing
its own HTTP connection. The actual number of parallel connections is tweakable.
[0055] In high-latency scenarios, this reduces the "average latency" per I / O request since
a number of I / O request will wait for the response in parallel.
[0056] Traditionally, an I / O request for a data file is handled through the standardized
open / read / write / close paradigm. The HTTP protocol hadn't been designed with
this paradigm in mind, making it difficult to implement some common I / O concepts
over HTTP in existing game engines. The virtual file system proposed herein provides
the following: replacing traditional file I / O with a highly efficient, fully transparent
implementation which works over HTTP and standard HTTP servers to a point where the
online client can switch between HTTP I / O and "traditional" disk-based I / O without
changing a single line of code.
[0057] The features disclosed in this specification, the figures and / or the claims may
be material for the realization of the invention in its various embodiments, taken
in isolation or in various combinations thereof.
1. In an online game system, a method comprising:
- providing a plurality of data files in a file directory of a file system,
- processing encoded file system information by encoding the plurality of data files
and file directory information,
- storing the encoded file system information in a central memory device accessible
by a plurality of client devices, and
- performing an online session in one of the plurality of client devices, comprising
steps of:
- receiving a request for a data file of the plurality of data files, the request
comprising request information identifying the data file,
- receiving at least part of the encoded information from the central memory device
in a local memory device assigned to the client device,
- determining whether the data file requested is available in the local memory device,
comprising a step of comparing the request information to the encoded information
received in the local memory device, and
- if it is determined that the data file is not available in the local memory device,
loading the data file from the central memory device into the local memory device.
2. Method according to claim 1, wherein the step of processing the encoded file system
information, for each data file of the plurality of data files, further comprises
steps of
- compressing the data file, and
- processing an encoded value for the compressed data file.
3. Method according to claim 2, wherein the file directory is provided with a plurality
of subdirectories and wherein the step of processing the encoded file system information,
for each subdirectory of the plurality of subdirectories, further comprises steps
of
- processing a subdirectory content file comprising the encoded value of each data
file provided in the subdirectory,
- compressing the subdirectory content file, and
- processing an encoded value for the subdirectory content file.
4. Method according to claim 3, wherein the step of processing the encoded file system
information further comprises steps of
- for each subdirectory of the plurality of subdirectories, processing a directory
content file comprising the encoded value processed for the subdirectory content files,
- for each subdirectory of the plurality of subdirectories, compressing the directory
content file, and
- providing a root directory key by processing an encoded value of the compressed
directory content file.
5. Method according to at least one of the claims 2 to 4, wherein the step of receiving
at least part of the encoded information comprises a step of receiving, in the local
memory device, at least one of the following:
- the encoded value for one or all data files,
- the encoded value for one or all subdirectory content files, and
- the root directory key.
6. Method according to at least one of the preceding claims, wherein the step of receiving
the request for the data file comprises steps of
- receiving data file name information for the data file, and
- receiving data file directory path information indicating a directory path assigned
to the data file in the file directory.
7. Method according to claims 2 and 6, wherein the step of determining whether the data
file requested is available in the local memory device comprises a step of determining
the encoded value for the data file requested from the encoded information by comparing
at least one of the data file name information and the data file directory path information
to the encoded information.
8. Method according to at least one of the preceding claims, wherein the step of loading
the data file from the central memory device, in the client device, comprises steps
of
- receiving the data file,
- processing a locally processed encoded value of the data file, and
- storing the data file and the locally processed encoded value in the local memory
device.
9. Method according to claims 7 and 8, further comprising a step of comparing the encoded
value determined to the locally processed encoded value.
10. An online game system, comprising:
- a plurality of client devices,
- a file system,
- a file directory provided in the file system, the file directory comprising a plurality
of data files,
- a processor for processing encoded file system information by encoding the plurality
of data files and file directory information, and
- a central memory device for storing the encoded file system information, the central
memory device being accessible by the plurality of client devices,
wherein the client devices are configured to perform an online session, comprising
steps of:
- receiving a request for a data file of the plurality of data files, the request
comprising request information identifying the data file,
- receiving at least part of the encoded information from the central memory device
in a local memory device assigned to the client device,
- determining whether the data file requested is available in the local memory device,
comprising a step of comparing the request information to the encoded information
received in the local memory device, and
- if it is determined that the data file is not available in the local memory device,
loading the data file from the central memory device into the local memory device.
Amended claims in accordance with Rule 137(2) EPC.
1. A method, comprising:
- providing a plurality of data files in a file directory of a file system,
- processing encoded file system information by encoding the plurality of data files
and file directory information,
- storing the encoded file system information in a central memory device (3) accessible
by a plurality of client devices (4.1, ..., 4.n),
- loading at least part of the encoded information into a local memory (5.1) device
assigned to one of the plurality of client devices (4.1, ..., 4.n), and
- performing an online session in the client device (4.1), comprising steps of:
- receiving a request for a data file of the plurality of data files, the request
comprising request information identifying the data file,
- determining whether the data file requested is available in the local memory device
(5.1), comprising a step of comparing the request information to the encoded information
received in the local memory device (5.1), and
- if it is determined that the data file is not available in the local memory device
(5.1), loading the data file from the central memory (3) device into the local memory
device,
characterized by
- loading at least part of the encoded information pro-actively into a local memory
(5.1),
- performing a pre-processing procedure during a build-up process of a virtual file
system, the pre-processing procedure comprising said processing encoded file system
information, said storing the encoded file system information in the central memory
device (3), and said loading at least part of the encoded information into the local
memory device (5.1), and
- the method being used as an online game system.
2. Method according to claim 1, wherein the step of processing the encoded file system
information, for each data file of the plurality of data files, further comprises
steps of
- compressing the data file, and
- processing an encoded value for the compressed data file.
3. Method according to claim 2, wherein the file directory is provided with a plurality
of subdirectories and wherein the step of processing the encoded file system information,
for each subdirectory of the plurality of subdirectories, further comprises steps
of
- processing a subdirectory content file comprising the encoded value of each data
file provided in the subdirectory,
- compressing the subdirectory content file, and
- processing an encoded value for the subdirectory content file.
4. Method according to claim 3, wherein the step of processing the encoded file system
information further comprises steps of
- for each subdirectory of the plurality of subdirectories, processing a directory
content file comprising the encoded value processed for the subdirectory content files,
- for each subdirectory of the plurality of subdirectories, compressing the directory
content file, and
- providing a root directory key by processing an encoded value of the compressed
directory content file.
5. Method according to at least one of the claims 2 to 4, wherein the step of receiving
at least part of the encoded information comprises a step of receiving, in the local
memory device (5.1), at least one of the following:
- the encoded value for one or all data files,
- the encoded value for one or all subdirectory content files, and
- the root directory key.
6. Method according to at least one of the preceding claims, wherein the step of receiving
the request for the data file comprises steps of
- receiving data file name information for the data file, and
- receiving data file directory path information indicating a directory path assigned
to the data file in the file directory.
7. Method according to claims 2 and 6, wherein the step of determining whether the data
file requested is available in the local memory device (5.1) comprises a step of determining
the encoded value for the data file requested from the encoded information by comparing
at least one of the data file name information and the data file directory path information
to the encoded information.
8. Method according to at least one of the preceding claims, wherein the step of loading
the data file from the central memory device, in the client device, comprises steps
of
- receiving the data file,
- processing a locally processed encoded value of the data file, and
- storing the data file and the locally processed encoded value in the local memory
device (5.1).
9. Method according to claims 7 and 8, further comprising a step of comparing the encoded
value determined to the locally processed encoded value.
10. A system, comprising:
- a plurality of client devices (4.1, ..., 4.n),
- a file system,
- a file directory provided in the file system, the file directory comprising a plurality
of data files,
- a processor for processing encoded file system information by encoding the plurality
of data files and file directory information, and
- a central memory device (3) for storing the encoded file system information, the
central memory (3) device being accessible by the plurality of client devices (4.1,
..., 4.n),
wherein the client devices (4.1, ..., 4.n) are configured to perform an online session,
comprising steps of:
- receiving a request for a data file of the plurality of data files, the request
comprising request information identifying the data file,
- determining whether the data file requested is available in a local memory device
(5.1) assigned to the client device (4.1), comprising a step of comparing the request
information to the encoded information received in the local memory device, and
- if it is determined that the data file is not available in the local memory device,
loading the data file from the central memory device (3) into the local memory device
(5.1),
characterized by the system being provided as an online game system and implementing a pre-processing
procedure during a build-up process of a virtual file system, the pre-processing procedure
comprising said processing encoded file system information, said storing the encoded
file system information in the central memory device (3), and pro-actively loading
at least part of the encoded information from the central memory device (3) in the
local memory device (5.1) assigned to the client device (4.1).