CA2637169A1 - Quickly providing good matchups - Google Patents
Quickly providing good matchups Download PDFInfo
- Publication number
- CA2637169A1 CA2637169A1 CA002637169A CA2637169A CA2637169A1 CA 2637169 A1 CA2637169 A1 CA 2637169A1 CA 002637169 A CA002637169 A CA 002637169A CA 2637169 A CA2637169 A CA 2637169A CA 2637169 A1 CA2637169 A1 CA 2637169A1
- Authority
- CA
- Canada
- Prior art keywords
- tournament
- game
- players
- player
- console
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims abstract description 116
- 238000012797 qualification Methods 0.000 claims abstract description 43
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 86
- 238000004891 communication Methods 0.000 description 45
- 238000012545 processing Methods 0.000 description 28
- 238000010899 nucleation Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 239000002609 medium Substances 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 230000008030 elimination Effects 0.000 description 8
- 238000003379 elimination reaction Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 4
- 229910052737 gold Inorganic materials 0.000 description 4
- 239000010931 gold Substances 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 229910052709 silver Inorganic materials 0.000 description 2
- 239000004332 silver Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 229910000906 Bronze Inorganic materials 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000386 athletic effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 239000010974 bronze Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- KUNSUQLRTQLHQQ-UHFFFAOYSA-N copper tin Chemical compound [Cu].[Sn] KUNSUQLRTQLHQQ-UHFFFAOYSA-N 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
- XGFJCRNRWOXGQM-UHFFFAOYSA-N hot-2 Chemical compound CCSC1=CC(OC)=C(CCNO)C=C1OC XGFJCRNRWOXGQM-UHFFFAOYSA-N 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
Classifications
-
- A63F13/12—
-
- 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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/795—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for finding other players; for building a team; for providing a buddy list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- 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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- 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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/71—Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
-
- 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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/798—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for assessing skills or for ranking players, e.g. for generating a hall of fame
-
- 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
-
- 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/55—Details of game data or player data management
- A63F2300/5546—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
- A63F2300/558—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history by assessing the players' skills or ranking
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Tourism & Hospitality (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Multiplayer tournaments may be established, and then automatically executed by tournament server devices to help provide users with quality matchups against players of similar skill. Tournaments may be defined by an administrator, and then automatically instantiated any number of times to accommodate demand by players. Some tournaments may group players of similar rank in tournament rounds, and may also employ a window factor to prevent players from playing together too soon after playing together in a prior round. Some tournaments may use a leaderboard qualification process, allowing potential entrants to qualify for tournaments by accomplishing feats specified in qualification parameters.
Description
QUICKLY PROVIDING GOOD MATCHUPS
BACKGROUND
[01] Online computer gaming has quickly grown into a key component of today's video game market, as there are now more and more opportunities to play against others. For example, on the XBOX LIVETM (Microsoft Corporation, Redmond, Washington) online service, it is possible for video game players to play against other players from all over the world. With such a large pool of potential players, there is a correspondingly large range of player abilities, ranging from the first-time or occasional player to the daily, devoted fan, and even on to the ranks of professional video game players.
BACKGROUND
[01] Online computer gaming has quickly grown into a key component of today's video game market, as there are now more and more opportunities to play against others. For example, on the XBOX LIVETM (Microsoft Corporation, Redmond, Washington) online service, it is possible for video game players to play against other players from all over the world. With such a large pool of potential players, there is a correspondingly large range of player abilities, ranging from the first-time or occasional player to the daily, devoted fan, and even on to the ranks of professional video game players.
[02] This wide range of player abilities has introduced a new problem. Many online games are competitive, in that players compete against one another to achieve game objectives and gain a level of ascendancy over their competitors. Such competitive games are often only enjoyable when the various players are close to one another in skills and abilities. If there is too great of a discrepancy in skill level, the dominant-skilled player will-not be challenged, while the weaker-skilled player will experience frustration at constantly being beaten. Typical online games, however, collect players as they join game sessions, with no regard for the players' abilities or how close the players are to one another in terms of skill.
[03] Some organized competitions, such as tournaments, may attempt to match players of equal skill in a final round. For example, the NCAATM (National College Athletics Association) basketball tournament takes sixty-five teams, and seeds the teams such that (assuming no upsets) its two semifinal games pit the top four teams against one another (i.e., the four number 1 seeds). However, the path of each number 1 seed through the earlier rounds of the tournament is riddled with imbalanced matchups. For example, the first round of the NCAATM basketball tournament pits the top seed in a bracket against the lowest seed in a bracket (16`h seed). Additionally, the NCAATM arrangement requires a fixed, limited lineup of teams (the 65 teams in seeded order), and would not easily translate into a video game community having thousands (or millions) of players, and players who may drop out or come in at any time.
SUMMARY
SUMMARY
[04] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[05] As will be described in greater detail below, the present application includes a customizable competition structure. Tournament parameters may be defined in advance, and may be automatically instantiated by the game's communication network so that tournaments can be created as needed and exist indefinitely, without the need for constant liuman supervision. This definition may be done using, for example, an Internet page interface, or by an end user's video game user interface.
[06] A toumament administrator may log in with a tournament server to define the tournament, entering tournament parameters. The toumament may be instantiated one or more times, and the separate instances may individually, and automatically, communicate with the various participants, manage game= session results, and determine toumament winners.
[07] In some aspects, scoring arbitration may be used to resolve anomalies in scores reported by the various game consoles in the tournament. For example, a tournament server may compare its received results with results received by a separate leaderboard process, where the separate leaderboard process may use more secured transmissions with the game consoles to help verify communications.
[08] In some aspects, tournaments may run according to a schedule, and may be configured to run one after another (e.g., substantially continuously).
[09] In some aspects, a window factor can identify an amount of time that must elapse before players can be reunited in a game session, to minimize effect of having same players play each other throughout a tournament. Also, a new player factor can be used to adjust scores of newly-entered participants.
[10] In some aspects, tournament parameters and game settings may be downloaded to a game console to automatically configure the player's machine for the next round of a tournament.
[111 In some aspects, a qualification period may precede the tournament, during which players may attempt to qualify by posting their corresponding scores. Players may be notified of their qualification status, and may be notified again if the status changes due to subsequent players' qualification attempts, and may be given an option to make another attempt at qualification. A tournament may be instanced multiple times to accommodate differing levels of qualifiers.
[12] In some aspects, tournaments may be dynamically adjusted to accommodate variable numbers of qualifying tournament entries. The tournament parameters, such as number of winners per match, number of players per match, number of rounds, number of players in the tournament's final round, and others, may be varied so that a desired number of qualifiers may participate in the tournament. Entrants may be ranked using a ratio of their total score to the total possible score for rounds that they have played, and that ranking may be used in later groupings of players.
113] Tournament user interfaces may be displayed to allow user navigation through the tournament process. The user may play an interactive, online multiplayer and multi-round video game, and view a list of tournaments for which he/she has qualified.
Other options may be offered as well, such as searching for tournaments that satisfy user-desired criteria, or displaying tournament and/or competitor details.
[14] These and other aspects will be described in greater detail below.
BRIEF DESCRIPTION OF THE DRAWINGS
[15] Figure 1 illustrates a game console that may be used to implement various features described herein.
[16] Figure 2 illustrates components that may be used in the console shown in Figure 1.
[17] Figure 3 illustrates how various consoles, and other elements, may be interconnected to implement features described herein.
[18] Figure 4 illustrates an example network configuration using game consoles.
[19] Figure 5a illustrates an example computing device that may be used to implement features described herein.
[20] Figures 5b-m illustrate example software elements and concepts for implementing features described herein.
[21] Figure 6 illustrates an example process for conducting tournaments.
[22] Figure 7 illustrates an example of a tournament data structure.
[23] Figures 8a-b illustrate an example process for a type of tournament, and Figure 8c illustrates an example progression of ranking and reranking.
[24] Figure 9 illustrates another example process for an alternative type of tournament.
[251 Figures 10a and l Ob illustrate an example seeding bracket and process for seeding.
[26] Figure 11 illustrates'another example seeding bracket.
[27] Figure 12 illustrates an example relationship chart showing how various user interface screens may be used on a player's console.
DETAILED DESCRIPTION
[28] In the following description of the various aspects, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration various features described herein may be practiced. It is to be understood that other embodiments may be used and structural and functional modifications may be made.
1291 Figure lA illustrates an example of a suitable gaming system environment 100 on which computer games, video games, and or other electronic games (collectively referred to herein as computer games) may be played. The gaming 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 of the features described herein. Neither should the gaming system environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the illustrative operating gaming system environment 100.
[30] Aspects described herein are operational with numerous other general purpose or special purpose computing system environments or configurations. 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;
portable and hand-held devices such as personal digital assistants (PDAs), tablet PCs or laptop PCs;
multiprocessor systems; microprocessor-based systems; set top boxes;
programmable consumer electronics; network PCs; minicomputers; mainframe computers;
electronic game consoles, distributed computing environments that include any of the above systems or devices; and the like.
[31] Aspects herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
Generally, program modules include routines, programs, objects, components, data structures, etc.
that perform particular tasks or implement particular abstract data types. The features described herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
[32] Figure 1 shows an exemplary gaming system 100. Gaming system 100 may include a game console 102 and one or more handheld controllers, as represented by controllers 104(1) and 104(2). The game console 102 may be equipped with an internal or external hard disk drive and a portable media drive 106 that supports various forms of portable storage media as represented by optical storage disc 108. Examples of suitable portable storage media include DVD, CD-ROM, game discs, and so forth.
[33] Game console 102 may have a number of slots 110 on its front face to support up to four controllers, although the number and arrangement of slots may be modified. A power button 112 and an eject button 114 are also positioned on the front face of the game console 102. The power button 112 switches power to the game console and the eject button 114 alternately opens and closes a tray of the portable media drive 106 to allow insertion and extraction of the storage disc 108. In some aspects, game console 102 may be a dedicated computing device for home entertainment, and may be a closed, secure system that only executes authenticated and authorized applications. The game console 102 may be optimized for executing game programs (e.g., having increased processing support for gaming applications, such as physics co-processors, math co-processors, graphics co-processors, higher resolution video output, higher fidelity audio output, etc.), and may omit certain features commonly found on personal computing devices, such as an alphabetic keyboard, internal hardware expansion slots, printer communication port, etc.
[34] Game console 102 may connect to a television or other display (not shown) via A/V
interfacing cables 120. A power cable 122 provides power to the game console.
Game console 102 may further be configured with broadband network capabilities, as represented by the cable or modem connector 124 to facilitate access to a network, such as the Internet.
Connector 124 may also be fitted with a wireless adapter to connect to one or more wireless networks.
[35] Each controller 104 may be coupled to the game console 102 via a wire or wireless interface. In the illustrated implementation, the controllers are USB
(Universal Serial Bus) compatible and are connected to the console 102 via USB cables 130. Controller 102 may be equipped with any of a wide variety of user interaction mechanisms. As illustrated in Figure 1, each controller 104 may be equipped with two thumbsticks 132(1) and 132(2), a D-pad 134, buttons 136 (e.g., `A', `B', `X', `Y'), and two triggers 138. The thumbsticks 132 may be analog directional control units, and may include analog potentiometers to detect a degree of position in the X- and Y- coordinates. D-pad 134 may be a directional pad, with inputs for entering directional commands such as up, down, left and right, or combinations of these directions (e.g., upper-left). D-pad 134 may also be analog, and may provide input as to a degree of pressure used to press in a particular direction. These mechanisms are. merely representative, and other known gaming mech~nisms may be substituted for or added to those shown in Figure 1.
[36] A memory unit (MU) 140 may be inserted into the controller 104 to provide additional and portable storage. Portable memory units enable users to store game parameters and user accounts, and port them for play on other consoles. In the described implementation, each controller is configured to accommodate two memory units 140, although more or less than two units may be employed in other implementations.
A
headset 142 may be connected to the controller 104 or game console 102 to provide audio communication capabilities. Headset 142 may include a microphone for audio input and one or more speakers for audio output.
[37] Gaming system 100 is capable of playing, for example, games, music, and videos.
With the different storage offerings, titles can be played from the hard disk drive or the portable medium 108 in drive 106, from an online source, or from a memory unit 140. For security, in some embodiments executable code can only be run from the portable medium 108. A sample of what gaming system 100 is capable of playing include game titles played from CD and DVD discs, from the hard disk drive, or from an online source;
digital music played from a CD in the portable media drive 106, from a file on the hard disk drive (e.g., "WINDOWSTM" Media Audio (WMA) forrnat), or from online streaming sources; and digital audio/video played from a DVD disc in the portable media drive 106, from a file on the hard disk drive (e.g., Active Streaming Format), or from online streaming sources.
[38] Figure 2 shows functional components of the gaming system 100 in more detail.
The game console 102 has a central processing unit (CPU) 200 and a memory controller 202 that facilitates processor access to various types of memory, including a flash ROM
(Read Only Memory) 204, a RAM (Random Access Memory) 206, a hard disk drive 208, and the portable media drive 106. The CPU 200 is equipped with a level 1 cache 210 and a level 2 cache 212 to temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput.
[39] The CPU 200, memory controller 202, and various memory devices are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
[40] As one suitable implementation, the CPU 200, memory controller 202, ROM
204, and RAM 206 are integrated onto a common module 214. In this implementation, ROM
204 is configured as a flash ROM that is connected to the memory controller 202 and a ROM bus (not shown). RAM 206 is configured as multiple DDR SDRAM (Double Data Rate Synchronous Dynamic RAM) that are independently controlled by the memory controller 202 via separate buses (not shown). The hard disk drive 208 and portable media drive 106 are connected to the memory controller via the PCI bus and an ATA
(AT
Attachment) bus 216.
[41] A 3D graphics processing unit 220 and a video encoder 222 form a video processing pipeline for high speed and high resolution graphics processing.
Data is carried from the graphics processing unit 220 to the video encoder 222 via a digital video bus (not shown). An audio processing unit 224 and an audio codec (coder/decoder) 226 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 224 and the audio codec 226 via a communication link (not shown). The video and audio processing pipelines output data to an AJV (audio/video) port 228 for transmission to the television or other display. In the illustrated implementation, the video and audio processing components 220-228 are mounted on the module 214.
[42] Also implemented on the module 214 are a USB host controller 230 and a network interface 232. The USB host controller 230 is coupled to the CPU 200 and the memory controller 202 via a bus (e.g., PCI bus) and serves as host for the peripheral controllers 104(1)-104(4). The network interface 232 provides access to a network (e.g., Internet, home network, etc.) and may be any of a wide variety of various wire or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.
[43] The game console 102 has two dual controller support subassemblies 240(1) and 240(2), with each subassembly supporting two game controllers 104(1)-104(4). A
front panel I/O subassembly 242 supports the functionality of the power button 112 and the eject button 114, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the game console. The subassemblies 240(1), 240(2), and 242 are coupled to the module 214 via one or more cable assemblies 244. In some embodiments, game console 102 may also include a keyboard input subassembly 240(3), to which is connected a keyboard 254. The keyboard 254 and its subassembly might be offered as part of a developer's kit version of the console 102, to allow the use of a keyboard for entering text commands and data for testing purposes. In some embodiments, the keyboard 254 may communicate directly with a controller port (e.g., as in subassemblies 240), and the use of a separate keyboard input subassembly is not necessary. Furthermore, to conserve further game console resources, a keyboard driver and subassembly may be omitted from the console, and instead the console may be coupled to a second computing device (e.g., another PC, or a debugging workstation) via USB cable, by which the second computing device may send command sequences to the game console, reducing the need in the game console for separate software and/or hardware for interpreting text command sequences entered via the keyboard.
[44] Eight memory units 140(1)-140(8) are illustrated as being connectable to the four controllers 104(l)-104(4), i.e., two memory units for each controller. Each memory unit 140 offers additional storage on which games, game parameters, and other data may be stored. When inserted into a controller, the memory unit 140 can be accessed by the memory controller 202.
[45] A system power supply module 250 provides power to the components of the gaming system 100. A fan 252 cools the circuitry within the game console 102.
[46] The game console 102 implements a uniform media portal model that provides a consistent user interface and navigation hierarchy 'to move users through various entertainment areas. The portal model offers a convenient way to access content from multiple different media types-game data, audio data, and video data-regardless of the media type inserted into the portable media drive 106.
[47] To 'implement the uniform media portal model, a console user interface (UI) application 260 is stored on the hard disk drive 208. When the game console is powered on, various portions of the console application 260 are loaded into RAM 206 and/or caches 210, 212 and executed on the CPU 200. The console application 260 presents a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console.
[48] The gaming system 100 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the gaming system 100 allows one or more players to play games, watch movies, or listen to music.
However, with the integration of broadband connectivity made available through the network interface 232, the gaming system 100 may further be operated as a participant in a larger network gaming community. This network gaming environment is described next.
[49] Figure 3 shows an exemplary network gaming environment 300 that interconnects multiple gaming systems 100(1), ..., 100(g) via a network 302. The network 302 represents any of a wide variety of data communications networks. It may include public portions (e.g., the Internet) as well as private portions (e.g., a residential Local Area Network (LAN)), as well as combinations of public and private portions.
Network 302 may be implemented using any one or more of a wide variety of conventional communications media including both wired and wireless media. Any of a wide variety of communications protocols can be used to communicate data via network 302, including both public and proprietary protocols. Examples of such protocols include TCP/IP, IPX/SPX, NetBEUI, etc.
[50] In addition to gaming systems 100, one or more online services 304(1), ..., 304(s) may be accessible via the network 302 to provide various services for the participants, such as hosting online games, serving downloadable music or video files, hosting gaming competitions, serving streaming audio/video files, and the like. The network gaming environment 300 may further involve a key distribution center 306 that plays a role in authenticating individual players and/or gaming systems 100 to one another as well as online services 304. The distribution center 306 distributes keys and service tickets to valid participants that may then be used to forrn games amongst multiple players or to purchase services from the online services 304.
[51] The network gaming environment 300 introduces another memory source available to individual gaming systems 100-online storage. In addition to the portable storage medium 108, the hard disk drive 208, and the memory unit(s) 140, the gaming system 100(1) can aIso access data files available at remote storage locations via the network 302, as exemplified by remote storage 308 at online service 304(s).
[52] Figure 4 is a block diagram of another illustrative online gaming environment 400, e.g. "XBOXTM LIVETM" by Microsoft Corporation of Redmond, Washington. Multiple game consoles 402(1), 402(2), ..., 402(n) are coupled to a security gateway 404 via a network 406. Each game console 402 can be, for example, a game console 102 of Figure 1 or Figure 2. Network 406 represents any one or more of a variety of conventional data communications networks. Network 406 will typically include packet switched networks, but may also include circuit switched networks. Network 406 can include wire and/or wireless portions. In one exemplary implementation, network 406 includes the Internet and may optionally include one or more local area networks (LANs) and/or wide area networks (WANs). At least a part of network 406 is a public network, which refers to a network that is publicly-accessible. Virtually anyone can access the public network.
[53] In some situations, network 406 includes a LAN (e.g., a home network), with a routing device situated between game console 402 and security gateway 404.
This routing device may perform network address translation (NAT), allowing the multiple devices on the LAN to share the same IP address on the Internet, and also operating as a firewall to protect the device(s) on the LAN from access by malicious or mischievous users via the Internet.
[541 Security gateway 404 operates as a gateway between public network 406 and a private network 408. Private network 408 can be any of a wide variety of conventional networks, such as a local area network. Private network 408, as well as other devices discussed in more detail below, is within a data center 410 that operates as a secure zone.
Data center 410 is made up of trusted devices communicating via trusted communications.
Thus, encryption and authentication within secure zone 410 is not necessary.
The private nature of network 408 refe'rs to the restricted accessibility of network 408 -access to network 408 is restricted to only certain individuals (e.g., restricted by the owner or operator of data center 410).
[55) Security gateway 404 is a cluster of one or more security gateway computing devices. These security gateway computing devices collectively implement security gateway 404. Security gateway 404 may optionally include one or more conventional load balancing devices that operate to direct requests to be handled by the security gateway computing devices to appropriate ones of those computing devices. This directing or load balancing is performed in a manner that attempts to balance the load on the various security gateway computing devices approximately equally (or altematively in accordance with some other criteria).
[56] Also within data center 410 are: one or more monitoring servers 412; one or more presence and notification front doors 414, one or more presence servers 416, one or more notification servers 418, and a profile store 428 (collectively implementing a presence and notification service or system 430); one or more match front doors 420 and one or more match servers 422 (collectively implementing a match service); and one or more statistics front doors 424 and one or more statistics servers 426 (collectively implementing a statistics service). The servers 416, 418, 422, and 426 provide services to game consoles 402, and thus can be referred to as service devices. Other service devices may also be included in addition to, and/or in place of, one or more of the servers 416, 418, 422, and 426. Additionally, although only one data center is shown in Figure 4, alternatively multiple data centers may exist with which game consoles 402 can communicate.
These data centers may operate independently, or alternatively may operate collectively (e.g., to make one large data center available to game consoles 102,402).
Il [57] Game consoles 402 are situated remotely from data center 410, and access data center 410 via network 406. A game console 402 desiring to communicate with one or more devices in the data center logs in to the data center and establishes a secure communication channel between the console 402 and security gateway 404. Game console 402 and security gateway 404 encrypt and authenticate data packets being passed back and forth, thereby allowing the data packets to be securely transmitted between them without being understood by any other device that may capture or copy the data packets without breaking the encryption. Each data packet communicated from game console 402 to security gateway 404, or from security gateway 404 to game console 402 can have data embedded therein. This embedded data is referred to as the content or data content of the packet. Additional information may also be inherently included in the packet based on the packet type (e.g., a heartbeat packet).
[58] The secure communication channel between a console 402 and security gateway 404 is based on a security ticket. Console 402 authenticates itself and the current user(s) of console 402 to a key distribution center 429 and obtains, from key distribution center 429, a security ticket. Console 402 then uses this security ticket to establish the secure communication channel with security gateway 404. In establishing the secure communication channel with security gateway 404, the game console 402 and security gateway 404 authenticate themselves to one another and establish a session security key that is known only to that particular game console 402 and the security gateway 404. This session security key is used to encrypt data transferred between the game console 402 and the security gateway cluster 404, so no other devices (including other game consoles 402) can read the data. The session security key is also used to authenticate a.
data packet as being from the security gateway 404 or game console 402 that the data packet alleges to be from. Thus, using such session security keys, secure communication'channels can be established between the security gateway 404 and the various game consoles 402.
[59] Once the secure communication channel is established between a game console 402 and the security gateway 404, encrypted data packets can be securely transmitted between the two. When the game console 402 desires to send data to a particular service device in data center 410, the game console 402 encrypts the data and sends it to security gateway 404 requesting that it be forwarded to the particular service device(s) targeted by the data packet. Security gateway 404 receives the data packet and, after authenticating and decrypting the data packet, encapsulates the data content of the packet into another message to be sent to the appropriate service via private network 408. Security gateway 404 determines the appropriate service for the message based on the requested service(s) targeted by the data packet.
1601 Similarly, when a service device in data center 410 desires to communicate data to a game console 402, the data center sends a message to security gateway 404, via private network 408, including the data content to be sent to the game console 402 as well as an indication of the particular game console 402 to which the data content is to be sent.
Security gateway 404 embeds the data content into a data packet, and then encrypts the data packet so it can only be decrypted by the particular game console 402 and also authenticates the data packet as being from the security gateway 404.
[61] A.lthough discussed herein as primarily communicating encrypted data packets between security gateway 404 and a game console 402, alternatively some data packets may be partially encrypted (some portions of the data packets are encrypted while other portions are not encrypted). Which portions of the data packets are encrypted and which are not can vary based on the desires of the designers of data center 410 and/or game consoles 402. For example, the designers may choose to allow voice data to be communicated among consoles 402 so that users of the consoles 402 can talk to one another - the designers may further choose to allow the voice data to be unencrypted while any other data in the packets is encrypted. Additionally, in another alternative, some data packets may have no portions that are encrypted (that is, the entire data' packet is unencrypted). It should be noted that, even if a data packet is unencrypted or only partially encrypted, all of the data packet can still be authenticated.
[62] Each security gateway device in security gateway 404 is responsible for the secure communication channel with typically one or more game consoles 402, and thus each security gateway device can be viewed as being responsible for managing or handling one or more game consoles. The various security gateway devices may be in communication with each other and communicate messages to one another. For example, a security gateway device that needs to send a data packet to a game console that it is not responsible for managing may send a message to all the other security gateway devices with the data to be sent to that game console. This message is received by the security gateway device that is responsible for managing that game console and sends the appropriate data to that game console. Alternatively, the security gateway devices may be aware of which game consoles are being handled by which security gateway devices - this may be explicit, such as eaoh security gateway device maintaining a table of game consoles handled by the other security gateway devices, or alternatively implicit, such as determining which security gateway device is responsible for a particular game console based on an identifier of the game console.
[63] Monitoring server(s) 412 operate to inform devices in data center 410 of an unavailable game console 402 or an unavailable security gateway device of security gateway 404. Game consoles 402 can become unavailable for a variety of different reasons, such as a hardware or software failure, the console being powered-down without logging out of data center 410, the network connection cable to console 402 being disconnected from console 402, other network problems (e.g., the LAN that the console 402 is on nialfunctioning), etc. Similarly, a security gateway device of security gateway 404 can become unavailable for a variety of different reasons, such as hardware or software failure, the device being powered-down, the network connection cable to the device being disconnected from the device, other network problems, etc.
[64] Each of the security gateway devices in security gateway 404 is monitored by one or more monitoring servers 412, which detect when one of the security gateway devices becomes unavailable. In the event a security gateway device becomes unavailable, monitoring server 412 sends a message to each of the other devices in data center 410 (servers, front doors, etc.) that the security gateway device is no longer available. Each of the other devices can operate based on this information as it sees fit (e.g., it may assume that particular game consoles being managed by the security gateway device are no longer in communication with data center 410 and perform various clean-up operations accordingly). Alternatively, only certain devices may receive such a message from the monitoring server 412 (e.g., only those devices that are concerned with whether security gateway devices are available).
[65] Security gateway 404 monitors the individual game consoles 402 and detects when one of the game consoles 402 becomes unavailable. When security gateway 404 detects that a game console is no longer available, security gateway 404 sends a message to monitoring server 412 identifying the unavailable game console. In response, monitoring server 412 sends a message to each of the other devices in data center 410 (or alternatively only selected devices) that the game console is no longer available. Each of the other devices can then operate based on this information as it sees fit.
[66] Presence server(s) 416 hold and process data concerning the status or presence of a given user logged in to data center 410 for online gaming. Notification server(s) 418 maintains multiple notification queues of outgoing messages destined for a player logged in to data center 410. Presence and notification front door 414 is one or more server devices that operate as an intermediary between security gateway 404 and servers 416 and 418.
One or more load balancing devices (not shown) may be included in presence and notification front door 414 to balance the load among the multiple server devices operating as front door 414. Security gateway 404 communicates messages for servers 416 and 418 to the front door 414, and the front door 414 identifies which particular server 416 or particular server 418 the message is to be communicated to. By using front door 414, the actual implementation of servers 416 and 418, such as which servers are responsible for managing data regarding which users, is abstracted from security gateway 404.
Security gateway 404 can simply forward messages that target the presence and notification service to presence and notification front door 414 and rely on front door 414 to route the messages to the appropriate one of server(s) 416 and server(s) 418.
[67] Match server(s) 422 hold and process data concerning the matching of online players to one another. An online user is able to advertise a game available for play along with various characteristics of the game (e.g., the location where a football game will be played, whether a game is to be played during the day or at night, the user's skill level, etc.). These various characteristics can then be used as a basis to match up different online users to play games together. Match front door 420 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract match server(s) 422 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
[68] Statistics server(s) 426 hold and process data concerning various statistics for online games. The specific statistics used can vary based on the game designer's desires (e.g., the top ten scores or times, a world ranking for all online players of the game, a list of users who have found the most items or spent the most time playing, etc.).
Statistics front door 426 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract statistics server(s) 426 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
[69] Title server(s) 432 may be provided for each individual game title or program supported by the online service. Each title server 432 may act as a server and communicate with game consoles 402 to execute programs and/or modules for conducting an online gaming session. The server 432 may be given as much, or as little, control over actions in a game as desired by the game developer. For example, some games may rely on the centralized title server 432 to perform calculations and processing having to do with interactions among multiple players on different game consoles 402, such as determining which player character was first to a particular point on a map, or controlling the appearance of a common environment in which the various players' characters appear, and may rely on the individual consoles 402 to handle the just the more localized aspects, such as the actual rendering of images and results, and initial processing of user inputs.
[70] On the other hand, games may rely more on the consoles 402 for processing.
Processing responsibilities for a given game may be distributed among a plurality of consoles 402 that are connected to a game session. Or, the game may select a subset of the consoles 402 connected to the session, and cause that console to act as the server for the session. In such a situation, title server 432 may simply coordinate communications between the game consoles 402, or may simply perform initial startup functions (e.g., game type, startup authorization, etc.), and then await results.
[71] Tournament servers 434 may also be present to manage tournament functionality.
This functionality will be described in greater detail below, and may generally relate to the creation, management and/or termination of online multiplayer tournaments. The various servers described above need not reside on separate machines, as some or all of them may be combined into a common process or machine.
[72] Thus, it can be seen that security gateway 404 operates to shield devices in the secure zone of data center 410 from the untrusted, public network 406.
Communications within the secure zone of data center 410 need not be encrypted, as all devices within data center 410 are trusted. However, any information to be communicated from a device within data center 410 to a game console 402 passes through security gateway cluster 404, where it is encrypted in such a manner that it can be decrypted by only the game console 402 targeted by the information.
[73] As illustrated in Figure 4, title server 432 and tournament server 434 may reside behind a second security gateway 405. Security gateway 405 may be the same as security gateway 404, or it may be a simplified one to omit features not needed by its servers and devices.
[74] One or more features described herein may be embodied in computer-executable instructions (i.e., software) stored in RAM memory 206, non-volatile memory 108, 208, 308, or any other resident memory on game console 102. Generally, software modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types when executed by a processor in a computer or other device. The computer executable instructions may be stored on a computer readable medium such as one or more hard disks 208, removable storage media 108 (e.g., CD-ROM, DVD, disk, etc.), solid state memory, RAM 206, etc. As will be appreciated by one of skill in the art, the functionality of the software modules may be combined or distributed as desired in various embodiments. In addition, the functionality may be embodied in whole or in part in firmware or hardware equivalents such as application specific integrated circuits (ASIC), field programmable gate arrays (FPGA), and the like.
[75] - Aspects herein are not limited to console computing environments.
Indeed, these aspects may also be implemented in video games that operate on.personal computers (PC).
Figure 5A illustrates an example of a suitable computing system environment 500 on which the features described herein may be implemented. The computing system environment 500 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 of the features described herein.
Neither should the computing environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 500.
[76] The features herein are operational with numerous other general purpose or special purpose computing system environments or configurations. 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, rriultiprocessor systems, microprocessor-based systems, set top boxes, prograrnmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
[77] The features herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. The features may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
[78] With reference to Figure 5A, an exemplary system for implementing the features described herein includes a general purpose computing device in the form of a computer 510. Components of computer 510 may include, but are not limited to, a processing unit 520, a system memory 530, and a system bus 521 that couples various system components including the system memory to the processing unit 5.20. The system bus 521 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.
[79] Computer 510 typically includes a variety of computer readable media.
Computer readable media can be any available media that can be accessed by computer 510 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, and 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, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices (in the singular or the plural), or any other medium which can be used to store the desired information and which can accessed by computer 510. 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 the any of the above should also be included within the scope of computer readable media.
[80] The system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 531 and random access memory (RAM) 532. A basic input/output system 533 (BIOS), containing the basic routines that help to transfer information between elements within computer 510, such as during start-up, is typically stored in ROM 531. RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation, Figure 5A
illustrates operating system 534, application programs 535, other program modules 536, and program data 537.
[81] The computer 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, Figure 5 illustrates a hard disk drive 541 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 551 that reads from or writes to a removable, nonvolatile magnetic disk 552, and an optical disk drive 555 that reads from or writes to a removable, nonvolatile optical disk 556 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. The hard disk drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540, and magnetic disk drive 551 and optical disk drive 555 are typically connected to the system bus 521 by a removable memory interface, such as interface 550.
[82] The drives and their associated computer `storage media discussed above and illustrated in Figure 5A, provide storage of computer readable instructions, data structures, program modules and other data for the computer 510. In Figure 5, for example, hard disk drive 541 is illustrated as storing operating system 544, application programs 545, other program modules 546, and program data 547. Note that these components can either be the same as or different from operating system 534, application programs 535, other program modules 536, and program data 537. Operating system 544, application programs 545, other program modules 546, and program data 547 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 through input devices such as a keyboard 562 and pointing device 561, 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 the processing unit 520 through a user input interface 560 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 591 or other type of display device is also connected to the system bus 521 via an interface, such as a video interface 590. In addition to the monitor, computers may also include other peripheral output devices such as speakers 597 and printer 596, which may be connected through an output peripheral interface 595.
[83] The computer 510 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580.
The remote computer 580 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 510, although only a memory storage device 581 has been illustrated in Figure 5. The logical connections depicted in Figure 5 include a local area network (LAN) 571 and a wide area network (WAN) 573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
[84] When used in a LAN networking environment, the computer 510 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN
networking environment, the computer 510 typically includes a modem 572 or other means for establishing communications over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to the system bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, Figure 5 illustrates remote application programs 585 as residing on memory device 581. 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.
[85] A programming interface (or more simply, interface) may be viewed as any mechanism, process, protocol for enabling one or more segment(s) of code to communicate with or access the functionality provided by one or more other segment(s) of code.
Alternatively, a programming interface may be viewed as one or more mechanism(s), method(s), function call(s), module(s), object(s), etc. of a component of a system capable of communicative coupling to one or more mechanism(s), method(s), function call(s), module(s), etc. of other component(s). The term "segment of code" in the preceding sentence is intended to include one or more instructions or lines of code, and includes, e.g., code modules, objects, subroutines, functions, and so on, regardless of the terminology applied or whether the code segments are separately compiled, or whether the code segments are provided as source, intermediate, or object code, whether the code segments are utilized in a runtime system or process, or whether they are located on the same or different machines or distributed across multiple machines, or whether the functionality represented by the segments of code are implemented wholly in software, wholly in hardware, or a combination of hardware and software.
[86] Notionally, a programming interface may be viewed generically, as shown in Figure 5B or Figure 5C. Figure 5B illustrates an interface Interfacel as a conduit through which first and second code segments communicate. Figure 5C illustrates an interface as comprising interface objects 11 and 12 (which may or may not be part of the first and second code segments), which enable first and second code segments of a system to communicate via medium M. In the view of Figure 5C, one may consider interface objects
[111 In some aspects, a qualification period may precede the tournament, during which players may attempt to qualify by posting their corresponding scores. Players may be notified of their qualification status, and may be notified again if the status changes due to subsequent players' qualification attempts, and may be given an option to make another attempt at qualification. A tournament may be instanced multiple times to accommodate differing levels of qualifiers.
[12] In some aspects, tournaments may be dynamically adjusted to accommodate variable numbers of qualifying tournament entries. The tournament parameters, such as number of winners per match, number of players per match, number of rounds, number of players in the tournament's final round, and others, may be varied so that a desired number of qualifiers may participate in the tournament. Entrants may be ranked using a ratio of their total score to the total possible score for rounds that they have played, and that ranking may be used in later groupings of players.
113] Tournament user interfaces may be displayed to allow user navigation through the tournament process. The user may play an interactive, online multiplayer and multi-round video game, and view a list of tournaments for which he/she has qualified.
Other options may be offered as well, such as searching for tournaments that satisfy user-desired criteria, or displaying tournament and/or competitor details.
[14] These and other aspects will be described in greater detail below.
BRIEF DESCRIPTION OF THE DRAWINGS
[15] Figure 1 illustrates a game console that may be used to implement various features described herein.
[16] Figure 2 illustrates components that may be used in the console shown in Figure 1.
[17] Figure 3 illustrates how various consoles, and other elements, may be interconnected to implement features described herein.
[18] Figure 4 illustrates an example network configuration using game consoles.
[19] Figure 5a illustrates an example computing device that may be used to implement features described herein.
[20] Figures 5b-m illustrate example software elements and concepts for implementing features described herein.
[21] Figure 6 illustrates an example process for conducting tournaments.
[22] Figure 7 illustrates an example of a tournament data structure.
[23] Figures 8a-b illustrate an example process for a type of tournament, and Figure 8c illustrates an example progression of ranking and reranking.
[24] Figure 9 illustrates another example process for an alternative type of tournament.
[251 Figures 10a and l Ob illustrate an example seeding bracket and process for seeding.
[26] Figure 11 illustrates'another example seeding bracket.
[27] Figure 12 illustrates an example relationship chart showing how various user interface screens may be used on a player's console.
DETAILED DESCRIPTION
[28] In the following description of the various aspects, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration various features described herein may be practiced. It is to be understood that other embodiments may be used and structural and functional modifications may be made.
1291 Figure lA illustrates an example of a suitable gaming system environment 100 on which computer games, video games, and or other electronic games (collectively referred to herein as computer games) may be played. The gaming 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 of the features described herein. Neither should the gaming system environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the illustrative operating gaming system environment 100.
[30] Aspects described herein are operational with numerous other general purpose or special purpose computing system environments or configurations. 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;
portable and hand-held devices such as personal digital assistants (PDAs), tablet PCs or laptop PCs;
multiprocessor systems; microprocessor-based systems; set top boxes;
programmable consumer electronics; network PCs; minicomputers; mainframe computers;
electronic game consoles, distributed computing environments that include any of the above systems or devices; and the like.
[31] Aspects herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
Generally, program modules include routines, programs, objects, components, data structures, etc.
that perform particular tasks or implement particular abstract data types. The features described herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
[32] Figure 1 shows an exemplary gaming system 100. Gaming system 100 may include a game console 102 and one or more handheld controllers, as represented by controllers 104(1) and 104(2). The game console 102 may be equipped with an internal or external hard disk drive and a portable media drive 106 that supports various forms of portable storage media as represented by optical storage disc 108. Examples of suitable portable storage media include DVD, CD-ROM, game discs, and so forth.
[33] Game console 102 may have a number of slots 110 on its front face to support up to four controllers, although the number and arrangement of slots may be modified. A power button 112 and an eject button 114 are also positioned on the front face of the game console 102. The power button 112 switches power to the game console and the eject button 114 alternately opens and closes a tray of the portable media drive 106 to allow insertion and extraction of the storage disc 108. In some aspects, game console 102 may be a dedicated computing device for home entertainment, and may be a closed, secure system that only executes authenticated and authorized applications. The game console 102 may be optimized for executing game programs (e.g., having increased processing support for gaming applications, such as physics co-processors, math co-processors, graphics co-processors, higher resolution video output, higher fidelity audio output, etc.), and may omit certain features commonly found on personal computing devices, such as an alphabetic keyboard, internal hardware expansion slots, printer communication port, etc.
[34] Game console 102 may connect to a television or other display (not shown) via A/V
interfacing cables 120. A power cable 122 provides power to the game console.
Game console 102 may further be configured with broadband network capabilities, as represented by the cable or modem connector 124 to facilitate access to a network, such as the Internet.
Connector 124 may also be fitted with a wireless adapter to connect to one or more wireless networks.
[35] Each controller 104 may be coupled to the game console 102 via a wire or wireless interface. In the illustrated implementation, the controllers are USB
(Universal Serial Bus) compatible and are connected to the console 102 via USB cables 130. Controller 102 may be equipped with any of a wide variety of user interaction mechanisms. As illustrated in Figure 1, each controller 104 may be equipped with two thumbsticks 132(1) and 132(2), a D-pad 134, buttons 136 (e.g., `A', `B', `X', `Y'), and two triggers 138. The thumbsticks 132 may be analog directional control units, and may include analog potentiometers to detect a degree of position in the X- and Y- coordinates. D-pad 134 may be a directional pad, with inputs for entering directional commands such as up, down, left and right, or combinations of these directions (e.g., upper-left). D-pad 134 may also be analog, and may provide input as to a degree of pressure used to press in a particular direction. These mechanisms are. merely representative, and other known gaming mech~nisms may be substituted for or added to those shown in Figure 1.
[36] A memory unit (MU) 140 may be inserted into the controller 104 to provide additional and portable storage. Portable memory units enable users to store game parameters and user accounts, and port them for play on other consoles. In the described implementation, each controller is configured to accommodate two memory units 140, although more or less than two units may be employed in other implementations.
A
headset 142 may be connected to the controller 104 or game console 102 to provide audio communication capabilities. Headset 142 may include a microphone for audio input and one or more speakers for audio output.
[37] Gaming system 100 is capable of playing, for example, games, music, and videos.
With the different storage offerings, titles can be played from the hard disk drive or the portable medium 108 in drive 106, from an online source, or from a memory unit 140. For security, in some embodiments executable code can only be run from the portable medium 108. A sample of what gaming system 100 is capable of playing include game titles played from CD and DVD discs, from the hard disk drive, or from an online source;
digital music played from a CD in the portable media drive 106, from a file on the hard disk drive (e.g., "WINDOWSTM" Media Audio (WMA) forrnat), or from online streaming sources; and digital audio/video played from a DVD disc in the portable media drive 106, from a file on the hard disk drive (e.g., Active Streaming Format), or from online streaming sources.
[38] Figure 2 shows functional components of the gaming system 100 in more detail.
The game console 102 has a central processing unit (CPU) 200 and a memory controller 202 that facilitates processor access to various types of memory, including a flash ROM
(Read Only Memory) 204, a RAM (Random Access Memory) 206, a hard disk drive 208, and the portable media drive 106. The CPU 200 is equipped with a level 1 cache 210 and a level 2 cache 212 to temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput.
[39] The CPU 200, memory controller 202, and various memory devices are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
[40] As one suitable implementation, the CPU 200, memory controller 202, ROM
204, and RAM 206 are integrated onto a common module 214. In this implementation, ROM
204 is configured as a flash ROM that is connected to the memory controller 202 and a ROM bus (not shown). RAM 206 is configured as multiple DDR SDRAM (Double Data Rate Synchronous Dynamic RAM) that are independently controlled by the memory controller 202 via separate buses (not shown). The hard disk drive 208 and portable media drive 106 are connected to the memory controller via the PCI bus and an ATA
(AT
Attachment) bus 216.
[41] A 3D graphics processing unit 220 and a video encoder 222 form a video processing pipeline for high speed and high resolution graphics processing.
Data is carried from the graphics processing unit 220 to the video encoder 222 via a digital video bus (not shown). An audio processing unit 224 and an audio codec (coder/decoder) 226 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 224 and the audio codec 226 via a communication link (not shown). The video and audio processing pipelines output data to an AJV (audio/video) port 228 for transmission to the television or other display. In the illustrated implementation, the video and audio processing components 220-228 are mounted on the module 214.
[42] Also implemented on the module 214 are a USB host controller 230 and a network interface 232. The USB host controller 230 is coupled to the CPU 200 and the memory controller 202 via a bus (e.g., PCI bus) and serves as host for the peripheral controllers 104(1)-104(4). The network interface 232 provides access to a network (e.g., Internet, home network, etc.) and may be any of a wide variety of various wire or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.
[43] The game console 102 has two dual controller support subassemblies 240(1) and 240(2), with each subassembly supporting two game controllers 104(1)-104(4). A
front panel I/O subassembly 242 supports the functionality of the power button 112 and the eject button 114, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the game console. The subassemblies 240(1), 240(2), and 242 are coupled to the module 214 via one or more cable assemblies 244. In some embodiments, game console 102 may also include a keyboard input subassembly 240(3), to which is connected a keyboard 254. The keyboard 254 and its subassembly might be offered as part of a developer's kit version of the console 102, to allow the use of a keyboard for entering text commands and data for testing purposes. In some embodiments, the keyboard 254 may communicate directly with a controller port (e.g., as in subassemblies 240), and the use of a separate keyboard input subassembly is not necessary. Furthermore, to conserve further game console resources, a keyboard driver and subassembly may be omitted from the console, and instead the console may be coupled to a second computing device (e.g., another PC, or a debugging workstation) via USB cable, by which the second computing device may send command sequences to the game console, reducing the need in the game console for separate software and/or hardware for interpreting text command sequences entered via the keyboard.
[44] Eight memory units 140(1)-140(8) are illustrated as being connectable to the four controllers 104(l)-104(4), i.e., two memory units for each controller. Each memory unit 140 offers additional storage on which games, game parameters, and other data may be stored. When inserted into a controller, the memory unit 140 can be accessed by the memory controller 202.
[45] A system power supply module 250 provides power to the components of the gaming system 100. A fan 252 cools the circuitry within the game console 102.
[46] The game console 102 implements a uniform media portal model that provides a consistent user interface and navigation hierarchy 'to move users through various entertainment areas. The portal model offers a convenient way to access content from multiple different media types-game data, audio data, and video data-regardless of the media type inserted into the portable media drive 106.
[47] To 'implement the uniform media portal model, a console user interface (UI) application 260 is stored on the hard disk drive 208. When the game console is powered on, various portions of the console application 260 are loaded into RAM 206 and/or caches 210, 212 and executed on the CPU 200. The console application 260 presents a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console.
[48] The gaming system 100 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the gaming system 100 allows one or more players to play games, watch movies, or listen to music.
However, with the integration of broadband connectivity made available through the network interface 232, the gaming system 100 may further be operated as a participant in a larger network gaming community. This network gaming environment is described next.
[49] Figure 3 shows an exemplary network gaming environment 300 that interconnects multiple gaming systems 100(1), ..., 100(g) via a network 302. The network 302 represents any of a wide variety of data communications networks. It may include public portions (e.g., the Internet) as well as private portions (e.g., a residential Local Area Network (LAN)), as well as combinations of public and private portions.
Network 302 may be implemented using any one or more of a wide variety of conventional communications media including both wired and wireless media. Any of a wide variety of communications protocols can be used to communicate data via network 302, including both public and proprietary protocols. Examples of such protocols include TCP/IP, IPX/SPX, NetBEUI, etc.
[50] In addition to gaming systems 100, one or more online services 304(1), ..., 304(s) may be accessible via the network 302 to provide various services for the participants, such as hosting online games, serving downloadable music or video files, hosting gaming competitions, serving streaming audio/video files, and the like. The network gaming environment 300 may further involve a key distribution center 306 that plays a role in authenticating individual players and/or gaming systems 100 to one another as well as online services 304. The distribution center 306 distributes keys and service tickets to valid participants that may then be used to forrn games amongst multiple players or to purchase services from the online services 304.
[51] The network gaming environment 300 introduces another memory source available to individual gaming systems 100-online storage. In addition to the portable storage medium 108, the hard disk drive 208, and the memory unit(s) 140, the gaming system 100(1) can aIso access data files available at remote storage locations via the network 302, as exemplified by remote storage 308 at online service 304(s).
[52] Figure 4 is a block diagram of another illustrative online gaming environment 400, e.g. "XBOXTM LIVETM" by Microsoft Corporation of Redmond, Washington. Multiple game consoles 402(1), 402(2), ..., 402(n) are coupled to a security gateway 404 via a network 406. Each game console 402 can be, for example, a game console 102 of Figure 1 or Figure 2. Network 406 represents any one or more of a variety of conventional data communications networks. Network 406 will typically include packet switched networks, but may also include circuit switched networks. Network 406 can include wire and/or wireless portions. In one exemplary implementation, network 406 includes the Internet and may optionally include one or more local area networks (LANs) and/or wide area networks (WANs). At least a part of network 406 is a public network, which refers to a network that is publicly-accessible. Virtually anyone can access the public network.
[53] In some situations, network 406 includes a LAN (e.g., a home network), with a routing device situated between game console 402 and security gateway 404.
This routing device may perform network address translation (NAT), allowing the multiple devices on the LAN to share the same IP address on the Internet, and also operating as a firewall to protect the device(s) on the LAN from access by malicious or mischievous users via the Internet.
[541 Security gateway 404 operates as a gateway between public network 406 and a private network 408. Private network 408 can be any of a wide variety of conventional networks, such as a local area network. Private network 408, as well as other devices discussed in more detail below, is within a data center 410 that operates as a secure zone.
Data center 410 is made up of trusted devices communicating via trusted communications.
Thus, encryption and authentication within secure zone 410 is not necessary.
The private nature of network 408 refe'rs to the restricted accessibility of network 408 -access to network 408 is restricted to only certain individuals (e.g., restricted by the owner or operator of data center 410).
[55) Security gateway 404 is a cluster of one or more security gateway computing devices. These security gateway computing devices collectively implement security gateway 404. Security gateway 404 may optionally include one or more conventional load balancing devices that operate to direct requests to be handled by the security gateway computing devices to appropriate ones of those computing devices. This directing or load balancing is performed in a manner that attempts to balance the load on the various security gateway computing devices approximately equally (or altematively in accordance with some other criteria).
[56] Also within data center 410 are: one or more monitoring servers 412; one or more presence and notification front doors 414, one or more presence servers 416, one or more notification servers 418, and a profile store 428 (collectively implementing a presence and notification service or system 430); one or more match front doors 420 and one or more match servers 422 (collectively implementing a match service); and one or more statistics front doors 424 and one or more statistics servers 426 (collectively implementing a statistics service). The servers 416, 418, 422, and 426 provide services to game consoles 402, and thus can be referred to as service devices. Other service devices may also be included in addition to, and/or in place of, one or more of the servers 416, 418, 422, and 426. Additionally, although only one data center is shown in Figure 4, alternatively multiple data centers may exist with which game consoles 402 can communicate.
These data centers may operate independently, or alternatively may operate collectively (e.g., to make one large data center available to game consoles 102,402).
Il [57] Game consoles 402 are situated remotely from data center 410, and access data center 410 via network 406. A game console 402 desiring to communicate with one or more devices in the data center logs in to the data center and establishes a secure communication channel between the console 402 and security gateway 404. Game console 402 and security gateway 404 encrypt and authenticate data packets being passed back and forth, thereby allowing the data packets to be securely transmitted between them without being understood by any other device that may capture or copy the data packets without breaking the encryption. Each data packet communicated from game console 402 to security gateway 404, or from security gateway 404 to game console 402 can have data embedded therein. This embedded data is referred to as the content or data content of the packet. Additional information may also be inherently included in the packet based on the packet type (e.g., a heartbeat packet).
[58] The secure communication channel between a console 402 and security gateway 404 is based on a security ticket. Console 402 authenticates itself and the current user(s) of console 402 to a key distribution center 429 and obtains, from key distribution center 429, a security ticket. Console 402 then uses this security ticket to establish the secure communication channel with security gateway 404. In establishing the secure communication channel with security gateway 404, the game console 402 and security gateway 404 authenticate themselves to one another and establish a session security key that is known only to that particular game console 402 and the security gateway 404. This session security key is used to encrypt data transferred between the game console 402 and the security gateway cluster 404, so no other devices (including other game consoles 402) can read the data. The session security key is also used to authenticate a.
data packet as being from the security gateway 404 or game console 402 that the data packet alleges to be from. Thus, using such session security keys, secure communication'channels can be established between the security gateway 404 and the various game consoles 402.
[59] Once the secure communication channel is established between a game console 402 and the security gateway 404, encrypted data packets can be securely transmitted between the two. When the game console 402 desires to send data to a particular service device in data center 410, the game console 402 encrypts the data and sends it to security gateway 404 requesting that it be forwarded to the particular service device(s) targeted by the data packet. Security gateway 404 receives the data packet and, after authenticating and decrypting the data packet, encapsulates the data content of the packet into another message to be sent to the appropriate service via private network 408. Security gateway 404 determines the appropriate service for the message based on the requested service(s) targeted by the data packet.
1601 Similarly, when a service device in data center 410 desires to communicate data to a game console 402, the data center sends a message to security gateway 404, via private network 408, including the data content to be sent to the game console 402 as well as an indication of the particular game console 402 to which the data content is to be sent.
Security gateway 404 embeds the data content into a data packet, and then encrypts the data packet so it can only be decrypted by the particular game console 402 and also authenticates the data packet as being from the security gateway 404.
[61] A.lthough discussed herein as primarily communicating encrypted data packets between security gateway 404 and a game console 402, alternatively some data packets may be partially encrypted (some portions of the data packets are encrypted while other portions are not encrypted). Which portions of the data packets are encrypted and which are not can vary based on the desires of the designers of data center 410 and/or game consoles 402. For example, the designers may choose to allow voice data to be communicated among consoles 402 so that users of the consoles 402 can talk to one another - the designers may further choose to allow the voice data to be unencrypted while any other data in the packets is encrypted. Additionally, in another alternative, some data packets may have no portions that are encrypted (that is, the entire data' packet is unencrypted). It should be noted that, even if a data packet is unencrypted or only partially encrypted, all of the data packet can still be authenticated.
[62] Each security gateway device in security gateway 404 is responsible for the secure communication channel with typically one or more game consoles 402, and thus each security gateway device can be viewed as being responsible for managing or handling one or more game consoles. The various security gateway devices may be in communication with each other and communicate messages to one another. For example, a security gateway device that needs to send a data packet to a game console that it is not responsible for managing may send a message to all the other security gateway devices with the data to be sent to that game console. This message is received by the security gateway device that is responsible for managing that game console and sends the appropriate data to that game console. Alternatively, the security gateway devices may be aware of which game consoles are being handled by which security gateway devices - this may be explicit, such as eaoh security gateway device maintaining a table of game consoles handled by the other security gateway devices, or alternatively implicit, such as determining which security gateway device is responsible for a particular game console based on an identifier of the game console.
[63] Monitoring server(s) 412 operate to inform devices in data center 410 of an unavailable game console 402 or an unavailable security gateway device of security gateway 404. Game consoles 402 can become unavailable for a variety of different reasons, such as a hardware or software failure, the console being powered-down without logging out of data center 410, the network connection cable to console 402 being disconnected from console 402, other network problems (e.g., the LAN that the console 402 is on nialfunctioning), etc. Similarly, a security gateway device of security gateway 404 can become unavailable for a variety of different reasons, such as hardware or software failure, the device being powered-down, the network connection cable to the device being disconnected from the device, other network problems, etc.
[64] Each of the security gateway devices in security gateway 404 is monitored by one or more monitoring servers 412, which detect when one of the security gateway devices becomes unavailable. In the event a security gateway device becomes unavailable, monitoring server 412 sends a message to each of the other devices in data center 410 (servers, front doors, etc.) that the security gateway device is no longer available. Each of the other devices can operate based on this information as it sees fit (e.g., it may assume that particular game consoles being managed by the security gateway device are no longer in communication with data center 410 and perform various clean-up operations accordingly). Alternatively, only certain devices may receive such a message from the monitoring server 412 (e.g., only those devices that are concerned with whether security gateway devices are available).
[65] Security gateway 404 monitors the individual game consoles 402 and detects when one of the game consoles 402 becomes unavailable. When security gateway 404 detects that a game console is no longer available, security gateway 404 sends a message to monitoring server 412 identifying the unavailable game console. In response, monitoring server 412 sends a message to each of the other devices in data center 410 (or alternatively only selected devices) that the game console is no longer available. Each of the other devices can then operate based on this information as it sees fit.
[66] Presence server(s) 416 hold and process data concerning the status or presence of a given user logged in to data center 410 for online gaming. Notification server(s) 418 maintains multiple notification queues of outgoing messages destined for a player logged in to data center 410. Presence and notification front door 414 is one or more server devices that operate as an intermediary between security gateway 404 and servers 416 and 418.
One or more load balancing devices (not shown) may be included in presence and notification front door 414 to balance the load among the multiple server devices operating as front door 414. Security gateway 404 communicates messages for servers 416 and 418 to the front door 414, and the front door 414 identifies which particular server 416 or particular server 418 the message is to be communicated to. By using front door 414, the actual implementation of servers 416 and 418, such as which servers are responsible for managing data regarding which users, is abstracted from security gateway 404.
Security gateway 404 can simply forward messages that target the presence and notification service to presence and notification front door 414 and rely on front door 414 to route the messages to the appropriate one of server(s) 416 and server(s) 418.
[67] Match server(s) 422 hold and process data concerning the matching of online players to one another. An online user is able to advertise a game available for play along with various characteristics of the game (e.g., the location where a football game will be played, whether a game is to be played during the day or at night, the user's skill level, etc.). These various characteristics can then be used as a basis to match up different online users to play games together. Match front door 420 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract match server(s) 422 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
[68] Statistics server(s) 426 hold and process data concerning various statistics for online games. The specific statistics used can vary based on the game designer's desires (e.g., the top ten scores or times, a world ranking for all online players of the game, a list of users who have found the most items or spent the most time playing, etc.).
Statistics front door 426 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract statistics server(s) 426 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
[69] Title server(s) 432 may be provided for each individual game title or program supported by the online service. Each title server 432 may act as a server and communicate with game consoles 402 to execute programs and/or modules for conducting an online gaming session. The server 432 may be given as much, or as little, control over actions in a game as desired by the game developer. For example, some games may rely on the centralized title server 432 to perform calculations and processing having to do with interactions among multiple players on different game consoles 402, such as determining which player character was first to a particular point on a map, or controlling the appearance of a common environment in which the various players' characters appear, and may rely on the individual consoles 402 to handle the just the more localized aspects, such as the actual rendering of images and results, and initial processing of user inputs.
[70] On the other hand, games may rely more on the consoles 402 for processing.
Processing responsibilities for a given game may be distributed among a plurality of consoles 402 that are connected to a game session. Or, the game may select a subset of the consoles 402 connected to the session, and cause that console to act as the server for the session. In such a situation, title server 432 may simply coordinate communications between the game consoles 402, or may simply perform initial startup functions (e.g., game type, startup authorization, etc.), and then await results.
[71] Tournament servers 434 may also be present to manage tournament functionality.
This functionality will be described in greater detail below, and may generally relate to the creation, management and/or termination of online multiplayer tournaments. The various servers described above need not reside on separate machines, as some or all of them may be combined into a common process or machine.
[72] Thus, it can be seen that security gateway 404 operates to shield devices in the secure zone of data center 410 from the untrusted, public network 406.
Communications within the secure zone of data center 410 need not be encrypted, as all devices within data center 410 are trusted. However, any information to be communicated from a device within data center 410 to a game console 402 passes through security gateway cluster 404, where it is encrypted in such a manner that it can be decrypted by only the game console 402 targeted by the information.
[73] As illustrated in Figure 4, title server 432 and tournament server 434 may reside behind a second security gateway 405. Security gateway 405 may be the same as security gateway 404, or it may be a simplified one to omit features not needed by its servers and devices.
[74] One or more features described herein may be embodied in computer-executable instructions (i.e., software) stored in RAM memory 206, non-volatile memory 108, 208, 308, or any other resident memory on game console 102. Generally, software modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types when executed by a processor in a computer or other device. The computer executable instructions may be stored on a computer readable medium such as one or more hard disks 208, removable storage media 108 (e.g., CD-ROM, DVD, disk, etc.), solid state memory, RAM 206, etc. As will be appreciated by one of skill in the art, the functionality of the software modules may be combined or distributed as desired in various embodiments. In addition, the functionality may be embodied in whole or in part in firmware or hardware equivalents such as application specific integrated circuits (ASIC), field programmable gate arrays (FPGA), and the like.
[75] - Aspects herein are not limited to console computing environments.
Indeed, these aspects may also be implemented in video games that operate on.personal computers (PC).
Figure 5A illustrates an example of a suitable computing system environment 500 on which the features described herein may be implemented. The computing system environment 500 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 of the features described herein.
Neither should the computing environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 500.
[76] The features herein are operational with numerous other general purpose or special purpose computing system environments or configurations. 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, rriultiprocessor systems, microprocessor-based systems, set top boxes, prograrnmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
[77] The features herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. The features may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
[78] With reference to Figure 5A, an exemplary system for implementing the features described herein includes a general purpose computing device in the form of a computer 510. Components of computer 510 may include, but are not limited to, a processing unit 520, a system memory 530, and a system bus 521 that couples various system components including the system memory to the processing unit 5.20. The system bus 521 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.
[79] Computer 510 typically includes a variety of computer readable media.
Computer readable media can be any available media that can be accessed by computer 510 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, and 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, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices (in the singular or the plural), or any other medium which can be used to store the desired information and which can accessed by computer 510. 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 the any of the above should also be included within the scope of computer readable media.
[80] The system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 531 and random access memory (RAM) 532. A basic input/output system 533 (BIOS), containing the basic routines that help to transfer information between elements within computer 510, such as during start-up, is typically stored in ROM 531. RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation, Figure 5A
illustrates operating system 534, application programs 535, other program modules 536, and program data 537.
[81] The computer 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, Figure 5 illustrates a hard disk drive 541 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 551 that reads from or writes to a removable, nonvolatile magnetic disk 552, and an optical disk drive 555 that reads from or writes to a removable, nonvolatile optical disk 556 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. The hard disk drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540, and magnetic disk drive 551 and optical disk drive 555 are typically connected to the system bus 521 by a removable memory interface, such as interface 550.
[82] The drives and their associated computer `storage media discussed above and illustrated in Figure 5A, provide storage of computer readable instructions, data structures, program modules and other data for the computer 510. In Figure 5, for example, hard disk drive 541 is illustrated as storing operating system 544, application programs 545, other program modules 546, and program data 547. Note that these components can either be the same as or different from operating system 534, application programs 535, other program modules 536, and program data 537. Operating system 544, application programs 545, other program modules 546, and program data 547 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 through input devices such as a keyboard 562 and pointing device 561, 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 the processing unit 520 through a user input interface 560 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 591 or other type of display device is also connected to the system bus 521 via an interface, such as a video interface 590. In addition to the monitor, computers may also include other peripheral output devices such as speakers 597 and printer 596, which may be connected through an output peripheral interface 595.
[83] The computer 510 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580.
The remote computer 580 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 510, although only a memory storage device 581 has been illustrated in Figure 5. The logical connections depicted in Figure 5 include a local area network (LAN) 571 and a wide area network (WAN) 573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
[84] When used in a LAN networking environment, the computer 510 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN
networking environment, the computer 510 typically includes a modem 572 or other means for establishing communications over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to the system bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, Figure 5 illustrates remote application programs 585 as residing on memory device 581. 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.
[85] A programming interface (or more simply, interface) may be viewed as any mechanism, process, protocol for enabling one or more segment(s) of code to communicate with or access the functionality provided by one or more other segment(s) of code.
Alternatively, a programming interface may be viewed as one or more mechanism(s), method(s), function call(s), module(s), object(s), etc. of a component of a system capable of communicative coupling to one or more mechanism(s), method(s), function call(s), module(s), etc. of other component(s). The term "segment of code" in the preceding sentence is intended to include one or more instructions or lines of code, and includes, e.g., code modules, objects, subroutines, functions, and so on, regardless of the terminology applied or whether the code segments are separately compiled, or whether the code segments are provided as source, intermediate, or object code, whether the code segments are utilized in a runtime system or process, or whether they are located on the same or different machines or distributed across multiple machines, or whether the functionality represented by the segments of code are implemented wholly in software, wholly in hardware, or a combination of hardware and software.
[86] Notionally, a programming interface may be viewed generically, as shown in Figure 5B or Figure 5C. Figure 5B illustrates an interface Interfacel as a conduit through which first and second code segments communicate. Figure 5C illustrates an interface as comprising interface objects 11 and 12 (which may or may not be part of the first and second code segments), which enable first and second code segments of a system to communicate via medium M. In the view of Figure 5C, one may consider interface objects
11 and 12 as separate interfaces of the same system and one may also consider that objects 11 and 12 plus medium M comprise the interface. Although Figures 5B and 5C
show bi-directional flow and interfaces on each side of the flow, certain implementations may only have information flow in one direction (or no information flow as described below) or may only have an interface object on one side. By way of example, and not limitation, terms such as application programming interface (API), entry point, method, function, subroutine, remote procedure call, and component object model (COM) interface, are encorinpassed within the definition of programming interface.
[87] Aspects of such a programming interface may include the method whereby the first code segment transmits infonnation (where "information" is used in its broadest sense and includes data, commands, requests, etc.) to the second code segment; the method whereby the second code segment receives the information; and the structure, sequence, syntax, organization, schema, timing and content of the information. In this regard, the underlying transport medium itself may be unimportant to the operation of the interface, whether the medium be wired or wireless, or a combination of both, as long as the information is transported in the manner defined by the interface. In certain situations, information may not be passed in one or both directions in the conventional sense, as the information transfer may be either via another mechanism (e.g. information placed in a buffer, file, etc.
separate from information flow between the code segments) or non-existent, as when one code segment simply accesses functionality performed by a second code segment.
Any or all of these aspects may be important in a given situation, e.g., depending on whether the code segments are part of a system in a loosely coupled or tightly coupled configuration, and so this list should be considered illustrative and non-limiting.
[88) This notion of a programming interface is known to those skilled in the art and is clear from the foregoing detailed description of the invention. There are, however, other ways to implement a programming interface, and, unless expressly excluded, these are intended to be encompassed by the claims set forth at the end of this specification. Such other ways may appear to be more sophisticated or complex than the simplistic view of Figures 5B and 5C, but they nonetheless perform a similar function to accomplish the same overall result. We will now briefly describe some illustrative alternative implementations of a programming interface.
A. FACTORING
[891 A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in Figures 5D and 5E. As shown, some interfaces can be described in terms of divisible sets of functionality. Thus, the interface functionality of Figures 5B
and 5C may be factored to achieve the same result, just as one may mathematically provide 24, or 2 times 2 times 3 times 2. Accordingly, as illustrated in Figure 5D, the function provided by interface Interfacel may be subdivided to convert the communications of the interface into multiple interfaces InterfacelA, InterfacelB, InterfacelC, etc.
while achieving the same result. As illustrated in Figure 5E, the function provided by interface I1 may be subdivided into multiple interfaces Ila, Ilb, I1 c, etc. while achieving the same result. Similarly, interface 12 of the second code segment which receives information from the first code segment may be factored into multiple interfaces 12a, 12b, 12c, etc. When factoring, the number of interfaces included with the 1 st code segment need not match the number of interfaces included with the 2nd code segment. In either of the cases of Figures 5D and 5E, the functional spirit of interfaces Interfacel and 11 remain the same as with Figures 5B and 5C, respectively. The factoring of interfaces may also follow associative, commutative, and other mathematical properties such that the factoring may be difficult to recognize. For instance, ordering of operations may be unimportant, and consequently, a function carried out by an interface may be carried out well in advance of reaching the interface, by another piece of code or interface, or performed by a separate component of the system. Moreover, one of ordinary skill in the programming arts can appreciate that there are a variety of ways of making different function calls that achieve the same result.
B. REDEFINITION
[90] In some cases, it may be possible to ignore, add or redefine certain aspects (e.g., parameters) of a programming interface while still accomplishing the intended result. This is illustrated in Figures 5F and 5G. For example, assume interface Interfacel of Figure 5B
includes a function call Square (input, precision, output), a call that includes three parameters, input, precision and output, and which is issued from the 1 st Code Segment to the 2nd Code Segment. If the middle parameter precision is of no concern in a given scenario, as shown in Figure 5F, it could just as well be ignored or even replaced with a meaningless (in this situation) parameter. One may also add an additional parameter of no concern. In either event, the functionality of square can be achieved, so long as output is returned after input is squared by the second code segment. Precision may very well be a meaningful parameter to some downstream or other portion of the computing system;
however, once it is recognized that precision is not necessary for the narrow purpose of calculating the square, it may be replaced or ignored. For example, instead of passing a valid precision value, a meaningless value such as a birth date could be passed without adversely affecting the result. Similarly, as shown in Figure 5G, interface I1 is replaced by interface I1', redefined to ignore or add parameters to the interface.
Interface 12 may similarly be redefined as interface 12', redefined to ignore unnecessary parameters, or parameters that may be processed elsewhere. The point here is that in some cases a programming interface may include aspects, such as parameters, which are not needed for some purpose, and so they may be ignored or redefined, or processed elsewhere for other purposes.
C. INLINE CODING
[91] It may also be feasible to merge some or all of the functionality of two separate code modules such that the "interface" between them changes forrn. For example, the functionality of Figures 5B and 5C may be converted to the functionality of Figures 5H and 51, respectively. In Figure 5H, the previous lst and 2nd Code Segments of Figure 5B are merged into a module containing both of them. In this case, the code segments may still be communicating with each other but the interface may be adapted to a form which is more suitable to the single module. Thus, for example, formal Call and Return statements may no longer be necessary, but similar processing or response(s) pursuant to interface Interfacel may still be in effect. Similarly, shown in Figure 51, part (or all) of interface 12 from Figure 1C may be written inline into interface 11 to form interface I1".
As illustrated, interface 12 is divided into I2a and 12b, and interface portion I2a has been coded in-line with interface I1 to form interface I1". For a concrete example, consider that the interface I1 from Figure 5C performs a function call square (input, output), which is received by interface 12, which after processing the value passed with input (to square it) by the second code segment, passes back the squared result with output. In such a case, the processing performed by the second code segment (squaring input) can be performed by the first code segment without a call to the interface.
D. DIVORCE
[92] A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in Figures 5J and 5K. As shown in Figure 5J, one or more piece(s) of middleware (Divorce Interface(s), since they divorce functionality and/or interface functions from the original interface) are provided to convert the communications on the first interface, Interfacel, to conform them to a different interface, in this case interfaces.
Interface2A, Interface2B and Interface2C. This might be doiie, e.g., where there is an installed base of applications designed to communicate with, say, an operating system in accordance with an Interfacel protocol, but then the operating system is changed to use a different interface, in this case interfaces Interface2A, Interface2B and Interface2C. The point is that the original interface used by the 2nd Code Segment is changed such that it is no longer compatible with the interface used by the lst Code Segment, and so an intermediary is used to make the old and new interfaces compatible. Similarly, as shown in Figure 5K, a third code segment can be introduced with divorce interface DI1 to receive the communications from interface 11 and with divorce interface D12 to transmit the interface functionality to, for example, interfaces 12a and 12b, redesigned to work with D12, but to provide the same functional result. Similarly, DI1 and D12 may work together to translate the functionality of interfaces Il and 12 of Figure 5C to a new operating system, while providing the same or similar functional result.
E. REWRITTNG
[93] Yet another possible variant is to dynamically rewrite the code to replace the interface functionality with something else but which achieves the same overall result. For example, there may be a system in which a code segment presented in an intermediate language (e.g. Microsoft IL, Java ByteCode, etc.) is provided to a Just-in-Time (JIT) compiler or interpreter in an execution environment (such as that provided by the Net framework, the Java runtime environment, or other similar runtime type environments).
The JIT compiler may be written so as to dynamically convert the communications from the I st Code Segment to the 2nd Code Segment, i.e., to conform them to a different interface as may be required by the 2nd Code Segment (either the original or a different 2nd Code Segment). This is depicted in Figures 5L and 5M. As can be seen in Figure 5L, this approach is similar to the Divorce scenario described above. It might be done, e.g., where an installed base of applications are designed to communicate with an operating system in accordance with an Interfacel protocol, but then the operating system is changed to use a different interface. The JIT Compiler could be used to conform the communications on the fly from the installed-base applications to the new interface of the operating system. As depicted in Figure 5M, this approach of dynamically rewriting the interface(s) may be applied to dynamically factor, or otherwise alter the interface(s) as well.
[94] It is also noted that the above-described scenarios for achieving the same or similar result as an interface via alternative embodiments may also be combined in various ways, serially and/or in parallel, or with other intervening code. Thus, the alternative embodiments presented above are not mutually exclusive and may be mixed, matched and combined to produce the same or equivalent scenarios to the generic scenarios presented in Figures 5B and 5C. It is also noted that, as with most programming constructs, there are other similar ways of achieving the same or similar functionality of an interface which may not be described herein, but nonetheless are represented by the spirit and scope of the invention, i.e., it is noted that it is at least partly the functionality represented by, and the advantageous results enabled by, an interface that underlie the value of an interface. The aforementioned systems may be used to implement the debugging methods or systems described herein. Various features provide for the automation of providing debugging feedback iinformation to a server by dumping portions of memory and automatically sending the dumped memory to a server when certain debugging events occur.
[95] Figure 6 illustrates an example overall process by which a tournament may be conducted in an online multiplayer gaming environment. At step 601, a tournament administrator may take steps to log in to a secure server, such as tournament server 434, to begin the creation of an online toumament. The administrator may be a game developer, player, or anyone having the right to create new tournament types on the system. The log in process may involve any desired mode of access, such as accessing a secure Internet site using a password and a computer terminal 510, or accessing an online location using a video game user interface from a console 402. In step 602, the tournament administrator may define the various parameters for the tournament being created. This entry may be accomplished using a displayed interface, such as an Internet page or a video game user interface, where the administrator may be prompted to enter (or select from a list) the various parameters for the tournament being defined. Example parameters are discussed further below.
1961 When the tournament parameters have been defined, the process may then proceed to step 603, where the system (e.g., the tournament server 434, or title server 432, depending on which server is designated for the task) awaits a trigger for instantiating a tournament. The trigger may be of any type of predetermined event, such as the passage of a predetermined amount of time (e.g., an hour, 30 minutes, etc.), or the registration by a predetermined number of players (e.g., 10, 50, 100 players, etc.).
[97] When the trigger is received or occurs, the process may proceed with instantiation of a tournament in step 604. Instantiation may involve the execution of one or more processing threads that will carry out the tournament as specified in the parameters. These threads may be executed by the tournament server 434, title server 432, individual consoles 402, or any other computing component in the system, and may be distributed across components (e.g., across multiple consoles 402) if desired. An instance of a tournament may be assigned its own unique tournament ID to help coordinate communications with clients participating in the tournament instance.
[98] When a tournament instance is created, the tournament may be assigned- a leaderboard ID. The underlying online service (e.g., XBOX LIVETM) may provide a common set of leaderboard data structures that are available for use by the various game programs supported by the consoles. Alternatively, the leaderboard data structures may be a custom structure created to support each tournament instance by, for example, holding the qualification scores for the given tournament instance. These structures may be a defined database object storing identifications for various players, and one or more data values for a player's performance in a game (e.g., a player's race time, favorite car, score, win/loss record, total scores, opponents played, etc.), and game clients on consoles 402, tournament servers, and other devices may run SQL queries to the leaderboard data structure to obtain game session and toumarnerit results. The leaderboard may be managed as a software process by a title server 432, a statistics server 424, or any other desired device in the system. In some instances, different leaderboard structures may be used for different aspects of a toumament. For example, a title server 432 may manage a qualification leaderboard, which accepts and process the qualification data for various toumament entrants (explained below), while a statistics server 424 may manage an overall scores leaderboard data structure to track player progress through the tournament.
[99] Once the tournament is instantiated, the process conducts the tournament in step 605. The actual execution of the tournament code to manage the tournament can occur in any server, such as on the Tournament Server 434, Title Server 432, and/or game consoles 402, as different tournaments will be conducted differently depending on the parameters chosen by the tournament administrator. Example tournaments are described further below with respect to Figures 8-9.
[1001 When the tournament (or a portion thereof, such as a round) has been conducted, the process may move to step 606, where the various game clients report their results to the server managing the tournament. Clients may be game code running on individual consoles 402, and each console may be responsible for reporting results to the tournament's server.
Those results may include information regarding that particular console 402's player's performance, and may also include information regarding the performance of some or all of the other players that participated in the game session (e.g., a player's console may report not only that player's score, but the scores of all the other players in the game session as well-this multiple reported information can be compared against each other to confirm that no cheating has occurred, as further discussed below). Alternatively, since multiple consoles 402 may participate in a single game session, this reporting may be coordinated among the consoles 402 such that one of the consoles participating in the session may be designated to report the results for everyone who played in the session, and the other consoles in the session may avoid duplicating that reporting. These results may also be reported to the server running the leaderboard, such as Statistics Server 424, using the secure communications required by that server. The separate reporting of the results to the leaderboard may help resolve anomalies in data that is reported to the tournament server, as will be addressed in greater detail below.
[101] The actual results may be in any form, depending on the type of game being played, and may generally report on accomplishments made by the players in the game session.
For example, a first-person shooter type game may report the player's hit ratio, favorite weapon, etc., while a football game may report the win/loss outcome of the game, the score, and other player and/or game statistics. Games may use their own criteria in evaluating a player's performance and awarding points, rank, or other rewards, and such awards may be reported as the result.
[102] Since the tournament's server will be receiving tournament results from a variety of clients, and may receive multiple reports of each player's performance, inconsistencies and anomalies may occur. For example, two consoles 402 may report inconsistent game outcomes for a single game, or for a single player in the game (e.g., each reporting a different winner, score, statistic, etc.). In games in which host migration occurs (e.g., games where one of the consoles participating in the session is designated as a local server host for the game, but where that console experiences a dropout or failure during the session and a different participating console takes over as host), different consoles may report incomplete or otherwise inconsistent results. In step 607, the tournament's server may compare results reported from different clients, and look for inconsistencies in the reported results. Additionally, the server may compare the results with a predefined data structure identifying normal or acceptable results to see if any reported results are beyond the bounds of what is considered normal or acceptable for the game session that was played. For example, in a typical football game, the game designer may decide that a score exceeding a predefined point total (e.g., more than 100 points) may be abnormal.
[103] If an anomaly is detected, the process moves to step 608, where an arbitration process analyzes the reported results to address and/or correct the anomaly.
This arbitration process may involve querying the leaderboard server to retrieve individual player results, and performing the comparison. Or, the arbitration may involve reporting the apparent conflict to the server managing the leaderboard to which the tournament is assigned, and that server (e.g., the Statistics Server 424) may make its own comparison ofi the results it received, and may run additional security and/or integrity checks to confirm which set of results is the genuine set. The arbitration process may access stored data identifying the relative credibility of the players involved. When the arbitration process identifies the error in the reported results, the process in step 609 may update the leaderboard data and correct the error.
[104] If no anomalies were detected, or after anomalies are corrected, the process may proceed to step 610 and check to see whether= the tournament should be concluded.
Different tournaments may have different parameters defining how the tournament will end. For example, a Tournament Winner parameter may be used as described further below. In this step, the tournament process may compare the reported results, or the total results, with the parameter(s) defining a tournament winner, and decide whether a winner has been found and the tournament should conclude.
[105] If the tournament is not to be concluded, the process may return to step 605 to continue conducting the tournament. For example, this may entail processing the next round in the tournament.
[106] If the toumament is to be concluded, the process may move to step 611 and conclude the tournament. This conclusion may involve the final tallying of scores and results from the leaderboard data object to determine player rankings and a tournarnent winner. Concluding a tournament will often involve the awarding of a prize to the winner and those finishing in predefined places (e.g., 2"d, 3`d, top ten, etc.). The prizes may be physical items provided by a tournament sponsor, or in-game virtual items such as a race car with particular design, special equipment or weapon, etc. Concluding the tournament may also include releasing the leaderboard ID to allow the tournament's leaderboard data object to be used for another tournament or another game, recording results in an archival database for future access, recording the high scores, etc. Upon conclusion of a tournament, the process may then return to step 603 to await the next triggering event. If desired, the tournament trigger parameter may be defined to automatically create the tournament instance if one does not already exist, or immediately after a tournament concludes, such that the tournament may be continuously available for players.
As noted above, multiple instances of a tournament may exist simultaneously, if desired, so the instantiation of a second tournament need not depend on the conclusion of a prior instance.
For example, the conclusion of a tournament instance may simply end the process, with separate processes occurring for each independent instance.
[107] Figure 6 above referred to a step of defining tournament parameters, and to elaborate on that step, the following discussion addresses several example tournament -parameters that may be used:
[108] Tournament Name - a text string given by the administrator to identify the tournament to participants (e.g., the "Halo 2TM Slayfest Sponsored by Microsoft").
[109] Tournament Owner - an identification of an administrator for the toumament. For example, the owner of a tournament may be the game developer, or a sponsor for the tournament.
[110] Toumament Type - an ideatification of a predefined type of tournament.
The Tournament Server 434 may offer a number of predefined types of tournaments (e.g., single elimination, double elimination, others as described below, etc.) that may be accessed and customized by the administrator.
[111] Number of Tournarnent Entrants - one or more values identifying a minimum, maximum, range, and/or preferred number of total player participants supported in the tournament. Some tournaments may be better suited for smaller-scales, while other formats may be more ideal for larger numbers of players.
[112] Number of Game Session Entrants - one or more values identifying a minimum, maximum, range, and/or preferred number of players participating in each game session of the tournament. A game session may be defined by each game differently, and may refer to the basic unit of play in the game. This may differ depending on the game type. For example, a game of chess involves two entrants per session (e.g., a board), but a game of poker might involve five entrants per session (e.g., a table).
[113] Number of Rounds - one or more values identifying a minimum, maximum, range, and/or preferred number of rounds for the tournament. A round of a toumament may be defined to occur when each tournament entrant plays in one game session.
[114] Window Factor- in some tournaments, players for a particular game session (e.g., a single "death match" involving a group of players) are grouped together based, at least in part, on how long it has been since the last time the players played against one another.
The window factor may identify a time, which may be measured in terms of game sessions, rounds and/or tournaments, as well as seconds, minutes, hours, days, weeks, etc., that is required to pass before the players may play together again in the same game session of the tournament. For example, a toumament might specify a window factor of two game sessions, which means before two players will be grouped together for a game, they must not have played against one another for at least two games. The use of a window factor may be particularly desirable for tournaments that have unlimited duration, or very large numbers of matches and players. To support the use of a window factor, the tournament instance may store a data table identifying the last time each pair of players in the tournament played against one another in the toumament.
[1151 Rank Gap - in some tournaments, players may be grouped together according to their score, rank, skill level, etc., and a rank gap may identify a range of ranks within which players are permitted to be grouped together. For example, a tournament might wish to only group players together if they are within 20 points of one another, or if their overall rankings are within a number of ranks (e.g., players no more than 10 ranks higher or lower than one another) or percentage (e.g., percentage of the total number of entrants in the tournament) of one another.
[116) Scheduling Options - these options identify the schedule in which the tournament will be played. A tournament may be continuous, in which a new round is begun automatically upon completion of a prior round, or according to a schedule.
The schedule may indicate certain time frames in which rounds and game sessions may be conducted, such as a weekend-only tournament, a daily tournament, a specific date and/or time-of day, every 30 minutes, etc.
11171 New player factor - one or more values identifying how new players' scores will be used in rankings. Point rankings are addressed in greater detail below, but for some toumaments, players are ranked according to data values that might not make a lot of statisticai sense in the very beginning of the player's participation. For example, a toumament that simply ranks players based on win/loss record might rank an undefeated 30-0 player the same as a new player with a 1-0 record (both are 100%
winners), even though that new player might not truly deserve such a lofty rank. To accommodate for this, the tournament may use a new player factor, in which new player's scores are adjusted before used in ranking. So, for example, a new player's score might be reduced by 75%
when only one game session's score is available, 50% when two game sessions' scores are available, 25% when three game sessions' scores are available, and not discounted at all if four or more game session's scores are available. The new player factor may identify a duration for the effect (e.g., number of rounds or game session), and an adjustment value for the effect (e.g., score discounting, point value addition/subtraction, etc:).
[118J Trigger event - an identification of one or more events that will cause an instance of a tournament to be created. This may relate to the scheduling parameter described above, in which case a trigger event could simply be the time of day matching the schedule. Other types of triggers may also be used. For example, a tournament might automatically begin when a predetermined number of players have registered for the tournarnent, or upon entry of a command by one or more players already registered for the tournament (e.g., all registered players pressing a controller button to signal their readiness).
[119] Tournament winner - one or more values identifying the manner in which a tournament winner is determined. This may be a predetermined point total (e.g., the first player to reach 1000 points; or the person with the lowest total time in a race), a predetermined game event (e.g., the first player to accomplish a given objective within the game) or a ranking following a number of rounds (e.g., the player with the top ranking after the last round), etc.
[120] Game-specific Options - a number of other options that may be specific to particular games. These may include the identification of race tracks, weather conditions, car types, and point scoring for a racing game tournament, or the identification of map type, weapon loadout, and scoring for a first-person shooter tournament.
[121] The various tournament parameters may be stored in a tournament data package data structure 701, as shown in Figure 7. This data structure may include one or more round listings 702, where each round listing includes data for a segment/stage/subset of rounds in a tournament. For example, the example tournament 701 is a=tournament including thirteen rounds, divided into three segments or stages. The round list may include a header portion 703 containing information for the particular list, such as an identification of the number of rounds in the list, and common settings, parameters, or themes for the rounds in the list (e.g., all races in list 1 will be on the "New York" race track, or all races in list 1 will occur with the weather set to "rainy"). The list may also include a plurality of individual round settings 704, containing parameters that will be used for each corresponding game session. For example, a first round setting might indicate that only low-power cars may be used for the first race, while the second round setting might indicate that only four-wheel drive cars may be used for the second race. The following pseudocode provides an example of a tournament data package:
<GAMESETTINGS>
<PACKAGE 1>
<NAME> Text String Name of Package </NAME>
<LIST 1>
<NAME> Handle for List </NAME>
<VISIBLENAME> Displayed Text String Name of List </VISIBLENAME>
<ROUND>
<CODE 1>1011</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1190</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
<ROUND>
<CODE 1>1000</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1193</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
</LIST 1>
<LIST 2>
<NAME> Handle for List </NAME>
<VISIBLENAME> Displayed Text String Name of List </VISIBLENAME>
<ROUND>
<CODE 1>1011</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1190</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
<ROUND>
<CODE 1>1000</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1193</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
</LIST 2>
</PACKAGE 1>
</GAMESETTINGS>
[122] In the preceding example, a tournament settings file may include multiple packages, each package may include multiple lists, and each list may include data values for the list's internal handle, a text value to be displayed, and one or more game codes for settings in the game. The game codes may be numeric values that correspond to entries in a table used by the game program for configuring the game. For example, a racing game may be provided with sixteen different race tracks, and the code `1011' may be a binary index into a table listing these tracks, identifying the 11`h track for use. Other codes may similarly be indices into other settings tables, such as tables for the weather, the car transmission, the direction on the. track, type of car, etc. The following example illustrates how such a table may be configured:
<TRANSMISSION TYPE>
0 - Manual 1 - Automatic <WEATHER TYPE>
0 - Normal I - Sunny and Hot 2 - Rainy 3 - Snow 4 - Ice - Heavy Wind [123] Additionally, the values need not all be index codes into tables. For example, a value for the. maximum horsepower may simply include a numeric value for that maximum horsepower. Other data may also be inch.ided, such as the schedule data for the tournament instance (e.g., how frequently the toumament may instance, conditions, etc.), and for individual rounds within an instance (e.g., how often rounds occur).
[124] As noted above, there may be a variety of tournament types. Single elimination, double elimination and round-robin type toumaments may be used. Figure 8 illustrates an example of another type of tournament that can be used. In the Figure 8 tournament, players begin in step 801 by registering to participate in the tournament.
Registration may be done in a variety of ways. For example, the player may log onto a server, such as Title Server 432 or Toumament Server 434, and query the server to obtain a list of available toumaments that are open for registration. The queried server may return a list of available tournaments, displaying the relevant tournament parameters (e.g., tournament name, number of rounds, number of entrants already registered, start time, prize, etc.), and the user may register for one by pressing a button on a controller with a particular tournament highlighted. AItematively, players may join a tournament as a result of receiving an invitation sent by another player who has already registered for the tournament.
[125] Player registration 801 may continue until a predetermined time (e.g., elapsed time since tournament instance was created, time of day for scheduled tournament, elapsed time since first registrant, etc.) passes, or until a predetermined number of registrants have joined (e.g., the tournament parameter defining a maximum number of entrants).
When registration ends, the tournament may begin by initially placing the entrants in a random, or pseudo-random, order in step 802. This initial placement of ranking can be done in any desired way, such as alphabetically, or in order of registration, because the order will soon be rearranged.
[126] Then, in step 803, the process may detennine the number of players to use in the game sessions for the next round. This may be done by consulting the Number of Game Session Entrants parameter described above, but may also involve calculations and adjustments based on the total number of entrants. For example, the process may perform calculations (e.g., dividing the total number of entrants by the various values in the Number of Game Session Entrants parameter) to find an ideal session size. An ideal session size may be a size that allows all sessions to have the same number of players, or for all sessions to differ in size by no more than one player (or any other predetermined value).
The determination of a session size may also give preference to using larger (or smaller) numbers of players per game session, or by having a number that is closest to a preferred number specified in the parameter.
[127] When the process has determined the number of players to be in a session has completed, the process may proceed to step 804, and begin filling a new group for the next game session. In step 805, the highest ranking player who has not yet been assigned to a group is assigned to the new group. In step 806, data for the next highest unassigned player (e.g., a potential player) is retrieved, and in step 807, a check is made to see if the potential player has recently played with any of the other players already assigned in the current group. This may be done, for example, by consulting a stored table keeping track of the last time each pair of entrants played together in a game session.
[128] If the potential player has not played too recently with one of the other players in the group, then the potential player is added to the group in step 808. On the other hand, if the potential player has played too recently, then the process skips the potential player and moves on to step 809, where a check is made to see if the current group is full. If the group is not full, the process returns to step 806 to retrieve information for the next unassigned player. If the group is full, the process moves to step 810 to see if there are remaining unassigned players. If there are, the process returns to step 804 to begin filling a new group. One optional step, not shown, may be taken if the last few unassigned players all played too recently with one another. In this situation, the process may simply waive the Window Factor criteria for these players, and group them into one or more final groups.
Alternatively, the system may adjust the window factor by a predetermined amount (e.g., reducing it by 1), and begin the process anew.
[1291 If all players have been assigned to groups, then the process moves to step 811, where the players will then play a game session. When the game session is completed (e.g., the players finish running a race, complete a football game, finish a deathmatch, etc.), the process moves to step 812 in which players are assigned points based on their performance in the game session. These points may vary depending on game type, with different points being awarded for different game accomplishments. Various types of scoring mechanisms may be used. For example, the tournament server may record game scores for accomplishments made by each player during the most recent game session, cumulative game scores to tally the points accumulated by each player thus far in the tournament, match scores that take into' account the number and/or ranking of other players played against (e.g., a point for each player beaten in a given session), and an available cumulative score indicating the maximum number of points the player could have accumulated thus far in the tournament.
[130] The server or console performing the point assignment may also perform calculations for ranking purposes. For example, the tournament process may calculate a scoring percentage indicating the percentage of the maximum possible score that the player has attained (e.g., by dividing the player's cumulative game score by the available cumulative score). The process may apply the New Player Factor parameter to adjust a new player's score before it is used to re-rank the player (in the following step).
[131] Then, in step 813, the process may reorder, or re-rank, the various players based on their total scores and/or their scoring percentage as discussed above. When the players have been reordered, the process may check in step 814 to see if more rounds are to be played. This determination may be based on whether the players have played the requisite number of rounds, or if a player has achieved some other condition for winning, as specified in the tournament parameters. If more rounds are to be played, the process may return to step 804 to regroup the players. If no more rounds need to be played, the process may move to step 815 and end the tournament, as described above with respect to Figure 6.
[132] Figure 8c illustrates an example progression of player rankings, groupings and reranking that may occur in the tournament process of Figures 8a and 8b. The players may be ranked for round 1 as shown on the left, and grouped into three groups (four players per group), and then reranked as shown on the right based on their performance in round 1. In grouping players for the second round, the four highest reranked players are Players A, E I
and B, but since B had just played with Player A in the previous round, the process may skip Player B and add the next highest player, Player F, to Group 1. Player B
may then be placed in Group 2 for the second round. The example illustrated in Figure 8c shows the final player, Player L, being relegated to a new group because that player had played too recently with Player K of the second round's Group 3. If desired, the process may allow one or more groups at the bottom of the list= to play one another regardless of Window Factor restrictions. For example, Player L may simply be matched into Group 3, despite having played recently with Player K. Alternatively, the players at the bottom who cannot be matched may be dropped from the tournament.
[133] As an alternative, one or more groups appearing at the bottom of the rankings may simply be dropped from the tournament, thereby narrowing the field with passing rounds.
The dropping may begin after the passage of a predetermined number of rounds (e.g., two rounds), to allow for at least some preliminary ranking so that the dropped groups are more likely to contain the weakest players anyway.
[134] The Figure 8 method is just one example, and modifications to this type of tournament may be made. For example, the Rank Gap parameter may be used as a second check in steps 807 and 808 to add a player to a group only if the new player is close enough in rank to the other players in the group. The tournament server may also place different priorities on how strict the Rank Gap and Window Factor parameters are to be used, such as requiring the waiver of one or both requirements if the resulting number of required groups would exceed a predetermined threshold, or if there are not enough players to fill groups that meet the parameter's requirements. The server priorities may waive one priority before waiving another.
[135] As another option, the process may allow for the additional registration of new -players after the tournament has started, and the dropping out (e.g., quitting) of players that originally registered. A newly-registered player may simply be added to the pool of available players for the next round, such as before step 803. Alternatively, there may be limitations on when new players are permitted to join (e.g., only after the first predetermined number of rounds, or prohibited in the final predetermined number of rounds, etc.). When adding the new player, the new player may be given a random rank at the outset (as with the initial placement in step 802), or alternatively the player may automatically be ranked in the middle, or at the bottom, of the list. The New Player Factor parameter may be used to adjust a new player's score to ensure that the new player does not quickly get in over his/her head in the rankings after playing a few rounds.
For example, if the scoring percentages are used and a new player wins his/her first round, a New Player Factor might multiply the player's scoring percentage by 0.25 when the player has only played one round, so that a new player will not ascend too quickly after winning one round.
Similarly, the New Player Factor may vary depending on how many rounds the player has played (e.g., using 0.5 after two rounds, and 0.75 after three, and 1.0 after four rounds), so that the player's full score is credited after a predetermined number of rounds.
[136] The Figure 8 tournament process may be used to accommodate large numbers of players, and can be used to run a continuous tournament (e.g., one in which there is no defined number of rounds). Figure 9 illustrates another tournament process that may be used in addition to that of Figure 8. In the Figure 9 process, a leaderboard qualification period may be used to initially qualify and seed the totirnament entrants. The process begins at step 901, where a tournament creator or administrator (which may be a game' developer, player, etc., as discussed above) initially defines the parameters of the tournament. The parameters may be similar to those discussed above, but other parameters may also be used. For example, the tournament may use an elimination bracket structure in which winners advance and losers drop out, and such tournaments may include a separate parameter identifying the number of participants to appear in the final, championship, game, and the number of winners that advance from earlier-round games. The tournament parameters may also identify the number of tournament levels that will be used. For example, a tournament may be defined as having three levels (e.g., "Gold,"
"Silver" and "Bronze") to allow the highest, second highest, and third highest ranking group of players compete with one another. Each of these levels may be operated as individual instances of the tournament, allowing players of different caliber to compete in their own tournaments.
The separate instances may be initiated, for example, after qualification is completed and the entrants are divided into ranked groups based on their qualification.
[137] The tournament may also include scheduling information for the qualification round(s), such as the opening time/date and duration. The tournament may also include a Challenge Definition parameter that sets forth the type of challenge that will be used to qualify participants. A Challenge Definition data structure may generally indicate a type of feat that a player must accomplish in order to qualify for the tournament, and may vary depending on the game. The Challenge Definition may specify one or more game settings for the qualifying challenge, such as a location setting (e.g., race track for a racing game, a battlefield map for a war game, a game level or stage, etc.), difficulty setting (e.g., easy, medium, hard, etc.), game condition (e.g., type of car for a race, available weapons on a map, weather setting), etc. The Challenge Definition is not limited to just one event.
Instead, the definition may specify a number of qualifying events in an ordered list, such as a sequence of different races or stages, with different conditions.
[138] For some games, the Challenge Definition may include a data file that can be downloaded to a game console 402 to automatically configure a game title program on the console to participate in the challenge. For example, if a race game's Challenge Definition parameter requires that a 4-lap race be run on the Laguna Seca racetrack on a sunny day, using rear-wheel drive cars having no more than 200 horsepower, and against 5 computer-controlled (AI) opponents set on a race game's "medium" difficulty setting, the tournament's server may include a tournament challenge download file that will, when downloaded to the player's console, automatically configure the game running on the console to run the type of race specified in the download file. The download file may also be used by the game, running on the console 402, to restrict the player's choice of cars to those permitted by the Challenge Definition.
[139] When the tournament parameters are defined, the tournament's server may then begin to execute a process that will handle the tournament. The process may allocate (or otherwise reserve) storage for a leaderboard data structure that will be used to hold players' qualification results, and the leaderboard's ID may be one of the parameters defined in step 901. The leaderboard ID may include a name or handle for the data structure, and a memory address location indicating where it is stored and how it can be retrieved. The leaderboard IDs may be used for scoring arbitration.
[140] When the tournament parameters have been set in step 901, a computer process may then announce the tournament to players in step 902. The announcement may occur via electronic communication, such as e-mail, SMS, etc., and may include sending electronic messages to game consoles 402. Announcements may also be made using other forms of communication, such as television advertising, radio, telephone, magazines, etc. The announcement informs players of the parameters of the tournament, the type of challenge that must be accomplished to qualify for the tournament (e.g., the Challenge Definition), and the time period for the qualification period (e.g., start time and end time).
[141] After the announcement in step 901, and at whatever scheduled time is set in the tournament parameters (or immediately, if no time is scheduled), the process opens the qualification period at step 903. During this period, players may download a Challenge Definition configuration file, if available, and play the requisite challenge (e.g., run the specified race). The game console 402 may record a player's progress and accomplishment (e.g., race time), and may report a score through secure transmission back to the toumament's server, such as Tournament Server 434, for inclusion on the tournament's leaderboard. In addition to the secure transmission checking discussed above, this reported score may also undergo a verification process to help further avoid having fraudulent scores posted. The verification process may include a comparison of *a reported score with a predetermined score limit or maximum expected score (which may be additional tournament parameters defined above), or with results reported by a different game console.
[1421 After receiving a player's score, or in response to a player's request, the server may query the leaderboard to determine a tournament ranking based on the player's result and other players' qualification scores. The server may send a message to the player informing the player of how well he/she performed (e.g., "You have logged the 751h fastest time for this challenge"). The message may also inform the player as to what the player has qualified for (e.g., "Your score qualifies you for the gold level tournament,"
or "Your score qualifies you for the 10`h seed"). If the player desires, the player may try the qualification event again and post another score, hoping to improve his/her position. To avoid duplicative scores, the server may obtain an identity (e.g., login identity) of the player posting a score (e.g., transmitted with the score), and check to see if the player has previously posted a qualification score. If the player has, the server process may automatically replace the prior score with the newer one, or it may do so only if the newer score would result in a higher rank than the old one, or if the user requested to replace an old score with a newer one when he/she submitted the score. Alternatively, players need not be given unlimited opportunity to post qualifying scores. For example, the toutnament may restrict each user to just one qualification entry, or a limited predetermined number of qualification entries. The player may be given an opportunity to have a game session score ignored (e.g., treating it as a practice round) instead of being posted.
Additionally, the system may display an option to users to purchase additional qualification attempts, and users may have a predetermined account (e.g., a credit card account, or a subscription.
account) debited for the cost of having another try at posting a higher qualification score.
[143] As more and more players qualify during the qualification period, many players may move down in the rankings. The tournament server process may automatically notify such players when their ranking is changed, or if their ranking changes by a predetermined amount (e.g., a number of places, a percentage of participants, etc.), or if their ranking drops them out of qualification for a particular tournament instance (e.g., if their prior qualification used to qualify for the "Gold" tournament, but now only qualifies for the "Silver" tournament). The notification may be in any communication, similar to the announcement, and may be an electronic message sent to the player's console 402. The message may appear as an in-game communication on the player's console, displayed using a game program's user interface. Other notifications, such as e-mail to a computer, may also be used. The actual type of notification, and conditions on which they are sent, may be specified as additional tournament parameters.
[1441 When qualification is completed, the tournament server may then consult the leaderboard data structure in step 904, and determine how many players have actually qualified for the touxnament by comparing the posted results with the requirements for qualification. The requirements for qualification may be specified in, or derived from, the tournament parameters. An example of such a derivation may use a calculation based on entered tournament parameters, such as the desired number of players per game (P), the number of players to be in the final game (PF), the number of winners who should advance from each game (W) (e.g., 2, 3, 4, etc. players advance from each game), and the number of rounds desired (R), to calculate the total number of players (PT) that can participate in one instance of a tournament:
(P 1(R-') I
P,=PFw [145] To determine which players qualify, the tournament process may perform the above calculation, and then consult the leaderboard to accept the top PT number of players as qualified for the tournament. Of course, this calculation may have been performed earlier, such as in the tournament definition step 901 and/or qualification period 903.
If multiple tournament instances are supported (e.g., as indicated by the tournament parameters), then the tournament process may accept the next PT entries in the leaderboard as qualifying for the next tourrrnament, and so on until the total number of tournament instances has been filled, or until there are no more unassigned entries in the leaderboard. In this manner, the tournament process divides the qualifiers (or entrants) into the various toumament levels.
[146] The example calculation above is not limited to determining a total number of players per touxnament. Instead, any one of the variables may be calculated based on other provided variables. So, for example, if a tournament administrator decided to leave the number of rounds (R) open, the equation may be rearranged to calculate that value based on the other values (e.g., conduct as many rounds as it takes to have a tournament for all players and meeting the specified player-per-game and winner-per-game values).
Additionally, a tournament fill ratio may be defined in the parameters (e.g., 20%) to require that a certain number or percentage of posted scores will qualify for a tournament. When the qualification period ends, and the tournament process can consult the leaderboard to determine the overall number of entries received, the process can determine how many (e.g., 20%) of the entries will be in the tournarnent (e.g., P-r = 20 if ratio is 20% and 100 entries received), and can then adjust the other values (e.g., R, P, etc.) to accommodate the fill ratio.
(1471 In step 905, the tournament process may then schedule the various tournament(s) and tournament round(s), based on the calculated values (if any) and any schedule parameters set in the tournament parameters. The process may also perform seeding in step 906 to fill tournament brackets in elimination tournaments. This seeding may be done dynamically using the grouping approach described above to keep players of close skill playing one another each round (e.g., the top X players play in one game, the next X
players play in a second game, etc., with seeding occurring after each round and as late as possible), or the seeding may be done to try and ensure that the higher-seeded players do not face other high-seed players until the later or final rounds. This may be done generally by starting with the championship game, determining the number of semifinal matches needed to fill the final match, and recursively performing the same analysis for the semifinal matches out until all rounds have been defined. When the rounds of matches have been defined, the seeding process may then step from opening match to opening match, placing the top seeded players in numbers sufficient to fill the expected winners, and then filling out the rest of the matches with the lower seed players. This kind of seeding may be statically done, in which case players carry their seed with them throughout the toumament, and are not reseeded in between rounds. As an additional alternative, this seeding may be conducted anew after each round of play, where only those players that are present and ready to play (e.g., have checked in with the server handling the tournament instance). So, for example, if a number of players quit or drop out after the first round, the tournament may be re-seeded for the second round to minimize idle players (e.g., players whose opponents, according to the original seeding, are no longer playing).
1148] Figure 10a illustrates an example of a statically-seeded bracket that may be generated when the toumament server follows the process shown in Figure 10b.
Although various values are shown in the intermediate rounds of the Figure 10a bracket, the end result of the Figure lOb process is to identify the opening round bracket matchups, the overall number of rounds, and the arrangement of the matches (e.g., which earlier matches supply a later match with its competitors). As shown in Figure lOb, the process begins in step 1001 by considering the final round. The process may consult the tournament parameters to determine how many competitors are to be=in the final round, and may fill the final round. In step 1002, the final round may be filled with the top seeds.
In the Figure l0a example, the final round has been defined to have eight competitors, so the top eight seeded players are presumed to appear in the final round. Again, this is just a presumption for purposes of seeding the opening rounds, as the top seeded players are not required to actually survive to the final round.
[149] Then, in step 1003, the system may check to see how many prior feeder matches are needed in the prior round (e.g., the semifinal round) to fill the current round (e.g., the final round). For example, if the final round needs eight players, and the tournament parameters indicate that four players advance from each match, then the earlier round (the semifinal round) would need two matches to provide those eight players. In step 1004, the players from the current round are distributed across the various matches needed in the earlier round. In step 1005, the remainder of the matches in the earlier round are filled with the next highest available seeded players.
[150] In step 1006, a check may be made to determine whether all entrants in the tournament have been placed. If they have not, then another earlier round will be needed in the tournament. The process may, in step 1007, then shift the focus to the next earliest round, and return to step 1003 to perform the same steps to fill the matches of the earlier round. So for example, the system may set the "current round" in step 1007 to be the semifinal round, and may return to step 1003 and begin to fill the brackets for the next earlier round (e.g., the quarterfinal round). The process may continue until all entrants have been placed, and the last round addressed in the process provides the opening round seedings.
[151] Figure 11 illustrates another example of a tournament in which six players appear in the final round, nine players play in the prior rounds' matches, and three players advance from each prior match. The earliest rounds indicate the end result of the seeding process.
[152] The various tournament instances may then be instantiated, and the toumament(s) run in step 907 to determine their outcomes. The actual running of the tournaments may occur as described above, with separate computer program processes on the same or different servers administering the various tournament instances, game sessions being run on consoles and reported to the server, score arbitration, etc.
[153] Figure 12 illustrates an example user interface map that may be used, for example, in a game to access tournaments of the type shown in Figures 8a-8b and 9. The main menu 1201 of the console may offer a number of tournament options, including a tournaments page option. The tournaments page 1202, displayed in response to selecting that option, may include a menu of tournament options. For example, the tournaments menu 1202 may display a list of toumaments for which the player has already registered, the player's qualification rank, the number of entrants, the tournament's current status (e.g., registration, qualifying, round X, etc.). The tournaments menu 1202 may also include selectable options for entering one of the listed tournaments, finding a tournament and for creating a toumament. Upon choosing one of the listed tournaments, the user may be presented with a tournament lobby screen 1203 for the selected tournament.
[1541 The tournament lobby screen 1203 may display additional information for the selected toumament, such as current status, the player's next opponent, status of opponents, etc. The tournament lobby screen 1203 may include additional menu options for playing a game in the toumament, viewing a game history for prior matches in the tournament, etc.
Upon selecting a corresponding menu option, the game console may display a play game screen 1204 to begin playing a round or match in the tournament, or a game history screen 1205 to display information regarding a player's prior performance in the tournament. This information may include statistics for players, opponents, teams, etc. The history screen 1205 may also display overall player online performance across multiple tournaments and game types, such as by querying data from a leaderboard on Statistic Server 426.
[155] The tournament lobby screen 1203 may also include an entrant list option, selection of which may display entrant list 1206. The entrant list screen 1206 may display identification and statistical information regarding entrants in the tournament, entrants who are scheduled to play in the next round, entrants who played in the previous round, etc.
[156] After playing a match or roiund, the system may display a report results screen 1207 to display the outcome of the match. This may include statistics regarding players' performance in the match that was just played.
[1571 From the tournaments menu 1202, players may also be given the option of searching for tournaments_ Upon selecting this option, the player may view a find tournarnents screen, which may include prompts for the user to enter, or select, search criteria that may be used to locate tournaments on the online system, such as those running on one or more Tournament Servers 434, or those using the leaderboards. The criteria may include game title, tournament name, game type, tournament type, tournament host, or any other desired search criteria. Upon running the search, the system may display a list of tournaments for this user, indicating qualification details (e.g., whether the user qualified, the entrant qualifier scores, etc.) and a schedule of when the toumaments are set to occur.
[158] The tournament menu 1202 may also include an option to allow players to create new tournaments. Upon selection, the user may be shown a create tournament screen 1209, which may prompt the user for criteria to define a new tournament. The criteria may include any of the features described above, such as the tournament parameters, game title, etc. One or more additional game settings screens 1210 may also be used for this purpose.
[159] The toumament menu 1202 may also include a leaderboard qualified tournament option, and the selection of this option may display a leaderboard screen 1211. The leaderboard screen 1211 may list leaderboard tournaments, and contain additional data regarding leaderboard qualified toumaments, such as the name, ID, current state, current challenge, challenge/qualification period, etc. The leaderboard screen 1211 may include an option to display 'additional explanation and detail on the qualification for a particular displayed tournament. The qualification details screen 1212 may include additional description to explain how the player may qualify (e.g., "Race the Laguna Seca race track using a 4WD car with less than 301 Hp, and post one of the top 150 times to qualify for the Gold level toumament!"). The user may choose to make a qualifying attempt, resulting in the game screen 1213, and after the attempt the user may view a report results screen 1214 displaying information regarding the player's qualification attempt. The results screen 1214 may also display inforniation retrieved from a leaderboard showing how the player's resulting score ranks among others, and information identifying whether the player qualified for the tournament.
11601 Upon selecting a listed tournament in the leaderboard screen 1211, the console may display an elimination details screen 1215 for the tournament. The elimination details screen 1215 may list the tournament status, the player's standing/ranking, and if the player is still in the tournament, the next scheduled game for the tournament. When the player is ready to begin the next round, the player may select a corresponding option from=the details screen 1215 and enter the toumament lobby 1216, where the player may await the entry of his/her opponents for the next round. From the lobby 1216, the player may choose to view the bracket 1217 for the tournament, the game settings and parameters 1218, or statistics 1219 regarding the player, his/her teammates, friends, other competitors in the tournament, and upcoming opponents.
[161] When the player's opponent has checked in, and when both players are ready, the player may view the game screen 1220 to play the match, and a post-game results screen 1221 showing the results of the match (as described above).
[162] The various features described above are mere example implementations of various concepts, and modifications are possible as desired. For example, the references to a player above may refer to a single person, or it may refer to a team of people playing their games together. Some tournaments may support teams, or clans, by allowing the various players to participate together (e.g., in a single race) as a team. Scores for team members may be aggregated for ranking comparison.
[163] Another possible modification deals with dropouts and no-shows for tournament participants. If a player enters a tournament by registering and/or qualifying, but fails to complete the tournament (e.g., dropping out after starting, or never showing up at the scheduled time, etc.), that player can be treated as if the player had accumulated a zero score, or a loss.
[164] As another possible modification, the various screens shown in Figure 12 and features described herein may be used for local, non-networked play as well.
For example, a multiplayer tournament may be hosted by a single console, and the various features implemented by the console.
[165] The features described above are preferably encoded in computer software as executable instructions that can be executed on a computing device, such as a personal computer or video game console, to result in the display of the screens shown in the figures. The executable instructions may be stored on a computer-readable medium, such as one or more computer disks, RAMs, CD-ROMs, DVDs, game cartridges, etc.
Also, although various features are described above, it is not necessary to practice them all in the same embodiment. Instead, various " combinations and subcombinations may be implemented as desired, and the true scope of the present invention should only be limited by the claims that follow.
[1661 Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
show bi-directional flow and interfaces on each side of the flow, certain implementations may only have information flow in one direction (or no information flow as described below) or may only have an interface object on one side. By way of example, and not limitation, terms such as application programming interface (API), entry point, method, function, subroutine, remote procedure call, and component object model (COM) interface, are encorinpassed within the definition of programming interface.
[87] Aspects of such a programming interface may include the method whereby the first code segment transmits infonnation (where "information" is used in its broadest sense and includes data, commands, requests, etc.) to the second code segment; the method whereby the second code segment receives the information; and the structure, sequence, syntax, organization, schema, timing and content of the information. In this regard, the underlying transport medium itself may be unimportant to the operation of the interface, whether the medium be wired or wireless, or a combination of both, as long as the information is transported in the manner defined by the interface. In certain situations, information may not be passed in one or both directions in the conventional sense, as the information transfer may be either via another mechanism (e.g. information placed in a buffer, file, etc.
separate from information flow between the code segments) or non-existent, as when one code segment simply accesses functionality performed by a second code segment.
Any or all of these aspects may be important in a given situation, e.g., depending on whether the code segments are part of a system in a loosely coupled or tightly coupled configuration, and so this list should be considered illustrative and non-limiting.
[88) This notion of a programming interface is known to those skilled in the art and is clear from the foregoing detailed description of the invention. There are, however, other ways to implement a programming interface, and, unless expressly excluded, these are intended to be encompassed by the claims set forth at the end of this specification. Such other ways may appear to be more sophisticated or complex than the simplistic view of Figures 5B and 5C, but they nonetheless perform a similar function to accomplish the same overall result. We will now briefly describe some illustrative alternative implementations of a programming interface.
A. FACTORING
[891 A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in Figures 5D and 5E. As shown, some interfaces can be described in terms of divisible sets of functionality. Thus, the interface functionality of Figures 5B
and 5C may be factored to achieve the same result, just as one may mathematically provide 24, or 2 times 2 times 3 times 2. Accordingly, as illustrated in Figure 5D, the function provided by interface Interfacel may be subdivided to convert the communications of the interface into multiple interfaces InterfacelA, InterfacelB, InterfacelC, etc.
while achieving the same result. As illustrated in Figure 5E, the function provided by interface I1 may be subdivided into multiple interfaces Ila, Ilb, I1 c, etc. while achieving the same result. Similarly, interface 12 of the second code segment which receives information from the first code segment may be factored into multiple interfaces 12a, 12b, 12c, etc. When factoring, the number of interfaces included with the 1 st code segment need not match the number of interfaces included with the 2nd code segment. In either of the cases of Figures 5D and 5E, the functional spirit of interfaces Interfacel and 11 remain the same as with Figures 5B and 5C, respectively. The factoring of interfaces may also follow associative, commutative, and other mathematical properties such that the factoring may be difficult to recognize. For instance, ordering of operations may be unimportant, and consequently, a function carried out by an interface may be carried out well in advance of reaching the interface, by another piece of code or interface, or performed by a separate component of the system. Moreover, one of ordinary skill in the programming arts can appreciate that there are a variety of ways of making different function calls that achieve the same result.
B. REDEFINITION
[90] In some cases, it may be possible to ignore, add or redefine certain aspects (e.g., parameters) of a programming interface while still accomplishing the intended result. This is illustrated in Figures 5F and 5G. For example, assume interface Interfacel of Figure 5B
includes a function call Square (input, precision, output), a call that includes three parameters, input, precision and output, and which is issued from the 1 st Code Segment to the 2nd Code Segment. If the middle parameter precision is of no concern in a given scenario, as shown in Figure 5F, it could just as well be ignored or even replaced with a meaningless (in this situation) parameter. One may also add an additional parameter of no concern. In either event, the functionality of square can be achieved, so long as output is returned after input is squared by the second code segment. Precision may very well be a meaningful parameter to some downstream or other portion of the computing system;
however, once it is recognized that precision is not necessary for the narrow purpose of calculating the square, it may be replaced or ignored. For example, instead of passing a valid precision value, a meaningless value such as a birth date could be passed without adversely affecting the result. Similarly, as shown in Figure 5G, interface I1 is replaced by interface I1', redefined to ignore or add parameters to the interface.
Interface 12 may similarly be redefined as interface 12', redefined to ignore unnecessary parameters, or parameters that may be processed elsewhere. The point here is that in some cases a programming interface may include aspects, such as parameters, which are not needed for some purpose, and so they may be ignored or redefined, or processed elsewhere for other purposes.
C. INLINE CODING
[91] It may also be feasible to merge some or all of the functionality of two separate code modules such that the "interface" between them changes forrn. For example, the functionality of Figures 5B and 5C may be converted to the functionality of Figures 5H and 51, respectively. In Figure 5H, the previous lst and 2nd Code Segments of Figure 5B are merged into a module containing both of them. In this case, the code segments may still be communicating with each other but the interface may be adapted to a form which is more suitable to the single module. Thus, for example, formal Call and Return statements may no longer be necessary, but similar processing or response(s) pursuant to interface Interfacel may still be in effect. Similarly, shown in Figure 51, part (or all) of interface 12 from Figure 1C may be written inline into interface 11 to form interface I1".
As illustrated, interface 12 is divided into I2a and 12b, and interface portion I2a has been coded in-line with interface I1 to form interface I1". For a concrete example, consider that the interface I1 from Figure 5C performs a function call square (input, output), which is received by interface 12, which after processing the value passed with input (to square it) by the second code segment, passes back the squared result with output. In such a case, the processing performed by the second code segment (squaring input) can be performed by the first code segment without a call to the interface.
D. DIVORCE
[92] A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in Figures 5J and 5K. As shown in Figure 5J, one or more piece(s) of middleware (Divorce Interface(s), since they divorce functionality and/or interface functions from the original interface) are provided to convert the communications on the first interface, Interfacel, to conform them to a different interface, in this case interfaces.
Interface2A, Interface2B and Interface2C. This might be doiie, e.g., where there is an installed base of applications designed to communicate with, say, an operating system in accordance with an Interfacel protocol, but then the operating system is changed to use a different interface, in this case interfaces Interface2A, Interface2B and Interface2C. The point is that the original interface used by the 2nd Code Segment is changed such that it is no longer compatible with the interface used by the lst Code Segment, and so an intermediary is used to make the old and new interfaces compatible. Similarly, as shown in Figure 5K, a third code segment can be introduced with divorce interface DI1 to receive the communications from interface 11 and with divorce interface D12 to transmit the interface functionality to, for example, interfaces 12a and 12b, redesigned to work with D12, but to provide the same functional result. Similarly, DI1 and D12 may work together to translate the functionality of interfaces Il and 12 of Figure 5C to a new operating system, while providing the same or similar functional result.
E. REWRITTNG
[93] Yet another possible variant is to dynamically rewrite the code to replace the interface functionality with something else but which achieves the same overall result. For example, there may be a system in which a code segment presented in an intermediate language (e.g. Microsoft IL, Java ByteCode, etc.) is provided to a Just-in-Time (JIT) compiler or interpreter in an execution environment (such as that provided by the Net framework, the Java runtime environment, or other similar runtime type environments).
The JIT compiler may be written so as to dynamically convert the communications from the I st Code Segment to the 2nd Code Segment, i.e., to conform them to a different interface as may be required by the 2nd Code Segment (either the original or a different 2nd Code Segment). This is depicted in Figures 5L and 5M. As can be seen in Figure 5L, this approach is similar to the Divorce scenario described above. It might be done, e.g., where an installed base of applications are designed to communicate with an operating system in accordance with an Interfacel protocol, but then the operating system is changed to use a different interface. The JIT Compiler could be used to conform the communications on the fly from the installed-base applications to the new interface of the operating system. As depicted in Figure 5M, this approach of dynamically rewriting the interface(s) may be applied to dynamically factor, or otherwise alter the interface(s) as well.
[94] It is also noted that the above-described scenarios for achieving the same or similar result as an interface via alternative embodiments may also be combined in various ways, serially and/or in parallel, or with other intervening code. Thus, the alternative embodiments presented above are not mutually exclusive and may be mixed, matched and combined to produce the same or equivalent scenarios to the generic scenarios presented in Figures 5B and 5C. It is also noted that, as with most programming constructs, there are other similar ways of achieving the same or similar functionality of an interface which may not be described herein, but nonetheless are represented by the spirit and scope of the invention, i.e., it is noted that it is at least partly the functionality represented by, and the advantageous results enabled by, an interface that underlie the value of an interface. The aforementioned systems may be used to implement the debugging methods or systems described herein. Various features provide for the automation of providing debugging feedback iinformation to a server by dumping portions of memory and automatically sending the dumped memory to a server when certain debugging events occur.
[95] Figure 6 illustrates an example overall process by which a tournament may be conducted in an online multiplayer gaming environment. At step 601, a tournament administrator may take steps to log in to a secure server, such as tournament server 434, to begin the creation of an online toumament. The administrator may be a game developer, player, or anyone having the right to create new tournament types on the system. The log in process may involve any desired mode of access, such as accessing a secure Internet site using a password and a computer terminal 510, or accessing an online location using a video game user interface from a console 402. In step 602, the tournament administrator may define the various parameters for the tournament being created. This entry may be accomplished using a displayed interface, such as an Internet page or a video game user interface, where the administrator may be prompted to enter (or select from a list) the various parameters for the tournament being defined. Example parameters are discussed further below.
1961 When the tournament parameters have been defined, the process may then proceed to step 603, where the system (e.g., the tournament server 434, or title server 432, depending on which server is designated for the task) awaits a trigger for instantiating a tournament. The trigger may be of any type of predetermined event, such as the passage of a predetermined amount of time (e.g., an hour, 30 minutes, etc.), or the registration by a predetermined number of players (e.g., 10, 50, 100 players, etc.).
[97] When the trigger is received or occurs, the process may proceed with instantiation of a tournament in step 604. Instantiation may involve the execution of one or more processing threads that will carry out the tournament as specified in the parameters. These threads may be executed by the tournament server 434, title server 432, individual consoles 402, or any other computing component in the system, and may be distributed across components (e.g., across multiple consoles 402) if desired. An instance of a tournament may be assigned its own unique tournament ID to help coordinate communications with clients participating in the tournament instance.
[98] When a tournament instance is created, the tournament may be assigned- a leaderboard ID. The underlying online service (e.g., XBOX LIVETM) may provide a common set of leaderboard data structures that are available for use by the various game programs supported by the consoles. Alternatively, the leaderboard data structures may be a custom structure created to support each tournament instance by, for example, holding the qualification scores for the given tournament instance. These structures may be a defined database object storing identifications for various players, and one or more data values for a player's performance in a game (e.g., a player's race time, favorite car, score, win/loss record, total scores, opponents played, etc.), and game clients on consoles 402, tournament servers, and other devices may run SQL queries to the leaderboard data structure to obtain game session and toumarnerit results. The leaderboard may be managed as a software process by a title server 432, a statistics server 424, or any other desired device in the system. In some instances, different leaderboard structures may be used for different aspects of a toumament. For example, a title server 432 may manage a qualification leaderboard, which accepts and process the qualification data for various toumament entrants (explained below), while a statistics server 424 may manage an overall scores leaderboard data structure to track player progress through the tournament.
[99] Once the tournament is instantiated, the process conducts the tournament in step 605. The actual execution of the tournament code to manage the tournament can occur in any server, such as on the Tournament Server 434, Title Server 432, and/or game consoles 402, as different tournaments will be conducted differently depending on the parameters chosen by the tournament administrator. Example tournaments are described further below with respect to Figures 8-9.
[1001 When the tournament (or a portion thereof, such as a round) has been conducted, the process may move to step 606, where the various game clients report their results to the server managing the tournament. Clients may be game code running on individual consoles 402, and each console may be responsible for reporting results to the tournament's server.
Those results may include information regarding that particular console 402's player's performance, and may also include information regarding the performance of some or all of the other players that participated in the game session (e.g., a player's console may report not only that player's score, but the scores of all the other players in the game session as well-this multiple reported information can be compared against each other to confirm that no cheating has occurred, as further discussed below). Alternatively, since multiple consoles 402 may participate in a single game session, this reporting may be coordinated among the consoles 402 such that one of the consoles participating in the session may be designated to report the results for everyone who played in the session, and the other consoles in the session may avoid duplicating that reporting. These results may also be reported to the server running the leaderboard, such as Statistics Server 424, using the secure communications required by that server. The separate reporting of the results to the leaderboard may help resolve anomalies in data that is reported to the tournament server, as will be addressed in greater detail below.
[101] The actual results may be in any form, depending on the type of game being played, and may generally report on accomplishments made by the players in the game session.
For example, a first-person shooter type game may report the player's hit ratio, favorite weapon, etc., while a football game may report the win/loss outcome of the game, the score, and other player and/or game statistics. Games may use their own criteria in evaluating a player's performance and awarding points, rank, or other rewards, and such awards may be reported as the result.
[102] Since the tournament's server will be receiving tournament results from a variety of clients, and may receive multiple reports of each player's performance, inconsistencies and anomalies may occur. For example, two consoles 402 may report inconsistent game outcomes for a single game, or for a single player in the game (e.g., each reporting a different winner, score, statistic, etc.). In games in which host migration occurs (e.g., games where one of the consoles participating in the session is designated as a local server host for the game, but where that console experiences a dropout or failure during the session and a different participating console takes over as host), different consoles may report incomplete or otherwise inconsistent results. In step 607, the tournament's server may compare results reported from different clients, and look for inconsistencies in the reported results. Additionally, the server may compare the results with a predefined data structure identifying normal or acceptable results to see if any reported results are beyond the bounds of what is considered normal or acceptable for the game session that was played. For example, in a typical football game, the game designer may decide that a score exceeding a predefined point total (e.g., more than 100 points) may be abnormal.
[103] If an anomaly is detected, the process moves to step 608, where an arbitration process analyzes the reported results to address and/or correct the anomaly.
This arbitration process may involve querying the leaderboard server to retrieve individual player results, and performing the comparison. Or, the arbitration may involve reporting the apparent conflict to the server managing the leaderboard to which the tournament is assigned, and that server (e.g., the Statistics Server 424) may make its own comparison ofi the results it received, and may run additional security and/or integrity checks to confirm which set of results is the genuine set. The arbitration process may access stored data identifying the relative credibility of the players involved. When the arbitration process identifies the error in the reported results, the process in step 609 may update the leaderboard data and correct the error.
[104] If no anomalies were detected, or after anomalies are corrected, the process may proceed to step 610 and check to see whether= the tournament should be concluded.
Different tournaments may have different parameters defining how the tournament will end. For example, a Tournament Winner parameter may be used as described further below. In this step, the tournament process may compare the reported results, or the total results, with the parameter(s) defining a tournament winner, and decide whether a winner has been found and the tournament should conclude.
[105] If the tournament is not to be concluded, the process may return to step 605 to continue conducting the tournament. For example, this may entail processing the next round in the tournament.
[106] If the toumament is to be concluded, the process may move to step 611 and conclude the tournament. This conclusion may involve the final tallying of scores and results from the leaderboard data object to determine player rankings and a tournarnent winner. Concluding a tournament will often involve the awarding of a prize to the winner and those finishing in predefined places (e.g., 2"d, 3`d, top ten, etc.). The prizes may be physical items provided by a tournament sponsor, or in-game virtual items such as a race car with particular design, special equipment or weapon, etc. Concluding the tournament may also include releasing the leaderboard ID to allow the tournament's leaderboard data object to be used for another tournament or another game, recording results in an archival database for future access, recording the high scores, etc. Upon conclusion of a tournament, the process may then return to step 603 to await the next triggering event. If desired, the tournament trigger parameter may be defined to automatically create the tournament instance if one does not already exist, or immediately after a tournament concludes, such that the tournament may be continuously available for players.
As noted above, multiple instances of a tournament may exist simultaneously, if desired, so the instantiation of a second tournament need not depend on the conclusion of a prior instance.
For example, the conclusion of a tournament instance may simply end the process, with separate processes occurring for each independent instance.
[107] Figure 6 above referred to a step of defining tournament parameters, and to elaborate on that step, the following discussion addresses several example tournament -parameters that may be used:
[108] Tournament Name - a text string given by the administrator to identify the tournament to participants (e.g., the "Halo 2TM Slayfest Sponsored by Microsoft").
[109] Tournament Owner - an identification of an administrator for the toumament. For example, the owner of a tournament may be the game developer, or a sponsor for the tournament.
[110] Toumament Type - an ideatification of a predefined type of tournament.
The Tournament Server 434 may offer a number of predefined types of tournaments (e.g., single elimination, double elimination, others as described below, etc.) that may be accessed and customized by the administrator.
[111] Number of Tournarnent Entrants - one or more values identifying a minimum, maximum, range, and/or preferred number of total player participants supported in the tournament. Some tournaments may be better suited for smaller-scales, while other formats may be more ideal for larger numbers of players.
[112] Number of Game Session Entrants - one or more values identifying a minimum, maximum, range, and/or preferred number of players participating in each game session of the tournament. A game session may be defined by each game differently, and may refer to the basic unit of play in the game. This may differ depending on the game type. For example, a game of chess involves two entrants per session (e.g., a board), but a game of poker might involve five entrants per session (e.g., a table).
[113] Number of Rounds - one or more values identifying a minimum, maximum, range, and/or preferred number of rounds for the tournament. A round of a toumament may be defined to occur when each tournament entrant plays in one game session.
[114] Window Factor- in some tournaments, players for a particular game session (e.g., a single "death match" involving a group of players) are grouped together based, at least in part, on how long it has been since the last time the players played against one another.
The window factor may identify a time, which may be measured in terms of game sessions, rounds and/or tournaments, as well as seconds, minutes, hours, days, weeks, etc., that is required to pass before the players may play together again in the same game session of the tournament. For example, a toumament might specify a window factor of two game sessions, which means before two players will be grouped together for a game, they must not have played against one another for at least two games. The use of a window factor may be particularly desirable for tournaments that have unlimited duration, or very large numbers of matches and players. To support the use of a window factor, the tournament instance may store a data table identifying the last time each pair of players in the tournament played against one another in the toumament.
[1151 Rank Gap - in some tournaments, players may be grouped together according to their score, rank, skill level, etc., and a rank gap may identify a range of ranks within which players are permitted to be grouped together. For example, a tournament might wish to only group players together if they are within 20 points of one another, or if their overall rankings are within a number of ranks (e.g., players no more than 10 ranks higher or lower than one another) or percentage (e.g., percentage of the total number of entrants in the tournament) of one another.
[116) Scheduling Options - these options identify the schedule in which the tournament will be played. A tournament may be continuous, in which a new round is begun automatically upon completion of a prior round, or according to a schedule.
The schedule may indicate certain time frames in which rounds and game sessions may be conducted, such as a weekend-only tournament, a daily tournament, a specific date and/or time-of day, every 30 minutes, etc.
11171 New player factor - one or more values identifying how new players' scores will be used in rankings. Point rankings are addressed in greater detail below, but for some toumaments, players are ranked according to data values that might not make a lot of statisticai sense in the very beginning of the player's participation. For example, a toumament that simply ranks players based on win/loss record might rank an undefeated 30-0 player the same as a new player with a 1-0 record (both are 100%
winners), even though that new player might not truly deserve such a lofty rank. To accommodate for this, the tournament may use a new player factor, in which new player's scores are adjusted before used in ranking. So, for example, a new player's score might be reduced by 75%
when only one game session's score is available, 50% when two game sessions' scores are available, 25% when three game sessions' scores are available, and not discounted at all if four or more game session's scores are available. The new player factor may identify a duration for the effect (e.g., number of rounds or game session), and an adjustment value for the effect (e.g., score discounting, point value addition/subtraction, etc:).
[118J Trigger event - an identification of one or more events that will cause an instance of a tournament to be created. This may relate to the scheduling parameter described above, in which case a trigger event could simply be the time of day matching the schedule. Other types of triggers may also be used. For example, a tournament might automatically begin when a predetermined number of players have registered for the tournarnent, or upon entry of a command by one or more players already registered for the tournament (e.g., all registered players pressing a controller button to signal their readiness).
[119] Tournament winner - one or more values identifying the manner in which a tournament winner is determined. This may be a predetermined point total (e.g., the first player to reach 1000 points; or the person with the lowest total time in a race), a predetermined game event (e.g., the first player to accomplish a given objective within the game) or a ranking following a number of rounds (e.g., the player with the top ranking after the last round), etc.
[120] Game-specific Options - a number of other options that may be specific to particular games. These may include the identification of race tracks, weather conditions, car types, and point scoring for a racing game tournament, or the identification of map type, weapon loadout, and scoring for a first-person shooter tournament.
[121] The various tournament parameters may be stored in a tournament data package data structure 701, as shown in Figure 7. This data structure may include one or more round listings 702, where each round listing includes data for a segment/stage/subset of rounds in a tournament. For example, the example tournament 701 is a=tournament including thirteen rounds, divided into three segments or stages. The round list may include a header portion 703 containing information for the particular list, such as an identification of the number of rounds in the list, and common settings, parameters, or themes for the rounds in the list (e.g., all races in list 1 will be on the "New York" race track, or all races in list 1 will occur with the weather set to "rainy"). The list may also include a plurality of individual round settings 704, containing parameters that will be used for each corresponding game session. For example, a first round setting might indicate that only low-power cars may be used for the first race, while the second round setting might indicate that only four-wheel drive cars may be used for the second race. The following pseudocode provides an example of a tournament data package:
<GAMESETTINGS>
<PACKAGE 1>
<NAME> Text String Name of Package </NAME>
<LIST 1>
<NAME> Handle for List </NAME>
<VISIBLENAME> Displayed Text String Name of List </VISIBLENAME>
<ROUND>
<CODE 1>1011</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1190</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
<ROUND>
<CODE 1>1000</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1193</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
</LIST 1>
<LIST 2>
<NAME> Handle for List </NAME>
<VISIBLENAME> Displayed Text String Name of List </VISIBLENAME>
<ROUND>
<CODE 1>1011</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1190</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
<ROUND>
<CODE 1>1000</CODE 1>
<CODE 2>1000</CODE 2>
<CODE 3>1193</CODE 3>
<CODE 4>0</CODE 4>
</ROUND>
</LIST 2>
</PACKAGE 1>
</GAMESETTINGS>
[122] In the preceding example, a tournament settings file may include multiple packages, each package may include multiple lists, and each list may include data values for the list's internal handle, a text value to be displayed, and one or more game codes for settings in the game. The game codes may be numeric values that correspond to entries in a table used by the game program for configuring the game. For example, a racing game may be provided with sixteen different race tracks, and the code `1011' may be a binary index into a table listing these tracks, identifying the 11`h track for use. Other codes may similarly be indices into other settings tables, such as tables for the weather, the car transmission, the direction on the. track, type of car, etc. The following example illustrates how such a table may be configured:
<TRANSMISSION TYPE>
0 - Manual 1 - Automatic <WEATHER TYPE>
0 - Normal I - Sunny and Hot 2 - Rainy 3 - Snow 4 - Ice - Heavy Wind [123] Additionally, the values need not all be index codes into tables. For example, a value for the. maximum horsepower may simply include a numeric value for that maximum horsepower. Other data may also be inch.ided, such as the schedule data for the tournament instance (e.g., how frequently the toumament may instance, conditions, etc.), and for individual rounds within an instance (e.g., how often rounds occur).
[124] As noted above, there may be a variety of tournament types. Single elimination, double elimination and round-robin type toumaments may be used. Figure 8 illustrates an example of another type of tournament that can be used. In the Figure 8 tournament, players begin in step 801 by registering to participate in the tournament.
Registration may be done in a variety of ways. For example, the player may log onto a server, such as Title Server 432 or Toumament Server 434, and query the server to obtain a list of available toumaments that are open for registration. The queried server may return a list of available tournaments, displaying the relevant tournament parameters (e.g., tournament name, number of rounds, number of entrants already registered, start time, prize, etc.), and the user may register for one by pressing a button on a controller with a particular tournament highlighted. AItematively, players may join a tournament as a result of receiving an invitation sent by another player who has already registered for the tournament.
[125] Player registration 801 may continue until a predetermined time (e.g., elapsed time since tournament instance was created, time of day for scheduled tournament, elapsed time since first registrant, etc.) passes, or until a predetermined number of registrants have joined (e.g., the tournament parameter defining a maximum number of entrants).
When registration ends, the tournament may begin by initially placing the entrants in a random, or pseudo-random, order in step 802. This initial placement of ranking can be done in any desired way, such as alphabetically, or in order of registration, because the order will soon be rearranged.
[126] Then, in step 803, the process may detennine the number of players to use in the game sessions for the next round. This may be done by consulting the Number of Game Session Entrants parameter described above, but may also involve calculations and adjustments based on the total number of entrants. For example, the process may perform calculations (e.g., dividing the total number of entrants by the various values in the Number of Game Session Entrants parameter) to find an ideal session size. An ideal session size may be a size that allows all sessions to have the same number of players, or for all sessions to differ in size by no more than one player (or any other predetermined value).
The determination of a session size may also give preference to using larger (or smaller) numbers of players per game session, or by having a number that is closest to a preferred number specified in the parameter.
[127] When the process has determined the number of players to be in a session has completed, the process may proceed to step 804, and begin filling a new group for the next game session. In step 805, the highest ranking player who has not yet been assigned to a group is assigned to the new group. In step 806, data for the next highest unassigned player (e.g., a potential player) is retrieved, and in step 807, a check is made to see if the potential player has recently played with any of the other players already assigned in the current group. This may be done, for example, by consulting a stored table keeping track of the last time each pair of entrants played together in a game session.
[128] If the potential player has not played too recently with one of the other players in the group, then the potential player is added to the group in step 808. On the other hand, if the potential player has played too recently, then the process skips the potential player and moves on to step 809, where a check is made to see if the current group is full. If the group is not full, the process returns to step 806 to retrieve information for the next unassigned player. If the group is full, the process moves to step 810 to see if there are remaining unassigned players. If there are, the process returns to step 804 to begin filling a new group. One optional step, not shown, may be taken if the last few unassigned players all played too recently with one another. In this situation, the process may simply waive the Window Factor criteria for these players, and group them into one or more final groups.
Alternatively, the system may adjust the window factor by a predetermined amount (e.g., reducing it by 1), and begin the process anew.
[1291 If all players have been assigned to groups, then the process moves to step 811, where the players will then play a game session. When the game session is completed (e.g., the players finish running a race, complete a football game, finish a deathmatch, etc.), the process moves to step 812 in which players are assigned points based on their performance in the game session. These points may vary depending on game type, with different points being awarded for different game accomplishments. Various types of scoring mechanisms may be used. For example, the tournament server may record game scores for accomplishments made by each player during the most recent game session, cumulative game scores to tally the points accumulated by each player thus far in the tournament, match scores that take into' account the number and/or ranking of other players played against (e.g., a point for each player beaten in a given session), and an available cumulative score indicating the maximum number of points the player could have accumulated thus far in the tournament.
[130] The server or console performing the point assignment may also perform calculations for ranking purposes. For example, the tournament process may calculate a scoring percentage indicating the percentage of the maximum possible score that the player has attained (e.g., by dividing the player's cumulative game score by the available cumulative score). The process may apply the New Player Factor parameter to adjust a new player's score before it is used to re-rank the player (in the following step).
[131] Then, in step 813, the process may reorder, or re-rank, the various players based on their total scores and/or their scoring percentage as discussed above. When the players have been reordered, the process may check in step 814 to see if more rounds are to be played. This determination may be based on whether the players have played the requisite number of rounds, or if a player has achieved some other condition for winning, as specified in the tournament parameters. If more rounds are to be played, the process may return to step 804 to regroup the players. If no more rounds need to be played, the process may move to step 815 and end the tournament, as described above with respect to Figure 6.
[132] Figure 8c illustrates an example progression of player rankings, groupings and reranking that may occur in the tournament process of Figures 8a and 8b. The players may be ranked for round 1 as shown on the left, and grouped into three groups (four players per group), and then reranked as shown on the right based on their performance in round 1. In grouping players for the second round, the four highest reranked players are Players A, E I
and B, but since B had just played with Player A in the previous round, the process may skip Player B and add the next highest player, Player F, to Group 1. Player B
may then be placed in Group 2 for the second round. The example illustrated in Figure 8c shows the final player, Player L, being relegated to a new group because that player had played too recently with Player K of the second round's Group 3. If desired, the process may allow one or more groups at the bottom of the list= to play one another regardless of Window Factor restrictions. For example, Player L may simply be matched into Group 3, despite having played recently with Player K. Alternatively, the players at the bottom who cannot be matched may be dropped from the tournament.
[133] As an alternative, one or more groups appearing at the bottom of the rankings may simply be dropped from the tournament, thereby narrowing the field with passing rounds.
The dropping may begin after the passage of a predetermined number of rounds (e.g., two rounds), to allow for at least some preliminary ranking so that the dropped groups are more likely to contain the weakest players anyway.
[134] The Figure 8 method is just one example, and modifications to this type of tournament may be made. For example, the Rank Gap parameter may be used as a second check in steps 807 and 808 to add a player to a group only if the new player is close enough in rank to the other players in the group. The tournament server may also place different priorities on how strict the Rank Gap and Window Factor parameters are to be used, such as requiring the waiver of one or both requirements if the resulting number of required groups would exceed a predetermined threshold, or if there are not enough players to fill groups that meet the parameter's requirements. The server priorities may waive one priority before waiving another.
[135] As another option, the process may allow for the additional registration of new -players after the tournament has started, and the dropping out (e.g., quitting) of players that originally registered. A newly-registered player may simply be added to the pool of available players for the next round, such as before step 803. Alternatively, there may be limitations on when new players are permitted to join (e.g., only after the first predetermined number of rounds, or prohibited in the final predetermined number of rounds, etc.). When adding the new player, the new player may be given a random rank at the outset (as with the initial placement in step 802), or alternatively the player may automatically be ranked in the middle, or at the bottom, of the list. The New Player Factor parameter may be used to adjust a new player's score to ensure that the new player does not quickly get in over his/her head in the rankings after playing a few rounds.
For example, if the scoring percentages are used and a new player wins his/her first round, a New Player Factor might multiply the player's scoring percentage by 0.25 when the player has only played one round, so that a new player will not ascend too quickly after winning one round.
Similarly, the New Player Factor may vary depending on how many rounds the player has played (e.g., using 0.5 after two rounds, and 0.75 after three, and 1.0 after four rounds), so that the player's full score is credited after a predetermined number of rounds.
[136] The Figure 8 tournament process may be used to accommodate large numbers of players, and can be used to run a continuous tournament (e.g., one in which there is no defined number of rounds). Figure 9 illustrates another tournament process that may be used in addition to that of Figure 8. In the Figure 9 process, a leaderboard qualification period may be used to initially qualify and seed the totirnament entrants. The process begins at step 901, where a tournament creator or administrator (which may be a game' developer, player, etc., as discussed above) initially defines the parameters of the tournament. The parameters may be similar to those discussed above, but other parameters may also be used. For example, the tournament may use an elimination bracket structure in which winners advance and losers drop out, and such tournaments may include a separate parameter identifying the number of participants to appear in the final, championship, game, and the number of winners that advance from earlier-round games. The tournament parameters may also identify the number of tournament levels that will be used. For example, a tournament may be defined as having three levels (e.g., "Gold,"
"Silver" and "Bronze") to allow the highest, second highest, and third highest ranking group of players compete with one another. Each of these levels may be operated as individual instances of the tournament, allowing players of different caliber to compete in their own tournaments.
The separate instances may be initiated, for example, after qualification is completed and the entrants are divided into ranked groups based on their qualification.
[137] The tournament may also include scheduling information for the qualification round(s), such as the opening time/date and duration. The tournament may also include a Challenge Definition parameter that sets forth the type of challenge that will be used to qualify participants. A Challenge Definition data structure may generally indicate a type of feat that a player must accomplish in order to qualify for the tournament, and may vary depending on the game. The Challenge Definition may specify one or more game settings for the qualifying challenge, such as a location setting (e.g., race track for a racing game, a battlefield map for a war game, a game level or stage, etc.), difficulty setting (e.g., easy, medium, hard, etc.), game condition (e.g., type of car for a race, available weapons on a map, weather setting), etc. The Challenge Definition is not limited to just one event.
Instead, the definition may specify a number of qualifying events in an ordered list, such as a sequence of different races or stages, with different conditions.
[138] For some games, the Challenge Definition may include a data file that can be downloaded to a game console 402 to automatically configure a game title program on the console to participate in the challenge. For example, if a race game's Challenge Definition parameter requires that a 4-lap race be run on the Laguna Seca racetrack on a sunny day, using rear-wheel drive cars having no more than 200 horsepower, and against 5 computer-controlled (AI) opponents set on a race game's "medium" difficulty setting, the tournament's server may include a tournament challenge download file that will, when downloaded to the player's console, automatically configure the game running on the console to run the type of race specified in the download file. The download file may also be used by the game, running on the console 402, to restrict the player's choice of cars to those permitted by the Challenge Definition.
[139] When the tournament parameters are defined, the tournament's server may then begin to execute a process that will handle the tournament. The process may allocate (or otherwise reserve) storage for a leaderboard data structure that will be used to hold players' qualification results, and the leaderboard's ID may be one of the parameters defined in step 901. The leaderboard ID may include a name or handle for the data structure, and a memory address location indicating where it is stored and how it can be retrieved. The leaderboard IDs may be used for scoring arbitration.
[140] When the tournament parameters have been set in step 901, a computer process may then announce the tournament to players in step 902. The announcement may occur via electronic communication, such as e-mail, SMS, etc., and may include sending electronic messages to game consoles 402. Announcements may also be made using other forms of communication, such as television advertising, radio, telephone, magazines, etc. The announcement informs players of the parameters of the tournament, the type of challenge that must be accomplished to qualify for the tournament (e.g., the Challenge Definition), and the time period for the qualification period (e.g., start time and end time).
[141] After the announcement in step 901, and at whatever scheduled time is set in the tournament parameters (or immediately, if no time is scheduled), the process opens the qualification period at step 903. During this period, players may download a Challenge Definition configuration file, if available, and play the requisite challenge (e.g., run the specified race). The game console 402 may record a player's progress and accomplishment (e.g., race time), and may report a score through secure transmission back to the toumament's server, such as Tournament Server 434, for inclusion on the tournament's leaderboard. In addition to the secure transmission checking discussed above, this reported score may also undergo a verification process to help further avoid having fraudulent scores posted. The verification process may include a comparison of *a reported score with a predetermined score limit or maximum expected score (which may be additional tournament parameters defined above), or with results reported by a different game console.
[1421 After receiving a player's score, or in response to a player's request, the server may query the leaderboard to determine a tournament ranking based on the player's result and other players' qualification scores. The server may send a message to the player informing the player of how well he/she performed (e.g., "You have logged the 751h fastest time for this challenge"). The message may also inform the player as to what the player has qualified for (e.g., "Your score qualifies you for the gold level tournament,"
or "Your score qualifies you for the 10`h seed"). If the player desires, the player may try the qualification event again and post another score, hoping to improve his/her position. To avoid duplicative scores, the server may obtain an identity (e.g., login identity) of the player posting a score (e.g., transmitted with the score), and check to see if the player has previously posted a qualification score. If the player has, the server process may automatically replace the prior score with the newer one, or it may do so only if the newer score would result in a higher rank than the old one, or if the user requested to replace an old score with a newer one when he/she submitted the score. Alternatively, players need not be given unlimited opportunity to post qualifying scores. For example, the toutnament may restrict each user to just one qualification entry, or a limited predetermined number of qualification entries. The player may be given an opportunity to have a game session score ignored (e.g., treating it as a practice round) instead of being posted.
Additionally, the system may display an option to users to purchase additional qualification attempts, and users may have a predetermined account (e.g., a credit card account, or a subscription.
account) debited for the cost of having another try at posting a higher qualification score.
[143] As more and more players qualify during the qualification period, many players may move down in the rankings. The tournament server process may automatically notify such players when their ranking is changed, or if their ranking changes by a predetermined amount (e.g., a number of places, a percentage of participants, etc.), or if their ranking drops them out of qualification for a particular tournament instance (e.g., if their prior qualification used to qualify for the "Gold" tournament, but now only qualifies for the "Silver" tournament). The notification may be in any communication, similar to the announcement, and may be an electronic message sent to the player's console 402. The message may appear as an in-game communication on the player's console, displayed using a game program's user interface. Other notifications, such as e-mail to a computer, may also be used. The actual type of notification, and conditions on which they are sent, may be specified as additional tournament parameters.
[1441 When qualification is completed, the tournament server may then consult the leaderboard data structure in step 904, and determine how many players have actually qualified for the touxnament by comparing the posted results with the requirements for qualification. The requirements for qualification may be specified in, or derived from, the tournament parameters. An example of such a derivation may use a calculation based on entered tournament parameters, such as the desired number of players per game (P), the number of players to be in the final game (PF), the number of winners who should advance from each game (W) (e.g., 2, 3, 4, etc. players advance from each game), and the number of rounds desired (R), to calculate the total number of players (PT) that can participate in one instance of a tournament:
(P 1(R-') I
P,=PFw [145] To determine which players qualify, the tournament process may perform the above calculation, and then consult the leaderboard to accept the top PT number of players as qualified for the tournament. Of course, this calculation may have been performed earlier, such as in the tournament definition step 901 and/or qualification period 903.
If multiple tournament instances are supported (e.g., as indicated by the tournament parameters), then the tournament process may accept the next PT entries in the leaderboard as qualifying for the next tourrrnament, and so on until the total number of tournament instances has been filled, or until there are no more unassigned entries in the leaderboard. In this manner, the tournament process divides the qualifiers (or entrants) into the various toumament levels.
[146] The example calculation above is not limited to determining a total number of players per touxnament. Instead, any one of the variables may be calculated based on other provided variables. So, for example, if a tournament administrator decided to leave the number of rounds (R) open, the equation may be rearranged to calculate that value based on the other values (e.g., conduct as many rounds as it takes to have a tournament for all players and meeting the specified player-per-game and winner-per-game values).
Additionally, a tournament fill ratio may be defined in the parameters (e.g., 20%) to require that a certain number or percentage of posted scores will qualify for a tournament. When the qualification period ends, and the tournament process can consult the leaderboard to determine the overall number of entries received, the process can determine how many (e.g., 20%) of the entries will be in the tournarnent (e.g., P-r = 20 if ratio is 20% and 100 entries received), and can then adjust the other values (e.g., R, P, etc.) to accommodate the fill ratio.
(1471 In step 905, the tournament process may then schedule the various tournament(s) and tournament round(s), based on the calculated values (if any) and any schedule parameters set in the tournament parameters. The process may also perform seeding in step 906 to fill tournament brackets in elimination tournaments. This seeding may be done dynamically using the grouping approach described above to keep players of close skill playing one another each round (e.g., the top X players play in one game, the next X
players play in a second game, etc., with seeding occurring after each round and as late as possible), or the seeding may be done to try and ensure that the higher-seeded players do not face other high-seed players until the later or final rounds. This may be done generally by starting with the championship game, determining the number of semifinal matches needed to fill the final match, and recursively performing the same analysis for the semifinal matches out until all rounds have been defined. When the rounds of matches have been defined, the seeding process may then step from opening match to opening match, placing the top seeded players in numbers sufficient to fill the expected winners, and then filling out the rest of the matches with the lower seed players. This kind of seeding may be statically done, in which case players carry their seed with them throughout the toumament, and are not reseeded in between rounds. As an additional alternative, this seeding may be conducted anew after each round of play, where only those players that are present and ready to play (e.g., have checked in with the server handling the tournament instance). So, for example, if a number of players quit or drop out after the first round, the tournament may be re-seeded for the second round to minimize idle players (e.g., players whose opponents, according to the original seeding, are no longer playing).
1148] Figure 10a illustrates an example of a statically-seeded bracket that may be generated when the toumament server follows the process shown in Figure 10b.
Although various values are shown in the intermediate rounds of the Figure 10a bracket, the end result of the Figure lOb process is to identify the opening round bracket matchups, the overall number of rounds, and the arrangement of the matches (e.g., which earlier matches supply a later match with its competitors). As shown in Figure lOb, the process begins in step 1001 by considering the final round. The process may consult the tournament parameters to determine how many competitors are to be=in the final round, and may fill the final round. In step 1002, the final round may be filled with the top seeds.
In the Figure l0a example, the final round has been defined to have eight competitors, so the top eight seeded players are presumed to appear in the final round. Again, this is just a presumption for purposes of seeding the opening rounds, as the top seeded players are not required to actually survive to the final round.
[149] Then, in step 1003, the system may check to see how many prior feeder matches are needed in the prior round (e.g., the semifinal round) to fill the current round (e.g., the final round). For example, if the final round needs eight players, and the tournament parameters indicate that four players advance from each match, then the earlier round (the semifinal round) would need two matches to provide those eight players. In step 1004, the players from the current round are distributed across the various matches needed in the earlier round. In step 1005, the remainder of the matches in the earlier round are filled with the next highest available seeded players.
[150] In step 1006, a check may be made to determine whether all entrants in the tournament have been placed. If they have not, then another earlier round will be needed in the tournament. The process may, in step 1007, then shift the focus to the next earliest round, and return to step 1003 to perform the same steps to fill the matches of the earlier round. So for example, the system may set the "current round" in step 1007 to be the semifinal round, and may return to step 1003 and begin to fill the brackets for the next earlier round (e.g., the quarterfinal round). The process may continue until all entrants have been placed, and the last round addressed in the process provides the opening round seedings.
[151] Figure 11 illustrates another example of a tournament in which six players appear in the final round, nine players play in the prior rounds' matches, and three players advance from each prior match. The earliest rounds indicate the end result of the seeding process.
[152] The various tournament instances may then be instantiated, and the toumament(s) run in step 907 to determine their outcomes. The actual running of the tournaments may occur as described above, with separate computer program processes on the same or different servers administering the various tournament instances, game sessions being run on consoles and reported to the server, score arbitration, etc.
[153] Figure 12 illustrates an example user interface map that may be used, for example, in a game to access tournaments of the type shown in Figures 8a-8b and 9. The main menu 1201 of the console may offer a number of tournament options, including a tournaments page option. The tournaments page 1202, displayed in response to selecting that option, may include a menu of tournament options. For example, the tournaments menu 1202 may display a list of toumaments for which the player has already registered, the player's qualification rank, the number of entrants, the tournament's current status (e.g., registration, qualifying, round X, etc.). The tournaments menu 1202 may also include selectable options for entering one of the listed tournaments, finding a tournament and for creating a toumament. Upon choosing one of the listed tournaments, the user may be presented with a tournament lobby screen 1203 for the selected tournament.
[1541 The tournament lobby screen 1203 may display additional information for the selected toumament, such as current status, the player's next opponent, status of opponents, etc. The tournament lobby screen 1203 may include additional menu options for playing a game in the toumament, viewing a game history for prior matches in the tournament, etc.
Upon selecting a corresponding menu option, the game console may display a play game screen 1204 to begin playing a round or match in the tournament, or a game history screen 1205 to display information regarding a player's prior performance in the tournament. This information may include statistics for players, opponents, teams, etc. The history screen 1205 may also display overall player online performance across multiple tournaments and game types, such as by querying data from a leaderboard on Statistic Server 426.
[155] The tournament lobby screen 1203 may also include an entrant list option, selection of which may display entrant list 1206. The entrant list screen 1206 may display identification and statistical information regarding entrants in the tournament, entrants who are scheduled to play in the next round, entrants who played in the previous round, etc.
[156] After playing a match or roiund, the system may display a report results screen 1207 to display the outcome of the match. This may include statistics regarding players' performance in the match that was just played.
[1571 From the tournaments menu 1202, players may also be given the option of searching for tournaments_ Upon selecting this option, the player may view a find tournarnents screen, which may include prompts for the user to enter, or select, search criteria that may be used to locate tournaments on the online system, such as those running on one or more Tournament Servers 434, or those using the leaderboards. The criteria may include game title, tournament name, game type, tournament type, tournament host, or any other desired search criteria. Upon running the search, the system may display a list of tournaments for this user, indicating qualification details (e.g., whether the user qualified, the entrant qualifier scores, etc.) and a schedule of when the toumaments are set to occur.
[158] The tournament menu 1202 may also include an option to allow players to create new tournaments. Upon selection, the user may be shown a create tournament screen 1209, which may prompt the user for criteria to define a new tournament. The criteria may include any of the features described above, such as the tournament parameters, game title, etc. One or more additional game settings screens 1210 may also be used for this purpose.
[159] The toumament menu 1202 may also include a leaderboard qualified tournament option, and the selection of this option may display a leaderboard screen 1211. The leaderboard screen 1211 may list leaderboard tournaments, and contain additional data regarding leaderboard qualified toumaments, such as the name, ID, current state, current challenge, challenge/qualification period, etc. The leaderboard screen 1211 may include an option to display 'additional explanation and detail on the qualification for a particular displayed tournament. The qualification details screen 1212 may include additional description to explain how the player may qualify (e.g., "Race the Laguna Seca race track using a 4WD car with less than 301 Hp, and post one of the top 150 times to qualify for the Gold level toumament!"). The user may choose to make a qualifying attempt, resulting in the game screen 1213, and after the attempt the user may view a report results screen 1214 displaying information regarding the player's qualification attempt. The results screen 1214 may also display inforniation retrieved from a leaderboard showing how the player's resulting score ranks among others, and information identifying whether the player qualified for the tournament.
11601 Upon selecting a listed tournament in the leaderboard screen 1211, the console may display an elimination details screen 1215 for the tournament. The elimination details screen 1215 may list the tournament status, the player's standing/ranking, and if the player is still in the tournament, the next scheduled game for the tournament. When the player is ready to begin the next round, the player may select a corresponding option from=the details screen 1215 and enter the toumament lobby 1216, where the player may await the entry of his/her opponents for the next round. From the lobby 1216, the player may choose to view the bracket 1217 for the tournament, the game settings and parameters 1218, or statistics 1219 regarding the player, his/her teammates, friends, other competitors in the tournament, and upcoming opponents.
[161] When the player's opponent has checked in, and when both players are ready, the player may view the game screen 1220 to play the match, and a post-game results screen 1221 showing the results of the match (as described above).
[162] The various features described above are mere example implementations of various concepts, and modifications are possible as desired. For example, the references to a player above may refer to a single person, or it may refer to a team of people playing their games together. Some tournaments may support teams, or clans, by allowing the various players to participate together (e.g., in a single race) as a team. Scores for team members may be aggregated for ranking comparison.
[163] Another possible modification deals with dropouts and no-shows for tournament participants. If a player enters a tournament by registering and/or qualifying, but fails to complete the tournament (e.g., dropping out after starting, or never showing up at the scheduled time, etc.), that player can be treated as if the player had accumulated a zero score, or a loss.
[164] As another possible modification, the various screens shown in Figure 12 and features described herein may be used for local, non-networked play as well.
For example, a multiplayer tournament may be hosted by a single console, and the various features implemented by the console.
[165] The features described above are preferably encoded in computer software as executable instructions that can be executed on a computing device, such as a personal computer or video game console, to result in the display of the screens shown in the figures. The executable instructions may be stored on a computer-readable medium, such as one or more computer disks, RAMs, CD-ROMs, DVDs, game cartridges, etc.
Also, although various features are described above, it is not necessary to practice them all in the same embodiment. Instead, various " combinations and subcombinations may be implemented as desired, and the true scope of the present invention should only be limited by the claims that follow.
[1661 Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (20)
1. A game console tournament method, comprising the steps of:
receiving a log in request 601 from a tournament administrator;
prompting said tournament administrator for entry of one or more tournament parameters 602, said parameters including schedule criteria for instantiating a plurality of instances 604 of said tournament, wherein each instance:
a) communicates with a plurality of remote game consoles 402 of tournament entrants to set up game session criteria for a plurality of rounds in said tournament;
b) receives game session results 606 from a plurality of game consoles participating in a common multiplayer online game session; and c) determines a tournament winner 611 based on results of a plurality of game sessions.
receiving a log in request 601 from a tournament administrator;
prompting said tournament administrator for entry of one or more tournament parameters 602, said parameters including schedule criteria for instantiating a plurality of instances 604 of said tournament, wherein each instance:
a) communicates with a plurality of remote game consoles 402 of tournament entrants to set up game session criteria for a plurality of rounds in said tournament;
b) receives game session results 606 from a plurality of game consoles participating in a common multiplayer online game session; and c) determines a tournament winner 611 based on results of a plurality of game sessions.
2. The game console tournament method of claim 1, wherein said log in request is received from a game console 402.
3. The game console tournament method of claim 1, wherein said step of determining further comprises a step 607 of comparing game session results received from a first console that participated in said game session with results received from a second console that participated in said game session.
4. The game console tournament method of claim 3, wherein if said step of comparing identifies an inconsistency between said compared results, said method further comprises the step of conducting arbitration 608 to resolve the inconsistency.
5. The game console tournament method of claim 4, wherein said step of arbitration includes querying a leaderboard data structure 608, said leaderboard data structure receiving game session results from said plurality of game consoles via secure transmission.
6. The game console tournament method of claim 1, wherein said schedule criteria results in an automatic instantiation of a second instance of said tournament upon the completion of a first instance of said tournament 603.
7. The game console tournament method of claim 1, wherein said tournament parameters further include a window factor identifying a minimum time that must elapse before two tournament entrants may be grouped together for a second game session, after being together for the common multiplayer online game session.
8. The game console tournament method of claim 1, wherein said tournament parameters further include a rank gap identifying a proximity in rank between players to be grouped for a game session in said tournament.
9. The game console tournament method of claim 1, further comprising the step of accepting a new player registration for an instance of said tournament after at least one round of said tournament has completed, and including said new player in subsequent rounds of said tournament.
10. The game console tournament method of claim 9, wherein said parameters include a new player factor, and said method includes the step of using said new player factor to adjust a score of said new player in one or more of said subsequent rounds of said tournament.
11. The game console tournament method of claim 10, wherein said new player factor varies as the new player participates in more rounds of said tournament, and wherein said new player factor is no longer used for said new player after said new player has participated in a number of rounds beyond a minimum specified in said tournament parameters.
12. The game console tournament method of claim 1, further comprising the step of downloading tournament settings data to an entrant's game console, and automatically configuring said game console to play a game session according to the tournament's parameters.
13. The game console tournament method of claim 1, wherein said tournament parameters define a qualification period 903 and one or more qualification criteria for said tournament, and said method further comprises the step of receiving a plurality of score reports from game consoles during said qualification period, and identifying which scores qualify for said tournament.
14. The game console tournament method of claim 13, further comprising the step of automatically notifying previously-qualified entrants when their qualification status is altered due to subsequently-qualified entrants.
15. The game console tournament method of claim 14, further comprising the step of offering said notified entrants an opportunity to retry a qualification attempt in response to said altered status.
16. The game console tournament method of claim 14, further comprising the step 904 of assigning a first plurality of qualifying scores to a first level instance of said tournament, and assigning a second plurality of qualifying scores to a second level instance of said tournament, said first plurality of scores having a higher rank than said second plurality of scores.
17. The game console tournament method of claim 1, further comprising the step of storing said tournament parameters in a tournament settings file, said file including different game session parameters for a plurality of rounds in said tournament.
18. A tournament method, comprising the steps of:
receiving tournament registrations from a plurality of game consoles 402 for tournament entrants;
ranking 802 said plurality of registered entrants;
sequentially grouping a subset of said ranked entrants for participation in a game session in a first round of said tournament;
reranking said entrants based on performance in said first round; and sequentially grouping a subset of said reranked entrants in a game session in a second round of said tournament, wherein when determining whether to add an entrant to a group, a check is made to determine whether a window factor of time has elapsed since the entrant last played in a game session with any member of the group.
receiving tournament registrations from a plurality of game consoles 402 for tournament entrants;
ranking 802 said plurality of registered entrants;
sequentially grouping a subset of said ranked entrants for participation in a game session in a first round of said tournament;
reranking said entrants based on performance in said first round; and sequentially grouping a subset of said reranked entrants in a game session in a second round of said tournament, wherein when determining whether to add an entrant to a group, a check is made to determine whether a window factor of time has elapsed since the entrant last played in a game session with any member of the group.
19. The method of claim 18, wherein said window factor identifies a number of game sessions.
20. A leaderboard qualified tournament method, comprising the steps of:
posting a challenge definition 902 for a game program, said challenge definition including a plurality of game session criteria to qualify for a tournament;
receiving 903 game session results from a plurality of game consoles of players attempting to qualify for said tournament;
ranking said received game session results and informing players of their current rank;
sending in-game notifications to players when their previously-qualifying score becomes a non-qualifying score as a result of subsequent player scores, and allowing said notified players to retry to qualify; and closing the qualification period and conducting said tournament using said qualified entrants.
posting a challenge definition 902 for a game program, said challenge definition including a plurality of game session criteria to qualify for a tournament;
receiving 903 game session results from a plurality of game consoles of players attempting to qualify for said tournament;
ranking said received game session results and informing players of their current rank;
sending in-game notifications to players when their previously-qualifying score becomes a non-qualifying score as a result of subsequent player scores, and allowing said notified players to retry to qualify; and closing the qualification period and conducting said tournament using said qualified entrants.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/354,982 | 2006-02-16 | ||
US11/354,982 US20070191101A1 (en) | 2006-02-16 | 2006-02-16 | Quickly providing good matchups |
PCT/US2007/001612 WO2007097850A2 (en) | 2006-02-16 | 2007-01-20 | Quickly providing good matchups |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2637169A1 true CA2637169A1 (en) | 2007-08-30 |
Family
ID=38369333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002637169A Withdrawn CA2637169A1 (en) | 2006-02-16 | 2007-01-20 | Quickly providing good matchups |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070191101A1 (en) |
EP (1) | EP1989673A4 (en) |
JP (1) | JP2009526603A (en) |
KR (1) | KR20080094031A (en) |
AU (1) | AU2007218066B2 (en) |
CA (1) | CA2637169A1 (en) |
WO (1) | WO2007097850A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012174656A1 (en) * | 2011-06-24 | 2012-12-27 | Intertaintech Corporation | System and method for conducting online video game tournaments |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007091347A1 (en) * | 2006-02-10 | 2007-08-16 | Sony Computer Entertainment Inc. | Game system and game management server |
US20080045343A1 (en) * | 2006-05-11 | 2008-02-21 | Hermina Sauberman | System and method for playing chess with three or more armies over a network |
US7684882B2 (en) | 2006-06-13 | 2010-03-23 | Igt | Server based gaming system and method for selectively providing one or more different tournaments |
US8360868B2 (en) * | 2006-08-16 | 2013-01-29 | Playtech Software Limited | Method for progressive card game tournament |
US8540577B2 (en) * | 2006-08-16 | 2013-09-24 | Playtech Software Limited | System for computerized multiplayer tournament gaming and a method thereof |
JP5209865B2 (en) * | 2006-11-02 | 2013-06-12 | 株式会社バンダイナムコゲームス | Game system |
JP5122824B2 (en) * | 2007-01-09 | 2013-01-16 | 株式会社バンダイナムコゲームス | GAME DEVICE, SERVER DEVICE, AND PROGRAM |
EP1953655A3 (en) * | 2007-02-01 | 2008-12-31 | Acei Ab | Transaction processing system and method |
US20080220870A1 (en) * | 2007-03-02 | 2008-09-11 | Emmanuel Zavolas | Method and system for providing a seamless tournament system for multiplayer games |
WO2009031147A1 (en) * | 2007-09-05 | 2009-03-12 | Playtech Software Limited | A computerized gaming system and a method of operating thereof |
US8262472B2 (en) * | 2007-09-21 | 2012-09-11 | Microsoft Corporation | Comprehensive single page view of user's gaming achievements |
US20090098937A1 (en) * | 2007-10-12 | 2009-04-16 | Microsoft Corporation | Adaptive tree visualization for tournament-style brackets |
US8979647B2 (en) * | 2007-10-26 | 2015-03-17 | Microsoft Technology Licensing, Llc | Method of providing player status and ability to join games |
US8197313B2 (en) * | 2007-10-29 | 2012-06-12 | Microsoft Corporation | User to user game referrals |
US20090141023A1 (en) * | 2007-11-29 | 2009-06-04 | Brian Mark Shuster | Selective filtering of user input data in a multi-user virtual environment |
US8641529B2 (en) * | 2008-06-27 | 2014-02-04 | Microsoft Corporation | Scheduled programmatic game content |
CN101325559B (en) * | 2008-07-28 | 2010-08-18 | 腾讯科技(深圳)有限公司 | Method for commending game room, system and game server |
US8506372B2 (en) | 2009-02-20 | 2013-08-13 | Activision Publishing, Inc. | System and method configured to provide a location-based vehicular racing videogame |
US20100306016A1 (en) * | 2009-05-27 | 2010-12-02 | Microsoft Corporation | Personalized task recommendations |
JP5215277B2 (en) * | 2009-10-21 | 2013-06-19 | 株式会社コナミデジタルエンタテインメント | GAME SYSTEM AND COMPUTER PROGRAM THEREOF |
US8376834B2 (en) * | 2010-05-07 | 2013-02-19 | Microsoft Corporation | Role assignment in multiplayer games |
US9192860B2 (en) | 2010-11-08 | 2015-11-24 | Gary S. Shuster | Single user multiple presence in multi-user game |
JP5503587B2 (en) * | 2011-03-31 | 2014-05-28 | アイオー インタラクティブ エーエス | Computer and game system for executing game score calculation method for creating ranking |
US10449457B2 (en) * | 2011-04-20 | 2019-10-22 | Disney Enterprises, Inc. | System and method for dynamic matchmaking population herding |
KR20120139262A (en) * | 2011-06-17 | 2012-12-27 | 엔에이치엔(주) | System, method and computer readable recording medium for providing a ranking about game group |
US9908054B2 (en) * | 2011-06-16 | 2018-03-06 | K-Innovation | Method, system and computer readable recording medium for providing a game ranking in a game service platform |
US8670847B2 (en) * | 2011-06-22 | 2014-03-11 | Disney Enterprises, Inc. | Method and device for fantasy sports player recommendations using a weighted player ranking system |
WO2013100588A1 (en) * | 2011-12-30 | 2013-07-04 | (주)네오위즈게임즈 | Method, server, terminal, and recording material for providing randomized league schedule service |
KR101754318B1 (en) * | 2012-02-06 | 2017-07-06 | 핫헤드 게임즈 인크. | Virtual competitive group management systems and methods |
US9195369B2 (en) | 2012-02-06 | 2015-11-24 | Hothead Games, Inc. | Virtual opening of boxes and packs of cards |
US8845437B2 (en) * | 2012-04-30 | 2014-09-30 | Microsoft Corporation | Gaming challenges which use leaderboards that rank challenge participants |
US9811978B2 (en) * | 2012-05-04 | 2017-11-07 | Cfph, Llc | Indexing methods and apparatus with competitive performance parameters |
US8715077B2 (en) | 2012-08-08 | 2014-05-06 | Skillz Inc. | Dynamic gameplay advertisements |
US8764534B1 (en) | 2012-10-26 | 2014-07-01 | Kabam, Inc. | System and method for maintaining user engagement in a realm-building game |
US8790185B1 (en) | 2012-12-04 | 2014-07-29 | Kabam, Inc. | Incentivized task completion using chance-based awards |
US20140256445A1 (en) * | 2013-03-07 | 2014-09-11 | Cfph, Llc | Fantasy gaming |
US8831758B1 (en) * | 2013-03-20 | 2014-09-09 | Kabam, Inc. | Interface-based game-space contest generation |
US9007189B1 (en) | 2013-04-11 | 2015-04-14 | Kabam, Inc. | Providing leaderboard based upon in-game events |
US9613179B1 (en) | 2013-04-18 | 2017-04-04 | Kabam, Inc. | Method and system for providing an event space associated with a primary virtual space |
US9626475B1 (en) | 2013-04-18 | 2017-04-18 | Kabam, Inc. | Event-based currency |
US8961319B1 (en) | 2013-05-16 | 2015-02-24 | Kabam, Inc. | System and method for providing dynamic and static contest prize allocation based on in-game achievement of a user |
US9463376B1 (en) | 2013-06-14 | 2016-10-11 | Kabam, Inc. | Method and system for temporarily incentivizing user participation in a game space |
JP6244127B2 (en) * | 2013-07-10 | 2017-12-06 | 株式会社ソニー・インタラクティブエンタテインメント | Content providing method, content providing server, and content providing system |
US9799163B1 (en) | 2013-09-16 | 2017-10-24 | Aftershock Services, Inc. | System and method for providing a currency multiplier item in an online game with a value based on a user's assets |
US11058954B1 (en) | 2013-10-01 | 2021-07-13 | Electronic Arts Inc. | System and method for implementing a secondary game within an online game |
US20150119123A1 (en) * | 2013-10-25 | 2015-04-30 | Kizzang Llc | System and method for conducting on-line poker tournaments |
US10282739B1 (en) | 2013-10-28 | 2019-05-07 | Kabam, Inc. | Comparative item price testing |
US10307644B2 (en) | 2013-11-05 | 2019-06-04 | Halcyonic, LLC | Virtual competition environment |
US20150126333A1 (en) * | 2013-11-05 | 2015-05-07 | Halcyonic, LLC | Virtual competition environment |
US9592446B2 (en) * | 2013-12-13 | 2017-03-14 | DeNA Co., Ltd. | Electronic game providing device and non-transitory computer-readable storage medium storing electronic game program |
US10482713B1 (en) | 2013-12-31 | 2019-11-19 | Kabam, Inc. | System and method for facilitating a secondary game |
US9508222B1 (en) | 2014-01-24 | 2016-11-29 | Kabam, Inc. | Customized chance-based items |
US10226691B1 (en) | 2014-01-30 | 2019-03-12 | Electronic Arts Inc. | Automation of in-game purchases |
US9873040B1 (en) | 2014-01-31 | 2018-01-23 | Aftershock Services, Inc. | Facilitating an event across multiple online games |
JP5706983B2 (en) * | 2014-03-06 | 2015-04-22 | グリー株式会社 | GAME PROGRAM, GAME PROCESSING METHOD, AND INFORMATION PROCESSING DEVICE |
US9795885B1 (en) | 2014-03-11 | 2017-10-24 | Aftershock Services, Inc. | Providing virtual containers across online games |
US9517405B1 (en) | 2014-03-12 | 2016-12-13 | Kabam, Inc. | Facilitating content access across online games |
US9610503B2 (en) | 2014-03-31 | 2017-04-04 | Kabam, Inc. | Placeholder items that can be exchanged for an item of value based on user performance |
US9744445B1 (en) | 2014-05-15 | 2017-08-29 | Kabam, Inc. | System and method for providing awards to players of a game |
US10307666B2 (en) | 2014-06-05 | 2019-06-04 | Kabam, Inc. | System and method for rotating drop rates in a mystery box |
US9744446B2 (en) | 2014-05-20 | 2017-08-29 | Kabam, Inc. | Mystery boxes that adjust due to past spending behavior |
US9717986B1 (en) | 2014-06-19 | 2017-08-01 | Kabam, Inc. | System and method for providing a quest from a probability item bundle in an online game |
US9579564B1 (en) | 2014-06-30 | 2017-02-28 | Kabam, Inc. | Double or nothing virtual containers |
US9539502B1 (en) | 2014-06-30 | 2017-01-10 | Kabam, Inc. | Method and system for facilitating chance-based payment for items in a game |
US9452356B1 (en) | 2014-06-30 | 2016-09-27 | Kabam, Inc. | System and method for providing virtual items to users of a virtual space |
US9724605B2 (en) | 2014-08-12 | 2017-08-08 | Utherverse Digital Inc. | Method, system and apparatus of recording and playing back an experience in a virtual worlds system |
US10463968B1 (en) | 2014-09-24 | 2019-11-05 | Kabam, Inc. | Systems and methods for incentivizing participation in gameplay events in an online game |
JP6577705B2 (en) * | 2014-10-10 | 2019-09-18 | 任天堂株式会社 | Information processing system, information processing apparatus, computer program, and information processing method |
US9656174B1 (en) | 2014-11-20 | 2017-05-23 | Afterschock Services, Inc. | Purchasable tournament multipliers |
US9827499B2 (en) | 2015-02-12 | 2017-11-28 | Kabam, Inc. | System and method for providing limited-time events to users in an online game |
EP3928845A1 (en) * | 2015-04-27 | 2021-12-29 | Sony Interactive Entertainment LLC | Interactive events platform |
US20170282082A1 (en) * | 2015-05-29 | 2017-10-05 | ATTAQ Online, Inc. | Automated tournament platform for online video games |
US20170014718A1 (en) * | 2015-07-14 | 2017-01-19 | Hothead Games, Inc. | Server daemon based gameplay management |
US10032338B2 (en) | 2015-09-23 | 2018-07-24 | Igt | Gaming system and method providing a gaming tournament having a variable average expected point payout |
CN105641933B (en) * | 2015-12-28 | 2019-05-10 | 北京像素软件科技股份有限公司 | A kind of copy racing arrangement method and system |
EP3190550A1 (en) * | 2016-01-11 | 2017-07-12 | Nintendo Co., Ltd. | Method and device for refining selection of items as a function of a multicomponent score criterion |
WO2017160917A2 (en) * | 2016-03-15 | 2017-09-21 | Skillz Inc. | Across-match analytics in peer-to-peer gaming tournaments |
CN114768245A (en) | 2016-03-15 | 2022-07-22 | 思奇里兹平台股份有限公司 | Synchronization model for virtual ranking games |
WO2017160932A1 (en) | 2016-03-16 | 2017-09-21 | Skillz Inc. | Management of streaming video data |
US9919213B2 (en) | 2016-05-03 | 2018-03-20 | Hothead Games Inc. | Zoom controls for virtual environment user interfaces |
US10010791B2 (en) | 2016-06-28 | 2018-07-03 | Hothead Games Inc. | Systems and methods for customized camera views and customizable objects in virtualized environments |
US10004991B2 (en) | 2016-06-28 | 2018-06-26 | Hothead Games Inc. | Systems and methods for customized camera views in virtualized environments |
US10424162B2 (en) | 2016-09-23 | 2019-09-24 | Igt | Gaming system and method providing a gaming tournament with a dynamic equalizer feature |
US10835826B1 (en) * | 2017-07-11 | 2020-11-17 | Amazon Technologies, Inc. | Social player selection for multiplayer electronic games |
US11716264B2 (en) | 2018-08-13 | 2023-08-01 | Cisco Technology, Inc. | In situ triggered function as a service within a service mesh |
US10733838B2 (en) | 2018-11-16 | 2020-08-04 | Igt | Gaming system and method providing tournament-style free activation feature |
US10918937B2 (en) * | 2019-07-16 | 2021-02-16 | Electronic Arts Inc. | Dynamic gameplay session management system |
US11395954B2 (en) | 2020-05-08 | 2022-07-26 | Cheer Match Media, LLC | Methods and apparatus for emulating live performance routine competition conditions without live competition staging |
US20240316449A1 (en) * | 2021-06-25 | 2024-09-26 | Phoenixdarts Co., Ltd. | Method For Providing Image Of Dart Game |
KR102708406B1 (en) * | 2021-06-25 | 2024-09-23 | 주식회사 피닉스다트 | Method for providing dart game image |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US586132A (en) * | 1897-07-13 | Cape for gossamers | ||
US5370399A (en) * | 1981-11-12 | 1994-12-06 | Richard Spademan, M.D. | Game apparatus having incentive producing means |
US5697844A (en) * | 1986-03-10 | 1997-12-16 | Response Reward Systems, L.C. | System and method for playing games and rewarding successful players |
US5759101A (en) * | 1986-03-10 | 1998-06-02 | Response Reward Systems L.C. | Central and remote evaluation of responses of participatory broadcast audience with automatic crediting and couponing |
US5558339A (en) * | 1994-05-05 | 1996-09-24 | Perlman; Stephen G. | Network architecture to support recording and playback of real-time video games |
US5593349A (en) * | 1994-09-09 | 1997-01-14 | Valley Recreation Products Inc. | Automated league and tournament system for electronic games |
US5768382A (en) * | 1995-11-22 | 1998-06-16 | Walker Asset Management Limited Partnership | Remote-auditing of computer generated outcomes and authenticated biling and access control system using cryptographic and other protocols |
US20030177347A1 (en) * | 1995-11-22 | 2003-09-18 | Bruce Schneier | Methods and apparatus for awarding prizes based on authentication of computer generated outcomes using coupons |
US7192352B2 (en) * | 1996-04-22 | 2007-03-20 | Walker Digital, Llc | System and method for facilitating play of a video game via a web site |
US6024643A (en) * | 1997-03-04 | 2000-02-15 | Intel Corporation | Player profile based proxy play |
JPH114969A (en) * | 1997-06-16 | 1999-01-12 | Konami Co Ltd | Game device, game method, and readable recording medium |
US6884167B2 (en) * | 1997-06-30 | 2005-04-26 | Walker Digital, Llc | Electronic gaming device offering a game of knowledge for enhanced payouts |
US6092806A (en) * | 1998-01-23 | 2000-07-25 | Follis; Charles | 100 point NCAA basketball tournament game |
US6076021A (en) * | 1998-04-09 | 2000-06-13 | Merit Industries, Inc. | System for handicapping substitute or unranked players in a dart game match |
US6315668B1 (en) * | 1998-09-24 | 2001-11-13 | Midway Games, Inc. | System and method for networking video games |
US6174237B1 (en) * | 1999-05-21 | 2001-01-16 | John H. Stephenson | Method for a game of skill tournament |
US6352479B1 (en) * | 1999-08-31 | 2002-03-05 | Nvidia U.S. Investment Company | Interactive gaming server and online community forum |
JP2001157782A (en) * | 1999-12-02 | 2001-06-12 | Dowango:Kk | Opponent determination system |
JP2005287521A (en) * | 2000-03-06 | 2005-10-20 | Bld Oriental Kk | Game system |
US20020052229A1 (en) * | 2000-04-07 | 2002-05-02 | Ronald Halliburton | Solitaire game played over the internet with features to extend play |
US20020059205A1 (en) * | 2000-07-13 | 2002-05-16 | Graham James J. | On-line facilities management tool |
US20020037767A1 (en) * | 2000-08-17 | 2002-03-28 | Steven Ebin | Gambling system and method through a computer network |
US6443838B1 (en) * | 2000-09-06 | 2002-09-03 | Scott Jaimet | Method for defining outcomes of ensembles of games using a single number and without reference to individual game wins |
JP3439187B2 (en) * | 2000-11-09 | 2003-08-25 | 株式会社コナミコンピュータエンタテインメント大阪 | NET GAME SYSTEM, NET GAME PROCESSING METHOD, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING NET GAME PROCESSING PROGRAM |
US6918831B2 (en) * | 2002-09-13 | 2005-07-19 | Igt | Method and apparatus for independently verifying game outcome |
US6569012B2 (en) * | 2001-01-09 | 2003-05-27 | Topcoder, Inc. | Systems and methods for coding competitions |
US7172508B2 (en) * | 2001-01-23 | 2007-02-06 | Burton Simon | Multi-person parimutuel betting games based on sporting events |
US6669565B2 (en) * | 2001-02-05 | 2003-12-30 | Fantasy Sports, Inc. | Method of conducting a fantasy sports game |
US20020115488A1 (en) * | 2001-02-22 | 2002-08-22 | Nicholas Berry | System and method for conducting an online competition |
CA2340562A1 (en) * | 2001-02-28 | 2002-08-28 | Midway Amusement Games, Llc | Tournament network for linking amusement games |
US20020142842A1 (en) * | 2001-03-29 | 2002-10-03 | Easley Gregory W. | Console-based system and method for providing multi-player interactive game functionality for use with interactive games |
US6996444B2 (en) * | 2001-04-13 | 2006-02-07 | Games, Inc. | Rating method, program product and apparatus |
JP2003062351A (en) * | 2001-06-12 | 2003-03-04 | Sony Computer Entertainment Inc | Tournament system, tournament performing method, server device, tournament performing program, and computer read-out recording medium with tournament performing program recorded thereon |
GB2384719B (en) * | 2002-01-30 | 2005-07-06 | Hewlett Packard Co | Virtual game tournament arrangement |
US20030190960A1 (en) * | 2002-04-04 | 2003-10-09 | Eron Jokipii | Method and system for providing access to and administering online gaming leagues and tournaments |
WO2004004853A2 (en) * | 2002-07-08 | 2004-01-15 | Skill Poker.Com Inc. | Method of determining skill level in a tournament setting |
AU2003236126A1 (en) * | 2002-08-20 | 2004-03-11 | Universal Entertainment Corporation | Game server and program |
US7214133B2 (en) * | 2003-05-09 | 2007-05-08 | Microsoft Corporation | Method and apparatus for retrieving recorded races for use in a game |
US7367888B1 (en) * | 2004-01-28 | 2008-05-06 | Microsoft Corporation | Player trust system and method |
GB0409224D0 (en) * | 2004-04-26 | 2004-05-26 | Waterleaf Ltd | Tournament system and method of operation thereof |
US7354345B2 (en) * | 2004-05-25 | 2008-04-08 | Microsoft Corporation | Multilevel online tournament |
JP4385863B2 (en) * | 2004-06-23 | 2009-12-16 | 株式会社セガ | Online game fraud detection method |
US7967681B2 (en) * | 2004-06-25 | 2011-06-28 | Stern Pinball, Inc. | System and method for providing enhanced amusement game tournament play |
US20060089200A1 (en) * | 2004-09-15 | 2006-04-27 | Twerdahl Timothy D | Systems and methods for processing game metrics from handheld computing devices |
US7677970B2 (en) * | 2004-12-08 | 2010-03-16 | Microsoft Corporation | System and method for social matching of game players on-line |
US8066568B2 (en) * | 2005-04-19 | 2011-11-29 | Microsoft Corporation | System and method for providing feedback on game players and enhancing social matchmaking |
WO2006124811A2 (en) * | 2005-05-13 | 2006-11-23 | Professional Interactive Entertainment, Inc. | System and method for network interactive game match-up and server selection |
US20070191102A1 (en) * | 2006-02-16 | 2007-08-16 | Microsoft Corporation | Tournament matchups for a multiplayer environment |
-
2006
- 2006-02-16 US US11/354,982 patent/US20070191101A1/en not_active Abandoned
-
2007
- 2007-01-20 CA CA002637169A patent/CA2637169A1/en not_active Withdrawn
- 2007-01-20 EP EP07716874A patent/EP1989673A4/en not_active Withdrawn
- 2007-01-20 JP JP2008555239A patent/JP2009526603A/en not_active Withdrawn
- 2007-01-20 AU AU2007218066A patent/AU2007218066B2/en not_active Ceased
- 2007-01-20 KR KR1020087019387A patent/KR20080094031A/en not_active IP Right Cessation
- 2007-01-20 WO PCT/US2007/001612 patent/WO2007097850A2/en active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012174656A1 (en) * | 2011-06-24 | 2012-12-27 | Intertaintech Corporation | System and method for conducting online video game tournaments |
US8851980B2 (en) | 2011-06-24 | 2014-10-07 | Intertaintech Corporation | System and method for conducting online video game tournaments |
Also Published As
Publication number | Publication date |
---|---|
EP1989673A4 (en) | 2012-03-21 |
AU2007218066B2 (en) | 2011-08-11 |
WO2007097850A3 (en) | 2007-10-25 |
US20070191101A1 (en) | 2007-08-16 |
KR20080094031A (en) | 2008-10-22 |
JP2009526603A (en) | 2009-07-23 |
EP1989673A2 (en) | 2008-11-12 |
WO2007097850A2 (en) | 2007-08-30 |
AU2007218066A1 (en) | 2007-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2007218066B2 (en) | Quickly providing good matchups | |
US20070191102A1 (en) | Tournament matchups for a multiplayer environment | |
US7214133B2 (en) | Method and apparatus for retrieving recorded races for use in a game | |
US8308569B2 (en) | Reward for resurrecting teammate in a multiplayer game | |
US20180345151A1 (en) | Fantasy sports wagering system | |
US8876606B2 (en) | User-centric method of aggregating information sources to reinforce digital identity | |
US8303413B2 (en) | Live hosting toolset | |
US7632186B2 (en) | Spectator mode for a game | |
US8500560B2 (en) | Application interface for tracking player identity | |
US9682324B2 (en) | System and method for enabling players to participate in asynchronous, competitive challenges | |
US7997987B2 (en) | Computer-based gaming teams | |
US20090325712A1 (en) | Player character matchmaking with distributed peer-to-peer functionality | |
CA2717599C (en) | Verification system for on-line gamers performing automatic verification of game results | |
KR100742129B1 (en) | System for providing go-stop game service via on-line and method therefor | |
CA2635644A1 (en) | Computer-based gaming groups | |
US20070060335A1 (en) | Action charging in a turn-based video game | |
WO2009140193A2 (en) | Adaptive live commentary in hosted game | |
KR20060105366A (en) | Method and system for providing bonus in game service | |
EP1669117B1 (en) | Method and device for storing and providing game-related and user-related information in a profile for a gaming service | |
MX2008009873A (en) | Quickly providing good matchups | |
KR20130055844A (en) | Method, game server, terminal, and recording medium for providing automatic matching between users in game | |
KR20070046428A (en) | Online game service and drive method using a character share, online game service and drive system thereof | |
KR100798259B1 (en) | Online game system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
AZWI | Withdrawn application |
Effective date: 20130123 |