MESSAGE SYSTEM
The present invention relates to a message system. Preferred embodiments of the invention relate to a communication and/or an amusement system. Particularly, but not exclusively, aspects of the invention relate to a system that enables people to communicate, interact and play games at various sites, interconnected, for example, by a computer network, for example the Internet.
A large amount of traffic handled by the Internet today arises from so-called "chat rooms" in which geographically remote users can exchange text messages and other data in close to real time.
A limitation of conventional chat rooms is that a user must typically access each room by directing their browser to a web page at a specific URL. The page contains a first portion that generates the framework within which the chat room is displayed and an active portion that generates content on the fly to reflect messages that are posted to the chat room. This presents a limitation in the way in which a user can interact with the chat room and its other participants. Moreover, when a user wishes to participate in an alternative chat room, they must direct their browser to an alternative location which means that they either loose contact with the first chat room, or they must open a new browser instance, which may be disadvantageous if their computer has limited resources or their display is small. This also imposes restrictions upon the control that a service provider can exercise over the framework, thereby limiting the range of content that can be presented.
A first aim of this invention is to provide a system for relaying messages between a plurality of users that offers greater versatility than does a conventional chat room.
According to a first aspect, the invention provides a system for relaying messages between a plurality of users which system includes a message server and a plurality of message clients that can exchange messages with the message server.
A particular advantage of this system is that it separates that the clients communicate directly with the server, thereby removing the need to use a web browser to retrieve a page located at a fixed URL.
In preferred embodiments, each client can cooperate with a host application (most
particularly, a web browser) to generate a display for a user.
For example, the client may be a plug-in or an object (an ActiveX control) that can be used by a web browser to generate part of a display of a web page. This allows a service provider to build a web page that includes a framework of their choice, while message processing and display are handled by the client. It will also be understood that any number of web pages at different URLs can access the message content, whereby the framework content is generated independently of the message content.
Alternatively, the client may execute on a games console, a digital television receiver, or on many other types of computer hardware that is capable of displaying a graphical image to a user.
As a further alternative, the client may be embedded in an application such as game software. This permits information (messages) to be exchanged between applications being executed by users over a network system, for example, in order that multiple players can contribute to a single game. In particular, the game software may allow a user to participate in a multi-player game.
In the context of this specification, a message may be constituted by any discrete unit of data to be transferred form one computer system to another. In particular, a message may contain a portion of text that is to be displayed as a user's utterance in a chat room; it may also contain an instruction to one or more components of a computer system, for example, to perform an action, generate a portion of a display, execute an application, for example a game, amongst many other possibilities, but the term is not restricted to these examples.
The first aspect of the invention further provides a message server adapted to exchange messages with a plurality of message clients, and further provides a message client adapted to exchange messages with the message server. Preferably, the message client is adapted to be embedded in a host application.
The first aspect of the invention further provides a method of exchanging messages, the method including sending a message from a first message client, receiving the message at a message server and sending a message from the message server to a further message client.
In a preferred embodiment, the system is adapted to present a display in which each participating user is represented by a graphical entity. The graphical entity may be representative of a person (such a graphical entity being referred to in examples herein as an "avatar"). Preferably the user can choose the graphical entity by which he is to be represented in the display. Thus preferably the system is adapted to present the user with a choice of avatars. Preferably the choice presented varies in dependence upon the URL that a user has referenced in order to access the system. Thus the system can, by offering a list of available avatars, guide the user to choose an avatar which is representative of the URL. For example, if a user has entered a football chat room from the Manchester United website, he is encouraged to use an avatar having the Manchester United kit. Other users who have entered through different team sites are encouraged to choose to be shown in the chat room in different team kits.
A further aspect of the invention provides a system for displaying a graphical representation, in which the system is adapted to display a graphical representation according to the user's entry route into the system.
Features of the graphical representation may vary depending on the user's entry route into the system. For example, the representation may display advertising areas, and the user may see adverts which depend on their entry route, for example which relate to the host web site. Other users who have taken a different route may see different adverts. Further preferred features are discussed below in respect of method aspects of the invention.
In order to associate each user's message with that user, the message may be displayed as text close to the graphical entity that represents the user. Particularly where the graphical entity is an avatar, the text may be displayed as a speech bubble.
In preferred embodiments, the system further presents a display that represents the chat room as a virtual space within which the user can interact with other users of the chat room. Preferably, the space represented may be a three-dimensional space, displayed, for example, in an isometric view. In systems that represent a user as an avatar, such systems present a representation of a user existing within a~virtual environment.
This feature is of particular importance and is provided independently. Thus a further aspect of the invention provides a system for displaying a graphical representation of a user in a chat room, in which the system is adapted to display the chatroom as a three-dimensional space, and/or in an isometric view.
Preferably, the user can move the graphical representation around relative to the room,, and interact with objects and other users in the room. For example, the room may include a door to another chatroom.
A system embodying the invention may include multiple chat rooms, and a user may mover from one chatroom to another. In the embodiments described, the user can only participate in one chatroom at a time. In such embodiments, the system may present a graphical display that allows a user to select a chat room in which to participate. Such a graphical display may represent a space (preferably a three- dimensional space) through which a graphical representation of a user may move to select a chat room in which to participate.
In a typical system embodying the invention, the message clients and message server exchange control messages to initiate action on a computer in the system. Such control messages may include messages sent to the client to cause the client to change its display, or messages sent to the server to inform the server of actions carried out by the user.
In preferred embodiments, a control message can be sent to the client in order to cause the client to launch an application. For example, the application may be a game.
This feature is of particular importance and is provided separately. Thus a further aspect of the invention provides a message system comprising a message server and a client server, in which the message client is adapted to launch an application.
In preferred embodiments, the message client is embedded in an application or device of a user and the message client is adapted to launch an application from the user's device. The message client may be adapted to launch a game from a games console, a set top box, or a computer, for example.
The game may be a multiplatform game having a core of software comprising the
game and further software which allows the game to run on any of a number of different platforms. This feature may be provided independently.
Advantageously, a system embodying the invention comprises a data store that stores persistent data relating to users of the system. The data store may include data specifying the user's ability to access the system. It may also store information relating to a user's past use of the system. As a particular example, the data store may include data relating to a user's past performance in playing games in association with the system.
A system embodying the invention may comprise a plurality of message servers. Servers can be added as needed to handle increasing content and traffic in the system. Such a system typically includes a message router for directing a message to the message server that can handle the message. Advantageously, the message router operates independently of the message client. This can give a user the impression that all messages are handles by a unified system, effectively disguising the presence of multiple servers. The servers may be at geographically diverse locations. This can help to minimise the amount of network traffic that must be conveyed over long distances.
Also provided by the invention is a message system comprising a plurality of servers and a message router for directing a message to a server.
Preferably, the message router is adapted to communicate with a message client.
Also provided by an aspect of the invention is a method of exchanging messages, the method including sending a message from a first message client, receiving the message at a message server and sending a message from the message server to a further message client.
Also provided is a method of operating a chatroom, the method including providing a user with a message client, receiving a message from the message client, and sending a message to a further user in response to the message from the message client. By operating the chatroom in this way, it is possible for the user to communicate with the message server and with other users communicating with the message server, without going to a URL for the chatroom. The further user may be communicating with the message server using a message client, or may be at a URL
for the message server.
The invention further provides a method of sending messages to a user comprising sending a message from a message server to a message client. In preferred embodiments of the invention, the user is in communication with a first server. Preferably the use of the message client does not interfere with the user's communication with the first server.
Preferably, the method further includes providing the user with a message client.
From another aspect, the invention provides a method of relaying messages between a plurality of computer users comprising downloading first code from a first server; and downloading message code from a message server. Preferably the first code comprises framework code and/or the message code comprises message text. Preferably the method further comprises displaying the framework code and/or the message text. This method separates the source of the framework from the source of the messages, thereby increasing the control that a service provider can exercise over the content of the display presented to the user.
Advantageously, in methods embodying the invention, text is downloaded and displayed from a plurality of message servers. This is in contrast to prior art chat rooms in which the message content and frame content cannot be provided independently.
The invention provides a method of exchanging messages in a system comprising a plurality of servers and a message router, the method comprising sending a message from the message router to a first server, sending a routing instruction to the message router, and sending a further message from the message router to a second server.
Typically, the method is performed by a web browser executing on a user's computer. In such embodiments, the first server is typically a web server. Moreover, in such embodiments, the framework code typically includes a document for display by the browser encoded in a mark-up language. Such a document may also include other code such as script code, images, and other items that can be displayed.
The task of downloading and displaying messages is preferably handled by client software executing on a user's computer. Most typically, in embodiments according
to the last-preceding paragraph, the client executes within the context of the web browser. As such, the client may be embodied in a plug-in or an ActiveX object. The method may include an initial step of downloading the client from a remote server such as a web server. This enables the method to be executed in a manner that is largely transparent to a user.
In typical embodiments, the method further includes sending a user's message to a message server. Typically, this task is handled by client software, and most typically by the client software defined in the last-preceding paragraph.
In preferred embodiments of this invention, the message text is displayed in association with a graphical object associated with a user. The graphical entity may represent a person (such a graphical entity being referred to as an "avatar"). The system preferably allows the user to choose an avatar. It is envisaged that the entity displayed may be varied in dependence upon a network address from which the framework code has been retrieved.
The invention provides a method of displaying a user in a chat room, comprising displaying a chatroom as a three-dimensional space and/or in an isometric view.
The invention also provides a method of displaying a graphical representation, in which the system is adapted to display the graphical representation according to the user's entry route into the system.
The framework code may be varied in dependence upon the user's activities. For example, it may be varied in dependence upon the content of messages sent by or received by the user. It may be varied in dependence upon the destination of messages sent by the user or the source of messages received by the user. This can enable the method to generate a framework display that is particularly targeted to the likely interests and requirements of the user.
A method embodying these aspects of the invention is typically performed by a system embodying the first aspect of the invention.
The invention also provides a method of launching an application, the method comprising sending an instruction from a message server to instruct a message client to launch an application.
Also provided by the invention is a message client being a component of a system described herein or for use in a method described herein.
The invention provides a message client adapted to send messages to and receive from a message server. Preferably, the message client is adapted to cooperate with a host application, and is preferably adapted to generate a display, preferably in dependence on the host application. Preferably the message client is adapted to generate a graphical representation according to a user's method of access to the message client, preferably the message client is adapted to send information to the message server regarding the user, for example details of the host application. Preferably the message client is adapted to launch an application.
The invention further provides a host application including a message client as described herein.
The invention also provides a message server being a component of the system described herein or adapted for use in a method described herein.
The invention further provides a message server adapted to exchange messages with a message client; preferably the message server is adapted to send a message to a message client to launch an application. Preferably the message server is adapted to communicate with the message client as described herein.
The invention also provides a computer program and a computer program product for carrying out any of the methods described herein and/or for embodying any of the apparatus features described herein, and a computer readable medium having stored thereon a program for carrying out any of the methods described herein and/or for embodying any of the apparatus features described herein.
The invention also provides a signal embodying a computer program for carrying out any of the methods described herein and/or for embodying any of the apparatus features described herein, a method of transmitting such a signal, and a computer product having an operating system which supports a computer program for carrying out any of the methods described herein and/or for embodying any of the apparatus features described herein.
The invention provides a computer adapted to carry out a method described herein
and a computer program for carrying out a method described herein.
Apparatus features may be applied to method features and vice versa. Any feature of one aspect of the invention may be applied to other aspects of the invention, in any appropriate combination.
The invention also provides a method substantially as described herein with reference to Figures 1 to 3 of the accompanying drawings, and apparatus substantially as described herein with reference to and as illustrated in the accompanying drawings.
Preferred features of the present invention will now be described, purely by way of example, with reference to the accompanying drawings, in which:
Figure 1 shows an overview of a system of a first embodiment of the invention;
Figure 2 shows a typical display generated by a client within a web browser; and
Figure 3 illustrates a zone generated by a system embodying the invention being accessed by a plurality of users through various web sites.
System Architecture
The present embodiment comprises three main components: a client 10 (that executes on each user's computer), a server 12 and a data store 14. Each client 10 and the server 12 exchange data over a switched network, most typically, the Internet 16. The server 12 is connected to the Internet by a plurality of decoder/routers 20.
The client 10 serves as a graphic engine for generating a display for the user. The client 10 presents a view of the virtual space maintained by the system to a user, showing movement, chat and interactions between the user and the virtual environment. All instructions regarding construction of the view are sent as control messages from the server to the client.
The client also handles the encrypted protocol used to securely transfer data over the network 16. In order to speed up operation of the client 10, the client keeps local copies of data in a cache, where possible.
The server 12 maintains the state of each chat room and user on the system (for
example, where the user is in the virtual space, what the user is saying, whether they are playing a game) as well as storing and retrieving data and media assets.
The server and associated components has a dynamically scaling architecture and is composed of multiple instances of four process types, distributed across multiple physical machines. The server components include:
• Decoders/Routers 20 that decode and route incoming and outgoing data to and from the remote clients using the encrypted protocol and pass data to the system;
• Application servers that handle the state of each of the multiple rooms that they host and the users inside those rooms;
• Persistence Servers that store and retrieve user, landscape and usage data from the data store 14; and
• Media Servers that manage multimedia content required by the clients such as floor tiles, avatars, sound files etc.
The data store is used to ensure data persistence. The data store is made up of a distributed network of relational databases.
Data Flow
A client 10 connects to the server 12 through the switched network 16 via a local director and the decoder /routers 20. The decoder/routers 20 tasks are primarily to encrypt/decrypt, compress/decompress and route messages. The decoder/routers 20, after deciphering the message, will hand the message to an application server 12. The application server 12 maintains the state for all the rooms that it hosts. The application server 12 in turn has a connection to the data store 14. The data store 14 is used to ensure data persistence. The application server 12 carries out the necessary tasks to fulfill the request for the client and sends it to the decoder/routers 20. The decoder/routers 20 then compresses and encrypts the message and sends it to the client 10. Data is exchanged between the client 10 and the server 12 as messages, encoded in Binary Protocol.
It will be noted that the decoder/routers 20 direct messages as they are passed to and from the server 12. As additional content is handled by the system, it is possible to
provide additional servers to manage that content, the decoder/routers 20 serving to channel messages to and from the appropriate server. This function of the decoder/routers 20 gives a user the impression of an integrated system; the separate servers need not be apparent. Moreover, the servers can be in geographically diverse locations. If it is discovered that the system is particularly heavily loaded with traffic that originates from a particular geographical area, it is possible to install additional servers in that area to handle such local traffic, thereby reducing the total amount of data that must be transmitted over long distances.
Embedding a client in a web page
A client 10 can be embedded in a web page using the standard syntax for using an ActiveX component. The client 10 can be served from any standard web server. Once running within the web page, the client 10 will communicate with the servers 12 which supply the client 10 with the data that it needs to generate the user display, including for example zone landscape and user data. The client 10 runs on port 80 in order that it can operate across firewall systems and avoid any incompatibility problems.
In examples, the client requires a screen area of 525 pixels by 295 pixels and has a file size of about 500k. In the present example, it is adapted to run on Internet Explorer 4+ on Windows95 + .
In embodiments of the invention, the client is served from a website that is powered by content management systems run by the company running the lobby system, and content on the page in which the client is embedded can be changed on the fly, triggered by events in the zone space. For example, if a user enters a football game zone, the embedding web page could change to show football-related news, features or merchandise.
Embedding a client in a game executable
To embed a client within a game executable requires wrapper code in the same language as the game, typically C or C+ + . The client is written with a strong focus on ease of integration for third party developers.
Functionality
A system embodying the invention can be envisaged as a providing a zone comprising an independent 3D virtual environment where people can meet either simply to chat, or arrange online games. In embodiments of the invention, the zone includes a game launching capability.
A system embodying the invention can implement a virtual space that is made up of multiple, interconnected zones or chat rooms. The virtual space environment can be themed.
The client for use in embodiments of the invention is designed as a hardware and operating system agnostic "entrance" into virtual space. It is a 'thin client' which can be embedded in multiple applications simultaneously, typically in web sites and game executables running on PCS, but also digital set top boxes and other devices connected to the Internet.
A visitor to the virtual space is represented on a user's display as a customisable 3D avatar 100, shown in Figures 2 and 3. Visitors can move around, interact with objects in the space, "speak" (represented by speech bubbles 102) to other visitors by typing the text in a designated area 104, invite them to join a zone, challenge them at a particular game, and launch games.
The display of the zone itself is made up of a main floor surface 110, different furniture 112 and walls 114, link points 116 to other zones and launch points for game executables.
To customize a zone display, the system provides a selection of default objects with which administrators can create zones. However, the system also allows floors, walls, objects, and avatars to be completely customized or recreated by using standard graphics packages, and imported through a suitable authoring tool to generate bespoke environments. For example a football related zone (see Figure 3) might have a floor 210 that looks like a pitch, and avatars 200 dressed up in different football club colours. A Tomb Raider (r.t.m) zone may have Lara Croft (r.t.m) avatars and use textures from the game. Special areas may be provided within zones for sponsors' material to be displayed. Such areas may include floor areas, walls and advertising hoardings 212.
It is also possible to vary the appearance of one or more aspects of the display in dependence upon the web location that a user accessed in order to enter the space. In the football example described above, a player might be encouraged to choose an avatar which includes the club colours that correspond to a web site run by a football club that was accessed by the user in order to enter the virtual space. These alternatives are shown in the inserts to Figure 3.
It is also possible to make an object in the zone link to another zone. This can create gateways between zones.
General Features
For the purposes of this description, it is assumed that the visitor is entering the virtual space though a client embedded in a web browser running on a PC.
Before using the system, the visitor must first register. E-mail address and name are used to uniquely identify each user. Users can adopt real names should they choose and more than one user with the same real name can exist in the system at once (i.e. there can be more than one 'John Smith', but not with the same e-mail address).
Before a user can enter the virtual space he or she must to download a browser plug-in that will enable the virtual space to be represented in a display generated by the browser.
The user then logs on to the system. This proceeds as will now be described.
Client sends a logon message to the server at a predetermined Internet URL. The message is directed to the nearest geographically located decoder/router. The decoder/router receives the message and checks the header of the message to decide which room the message is being sent to. The decoder/router then finds the message queue for the room and sends the message to the message queue with the decoder/router's identifier prepended to the message.
The server 20 reads the message from its message queue. It stores the identifier of the decoder/router that sent the message. It then reads the identity of the user who is trying to log on. The user's id is made up of their home server and a unique identifier. The server accesses the session manager at the home server to verify the logon data from the user. If all the logon data is correct the server 12 returns a
session identifier (SID), otherwise an error code is returned.
The decoder/router 20 returns the SID to the client 10. This SID will then be used for all future communications between the client 10 and the server 12.
Users can enter the virtual space from any web site or game executable that hosts an entrance to that virtual space. This means that the virtual space can appear in many different web sites at the same time. The implication is that a community will gather by subject matter regardless of their point of entry. Moreover, entrances to virtual
„space can be placed on any device that connects a user to the Internet.
The system supports all languages that are supported by the PC operating system, providing the visitors with a wide array of accents and symbols (according to the keyboard used). The client's menus can also be localised.
As part of the logon process, a group identifier (GID) is sent in a logon message, this is not part of the user logon details but instead identifies the client's launch point. The GID is used to control access to other rooms and to trace logon data. Therefore, a user logging onto the system from two different launch sites will have two separate GIDs.
The system checks four times per second whether a user is still on-line. At the same time the client transmits, through a secure protocol, to all the other current users details of his or her movements within the space, changes in the virtual landscape etc.
A user can move in the virtual space from one room to another. The system must keep track of the user's movements in order that messages for the user are routed correctly. This following describes the messages and responses that take place when a user wishes to move from one room to another. Assume that the user's current location is referred to as LON01_1000 and their desired location as SFO01_2345.
The message sender's client sends a message to a predetermined Internet URL. The decoder /router 20 receives the message and determines that it is a move message.
The decoder/router 20 finds the message queue for the room SFO01_2345 and sends the message to the message queue with the decoder/router's identifier prepended to the message.
The server 12 reads the message from its message queue and stores the identifier of the decoder/router that send the message. It then checks to see if the user can log into the desired location SFO01_2345. If the user is allowed to log into the room then the server 12 will access the session manager at the user's home server, informing it of the new room - SFO01_2345 - for the user and that the user should now be considered as in between rooms (this will ensure that any messages are not sent to the user whilst in transition).
The decoder/router 20 can now move the user from the room LON01_1000. The decoder/router finds the message queue for the room LON01_1000 and sends the message to the message queue with the decoder/router's identifier prepended to the message. The server 12 reads the message from its message queue and stores the identifier of the decoder/router that send the message. The server 12 accesses the session manager at the user's home server, informing it that the user is released from the room - LON01_1000. The session manager will now treat the user as residing in room SFO01_2345 .
In examples of the invention, the room LON01_1000 and the room SFO01_2345 may be located on different servers, which may be located remote from each other. For example the room LON01_1000 may be a chat room about Manchester United and may be located on a server in the UK. SFO01 2345 may be a chat room about the Dallas Cowboys and may be located on a server in the US. The servers may be linked in a private network. Thus the user may effectively move from one server to another by moving from room to room; the handover of servers can be invisible to the user.
Features of virtual space from the user's point of view
Themes: each space is topic related. For example, a virtual space may relate to football, cinema, and so forth, essentially without restriction. Within each virtual space there is almost no limit to the number of possible zones, each of which can be intended to deal with a specific subject within the theme set by the virtual space: for example, there may be a zone that relates to a specific football team in the football space, and a zone for a popular film within the cinema space.
The zones are represented to a user in an isometric 3D view which can be presented
from any of four angles. This view is shown in Figures 2 and 3.
Once in a zone, the user's avatar occupies the centre of the 3D representation of the zone, and can move about the zone by using the keyboard up/down/left/right arrows or the mouse. The visitor always stays in the centre of the screen unless the 'camera' (that is, the hypothetical position from which the view of the zone is generated) is unlocked. By unlocking and moving the camera, users can see into other areas of a zone without their avatar moving.
Roaming restrictions can be placed on a zone to restrict a user's freedom to move through the virtual space. For example, such restrictions may prevent a user from moving from one zone to another. Users may also create private zones and restrict entrance into the zone to those whom they have invited. Users can also save a zone, or create a shortcut to an existing one.
Each user has a "buddy list" that lists those other users with which he or she wishes to maintain contact. The buddy list enables to system to keeps the user informed as to which of those other users is currently on-line, in which location, and if he or she is playing a game. Users can also send text messages to people on their buddy list; if the recipient is on-line, then the message will be delivered immediately, otherwise it will be stored in a mailbox until the recipient's next login
A user can send private messages to any other user that appears in their buddy list. To achieve this, the message sender's client 10 sends a message to a predetermined Internet URL. The decoder/router 20 receives the message and checks the header of the message to decide which chat room the sender us sending the message from. The decoder/router 20 finds the message queue for the chat room and sends the message to the message queue with the decoder/router's identifier prepended to the message.
The server 12 reads the message from its message queue. It stores the identifier of the decoder/router 20 that send the message. It then reads the identity (UID) of the intended recipient of the message. Each recipient's UID is made up of their home server and a unique identifier. The core server accesses the session manager at the home server and sends the message and the UID. The session manager is always aware of who is logged onto the system at any time. If the user is not logged on, the message will be stored in the data store 14 where it can be read when the user next
logs on. Otherwise, if the user is logged on, then the session manager stores the message in the user's message queue.
An acknowledgement is then sent back to the sender's client 10.
The client belonging to the intended recipient of the message (whether they are logged in or not) will at some point send a heartbeat message (see below) to its decoder/router 20. The decoder/router 20 checks the header of the heartbeat message to decide which chat room the sender us sending the message from. The decoder/router 20 finds the message queue for the room and sends the message to the message queue with the decoder/router's identifier prepended to the message.
The server 12 reads the message from its message queue. It stores the identifier of the decoder/router that send the message. It then carries out all the processing that is required to update the client 10 of the changes in the room since the last heartbeat, as part of these updates it will check the message flag, and if the flag is set it will retrieve the messages from the queue and include them in its response to the heartbeat.
Game-specific features of the system
Users can initiate a system-compliant single-player or multi-player game from within a zone. A game might take place within the browser window that is displaying a representation of the zone, (this being referred to as a "browser game"), it might take place in a new browser window (especially where a large screen area is required) or it might be run as a separate executable trom the visitor's hard disk (typically a boxed game bought from a retailer).
When a player attempts to initiate a game, the system checks communication latency time between players and advise each as to whether a game is playable. Using an on- screen indicator, such as a colour coded bar, the user is informed as to the speed of their connection to the system and can decide whether to play the game or not. (A puzzle game, for instance, requires lower connection speeds than an action game.) When a game is finished, the system takes players back to the zone through where the game was initiated.
Player performance and score information are stored in the system's data store
alongside the player details at the end of each game.
In order that players or teams can be ranked, and appropriate performance ladders generated, compliant games are able to pass to the system player performance information such as winner/ second place/third place etc. , time to complete game, level, lap etc. , points won in a game, bonus points collected in a game, and so forth.
Players' high scores, and teams' performance are ranked by the system and maintained within the data store. Ranks can be aggregated so that "best of" groups can be produced (e.g. best of sports, etc.) Players will have the opportunity to challenge the person or team above them in the rankings, or accept a challenge from a person or team below them in the rankings.
According to a ranking or ladder system, the system will check whether all players have right to play a game, for example whether they have sufficient ranking or points to play or whether they have sufficient credit. This is effectively a type of roaming restriction: for example, only those users that have a minimum rating will be allowed to participate to a particular game.
The client if operative to check that a user has the same version of a compliant game and give the user the option to download and upgrade to the latest version available, by directing them to the specific web sites.
Financial systems
The system supports a number of financial models which can be used by the game developer to derive income for their game. There may be a number of possible ways for the user to spend money on game play through the use of, for example, points, pounds or beenz which in turn can be linked to the user's game performance.
System Reporting
The system generates periodic reports, for example, on a monthly basis, and provides information on the movement of visitors through the virtual space as well as revenue generated by those visitors. The reports may include: basic system usage - keeps track as to how many unique visitors per month have accessed a specific one and through which web sites; sponsorship - using data gathered from the basic system usage, provides a detailed analysis of how income pertaining to specific zones will be
allocated between web site(s) hosting entrances to those zones, the owner of the zones and the game developer's; game length - gives the average length of time compliant games have been played; frequency - gives the average frequency of play with compliant games; amongst others.
Architecture of the data store
In this embodiment, the data store 14 is Oracleδi running on a Sun Solaris platform. The data store must be able to handle numerous concurrent connections, implement transaction locking, implement synchronisation and preferably use the SQL Programming Language.
The data store has two main functional areas: the Persistent Server Interface and the application server data base (ASDB).
The Persistent Server Interface is responsible for entering data into the system and allowing it to be retrieved by web pages via database calls. While the Persistent Server Interface has no control over the design of the web page, it provides customisable display functionality for data presentation.
The ASDB is responsible for storing and retrieving data relating to the virtual space. Space data includes user details, game details, lobby/chat details, ladders, rankings, messages, and logs. Where there are multiple databases, the databases will synchronise on request. Data and actions are entered via ASDB, to ensure that the ASDB has up-to-date state information.
The key elements of interaction between the Persistent Server Interface and the ASDB are as follows:
At system startup:
♦ retrieve lobby /chat/game parameters.
While the system is running:
♦ Create/Delete/Configure/Close permanent public/private chat rooms. Private chat rooms are stored on the user's profile.
♦ Create/Delete/Configure/Close permanent public/private lobbies. Private
lobbies are stored on the user's profile.
♦ Create/Delete/Compose messages. Messages are stored in system and user profiles.
♦ Banning a user from the system. Bans are stored against the database, an attribute of the chat/lobby.
♦ Changing any details of a user's profile. Eg. Address, password, email, password, alias, buddies, games installed etc.
♦ Database updated when a user leaves the system - strong people profiling.
♦ User Registration - Creating a new profile.
♦ User Logon - Retrieving user profile, including buddy list.
Client/server interaction
In this embodiment, the clients communicate with the server by exchanging data encoded in Binary Protocol. Data sent by the client to the server indicates the user's actions and movements to the server. This data is processed by the server, which then sends response data back to the client. The client interprets the response data, and updates its display as necessary. Likewise, the server sends data to the client to instruct it to update its display when other users of the system perform an action that must be reflected in the client's display.
In any or all of the aforementioned, certain features of the present invention have been implemented using computer software. However, it will of course be clear to the skilled man that any of these features may be implemented using hardware or a combination of hardware and software. Furthermore, it will be readily understood that the functions performed by the hardware, the computer software, and such like are performed on or using electrical and like signals.
Features which relate to the storage of information may be implemented by suitable memory locations or stores. Features which relate to the processing of information may be implemented by a suitable processor or control means, either in software or in hardware or in a combination of the two.
In any or all of the aforementioned, the invention may be embodied in any, some or all of the following forms: it may be embodied in a method of operating a computer system; it may be embodied in the computer system itself; it may be embodied in a computer system when programmed with or adapted or arranged to execute the method of operating that system; and/or it may be embodied in a computer-readable storage medium having a program recorded thereon which is adapted to operate according to the method of operating the system.
As used herein throughout the term "computer system" may be interchanged for "computer", "system", "equipment", "apparatus", "machine" and like terms.
It will be understood that the present invention has been described above purely by way of example, and modifications of detail can be made within the scope of the invention.
Each feature disclosed in the description, and (where appropriate) the claims and drawings may be provided independently or in any appropriate combination.