U.S. patent application number 11/548904 was filed with the patent office on 2008-04-17 for virtual world event notification from a persistent world game server in a logically partitioned game console.
Invention is credited to Maximino Aguilar, Charles R. Johns, Mark R. Nutter.
Application Number | 20080090659 11/548904 |
Document ID | / |
Family ID | 39303681 |
Filed Date | 2008-04-17 |
United States Patent
Application |
20080090659 |
Kind Code |
A1 |
Aguilar; Maximino ; et
al. |
April 17, 2008 |
Virtual world event notification from a persistent world game
server in a logically partitioned game console
Abstract
A mechanism is provided for generating event notifications for
offline characters from within a persistent world online game. A
player agent for an offline player runs in a secondary partition in
a video game console while a primary application runs in a main
partition. The offline player agent includes an event monitor that
monitors for events that occur in a persistent virtual world
maintained by a game server. When a game event occurs that triggers
an offline player rule, the player agent composes an event
notification message and presents the message to the offline player
through speech or through an interface within the primary
application. Event notification messages may include images, voice
(text-to-speech), sound, or video.
Inventors: |
Aguilar; Maximino;
(Georgetown, TX) ; Johns; Charles R.; (Austin,
TX) ; Nutter; Mark R.; (Austin, TX) |
Correspondence
Address: |
IBM CORP. (WIP);c/o WALDER INTELLECTUAL PROPERTY LAW, P.C.
P.O. BOX 832745
RICHARDSON
TX
75083
US
|
Family ID: |
39303681 |
Appl. No.: |
11/548904 |
Filed: |
October 12, 2006 |
Current U.S.
Class: |
463/42 |
Current CPC
Class: |
A63F 2300/5533 20130101;
A63F 2300/537 20130101; A63F 2300/575 20130101; A63F 13/85
20140902; A63F 13/12 20130101; A63F 13/352 20140902 |
Class at
Publication: |
463/42 |
International
Class: |
A63F 9/24 20060101
A63F009/24 |
Claims
1. A method for generating event notifications from within a
persistent world game in a logically partitioned video game
console, the method comprising: activating a primary application in
a main partition in the video game console; activating a player
agent in a secondary partition in the video game console for an
offline player, wherein the player agent has an associated set of
offline player rules; monitoring, by the player agent, events
maintained by a game server, wherein the game server observes and
generates game events for a persistent virtual world; responsive to
a given event triggering one or more of the set of offline player
rules, generating a notification event message; and sending the
notification event message from the offline player agent in the
secondary partition to the primary application in the main
partition.
2. The method of claim 1, wherein the primary application is a
video game application.
3. The method of claim 2, wherein the video game application
comprises an event notification interface.
4. The method of claim 1, wherein the video game console comprises
a data processing system, wherein a hypervisor executes within the
data processing system, wherein activating the primary application
in the main partition in the video game console comprises:
initiating, by the hypervisor, the main partition; allocating, by
the hypervisor, resources within the data processing system to the
main partition; and initiating execution of the primary application
in the main partition.
5. The method of claim 4, wherein activating the player agent in
the secondary partition in the video game console comprises:
initiating, by the hypervisor, the secondary partition; allocating,
by the hypervisor, resources within the data processing system to
the secondary partition; and initiating execution of the offline
player agent in the secondary partition.
6. The method of claim 5, wherein the offline player agent sends
the notification event message to the primary application in the
main partition through the hypervisor.
7. The method of claim 4, wherein the data processing system is a
heterogeneous multiple processor system-on-a-chip.
8. The method of claim 1, wherein the main partition and the
secondary partition run different operating systems.
9. A video game console, comprising: a data processing system; and
a hypervisor that executes within the data processing system,
wherein the hypervisor activates a main partition and a secondary
partition in the data processing system; wherein a primary
application executes in the main partition, wherein a player agent
executes in the secondary partition for an offline player, wherein
the player agent has an associated set of offline player rules;
wherein the player agent monitors events maintained by a game
server, wherein the game server observes and generates game events
for a persistent virtual world; wherein responsive to a given event
triggering one or more of the set of offline player rules, the
player agent generates a notification event message and sends the
notification event message from the offline player agent in the
secondary partition to the primary application in the main
partition.
10. The video game console of claim 9, wherein the primary
application is a video game application.
11. The video game console of claim 10, wherein the video game
application comprises an event notification interface.
12. The video game console of claim 9, wherein the hypervisor
allocates resources within the data processing system to the main
partition.
13. The video game console of claim 9, wherein the hypervisor
allocates resources within the data processing system to the
secondary partition.
14. The video game console of claim 13, wherein the offline player
agent sends the notification event message to the primary
application in the main partition through the hypervisor.
15. The video game console of claim 9, wherein the data processing
system is a heterogeneous multiple processor system-on-a-chip.
16. The video game console of claim 9, wherein the main partition
and the secondary partition run different operating systems.
17. A computer program product comprising a computer useable medium
having a computer readable program, wherein the computer readable
program, when executed on a video game console, causes the video
game console to: activate a hypervisor on the video game console;
activate, by the hypervisor, a primary application in a main
partition in the video game console; activate, by the hypervisor, a
player agent in a secondary partition in the video game console for
an offline player, wherein the player agent has an associated set
of offline player rules; wherein the player agent monitors events
maintained by a game server, wherein the game server observes and
generates game events for a persistent virtual world; wherein
responsive to a given event triggering one or more of the set of
offline player rules, the player agent generates a notification
event message and sends the notification event message from the
offline player agent in the secondary partition to the primary
application in the main partition.
18. The computer program product of claim 17, wherein the primary
application is a video game application.
19. The computer program product of claim 17, wherein the
hypervisor allocates resources within the data processing system to
the main partition.
20. The computer program product of claim 17, wherein the
hypervisor allocates resources within the data processing system to
the secondary partition.
Description
BACKGROUND
[0001] 1. Technical Field
[0002] The present application relates generally to an improved
data processing system and method. More specifically, the present
application is directed to a method, apparatus, and program product
for generating virtual world event notifications from within a
persistent world game server in a logically partitioned game
console.
[0003] 2. Description of Related Art
[0004] A massively multiplayer online role playing game (MMORPG) is
an online computer or console game in which a large number of
players interact with one another in a virtual world. As in all
role playing games (RPGs), players assume the role of a character
and take control over most of that character's actions. The virtual
world may be a fantasy setting, a science fiction universe, or the
old west, for example.
[0005] The origin of multiplayer games may trace back to Dungeons
& Dragons.RTM. or even tabletop war games. "Dungeons &
Dragons" is a registered trademark of Wizards of the Coast in the
United States, other countries, or both. The beginning of massively
multiplayer online role playing games may be traced back to the
multi-user dungeon (MUD), which is a text-based multiplayer game
that uses a command line interface. However, with the rising
acceptance of person computers, as well as increased graphical
capabilities of personal computers and video game consoles,
massively multiplayer online role playing games have become wildly
popular around the world. In fact, part of the draw of massively
multiplayer online role playing games is that players from any
continent may be online at any given time.
[0006] Massively multiplayer online role playing games distinguish
from single-player or small multi-player role playing games by the
game's persistent world. The persistent world is hosted by a server
and continues to exist and evolve even when a given player is not
logged in. Persistent worlds may also include non-player characters
(NPCs), marketplaces, auction houses, buildings, animals, vehicles,
etc. This results in a game world that is far more dynamic,
diverse, realistic, and addictive than those of other games.
[0007] Players of persistent world games tend to invest a great
deal of time in their online characters, in some cases to the
detriment of their real-life counterparts. The player is considered
online when the player is logged into the game server through a
game client. A typical player performs tasks, such as completing
quests, practicing skills or crafts, obtaining items, or selling
items, to improve the attributes or status of the character. Often,
players become obsessed with the virtual world, not wanting to miss
particular events or to allow other players to surpass them in
ability or wealth.
SUMMARY
[0008] The exemplary embodiments recognize the disadvantages of the
prior art and provide a method, apparatus, and program product for
generating virtual world event notifications from within a
persistent world game server in a logically partitioned game
console. A player agent for an offline player runs in a secondary
partition in a video game console while a primary application runs
in a main partition. The offline player agent includes an event
monitor that monitors for events that occur in a persistent virtual
world maintained by a game server. When a game event occurs that
triggers an offline player rule, the player agent composes an event
notification message and presents the message to the offline player
through speech or through an interface within the primary
application. Event notification messages may include images, voice
(text-to-speech), sound, or video.
[0009] The player may remain offline with respect to the persistent
virtual world online game and stay in touch with events that occur
within the virtual world. In the meantime, the player may use the
video game console to play games that are not associated with the
persistent virtual world online game server. Through logical
partitioning, the video game console is capable of devoting
processing resources to a primary application in a main partition
while still monitoring for events in the persistent virtual world
game using an offline player agent running in a secondary
partition.
[0010] In one illustrative embodiment, a method for generating
event notifications from within a persistent world game in a
logically partitioned video game console is provided. The method
comprises activating a primary application in a main partition in
the video game console and activating a player agent in a secondary
partition in the video game console for an offline player. The
player agent has an associated set of offline player rules. The
method further comprises monitoring, by the player agent, events
maintained by a game server. The game server observes and generates
game events for a persistent virtual world. The method further
comprises responsive to a given event triggering one or more of the
set of offline player rules, generating a notification event
message and sending the notification event message from the offline
player agent in the secondary partition to the primary application
in the main partition.
[0011] In one exemplary embodiment, the primary application is a
video game application. In another exemplary embodiment, the video
game application comprises an event notification interface.
[0012] In a further exemplary embodiment, the video game console
comprises a data processing system. A hypervisor executes within
the data processing system. Activating the primary application in
the main partition in the video game console comprises initiating,
by the hypervisor, the main partition, allocating, by the
hypervisor, resources within the data processing system to the main
partition, and initiating execution of the primary application in
the main partition. In a still further embodiment, activating the
player agent in the secondary partition in the video game console
comprises initiating, by the hypervisor, the secondary partition,
allocating, by the hypervisor, resources within the data processing
system to the secondary partition, and initiating execution of the
offline player agent in the secondary partition. In yet another
exemplary embodiment, the offline player agent sends the
notification event message to the primary application in the main
partition through the hypervisor. In another exemplary embodiment,
the data processing system is a heterogeneous multiple processor
system-on-a-chip.
[0013] In a further exemplary embodiment, the main partition and
the secondary partition run different operating systems.
[0014] In another illustrative embodiment, a video game console
comprises a data processing system and a hypervisor that executes
within the data processing system. The hypervisor activates a main
partition and a secondary partition in the data processing system.
A primary application executes in the main partition. A player
agent executes in the secondary partition for an offline player.
The player agent has an associated set of offline player rules. The
player agent monitors events maintained by a game server. The game
server observes and generates game events for a persistent virtual
world. Responsive to a given event triggering one or more of the
set of offline player rules, the player agent generates a
notification event message and sends the notification event message
from the offline player agent in the secondary partition to the
primary application in the main partition.
[0015] In one exemplary embodiment, the primary application is a
video game application. In another exemplary embodiment, the video
game application comprises an event notification interface.
[0016] In a further exemplary embodiment, the hypervisor allocates
resources within the data processing system to the main partition.
In another exemplary embodiment, the hypervisor allocates resources
within the data processing system to the secondary partition.
[0017] In a still further exemplary embodiment, the offline player
agent sends the notification event message to the primary
application in the main partition through the hypervisor. In yet
another exemplary embodiment, the main partition and the secondary
partition run different operating systems.
[0018] In other exemplary embodiments, the video game console
performs various ones of the operations outlined above with regard
to the method in the illustrative embodiments.
[0019] In a further illustrative embodiment, a computer program
product is provided comprising a computer useable medium having a
computer readable program. The computer readable program, when
executed on a video game console, causes the video game console to
activate a hypervisor on the video game console, activate, by the
hypervisor, a primary application in a main partition in the video
game console, and activate, by the hypervisor, a player agent in a
secondary partition in the video game console for an offline
player. The player agent has an associated set of offline player
rules. The player agent monitors events maintained by a game
server. The game server observes and generates game events for a
persistent virtual world. Responsive to a given event triggering
one or more of the set of offline player rules, the player agent
generates a notification event message and sends the notification
event message from the offline player agent in the secondary
partition to the primary application in the main partition.
[0020] In other exemplary embodiments, the computer readable
program code may further cause the video game console to perform
various ones of the operations outlined above with regard to the
method in the illustrative embodiments.
[0021] These and other features and advantages of the present
invention will be described in, or will become apparent to those of
ordinary skill in the art in view of, the following detailed
description of the exemplary embodiments of the present
invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0022] The novel features believed characteristic of the invention
are set forth in the appended claims. The invention itself,
however, as well as a preferred mode of use, further objectives and
advantages thereof, will best be understood by reference to the
following detailed description of an illustrative embodiment when
read in conjunction with the accompanying drawings, wherein:
[0023] FIG. 1 depicts a pictorial representation of an exemplary
distributed data processing system in which aspects of the
illustrative embodiments may be implemented;
[0024] FIG. 2 is a block diagram of an exemplary data processing
system in which aspects of the illustrative embodiments may be
implemented;
[0025] FIG. 3 is a block diagram illustrating a multiplayer online
persistent world game environment in accordance with an exemplary
embodiment;
[0026] FIG. 4 is a block diagram illustrating the functional
components of a player agent in accordance with an exemplary
embodiment;
[0027] FIG. 5 depicts a rule configuration user interface in
accordance with accordance with an illustrative embodiment;
[0028] FIG. 6 depicts a notification event message presented on a
wireless phone display in accordance with an exemplary
embodiment;
[0029] FIG. 7 depicts a notification event message presented as an
electronic mail message in accordance with an exemplary
embodiment;
[0030] FIG. 8 depicts a notification event message with reply
instructions presented on a wireless phone display in accordance
with an exemplary embodiment;
[0031] FIG. 9 depicts a reply message for performing an offline
action on a wireless phone display in accordance with an exemplary
embodiment;
[0032] FIG. 10 depicts a Web-based offline player rule
customization interface in accordance with an exemplary
embodiment;
[0033] FIG. 11 depicts a message for composing an offline player
rule on a wireless phone display in accordance with an exemplary
embodiment;
[0034] FIG. 12 is an exemplary block diagram of a data processing
system in which aspects of the present invention may be
implemented;
[0035] FIG. 13 illustrates an example of a partitioned
heterogeneous data processing system in accordance with the
exemplary embodiment;
[0036] FIG. 14 illustrates an exemplary heterogeneous system with
time-sharing of a processor resources in accordance with the
exemplary embodiment;
[0037] FIG. 15 is a block diagram illustrating a logically
partitioned video game console in accordance with an illustrative
embodiment;
[0038] FIG. 16 is an exemplary diagram illustrating a screen of
display from a logically partitioned video game console in
accordance with an exemplary embodiment; and
[0039] FIG. 17 is a flowchart illustrating operation of a player
agent in a logical partition of a video game console for sending
event notifications to a main partition of the video game console
in response to game events within a persistent virtual game world
in accordance with an illustrative embodiment.
DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS
[0040] The illustrative embodiments described hereafter provide a
mechanism for generating virtual world event notifications from
within a persistent world game. As such, the illustrative
embodiments may be implemented in a distributed data processing
environment in which multiple computing devices are utilized along
with one or more data networks. Accordingly, FIGS. 1 and 2
hereafter are provided as examples of a distributed data processing
environment and computing devices in which exemplary aspects of the
illustrative embodiments may be implemented. FIGS. 1 and 2 are only
exemplary and are not intended to state or imply any limitation
with regard to the types and/or configurations of computing devices
in which the illustrative embodiments may be implemented. Many
modifications to the computing devices and environments depicted in
FIGS. 1 and 2 may be made without departing from the spirit and
scope of the present invention.
[0041] With reference now to the figures, FIG. 1 depicts a
pictorial representation of an exemplary distributed data
processing system in which aspects of the illustrative embodiments
may be implemented. Distributed data processing system 100 may
include a network of computers in which embodiments of the
illustrative embodiments may be implemented. The distributed data
processing system 100 contains at least one network 120, which is
the medium used to provide communication links between various
devices and computers connected together within distributed data
processing system 100. The network 120 may include connections,
such as wire, wireless communication links, or fiber optic
cables.
[0042] In the depicted example, servers 102, 104, and 106 are
connected to network 120 along with storage unit 108. In addition,
clients 112, 114, and 116 are also connected to network 120. These
clients 112, 114, and 116 may be, for example, personal computers,
network computers, or the like. In the depicted example, server 102
may provide data, such as boot files, operating system images, and
applications to the clients 112, 114, and 116. In this instance,
clients 112, 114, and 116 are clients to server 102 in the depicted
example. Distributed data processing system 100 may include
additional servers, clients, and other devices not shown.
[0043] More particularly, distributed data processing system 100
may provide a massively multiplayer online game environment. Server
102 may provide a game server for maintaining a persistent virtual
world for clients 112, 114, 116. A persistent virtual world is a
representation of an environment with which players interact. The
virtual world is persistent because the environment continues to
exist and evolve even when a given player is not logged in. Server
102 may run game server software and maintain a database in storage
108 to track the states of objects, structures, and characters in
the persistent virtual world.
[0044] Clients 112, 114, 116 may run game client software that a
player uses to interact with the persistent virtual world. Clients
112, 114, 116 may render a two-dimensional or three-dimensional
representation of the persistent virtual world, although clients
112, 114, 116 may also represent the virtual world using text, as
in earlier multi-user dungeons (MUDs). The player typically
interacts with the virtual world on behalf of, or from the
perspective of, the player's character. In three-dimensional game
environments, the player's character is represented by a
three-dimensional player model. A significant draw of
three-dimensional multiplayer online games is the ability to
customize the appearance of the player model, which is also
referred to as an "avatar." The players may initially customize the
appearance of the player model by selecting facial features, body
style, hair color, hair style, facial hair, and the like.
Throughout the game experience, the player model may evolve, just
as the virtual world itself evolves. For example, the player may
add armor, weapons, clothing, or companions, such as pets.
[0045] The player is considered online when the player is logged
into the game server through a game client. While online, players
may interact with the virtual world through commands, keystrokes,
or mouse clicks. For example, a common user interface for massively
multiplayer online role playing games is the WASD interface, where
the virtual world is rendered from the perspective of the player's
character and the "W" key moves the character forward, the "A" key
turns the character left, the "S" key moves the player backward,
and the "D" key moves the player right. Other user interfaces may
use the cursor keys, mouse look, a top-down third-party
perspective, a chase camera perspective, or other known interface
techniques.
[0046] Whenever a player character interacts with the virtual
world, an event is generated and sent to the game server, e.g.,
server 102. For instance, if a player at client 112 casts a spell
on the character of the player at client 114, either a healing
spell or an attack, an event is generated at client 112 and sent to
server 102. Server 102 then generates an event and sends it to
client 114. Server 102 also keeps track of the position,
orientation, and status of each structure, character, and item. The
evolution of the virtual world is the result of events. A database
contains the current state of the virtual world. The events cause
changes to the virtual world and, thus, the database. The role of
the game client is essentially to represent these events
graphically (or textually) to allow the player to monitor for
events that are relevant to that player's character and to perform
appropriate actions by interacting with the game client.
[0047] In one illustrative embodiment, server 104 runs a
notification server. Each player may configure a player agent with
a set of offline rules. The player agent may run on game server
102, notification server 104, or one of clients 112, 114, 116. The
player agent monitors the events and applies the set of offline
rules. If an event occurs that matches an offline rule,
notification server 104 generates a message. Notification server
104 then sends the message to the offline player. The message may
be, without limitation, an electronic mail message, an instant
message, a voice message, or a wireless phone message.
[0048] In another exemplary embodiment, server 106 may run a Web
server application, which provides Web-based user interfaces for
configuring rules or reading or composing messages for notification
server 104. Thus, a player may configure the set of offline rules
while at work through a Web interface without the need for a heavy,
graphics-intensive game client. Alternatively, a player may
configure offline rules through the game client itself or a
specialized client application.
[0049] While the depicted example shows the game server, the
notification server, and the Web server as separate physical
devices, these servers, or various combinations of these servers,
may actually be server applications running on the same physical
device. For example, the game server and notification server may
both run on server 102 and the Web server may run on server 104.
Alternatively, the notification functionality may be integrated
within the game server on server 102.
[0050] In the depicted example, distributed data processing system
100 is the Internet with network 120 representing a worldwide
collection of networks and gateways that use the Transmission
Control Protocol/Internet Protocol (TCP/IP) suite of protocols to
communicate with one another. At the heart of the Internet is a
backbone of high-speed data communication lines between major nodes
or host computers, consisting of thousands of commercial,
governmental, educational and other computer systems that route
data and messages. Of course, the distributed data processing
system 100 may also be implemented to include a number of different
types of networks, such as for example, an intranet, a local area
network (LAN), a wide area network (WAN), or the like. As stated
above, FIG. 1 is intended as an example, not as an architectural
limitation for different embodiments of the present invention, and
therefore, the particular elements shown in FIG. 1 should not be
considered limiting with regard to the environments in which the
illustrative embodiments of the present invention may be
implemented.
[0051] With reference now to FIG. 2, a block diagram of an
exemplary data processing system is shown in which aspects of the
illustrative embodiments may be implemented. Data processing system
200 is an example of a computer, such as server 102 or client 112
in FIG. 1, in which computer usable code or instructions
implementing the processes for illustrative embodiments may be
located.
[0052] In the depicted example, data processing system 200 employs
a hub architecture including north bridge and memory controller hub
(NB/MCH) 202 and south bridge and input/output (I/O) controller hub
(SB/ICH) 204. Processing unit 206, main memory 208, and graphics
processor 210 are connected to NB/MCH 202. Graphics processor 210
may be connected to NB/MCH 202 through an accelerated graphics port
(AGP).
[0053] In the depicted example, local area network (LAN) adapter
212 connects to SB/ICH 204. Audio adapter 216, keyboard and mouse
adapter 220, modem 222, read only memory (ROM) 224, hard disk drive
(HDD) 226, CD-ROM drive 230, universal serial bus (USB) ports and
other communication ports 232, and PCI/PCIe devices 234 connect to
SB/ICH 204 through bus 238 and bus 240. PCI/PCIe devices may
include, for example, Ethernet adapters, add-in cards, and PC cards
for notebook computers. PCI uses a card bus controller, while PCIe
does not. ROM 224 may be, for example, a flash binary input/output
system (BIOS).
[0054] HDD 226 and CD-ROM drive 230 connect to SB/ICH 204 through
bus 240. HDD 226 and CD-ROM drive 230 may use, for example, an
integrated drive electronics (IDE) or serial advanced technology
attachment (SATA) interface. Super I/O (SIO) device 236 may be
connected to SB/ICH 204.
[0055] An operating system runs on processing unit 206. The
operating system coordinates and provides control of various
components within the data processing system 200 in FIG. 2. As a
client, the operating system may be a commercially available
operating system such as Microsoft.RTM. Windows.RTM. XP (Microsoft
and Windows are trademarks of Microsoft Corporation in the United
States, other countries, or both). An object-oriented programming
system, such as the Java.TM. programming system, may run in
conjunction with the operating system and provides calls to the
operating system from Java.TM. programs or applications executing
on data processing system 200 (Java is a trademark of Sun
Microsystems, Inc. in the United States, other countries, or
both).
[0056] As a server, data processing system 200 may be, for example,
an IBM.RTM. eServer.TM. pSeries.RTM. computer system, running the
Advanced Interactive Executive (AIX.RTM.) operating system or the
LINUX.RTM. operating system (eServer, pSeries and AIX are
trademarks of International Business Machines Corporation in the
United States, other countries, or both while LINUX is a trademark
of Linus Torvalds in the United States, other countries, or both).
Data processing system 200 may be a symmetric multiprocessor (SMP)
system including a plurality of processors in processing unit 206.
Alternatively, a single processor system may be employed.
[0057] Instructions for the operating system, the object-oriented
programming system, and applications or programs are located on
storage devices, such as HDD 226, and may be loaded into main
memory 208 for execution by processing unit 206. The processes for
illustrative embodiments of the present invention may be performed
by processing unit 206 using computer usable program code, which
may be located in a memory such as, for example, main memory 208,
ROM 224, or in one or more peripheral devices 226 and 230, for
example.
[0058] A bus system, such as bus 238 or bus 240 as shown in FIG. 2,
may be comprised of one or more buses. Of course, the bus system
may be implemented using any type of communication fabric or
architecture that provides for a transfer of data between different
components or devices attached to the fabric or architecture. A
communication unit, such as modem 222 or network adapter 212 of
FIG. 2, may include one or more devices used to transmit and
receive data. A memory may be, for example, main memory 208, ROM
224, or a cache such as found in NB/MCH 202 in FIG. 2.
[0059] Those of ordinary skill in the art will appreciate that the
hardware in FIGS. 1-2 may vary depending on the implementation.
Other internal hardware or peripheral devices, such as flash
memory, equivalent non-volatile memory, or optical disk drives and
the like, may be used in addition to or in place of the hardware
depicted in FIGS. 1-2. Also, the processes of the illustrative
embodiments may be applied to a multiprocessor data processing
system, other than the SMP system mentioned previously, without
departing from the spirit and scope of the present invention.
[0060] Moreover, the data processing system 200 may take the form
of any of a number of different data processing systems including
client computing devices, server computing devices, video game
consoles, a tablet computer, laptop computer, telephone or other
communication device, a personal digital assistant (PDA), or the
like. In some illustrative examples, data processing system 200 may
be a portable computing device which is configured with flash
memory to provide non-volatile memory for storing operating system
files and/or user-generated data, for example. Essentially, data
processing system 200 may be any known or later developed data
processing system without architectural limitation.
[0061] FIG. 3 is a block diagram illustrating a multiplayer online
persistent world game environment in accordance with an exemplary
embodiment. Public game server 312 provides a massively multiplayer
online game to game clients 302. Players interact with the
persistent virtual game world through game clients 302, which may
provide text-based or graphical user interfaces for representing
the persistent virtual game world to the player. Current popular
game clients represent virtual game worlds as three-dimensional
environments. The persistent game world may be, for example, a
medieval fantasy setting, a futuristic science fiction universe,
the old west, a super hero universe, or any other environment that
is suitable for a multiplayer online game.
[0062] Game clients 302 may be, for example, personal computers or
video game consoles. Personal computers, as referred to herein, may
include desktop computers, laptop computers, or any other computing
device that is capable of running a game client application. A
video game console is a specialized computing device that is used
to play video games. The game software itself may be available on a
compact disc (CD), digital video disc (DVD), or a high definition
format video disc, for example. Earlier game machines used
cartridges containing read only memory (ROM) chips. Although video
game consoles may be powered by similar processor chips as desktop
computers, the hardware is under the entire control of the
respective manufacturer, and the software is specific to the
machine's capabilities. Video game consoles may also include
hand-held video game devices, which are self-contained devices with
audio capabilities and displays built-in.
[0063] As the persistent virtual game world evolves through
interaction by the players and other events, such as scripted
actions by non-player characters (NPCs), public game server
observes the interactions and may generate events. The results of
the events are then recorded in information/game database 322.
Events are also broadcast to all of the online players affected by
the events within game clients 302. In most current
implementations, the persistent virtual game world is divided into
"zones." Thus, while there may be over 2,000 players online at a
given time, there may only be 200 players in a particular zone.
Therefore, when an event occurs in that zone, such as a player
attacking a non-player merchant character, public game server 312
may broadcast the event to only the players in that zone. A person
of ordinary skill in the art will recognize that the manner in
which game events are distributed to online player clients is not a
focus of this disclosure.
[0064] In current massively multiplayer online games, offline
player presence is severely limited. At best, a player may place an
item up for auction and the auction house may sell the item on
behalf of the player while the player is offline. In other
implementations, the player must leave his or her client device
logged in to allow the character to sell an item, for instance, or
to perform any other action. This causes subscribers to feel a
sense of loss whenever they are offline. That is, while players are
unable to have an online presence in the virtual game world, they
may be missing critical events. For example, a player may return
home from a long walk in the park to find out that his home city in
the virtual world has been overrun by the enemy.
[0065] In accordance with an exemplary embodiment, player agents
332, 334, 336 use offline player rules 342, 344, 346 to monitor for
events that are relevant to particular offline players. For
example, each one of player agents 332, 334, 336 may execute on
behalf of an offline player. Player agents 332, 334, 336 may
execute, for example, in game clients 302, public game server 312,
notification server 314, or combinations thereof. The offline
players configure offline player rules 342, 344, 346 to define what
types of events are relevant, as well as how, when, and/or where
event notifications are to be distributed. For instance, a
particular player configures player agent 332 with offline player
rules 342. Player agent 332 monitors events observed by and
generated by public game server 312. If an event occurs that
satisfies one of the set of offline player rules 342, player agent
332 generates an event notification message. In one exemplary
embodiment, if an event satisfies more than one rule, then player
agent 332 may combine the resulting event notifications into a
single message. Alternatively, the player agent may generate a
separate event notification message for each player rule that is
triggered.
[0066] Notification server 314 may deliver event notification
messages to messaging clients 304. Event notification messages may
include, without limitation, electronic mail messages, instant
messages, voice mail messages, facsimile transmissions, or wireless
phone messages. As an example, player agent 332 may compose an
electronic mail message containing the event information, and
notification server 314 may deliver it to one of message clients
304, through an electronic mail server, using the simple mail
transfer protocol (SMTP). As another example, notification server
314 may deliver an event notification message to a group of
messaging clients 304 through Internet relay chat (IRC). As yet
another example, notification server 314 may deliver an event
notification message to a short message service (SMS) client. A
person of ordinary skill in the art will recognize that other known
messaging techniques may be used.
[0067] Messaging clients 304 may be any client devices capable of
receiving event notification messages. More particularly, messaging
clients 304 may include, without limitation, personal computers,
telephone devices, personal digital assistants, push email client
devices, set-top television devices, or video game consoles. As an
example, an offline player may receive a text message on his
wireless telephone notifying him that his base is being attacked by
the enemy. As a further example, a particular player may receive an
email at work notifying her that a particular non-player character
has appeared in the same zone as her character.
[0068] In one exemplary embodiment, players may configure offline
player rules 342, 344, 346 using the game client applications on
game clients 302. That is, the game client software may provide
user interfaces for setting offline player rules. For example, a
player may indicate whether event notification messages are to be
sent to a particular wireless phone number, email address, or
instant messaging identification. Offline player rules may also
define whether notification messages shall include text, image, or
voice, for example. A player may also define what types of events
shall trigger event notification.
[0069] In another exemplary embodiment, web serer 316 may provide
Web-based user interfaces for configuring offline player rules 342,
344, 346. Thus, players may configure offline rules while at work
using Web clients 306 without the need for a graphics-intensive
game client application. Web clients 306 may include, without
limitation, personal computers, Web-enabled wireless phone devices,
or set-top television devices.
[0070] In accordance with another illustrative embodiment, player
agents 332, 334, 336 may generate events on behalf of offline
players according to offline player rules 342, 344, 346. Players
may configure offline player rules 342, 344, 346 with actions to be
taken while the player is offline. Thus, the player's character may
have a presence within the persistent virtual world even when the
player is offline. If an event occurs that matches one of the
offline player rules of a given character, the respective player
agent may generate one or more events if the offline player rule
calls for an action to be taken. The player agent then may send the
one or more events to public game server 312 as if the event was
generated by a game client for an online character.
[0071] In particular embodiments, an offline character may be
represented in the persistent virtual game world just as a
non-player character is represented. This may actually enhance the
game experience, because players may provide interesting game
content through the actions taken according to offline player
rules. For instance, players may contribute to the persistent
virtual world even while offline by providing offline player rules
that offer quests to online characters. Offline players may dance
for a few coins or upgrade armor for a price, for example.
Alternatively, offline players may perform scripted actions to add
to the overall story of the virtual world.
[0072] Alternatively, offline players may add, modify, or remove
offline player rules using messaging clients 304. When a player
issues a message from one of messaging clients 304, notification
server 314 may forward the message to the respective player agent
332, 334, 336. In response to appropriate incoming messages, player
agents 332, 334, 336 may update offline player rules 342, 344,
346.
[0073] The game provider sees an added benefit, because an active
community of players will provide a virtual environment that is
truly built and shaped by the players. While game providers may
still provide non-player characters, quests, expansions, and the
like, the game community will be fueled by the imaginations of the
subscribers. As a result, the game providers may experience a
reduction in the cancellation rate of account memberships.
[0074] FIG. 4 is a block diagram illustrating the functional
components of a player agent in accordance with an exemplary
embodiment. Player agent 400 includes event monitor 402, event
generator 404, message parser 406, message composer 408, and rules
manager 410. Event monitor 402 receives events that are observed
and generated by the public game server. Rules manager 410 performs
a check against offline player rules 412 to determine if an
incoming game event matches a rule.
[0075] If a game event received from event monitor 402 matches one
of offline player rules 412, rules manager triggers message
composer 408 to compose an event notification message. Message
composer 408 may simply formulate a text message using a template,
for example. In addition, message composer 408 may include in the
message an image, such as a still image of the current state of the
game or an image of an item, based on the active rule from offline
player rules 412. The rules may also include a text message, sound
file, or the like to send as the message. This allows the user to
customize the message he receives, much like a ring tone may
identify a caller. Furthermore, if indicated within the active
rule, message composer 408 may perform text-to-speech conversion
and output the event notification message as a sound file. Message
composer 408 then provides the generated message to the
notification server.
[0076] Message parser 406 receives incoming messages that may add,
modify, or remove rules in offline player rules 412. Message parser
406 parses the message according to templates or a predefined
syntax, for example. In response to appropriate incoming messages,
rules manager 410 updates offline player rules 412 based on
instructions in the message composed by the user. For example,
rules manager 410 may add more detailed events, request a still
image or short video, etc., based on the instructions from the
offline player.
[0077] In another illustrative embodiment, rules manager 410 may
signal event generator 404 to generate game events on behalf of the
offline player. In response to a particular rule being activated
from offline player rules 412, or in response to an appropriate
incoming message, rules manager 410 may activate event generator
404 to send a game event to the public game server as if the event
were generated by an online player's game client.
[0078] FIG. 5 depicts a rule configuration user interface in
accordance with accordance with an illustrative embodiment. Rules
client window 500 provides an interface through which a player may
configure offline player rules for event notification. Rules client
window 500 may be presented through a game client application
running on one of game clients 302 in FIG. 3, a Web browser running
on one of Web clients 306 in FIG. 3, or a stand-alone application,
for example.
[0079] Rules client window 500 includes a contact information
portion 510, a message content portion 520, and a notification type
portion 530. In contact information portion 510, the player may
indicate whether he or she wishes to receive game event
notifications by wireless phone, electronic mail, or instant
messenger. The player may provide the contact information in text
entry fields 512. As an example, a player may check the "Wireless
phone" box and enter a telephone number in the appropriate field.
Contact information portion 510 may include more or fewer options
depending upon the implementation.
[0080] Message contact portion 520 allows a player to indicate
whether the message should include a text notification, an image,
or voice. In an exemplary implementation, the player may check all
three selections. If the "Image" selection is checked, the
notification service may provide an image of an item or a screen
capture from a game client of a nearby online player, for example.
Alternatively, the game server may be configured to generate a low
resolution image, for instance. If the "Voice" selection is
checked, the notification service may perform text-to-speech
conversion and provide the event notification message as a voice
message or voice mail.
[0081] Notification type portion 530 allows a player to indicate
what types of events should result in a notification message. In
the depicted example, the types of notification events include a
market price offer to buy an item the player is selling, an offer
to sell an item the player has on a wish list, an attack on the
player's guild hall, and an attack on the player's character.
Notification type portion 530 presents a small number of checkboxes
for simplicity; however, a person of ordinary skill in the art will
appreciate that the catalogue of possible event types may be quite
extensive and will likely include many more event types and more
detailed and complicated rules. In an alternative embodiment,
notification type portion 530 may include a notification entry
interface that allows the player to add a finite, or perhaps
limitless, number of notification types using a simple programming
or scripting language.
[0082] FIG. 6 depicts a notification event message presented on a
wireless phone display in accordance with an exemplary embodiment.
Message display 600 may be presented on one of messaging clients
304 in FIG. 3, for example. Message display 600 includes a text
message display portion, which includes event notification content
610. In the depicted example, the event notification alerts the
player that a particular item is being offered for sale. The event
notification also informs the player of the character offering the
item for sale and the price.
[0083] FIG. 7 depicts a notification event message presented as an
electronic mail message in accordance with an exemplary embodiment.
Electronic mail window 700 may be presented on one of messaging
clients 304 or one of Web clients 306 in FIG. 3, for example.
Electronic mail window 700 includes message portion 702. Message
portion 702 presents message header information and message
content. The message content includes event notification content
710. In the depicted example, the message content 710 is also
accompanied by image 712. In this instance, image 712 is of the
item being offered for sale. In addition, in this example, the
message portion also includes banner advertisement 714. The game
provider may use the event notification messages as a vehicle to
advertise related products or to sell advertising to partners.
[0084] In the depicted example, image 712 is of a particular item
being offered for sale. However, the image may be any type of image
related or unrelated to the event notification. For example,
players may offer photographs to be used in character profiles. As
another example, image 712 may be an illustration that is
reasonably associated with the particular event.
[0085] As another example, the image may be a screen capture taken
by a nearest online player to the event or the game server. For
instance, if an online character offering the item for sale happens
to be looking at the offline player's character when making the
offer, the game server may instruct the online character's game
client application to take a low resolution screen capture and send
the screen capture image to the player agent composing the message.
Alternatively, if the offline character's city is attacked, the
image may be a screen capture from the viewpoint of the nearest
online bystander, the offline player character's point of view, or
even the attacker's point of view, showing the ruin left in the
wake of the attack. In this manner, the event notification message
may provide significant persistent world information to an offline
player through standard communications channels outside the game
world.
[0086] FIG. 8 depicts a notification event message with reply
instructions presented on a wireless phone display in accordance
with an exemplary embodiment. Message display 800 may be presented
on one of messaging clients 304 in FIG. 3, for example. Message
display 800 includes a text message display portion, which includes
event notification content 810 and reply instructions 820. In the
depicted example, the event notification alerts the player that a
particular item is being offered for sale. The event notification
also informs the player of the character offering the item for sale
and the price.
[0087] Reply instructions 820 tell the player how to send a message
into the event notification server to perform an offline action
responsive to the event. In this example, the player may select
"Reply" button 822 and reply to the message with the word "buy" to
purchase the item.
[0088] FIG. 9 depicts a reply message for performing an offline
action on a wireless phone display in accordance with an exemplary
embodiment. Message composition display 900 may be presented on one
of messaging clients 304 in FIG. 3, for example. Message
composition display 900 includes message entry portion 910. The
player may enter a message to the game server in message entry
portion 910. In the depicted example, the player enters the word
"buy" in response to a particular offer for sale; however, the
message may comprise specific instructions for offline player
actions or rules. In particular, the player may use templates or a
specific syntax for composing messages. When message composition is
complete, the player may select "Send" button 912 to send the
message to the event notification server. When the event
notification server receives, the message, the event notification
server may generate a game event, as discussed above.
[0089] FIG. 10 depicts a Web-based offline player rule
customization interface in accordance with an exemplary embodiment.
The rule customization interface may be presented as a Web page in
a Web browser application interface running on one of Web clients
306 in FIG. 3, for example. Web browser window 1000 includes
display area 1002 in which the offline player rule customization
interface may be presented.
[0090] The offline player rule customization interface includes
rules list portion 1010, "Add" button 1012, "Remove" button 1014,
"Edit" button 1016, and "Done" button 1018. The existing rules are
listed in rules list portion 1010. Selecting "Add" button 1012 may
cause the Web client to generate another interface for entering a
specific offline player rule. The interface (not shown for
simplicity) for entering a specific offline player rule may be, for
example, a simple text entry field. However, given the number of
possible rules in a typical massively multiplayer online game, the
interface for entering a rule may include radio buttons, check
boxes, drop-down menus, and the like.
[0091] The player may select a rule in rule list portion 1010 and
select "Remove" button 1014 to remove the list from the list.
Selecting a rule from rule list portion 1010 and selecting "Edit"
button 1016 may generate an interface for entering rule information
similar to that described above for adding a rule. When the player
is finished adding, removing, and editing rules, the player may
select "Done" button 1018 to persist the rules to the offline
player agent, which may reside locally on the game client or may
reside at the game server or event notification server, as
described above.
[0092] The player may also select "Command Syntax Help" button 1022
to view a help dialog. Since the number and complexity of the
commands may be more than can be remembered by a casual user, the
help dialog may present a list of commands and guidelines for the
syntax. The help dialog may also include other information, such as
frequently asked questions, troubleshooting, etc.
[0093] In addition, display area 1002 may also present banner
advertisement 1020. As stated above, the game provider may use the
event notification messages as a vehicle to advertise related
products or to sell advertising to partners.
[0094] FIG. 11 depicts a message for composing an offline player
rule on a wireless phone display in accordance with an exemplary
embodiment. Message composition display 1100 may be presented on
one of messaging clients 304 in FIG. 3, for example. Message
composition display 1100 includes message entry portion 1110. The
player may enter a message to the game server in message entry
portion 1110. In the depicted example, the player enters the rule
"<add> when:attackonself, flee" to submit an offline player
rule to be used by a player agent. In particular, the player may
use templates or a specific syntax for composing messages.
[0095] The command editing commands may include "add," "delete,"
"change," "and "view rules" commands. Thus, the user may compose a
message beginning with "<add>" followed by the command to be
added, for example. Other commands are possible, such as "fleenow,"
"attack," and so forth, depending on the commands of the game
client. Many online persistent world game clients include a
command-line interface, although it is usually hidden from the user
in the default interface. When message composition is complete, the
player may select "Send" button 1112 to send the message to the
player agent through the event notification server.
[0096] With reference again to FIG. 3, according to one
illustrative embodiment, some or all of game clients 302 may be
video game consoles as described above. In accordance with the
illustrative embodiment, a video game console may be logically
partitioned so that a game application, or perhaps another type of
application, runs in a main logical partition. An offline player
agent, such as player agent 332 or offline player agent 400 in FIG.
4, for example, may run in a secondary logical partition on the
video game console.
[0097] FIG. 12 is an exemplary block diagram of a data processing
system in which aspects of the present invention may be
implemented. The exemplary data processing system shown in FIG. 12
is an example of the Cell Broadband Engine (CBE) data processing
system, which may be a main component of a video game console in
accordance with the illustrative embodiment. While the CBE will be
used in the description of the preferred embodiments of the present
invention, the present invention is not limited to such, as will be
readily apparent to those of ordinary skill in the art upon reading
the following description.
[0098] As shown in FIG. 12, the CBE 1200 includes a power processor
element (PPE) 1210 having a processor (PPU) 1216 and its L1 and L2
caches 1212 and 1214, and multiple synergistic processor elements
(SPEs) 1220-1234 that each has its own synergistic processor unit
(SPU) 1240-1254, memory flow control 1255-1262, local memory or
store (LS) 1263-1270, and bus interface unit (BIU unit) 1280-1294
which may be, for example, a combination direct memory access
(DMA), memory management unit (MMU), and bus interface unit. A high
bandwidth internal element interconnect bus (EIB) 1296, a bus
interface controller (BIC) 1297, and a memory interface controller
(MIC) 1298 are also provided.
[0099] The local memory or local store (LS) 1263-1270 is a
non-coherent addressable portion of a large memory map which,
physically, may be provided as small memories coupled to the SPUs
1240-1254. The local stores 1263-1270 may be mapped to different
address spaces. These address regions are continuous in a
non-aliased configuration. A local store 1263-1270 is associated
with its corresponding SPU 1240-1254 and SPE 1220-1234 by its
address location, such as via the SPU Identification Register,
described in greater detail hereafter. Any resource in the system
has the ability to read/write from/to the local store 1263-1270 as
long as the local store is not placed in a secure mode of
operation, in which case only its associated SPU may access the
local store 1263-1270 or a designated secured portion of the local
store 1263-1270.
[0100] The CBE 1200 may be a system-on-a-chip such that each of the
elements depicted in FIG. 12 may be provided on a single
microprocessor chip. Moreover, the CBE 1200 is a heterogeneous
processing environment in which each of the SPUs may receive
different instructions from each of the other SPUs in the system.
Moreover, the instruction set for the SPUs is different from that
of the PPU, e.g., the PPU may execute Reduced Instruction Set
Computer (RISC) based instructions while the SPU execute vectorized
instructions.
[0101] The SPEs 1220-1234 are coupled to each other and to the L2
cache 1214 via the EIB 1296. In addition, the SPEs 1220-1234 are
coupled to MIC 1298 and BIC 1297 via the EIB 1296. The MIC 1298
provides a communication interface to shared memory 1299. The BIC
1297 provides a communication interface between the CBE 1200 and
other external buses and devices.
[0102] The PPE 1210 is a dual threaded PPE 1210. The combination of
this dual threaded PPE 1210 and the eight SPEs 1220-1234 makes the
CBE 1200 capable of handling 10 simultaneous threads and over 128
outstanding memory requests. The PPE 1210 acts as a controller for
the other eight SPEs 1220-1234 which handle most of the
computational workload. The PPE 1210 may be used to run
conventional operating systems while the SPEs 1220-1234 perform
vectorized floating point code execution, for example.
[0103] The SPEs 1220-1234 comprise a synergistic processing unit
(SPU) 1240-1254, memory flow control units 1255-1262, local memory
or store 1263-1270, and an interface unit 1280-1294. The local
memory or store 1263-1270, in one exemplary embodiment, comprises a
256 KB instruction and data memory which is visible to the PPE 1210
and can be addressed directly by software.
[0104] The PPE 1210 may load the SPEs 1220-1234 with small programs
or threads, chaining the SPEs together to handle each step in a
complex operation. For example, a set-top box incorporating the CBE
1200 may load programs for reading a DVD, video and audio decoding,
and display, and the data would be passed off from SPE to SPE until
it finally ended up on the output display. At 4 GHz, each SPE
1220-1234 gives a theoretical 32 GFLOPS of performance with the PPE
1210 having a similar level of performance.
[0105] The memory flow control units (MFCs) 1255-1262 serve as an
interface for an SPU to the rest of the system and other elements.
The MFCs 1255-1262 provide the primary mechanism for data transfer,
protection, and synchronization between main storage and the local
storages 1263-1270. There is logically an MFC for each SPU in a
processor. Some implementations can share resources of a single MFC
between multiple SPUs. In such a case, all the facilities and
commands defined for the MFC must appear independent to software
for each SPU. The effects of sharing an MFC are limited to
implementation-dependent facilities and commands.
[0106] FIG. 13 illustrates an example of a partitioned
heterogeneous system in accordance with the exemplary embodiment.
In the depicted example, heterogeneous system 1300 is based on an
exemplary Cell Broadband Engine Architecture-compliant system,
consisting of a set of PPEs and a set of SPEs. The hypervisor (not
shown) may be software running on PPEs 1370, 1380, for example. In
heterogeneous system 1300, a first Power Processor Element 1370 and
a first set of SPEs 1311-1316 are allocated to a first partition,
partition 1, and a second PPE 1380 and a second set of SPEs
1317-318 are allocated to a second partition, partition 2. As
mentioned above, heterogeneous system 1300 may be a
system-on-a-chip.
[0107] Referring to FIG. 14, there is shown a heterogeneous
hypervisor partitioning an exemplary heterogeneous system with
time-sharing of a processor in accordance with the exemplary
embodiment, wherein a physical processor is virtualized and shared
between partitions. Heterogeneous system 1400 is based on an
exemplary Cell Broadband Engine Architecture-compliant system,
consisting of a single PPE and a set of SPEs. In the depicted
example, a fixed allocation of a first set of SPEs 1411-1416 to a
first partition, and a second set of SPEs 1417-1418 to a second
partition is provided. The two partitions share a portion of PPE
1470 in a time-shared fashion. As mentioned above, heterogeneous
system 1400 may be a system-on-a-chip.
[0108] Referring now to other possible configurations, those
skilled in the art will understand that another partition
consisting only of a PPE (or multiples, or fractions thereof) is
also possible. In some systems, partitions consisting wholly of a
second set of computing elements are supported. Referring now to
one embodiment based on the Cell Broadband Engine Architecture, one
exemplary embodiment requires at least a fraction of a first PPE,
to ensure certain system services provided by the PPE. In another
embodiment, a partition consisting of a dedicated function
executing exclusively on an SPE may be supported. In another
embodiment, at least one SPE is assigned to the hypervisor to
implement hypervisor support tasks, to emulate a virtual device
provided by the hypervisor to at least one logic partition, and so
forth.
[0109] Those skilled in the art will understand that a hypervisor
may support different strategies for resource allocation and
management with respect to a first set and second set of processor
elements. For example, in an exemplary embodiment based on the Cell
Broadband Engine Architecture, having a set of SPEs and one or more
PPEs, a hypervisor design may decide to use time sharing for PPEs,
with an emphasis on flexibility, and given a comparatively lower
context switch cost and that only a low number of PPEs are
available, and space sharing for SPEs, with an emphasis on compute
performance, and given a comparatively higher context switch cost
and a high number of SPEs in system. However, the present invention
should not be limited to any one resource allocation and management
strategy. For example, there may be cases where the SPUs are time
shared, especially when they complete tasks early in the frame
time.
[0110] FIG. 15 is a block diagram illustrating a logically
partitioned video game console in accordance with an illustrative
embodiment. Hypervisor 1530 logically partitions the video game
console so that a main logical partition, partition 1 1510, and at
least one secondary logical partition, partition 2 1520, run on the
hardware concurrently. A hypervisor is a piece of firmware or
software that runs on a control processor or one of the processing
elements in the system. Hypervisor 1510 initiates partitions to run
instances of operating systems, allocating resources to the
partitions according to a system profile. The partitions may run
instances of the same operating system or completely different
operating systems. Hypervisor 1510 may dynamically adjust the
allocation of resources to the partitions according to the demands
of the threads running in the partitions.
[0111] The main logical partition, partition 1 1510, runs a primary
application. Partition 1 1510 may require a majority of the system
resources and may dominate the display resource(s). In one
exemplary embodiment, partition 1 1510 runs video game application
1512. In current video game consoles, a video game application may
require a significant amount of processor resources to render
three-dimensional environments, to run artificial intelligent
algorithms, to execute physics engines, to manage several, perhaps
hundreds, of objects to be presented on the display, to execute
lighting algorithms, and to generate realistic, directional sound,
among other tasks. However, for the purposes of the illustrative
embodiment, application 1512 may be any primary application that
runs in the "foreground."
[0112] In the depicted example, game application 1512 may be a
self-contained software component that runs without an operating
system. Video game consoles are closed architectures. The console
manufacturer typically provides a development kit to video game
developers, who then write video game code specifically for that
hardware. Thus, game application 1512 may access the hardware
directly. One might say that game application 1512 may have a
built-in operating system, where the video game console boots up
with the image of whatever video game disk is in the drive at
startup.
[0113] A secondary logical partition, partition 2 1520, runs
offline player agent 1522. Offline player agent 1522 monitors for a
game event from within a persistent virtual world online game that
triggers a rule from a set of offline player rules. In the depicted
example, the persistent virtual world online game is separate and
distinct from game application 1512. For example, a player may be
playing game application 1512, which is an automobile racing game,
while offline player agent 1522 monitors a massively multiplayer
online role playing game with a medieval fantasy setting.
[0114] If a game event triggers a rule in offline player agent
1522, then the offline player agent may generate a game event
notification, as described in detail above. Offline player agent
1522 then sends the game event notification through hypervisor 1530
to an event notification interface 1514 of game application 1512.
Event notification interface 1514 may be a part of the development
kit provided to game developers. In other words, every game may be
required to include an event notification interface to standardize
the events passed from offline player agents to active games in the
main partition. Alternatively, some games may be designed to work
with particular persistent virtual world online games and their
offline player agents, while other games are not.
[0115] Responsive to the game event notification being received at
event notification interface 1514, game application 1512 may
present the event notification to the player in a suitable fashion.
For example, game application 1512 may be designed to present the
content of event notifications in a particular portion of the
screen such that the player is not distracted from the game she is
playing. In an alternative embodiment, game application 1512 may be
configured to simply present a graphical indicator or sound to
signal that an event notification is present and ready to be
viewed. In yet another embodiment, game application 1512 may
present the content of the game event notification as speech to the
player so the player does not have to take her eyes off the game
currently being played.
[0116] In a further exemplary embodiment, partition 2 1520 may
notify the user directly, without needing the event notification
interface in each game. The notification may be in the form of a
graphical overlay or sound overlay. More particularly, the event
notification interface may be part of the game operating system and
may be transparent to the game application.
[0117] FIG. 16 is an exemplary diagram illustrating a screen of
display from a logically partitioned video game console in
accordance with an exemplary embodiment. Screen 1602 presents the
content of a video game currently being played. In the depicted
example, the video game may be an automobile racing game. Screen
1602 also presents event notification portion 1610 in which a game
event notification is presented.
[0118] Event notification portion 1610 includes a notification
message portion 1612 and an image portion 1614. Notification
message portion 1612 presents the text of the game event
notification. Image portion 1614 may present an image or video
associated with the game event notification, as mentioned
above.
[0119] FIG. 17 is a flowchart illustrating operation of a player
agent in a logical partition of a video game console for sending
event notifications to a main partition of the video game console
in response to game events within a persistent virtual game world
in accordance with an illustrative embodiment. It will be
understood that each block of the flowchart illustration, and
combinations of blocks in the flowchart illustration, can be
implemented by computer program instructions. These computer
program instructions may be provided to a processor or other
programmable data processing apparatus to produce a machine, such
that the instructions which execute on the processor or other
programmable data processing apparatus create means for
implementing the functions specified in the flowchart block or
blocks. These computer program instructions may also be embodied in
a computer-readable memory, storage medium, or transmission medium
that can direct a processor or other programmable data processing
apparatus to function in a particular manner, such that the
instructions stored in the computer-readable memory, storage
medium, or transmission medium produce an article of manufacture
including instruction means that implement the functions specified
in the flowchart block or blocks.
[0120] Accordingly, blocks of the flowchart illustration support
combinations of means for performing the specified functions,
combinations of steps for performing the specified functions and
program instruction means for performing the specified functions.
It will also be understood that each block of the flowchart
illustration, and combinations of blocks in the flowchart
illustration, can be implemented by special purpose hardware-based
computer systems which perform the specified functions or steps, or
by combinations of special purpose hardware and computer
instructions.
[0121] With particular reference to FIG. 17, operation begins when
the player is offline with respect to the persistent virtual world
online game and the video game console initializes a primary
application in a main partition and an offline player agent in a
secondary partition. The offline player agent obtains a set of
offline player rules (block 1702). The player agent activates the
event monitor (block 1704). The player agent then determines
whether the player is online (block 1706). The player is considered
online when the player is logged into the game server through a
game client, either at a game client device apart from the video
game console or at the video game console itself. If the player is
currently online, then the player agent disables the event monitor
(block 1708), and operation ends.
[0122] If the player is not online--that is, the player is
currently offline--then the event monitor determines whether an
event is observed by or generated by the game server (block 1710).
If the event monitor does not detect an event, operation returns to
block 1706 to determine if the player is still offline.
[0123] If the event monitor detects an event in block 1710, the
player agent determines whether the event triggers an offline
player rule (block 1712). If the event does not trigger a rule,
operation returns to block 1706 to determine if the player is still
offline. However, if the event does trigger an offline player rule
in block 1712, then the player agent composes an event notification
message to send to the offline player outside of the virtual game
world (block 1714).
[0124] Next, the player agent determines whether to send the
message as voice (block 1716). For instance, the player may select
an option in the offline player agent to present game event
notifications as speech through speakers or a headset. A player may
wish to receive notifications as speech to prevent notifications
from taking up real estate on the display device, thus distracting
the player from the game currently being played. This option may
also be specified in the offline player rules.
[0125] If the player agent determines that the message is not to be
sent as a voice message, the player agent determines whether to
include an image (block 1718). This determination may be made by
examining the offline player rules to determine whether the offline
player wishes to receive images. Also, if an image is not available
for the particular event notification, then the offline player
agent may determine that an image is not to be included, even if
the offline player prefers to receive images.
[0126] If the player agent determines that an image is to be
included, then the player agent obtains an image for the message
(block 1720). The player agent may obtain an image by retrieving an
image associated with the event, such as an image of an item,
place, or character, for instance. A pre-existing image may be a
pre-rendered image from the game, concept art, a photograph, or the
like. Alternatively, the player agent may obtain an image by
requesting another component to generate an image specifically for
the event. For example, the player agent may send a request through
the game server to an appropriate online player's game client.
Responsive to receiving the request, the online player's game
client may take a screen capture and return it to the offline
player agent. The screen capture may be modified for event
notification. For example, the screen capture may exclude
heads-up-display graphical elements or may have a lower display
resolution than a normal game display. In an alternative
embodiment, the game server may include an image capture component
for generating a screen capture on behalf of the offline player.
Because the game server maintains a current state of the virtual
game world at all times, the game server may render a view of the
game world from the perspective of the offline character or any
other character.
[0127] Thereafter, the player agent adds the image to the message
(block 1722) and determines whether to include a sound with the
message (block 1724). If the player agent determines that an image
is not to be included in the message in block 1718, operation
proceeds to block 1724 to determine whether a sound is to be
included. This determination may be made by examining the offline
player rules to determine whether the offline player wishes to
receive sounds. Also, if a sound is not available for the
particular event notification, then the offline player agent may
determine that a sound is not to be included, even if the offline
player prefers to receive sounds.
[0128] If the player agent determines that a sound is to be
included, then the player agent obtains an image for the message
(block 1726). The player agent may obtain a sound by retrieving a
sound file associated with the event, such as a battle sound,
spoken text, or music, for example. A pre-existing sound file may
be a pre-recorded sound from the game, a player-created sound, a
ring tone, or the like. Alternatively, the player agent may obtain
a sound by receiving the sound from another component specifically
for the event. For example, an attacking player may record a taunt
or other spoken message using a microphone, such as a headset
currently used for online video games.
[0129] Thereafter, the player agent adds the sound to the message
(block 1728) and determines whether to include a video with the
message (block 1730). If the player agent determines that a sound
is not to be included in the message in block 1724, operation
proceeds to block 1730 to determine whether a video is to be
included. This determination may be made by examining the offline
player rules to determine whether the offline player wishes to
receive videos. Also, if a video is not available for the
particular event notification, then the offline player agent may
determine that a video is not to be included, even if the offline
player prefers to receive videos.
[0130] If the offline player agent determines that a video is to be
included, then the player agent obtains a video for the message
(block 1732). The player agent may obtain a video by retrieving a
video file associated with the event, such as a cut scene video
from the game, for example. Alternatively, the player agent may
obtain a video by requesting another component to generate a video
specifically for the event. For example, the player agent may send
a request through the game server to an appropriate online player's
game client. Responsive to receiving the request, the online
player's game client may take a series of screen captures, combine
them to form a moving video, and return the video file to the
player agent. The video may be modified for event notification. For
example, the screen captures may not have heads-up-display
graphical elements or may have a lower display resolution than a
normal game display. In an alternative embodiment, the game server
may include an image capture component for generating a series of
screen captures on behalf of the offline player. Because the game
server maintains a current state of the virtual game world at all
times, the game server may render a view of the game world from the
perspective of the offline character, or any other character, at
various points in time. These screen captures may be combined to
form a moving video. In another exemplary embodiment, an online
player, such as an attacking player for instance, may record a
video using a camera device associated with the online player's
game client device.
[0131] Thereafter, the player agent adds the video to the message
(block 1734) and sends the message (block 1736). If the player
agent determines that a video is not to be included in block 1730,
then the player agent sends the message as currently composed
(block 1736). Then, operation returns to block 1706 to determine
whether the player is now online.
[0132] Returning to block 1716, if the offline player agent
determines that the event notification is to be sent as a voice
message, the player agent converts the text of the message to
speech (block 1738). Thereafter, the offline player agent presents
the speech message to the player (block 1740). In this case, the
player agent may present the message using an audio output from the
video game console to speakers or a headset, for example. Then,
operation returns to block 1706 to determine whether the player is
now online.
[0133] Thus, the illustrative embodiments solve the disadvantages
of the prior art by providing a mechanism for generating event
notifications for offline characters from within a persistent world
online game. A player agent for an offline player runs in a
secondary partition in a video game console while a primary
application runs in a main partition. The offline player agent
includes an event monitor that monitors for events that occur in a
persistent virtual world maintained by a game server. When a game
event occurs that triggers an offline player rule, the player agent
composes an event notification message and presents the message to
the offline player through speech or through an interface within
the primary application. Event notification messages may include
images, voice (text-to-speech), sound, or video.
[0134] The player may remain offline with respect to the persistent
virtual world online game and stay in touch with events that occur
within the virtual world. In the meantime, the player may use the
video game console to play games that are not associated with the
persistent virtual world online game server. Through logical
partitioning, the video game console is capable of devoting
processing resources to a primary application in a main partition
while still monitoring for events in the persistent virtual world
game using an offline player agent running in a secondary
partition.
[0135] It should be appreciated that the illustrative embodiments
may take the form of an entirely hardware embodiment, an entirely
software embodiment or an embodiment containing both hardware and
software elements. In one exemplary embodiment, the mechanisms of
the illustrative embodiments are implemented in software, which
includes but is not limited to firmware, resident software,
microcode, etc.
[0136] Furthermore, the illustrative embodiments may take the form
of a computer program product accessible from a computer-usable or
computer-readable medium providing program code for use by or in
connection with a computer or any instruction execution system. For
the purposes of this description, a computer-usable or
computer-readable medium can be any apparatus that can contain,
store, communicate, propagate, or transport the program for use by
or in connection with the instruction execution system, apparatus,
or device.
[0137] The medium may be an electronic, magnetic, optical,
electromagnetic, infrared, or semiconductor system (or apparatus or
device) or a propagation medium. Examples of a computer-readable
medium include a semiconductor or solid state memory, magnetic
tape, a removable computer diskette, a random access memory (RAM),
a read-only memory (ROM), a rigid magnetic disk and an optical
disk. Current examples of optical disks include compact disk-read
only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
[0138] A data processing system suitable for storing and/or
executing program code will include at least one processor coupled
directly or indirectly to memory elements through a system bus. The
memory elements can include local memory employed during actual
execution of the program code, bulk storage, and cache memories
which provide temporary storage of at least some program code in
order to reduce the number of times code must be retrieved from
bulk storage during execution.
[0139] Input/output or I/O devices (including but not limited to
keyboards, displays, pointing devices, etc.) can be coupled to the
system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the
data processing system to become coupled to other data processing
systems or remote printers or storage devices through intervening
private or public networks. Modems, cable modem and Ethernet cards
are just a few of the currently available types of network
adapters.
[0140] The description of the present invention has been presented
for purposes of illustration and description, and is not intended
to be exhaustive or limited to the invention in the form disclosed.
Many modifications and variations will be apparent to those of
ordinary skill in the art. The embodiment was chosen and described
in order to best explain the principles of the invention, the
practical application, and to enable others of ordinary skill in
the art to understand the invention for various embodiments with
various modifications as are suited to the particular use
contemplated.
* * * * *