US20100160047A1 - Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data - Google Patents
Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data Download PDFInfo
- Publication number
- US20100160047A1 US20100160047A1 US12/341,481 US34148108A US2010160047A1 US 20100160047 A1 US20100160047 A1 US 20100160047A1 US 34148108 A US34148108 A US 34148108A US 2010160047 A1 US2010160047 A1 US 2010160047A1
- Authority
- US
- United States
- Prior art keywords
- name
- end server
- store
- value
- servers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/531—Server assignment
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
Definitions
- a console game designed to support many users all posting messages to a server or servers, where each message contains data that needs to be aggregated and made available back to those users
- common “primitive” aggregation logic such as summation and top-n, as well as custom game-specific aggregation logic can be used to drive custom game logic.
- primary aggregation logic such as summation and top-n
- custom game-specific aggregation logic can be used to drive custom game logic.
- each user might belong to a team and post a score. The scores might need to be summed to get the total score for each team. The aggregate score might need to be made available quickly to the users.
- Writing custom server code is expensive, however, and custom servers are expensive to maintain.
- Disclosed herein is a set of coordinated game service primitives that allows for custom, per-game, logic.
- the functionality of the primitives does not change from game-to-game, custom, client-side game logic can be built on top of these primitives in much the same way that custom reports can be generated using SQL primitives.
- a new game with new custom logic can be added without needing to change any public application programming interface (API) or database schema, nor to write any new service or server-side code.
- API application programming interface
- server-side code The same hardware may be shared across many games. And the system scales linearly. That is, if the number of servers is doubled, then so is the number of concurrent users that can be supported.
- Pre-aggregation may take place on a plurality of front-end servers.
- Final aggregation may take place on one or more back-end servers.
- a name value store may be used to reliably store state.
- FIG. 1 depicts an example network-based game service.
- FIG. 2 is a flowchart for employing scalable game service primitives in a network-based game service.
- FIG. 3 is a block diagram of an example computing environment in which example embodiments and aspects of the present invention may be implemented.
- FIG. 4 is an example network configuration in which aspects of the invention may be implemented.
- an example network-based game service may include a plurality of front-end servers, one or more back-end servers, and a partitioned name/value store.
- the front-end servers may be TCP/IP Socket Servers that dynamically load the pre-aggregation primitive code and custom game logic that may be referred to as “front-end controllers.” These front-end controllers process incoming messages from users and perform custom game logic on them, often storing the results in the name/value store. Front-End controllers may read and write from the name/value store.
- the back-end servers similarly load back-end controllers.
- Back-end controllers do the final aggregation of pre-aggregated data (e.g., aggregating a sum for some data pre-aggregated and set by a plurality of front end servers) and performing other custom game logic including advancing a round.
- Back-end controllers read and write from the name/value store.
- the name/value store is a partitioned sql database with a simple, single-table schema.
- the name/value table has two columns, one for name and one for value.
- the name is a string and the value is a binary blob, which may be an xml blob, for example.
- the store is partitioned on name.
- the name/value store does not provide transactions or record locking.
- users may post messages to the front end controllers at 52 .
- the messages each of which may have a name and an XML body, are pre-aggregated on the front-end servers.
- messages are routed by name to the appropriate front end controllers.
- the front end controllers execute on all the messages in a batch, often aggregating and writing the aggregate value to the name/value store.
- the back-end servers run their controllers, periodically reading values from the name/value store and perhaps further aggregating the results and writing out the final values. So that the back end servers know which values to aggregate, a queuing mechanism may be employed to signal the back end server. The queuing mechanism may be polled periodically.
- Each game console may connect to the data center through a secure gateway, and communicate using encrypted traffic.
- the game consoles may tunnel through the secure gateway to the plurality of front-end servers.
- the game consoles may connect using persistent TCP/IP connections rather than web service calls.
- the system may include, say, 20 front-end servers, each to handle 10,000 game console clients.
- each of the 200,000 game consoles is answering the same question at the same time.
- Each game console submits its respective answer, and each front end gets 10,000 messages at same time.
- each user will want to know whether he or she got the right answer. But the users might also want feedback that relies on answers provided by other users. For example, the users might want to know what percentage of respondents got the right answer, or who was first to answer correctly.
- the individual game consoles may be programmed to determine whether the user got an answer right or wrong, and provide such an indication to the user. Each game console may keep score of how many answers the user of that console got right. Each game console may then communicate to the associated front-end server whether the user got the answer right or wrong. Data may then be aggregated on the back-end server.
- Every datum may have a name and a value associated with it.
- An example of a name might be game title, such as “trivia.quest.sessionid.questionno.right/wrong.” Values for this datum might be “right” and “wrong,” which could be represented as “0” and “1,” respectively.
- Each front-end server does pre-aggregation (e.g., a summation for their subset of users), and writes the pre-aggregated value (e.g., a sum) out to the store.
- This process may be referred to as “pre-aggregation,” i.e., aggregation by the front-end server of input data provided by each of a plurality of clients associated with the front-end server.
- the back-end server grabs the list of sums and sums the sums to get a final sum of sums.
- the back-end server aggregates the data globally.
- the back-end servers need understand only a set of basic primitives.
- the console sends a name and value, and the back-end server sums all the values over that name. For example, a console might send a message with a name such as “question 7 right?” and a value of “1” or “0” (depending on whether the user got it right or not).
- the action i.e., primitive
- the action may be “sum.”
- the game console may ask the front-end server to report back an aggregation from the universe of consoles.
- the back-end server may provide the aggregate value for that name (which, in this example, is the summation of the number right).
- the front-end server need not communicate directly with the back-end server.
- the front-end server may communicate values to the name/value store.
- the back-end server may pick up pre-aggregated values from the name/value store, and write aggregated values back.
- the back-end server may pick up aggregated values from the name/value store.
- FIG. 3 shows an exemplary computing environment in which example embodiments and aspects may be implemented.
- the computing system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality. Neither should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100 .
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, embedded systems, distributed computing environments that include any of the above systems or devices, and the like.
- Computer-executable instructions such as program modules, being executed by a computer may be used.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- Distributed computing environments may be used where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium.
- program modules and other data may be located in both local and remote computer storage media including memory storage devices.
- an exemplary system includes a general purpose computing device in the form of a computer 110 .
- Components of computer 110 may include, but are not limited to, a processing unit 120 , a system memory 130 , and a system bus 121 that couples various system components including the system memory to the processing unit 120 .
- the processing unit 120 may represent multiple logical processing units such as those supported on a multi-threaded processor.
- the system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- ISA Industry Standard Architecture
- MCA Micro Channel Architecture
- EISA Enhanced ISA
- VESA Video Electronics Standards Association
- PCI Peripheral Component Interconnect
- the system bus 121 may also be implemented as a point-to-point connection, switching fabric, or the like, among the communicating devices.
- Computer 110 typically includes a variety of computer readable media.
- Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer readable media may comprise computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110 .
- Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
- the system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132 .
- ROM read only memory
- RAM random access memory
- BIOS basic input/output system
- RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120 .
- FIG. 3 illustrates operating system 134 , application programs 135 , other program modules 136 , and program data 137 .
- the computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- FIG. 3 illustrates a hard disk drive 140 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, nonvolatile magnetic disk 152 , and an optical disk drive 155 that reads from or writes to a removable, nonvolatile optical disk 156 , such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such as interface 140
- magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150 .
- hard disk drive 141 is illustrated as storing operating system 144 , application programs 145 , other program modules 146 , and program data 147 . Note that these components can either be the same as or different from operating system 134 , application programs 135 , other program modules 136 , and program data 137 . Operating system 144 , application programs 145 , other program modules 146 , and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies.
- a user may enter commands and information into the computer 20 through input devices such as a keyboard 162 and pointing device 161 , commonly referred to as a mouse, trackball or touch pad.
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
- a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190 .
- computers may also include other peripheral output devices such as speakers 197 and printer 196 , which may be connected through an output peripheral interface 195 .
- the computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180 .
- the remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110 , although only a memory storage device 181 has been illustrated in FIG. 3 .
- the logical connections depicted in FIG. 3 include a local area network (LAN) 171 and a wide area network (WAN) 173 , but may also include other networks.
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
- the computer 110 When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170 .
- the computer 110 When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173 , such as the Internet.
- the modem 172 which may be internal or external, may be connected to the system bus 121 via the user input interface 160 , or other appropriate mechanism.
- program modules depicted relative to the computer 110 may be stored in the remote memory storage device.
- FIG. 3 illustrates remote application programs 185 as residing on memory device 181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- FIG. 4 illustrates an example network environment in which the present invention may be employed.
- actual network and database environments may be arranged in a variety of configurations; however, the example environment shown here provides a framework for understanding the type of environment in which an embodiment may operate.
- the example network may include one or more client computers 200 a , a server computer 200 b , data source computers 200 c , and/or databases 270 , 272 a , and 272 b.
- the client computers 200 a and the data source computers 200 c may be in electronic communication with the server computer 200 b by way of the communications network 280 (e.g., an intranet, the Internet or the like).
- the client computers 200 a and data source computers 200 c may be connected to the communications network by way of communications interfaces 282 .
- the communications interfaces 282 can be any type of communications interfaces such as Ethernet connections, modem connections, wireless connections and so on.
- the server computer 200 b may provide management of the database 270 by way of database server system software such as MICROSOFT®'s SQL SERVER or the like. As such, server 200 b may act as a storehouse of data from a variety of data sources and provides that data to a variety of data consumers.
- database server system software such as MICROSOFT®'s SQL SERVER or the like.
- server 200 b may act as a storehouse of data from a variety of data sources and provides that data to a variety of data consumers.
- a data source may be provided by data source computer 200 c.
- Data source computer 200 c may communicate data to server computer 200 b via communications network 280 , which may be a LAN, WAN, Intranet, Internet, or the like.
- Data source computer 200 c may store data locally in database 272 a , which may be database server or the like.
- the data provided by data source 200 c can be combined and stored in a large database such as a data warehouse maintained by server 200 b.
- Client computers 200 a that desire to use the data stored by server computer 200 b can access the database 270 via communications network 280 .
- Client computers 200 a access the data by way of, for example, a query, a form, etc. It will be appreciated that any configuration of computers is equally compatible with an embodiment of the present invention.
Abstract
Description
- In a console game designed to support many users all posting messages to a server or servers, where each message contains data that needs to be aggregated and made available back to those users, common “primitive” aggregation logic, such as summation and top-n, as well as custom game-specific aggregation logic can be used to drive custom game logic. For example, each user might belong to a team and post a score. The scores might need to be summed to get the total score for each team. The aggregate score might need to be made available quickly to the users. Writing custom server code is expensive, however, and custom servers are expensive to maintain.
- Also, in such a console game, due to the volume of posted messages, all the posts may not be able to be handled on a single front end server. Accordingly, it would be desirable to provide a mechanism for aggregating values posted across many front end servers.
- In a platform that supports many massively multi-player games, which tend to have a high number of concurrent users during just a few hours a week, many servers may be needed to support peak load, which may be on the order of about 200,000 internet accesses/second, with peak data transfer rates on the order of Gigabits/second. For this reason and others, it may be desirable to share a single game service across many different games.
- It would be particularly desirable if a single infrastructure that scales to peak could be used across many games, with a standard service that need not be extended every time a new game is built. Such a service should be sufficiently fault tolerant such that it can tolerate and recover from any single component failure automatically and within seconds.
- Disclosed herein is a set of coordinated game service primitives that allows for custom, per-game, logic. The functionality of the primitives does not change from game-to-game, custom, client-side game logic can be built on top of these primitives in much the same way that custom reports can be generated using SQL primitives. For example, a new game with new custom logic can be added without needing to change any public application programming interface (API) or database schema, nor to write any new service or server-side code. The same hardware may be shared across many games. And the system scales linearly. That is, if the number of servers is doubled, then so is the number of concurrent users that can be supported.
- Also disclosed are systems and methods for two-stage aggregation. Pre-aggregation may take place on a plurality of front-end servers. Final aggregation may take place on one or more back-end servers. A name value store may be used to reliably store state.
-
FIG. 1 depicts an example network-based game service. -
FIG. 2 is a flowchart for employing scalable game service primitives in a network-based game service. -
FIG. 3 is a block diagram of an example computing environment in which example embodiments and aspects of the present invention may be implemented. -
FIG. 4 is an example network configuration in which aspects of the invention may be implemented. - As shown in
FIG. 1 , an example network-based game service may include a plurality of front-end servers, one or more back-end servers, and a partitioned name/value store. - The front-end servers may be TCP/IP Socket Servers that dynamically load the pre-aggregation primitive code and custom game logic that may be referred to as “front-end controllers.” These front-end controllers process incoming messages from users and perform custom game logic on them, often storing the results in the name/value store. Front-End controllers may read and write from the name/value store.
- The back-end servers similarly load back-end controllers. Back-end controllers do the final aggregation of pre-aggregated data (e.g., aggregating a sum for some data pre-aggregated and set by a plurality of front end servers) and performing other custom game logic including advancing a round. Back-end controllers read and write from the name/value store.
- The name/value store is a partitioned sql database with a simple, single-table schema. The name/value table has two columns, one for name and one for value. The name is a string and the value is a binary blob, which may be an xml blob, for example. The store is partitioned on name. The name/value store does not provide transactions or record locking.
- As shown in
FIG. 2 , users may post messages to the front end controllers at 52. The messages, each of which may have a name and an XML body, are pre-aggregated on the front-end servers. - At 54, messages are routed by name to the appropriate front end controllers.
- At 56, the front end controllers execute on all the messages in a batch, often aggregating and writing the aggregate value to the name/value store.
- At 58, the back-end servers run their controllers, periodically reading values from the name/value store and perhaps further aggregating the results and writing out the final values. So that the back end servers know which values to aggregate, a queuing mechanism may be employed to signal the back end server. The queuing mechanism may be polled periodically.
- Consider an example of 200,000 game consoles playing a quiz-show game all at the same time. Each game console may connect to the data center through a secure gateway, and communicate using encrypted traffic. The game consoles may tunnel through the secure gateway to the plurality of front-end servers. The game consoles may connect using persistent TCP/IP connections rather than web service calls. To handle 200,000 game consoles, the system may include, say, 20 front-end servers, each to handle 10,000 game console clients.
- Suppose that each of the 200,000 game consoles is answering the same question at the same time. Each game console submits its respective answer, and each front end gets 10,000 messages at same time.
- Typically, each user will want to know whether he or she got the right answer. But the users might also want feedback that relies on answers provided by other users. For example, the users might want to know what percentage of respondents got the right answer, or who was first to answer correctly.
- The individual game consoles may be programmed to determine whether the user got an answer right or wrong, and provide such an indication to the user. Each game console may keep score of how many answers the user of that console got right. Each game console may then communicate to the associated front-end server whether the user got the answer right or wrong. Data may then be aggregated on the back-end server.
- Data is tracked in the system in accordance with name/value pairs. That is, every datum may have a name and a value associated with it. An example of a name might be game title, such as “trivia.quest.sessionid.questionno.right/wrong.” Values for this datum might be “right” and “wrong,” which could be represented as “0” and “1,” respectively.
- Each front-end server does pre-aggregation (e.g., a summation for their subset of users), and writes the pre-aggregated value (e.g., a sum) out to the store. This process may be referred to as “pre-aggregation,” i.e., aggregation by the front-end server of input data provided by each of a plurality of clients associated with the front-end server. The back-end server grabs the list of sums and sums the sums to get a final sum of sums. Thus, the back-end server aggregates the data globally.
- To accomplish this, the back-end servers need understand only a set of basic primitives. The console sends a name and value, and the back-end server sums all the values over that name. For example, a console might send a message with a name such as “question 7 right?” and a value of “1” or “0” (depending on whether the user got it right or not). The action (i.e., primitive) may be “sum.” After a prescribed period of wait time (e.g., six seconds), the game console may ask the front-end server to report back an aggregation from the universe of consoles. For example, the game console may send a message with name =“question 7 right?” and action (primitive)=“get.” In response, the back-end server may provide the aggregate value for that name (which, in this example, is the summation of the number right).
- Note that the front-end server need not communicate directly with the back-end server. The front-end server may communicate values to the name/value store. The back-end server may pick up pre-aggregated values from the name/value store, and write aggregated values back. The back-end server may pick up aggregated values from the name/value store.
-
FIG. 3 shows an exemplary computing environment in which example embodiments and aspects may be implemented. Thecomputing system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality. Neither should thecomputing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in theexemplary operating environment 100. - Numerous other general purpose or special purpose computing system environments or configurations may be used. Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, embedded systems, distributed computing environments that include any of the above systems or devices, and the like.
- Computer-executable instructions, such as program modules, being executed by a computer may be used. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Distributed computing environments may be used where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules and other data may be located in both local and remote computer storage media including memory storage devices.
- With reference to
FIG. 3 , an exemplary system includes a general purpose computing device in the form of acomputer 110. Components ofcomputer 110 may include, but are not limited to, aprocessing unit 120, asystem memory 130, and a system bus 121 that couples various system components including the system memory to theprocessing unit 120. Theprocessing unit 120 may represent multiple logical processing units such as those supported on a multi-threaded processor. The system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus). The system bus 121 may also be implemented as a point-to-point connection, switching fabric, or the like, among the communicating devices. -
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed bycomputer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed bycomputer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media. - The
system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements withincomputer 110, such as during start-up, is typically stored inROM 131.RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processingunit 120. By way of example, and not limitation,FIG. 3 illustratesoperating system 134,application programs 135,other program modules 136, andprogram data 137. - The
computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 3 illustrates ahard disk drive 140 that reads from or writes to non-removable, nonvolatile magnetic media, amagnetic disk drive 151 that reads from or writes to a removable, nonvolatilemagnetic disk 152, and anoptical disk drive 155 that reads from or writes to a removable, nonvolatileoptical disk 156, such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. Thehard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such asinterface 140, andmagnetic disk drive 151 andoptical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such asinterface 150. - The drives and their associated computer storage media discussed above and illustrated in
FIG. 3 , provide storage of computer readable instructions, data structures, program modules and other data for thecomputer 110. InFIG. 3 , for example,hard disk drive 141 is illustrated as storingoperating system 144,application programs 145, other program modules 146, andprogram data 147. Note that these components can either be the same as or different fromoperating system 134,application programs 135,other program modules 136, andprogram data 137.Operating system 144,application programs 145, other program modules 146, andprogram data 147 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into thecomputer 20 through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to theprocessing unit 120 through auser input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). Amonitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as avideo interface 190. In addition to the monitor, computers may also include other peripheral output devices such asspeakers 197 andprinter 196, which may be connected through an outputperipheral interface 195. - The
computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer 180. Theremote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to thecomputer 110, although only amemory storage device 181 has been illustrated inFIG. 3 . The logical connections depicted inFIG. 3 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. - When used in a LAN networking environment, the
computer 110 is connected to theLAN 171 through a network interface oradapter 170. When used in a WAN networking environment, thecomputer 110 typically includes amodem 172 or other means for establishing communications over theWAN 173, such as the Internet. Themodem 172, which may be internal or external, may be connected to the system bus 121 via theuser input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to thecomputer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 3 illustratesremote application programs 185 as residing onmemory device 181. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. -
FIG. 4 illustrates an example network environment in which the present invention may be employed. Of course, actual network and database environments may be arranged in a variety of configurations; however, the example environment shown here provides a framework for understanding the type of environment in which an embodiment may operate. - The example network may include one or
more client computers 200 a, aserver computer 200 b, data sourcecomputers 200 c, and/ordatabases client computers 200 a and the data sourcecomputers 200 c may be in electronic communication with theserver computer 200 b by way of the communications network 280 (e.g., an intranet, the Internet or the like). Theclient computers 200 a anddata source computers 200 c may be connected to the communications network by way of communications interfaces 282. The communications interfaces 282 can be any type of communications interfaces such as Ethernet connections, modem connections, wireless connections and so on. - The
server computer 200 b may provide management of thedatabase 270 by way of database server system software such as MICROSOFT®'s SQL SERVER or the like. As such,server 200 b may act as a storehouse of data from a variety of data sources and provides that data to a variety of data consumers. - In the example network environment of
FIG. 4 , a data source may be provided bydata source computer 200 c.Data source computer 200 c may communicate data toserver computer 200 b viacommunications network 280, which may be a LAN, WAN, Intranet, Internet, or the like.Data source computer 200 c may store data locally indatabase 272 a, which may be database server or the like. The data provided bydata source 200 c can be combined and stored in a large database such as a data warehouse maintained byserver 200 b. -
Client computers 200 a that desire to use the data stored byserver computer 200 b can access thedatabase 270 viacommunications network 280.Client computers 200 a access the data by way of, for example, a query, a form, etc. It will be appreciated that any configuration of computers is equally compatible with an embodiment of the present invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/341,481 US20100160047A1 (en) | 2008-12-22 | 2008-12-22 | Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/341,481 US20100160047A1 (en) | 2008-12-22 | 2008-12-22 | Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100160047A1 true US20100160047A1 (en) | 2010-06-24 |
Family
ID=42266933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/341,481 Abandoned US20100160047A1 (en) | 2008-12-22 | 2008-12-22 | Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data |
Country Status (1)
Country | Link |
---|---|
US (1) | US20100160047A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107243156A (en) * | 2017-06-30 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | A kind of large-scale distributed network game server system |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US791067A (en) * | 1903-07-31 | 1905-05-30 | John B Archer | Process of burning fuel. |
US5822523A (en) * | 1996-02-01 | 1998-10-13 | Mpath Interactive, Inc. | Server-group messaging system for interactive applications |
US6487556B1 (en) * | 1998-12-18 | 2002-11-26 | International Business Machines Corporation | Method and system for providing an associative datastore within a data processing system |
US6574241B2 (en) * | 1998-10-14 | 2003-06-03 | Nokia Corporation | Message monitoring in a network element |
US6993454B1 (en) * | 2000-12-05 | 2006-01-31 | Microsoft Corporation | Performance logging solution |
US7203623B2 (en) * | 2000-11-10 | 2007-04-10 | Microsoft Corporation | Distributed data gathering and aggregation agent |
US7315805B2 (en) * | 2004-02-05 | 2008-01-01 | Raytheon Company | Operations and support discrete event stimulation system and method |
US7774831B2 (en) * | 2002-12-24 | 2010-08-10 | International Business Machines Corporation | Methods and apparatus for processing markup language messages in a network |
-
2008
- 2008-12-22 US US12/341,481 patent/US20100160047A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US791067A (en) * | 1903-07-31 | 1905-05-30 | John B Archer | Process of burning fuel. |
US5822523A (en) * | 1996-02-01 | 1998-10-13 | Mpath Interactive, Inc. | Server-group messaging system for interactive applications |
US6574241B2 (en) * | 1998-10-14 | 2003-06-03 | Nokia Corporation | Message monitoring in a network element |
US6487556B1 (en) * | 1998-12-18 | 2002-11-26 | International Business Machines Corporation | Method and system for providing an associative datastore within a data processing system |
US7203623B2 (en) * | 2000-11-10 | 2007-04-10 | Microsoft Corporation | Distributed data gathering and aggregation agent |
US6993454B1 (en) * | 2000-12-05 | 2006-01-31 | Microsoft Corporation | Performance logging solution |
US7774831B2 (en) * | 2002-12-24 | 2010-08-10 | International Business Machines Corporation | Methods and apparatus for processing markup language messages in a network |
US7315805B2 (en) * | 2004-02-05 | 2008-01-01 | Raytheon Company | Operations and support discrete event stimulation system and method |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107243156A (en) * | 2017-06-30 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | A kind of large-scale distributed network game server system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104069637B (en) | The method and system of user is managed in MUD environment | |
US6884172B1 (en) | Electronic game system | |
US5984787A (en) | Method and system for multi-user game recovery | |
US20100056275A1 (en) | Massively Multiplayer Online Game Technologies | |
US20070063999A1 (en) | Systems and methods for providing an online lobby | |
US20110136577A1 (en) | Game manager with multi-platform api components | |
US20070083493A1 (en) | Noise in secure function evaluation | |
CN100534056C (en) | User log-on method and system in network game | |
US20110302250A1 (en) | Thread data aggregation | |
US10063663B2 (en) | Subscribing to multiple resources through a common connection | |
CN106796537A (en) | Distributed component in computing cluster | |
Merabti et al. | Peer-to-peer architecture and protocol for a massively multiplayer online game | |
US20100160047A1 (en) | Scalable Game Primitives / Distributed Real-Time Aggregation Of Player Data | |
US20080016129A1 (en) | On-demand replication in a content management system | |
EP3634592A1 (en) | System and method for synchronizing data between computer devices | |
CN107800741B (en) | MMORPG server architecture | |
US20090064193A1 (en) | Distributed Network Processing System including Selective Event Logging | |
US8371941B2 (en) | System and method for game state reduction | |
CN111488344A (en) | User operation data uplink method and system based on service data block chain | |
CN114172958B (en) | Privacy computing node, system, method, device and storage medium | |
Chechina et al. | A scalable reliable instant messenger using the SD Erlang libraries | |
Behnke | Increasing the supported number of participants in distributed virtual environments | |
Salem | Facebook distributed system case study for distributed system inside facebook datacenters | |
EP2722085A1 (en) | Online game system, method, and computer-readable medium | |
Bons et al. | A News Recommender Engine with a Killer Sequence. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION,WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIVNI, FELIX;MANNERS, LOWELL;HALL, GARY WILLIAM;AND OTHERS;REEL/FRAME:022497/0239 Effective date: 20090219 |
|
AS | Assignment |
Owner name: MICROSOFT CORPORATION,WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHEN, TONY;REEL/FRAME:022683/0397 Effective date: 20090211 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034564/0001 Effective date: 20141014 |