A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever. Copyright 2005, 2006, WMS Gaming, Inc.
Gaming machines may be operated as a stand alone unit, or linked in a network of some type to a group of gaming machines. As technology in the gaming industry progresses, more and more gaming services are being provided to gaming machines via communication networks that link groups of gaming machines to one another and to remote central server computers that provide one or more gaming services. As an example, gaming services that may be provided by the remote computer to a gaming machine via a communication network of some type include player tracking, accounting, cashless award ticketing, lottery, progressive games and bonus games. In addition, gaming machines are evolving into gaming platforms where the gaming services and game play options provided on the gaming machines may be dynamically configured. Thus, the number and type of game services and game play options offered on a particular gaming machine may vary with time.
A gaming entity may operate hundreds, thousands or tens of thousands of gaming machines. Since gaming is allowed in many locations throughout the world, casinos may have games distributed over a wide geographic area. Within casinos, the gaming machines may be connected via one or more dedicated networks. Servers are usually located in a backroom of the casino away from the casino floor.
Networked gaming systems typically communicate with one another using either TCP/IP (Transmission Control Protocol/Internet Protocol) or UDP/IP (User Datagram Protocol/Internet Protocol), which are both well known and widely available protocols.
Several issues however are associated with the use of TCP/IP or UDP/IP. TCP/IP is a byte-stream oriented protocol in which bytes are delivered to a receiver in the order sent by the sender. The byte order is guaranteed regardless of the order in which network packets containing the byte-stream arrive. In addition, TCP/IP is a considered a “reliable” protocol, meaning that if a byte is sent, it is guaranteed to be delivered to the receiver (barring catastrophic network or system failure). Thus if a sender or receiver detects that a part of the byte-stream has not been delivered, the packet or packets containing the missing bytes are retransmitted.
While guaranteed delivery is desirable, the mechanism used in TCP/IP to achieve it has led to the “head of queue” blocking problem. In TCP/IP a queue is typically maintained of bytes waiting to be delivered to the intended receiver application. Due to network or system failures, one or more packets may be dropped, while subsequent packets are delivered. In TCP/IP, delivery halts until the bytes at the head of the queue are retransmitted, which can lead to sizable delays in delivering the remaining bytes.
A further issue with TCP/IP is related to the byte-stream nature of the protocol. Gaming applications and services that communicate with one another often do so using messages having particular messages sizes or message boundaries. Because TCP/IP is a byte-stream oriented protocol, it is up to the gaming applications and services to provide code that organizes the byte stream into messages, thus adding complexity to developing the gaming applications and services.
UDP/IP is able to address the message oriented needs of gaming applications and services because UDP organizes and delivers data in “datagrams”, which may comprise a message. Further, the datagrams, are delivered in the order they arrive, which may or may not be the order they are sent. As a result, UDP/IP does not exhibit the head of queue blocking problem seen in TCP/IP. However, delivery is not guaranteed in UDP/IP, if a packet is dropped, no retransmission is attempted. Thus if a gaming application and service desires to use messages in datagrams to reliably exchange data, the applications and services must supply a mechanism on top of UDP/IP to provide for retransmission of lost messages, thus adding complexity and expense in developing the gaming applications and services.
Additionally, TCP/IP and UDP/IP are not considered fault tolerant. A network or system failure along a network path connecting gaming applications with services can lead to the complete disruption in the delivery of data. In order to achieve fault tolerance, additional layers of code must be provided by the gaming application or service developer, leading to additional cost and complexity.
The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification.
Systems and methods use a reliable connection oriented protocol to send and receive messages (i.e. datagrams) between gaming applications and gaming services. In one aspect, the protocol is the SCTP protocol.
The present invention describes systems, methods, and computer-readable media of varying scope. In addition to the aspects and advantages of the present invention described in this summary, further aspects and advantages of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.
In the following detailed description of exemplary embodiments of the invention, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical and other changes may be made without departing from the scope of the present invention.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
In the Figures, the same reference number is used throughout to refer to an identical component which appears in multiple Figures. Signals and connections may be referred to by the same reference number or label, and the actual meaning will be clear from its use in the context of the description.
The description of the various embodiments is to be construed as exemplary only and does not describe every possible instance of the invention. Numerous alternatives could be implemented, using combinations of current or future technologies, which would still fall within the scope of the claims. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
The gaming machine 100 includes a plurality of possible credit receiving mechanisms 114 for receiving credits to be used for placing wagers in the game. The credit receiving mechanisms 114 may, for example, include a coin acceptor, a bill acceptor, a ticket reader, and a card reader. The bill acceptor and the ticket reader may be combined into a single unit. The card reader may, for example, accept magnetic cards and smart (chip) cards coded with money or designating an account containing money.
In some embodiments, the gaming machine 100 includes a user interface comprising a plurality of push-buttons 116, and other possible devices. The plurality of push-buttons 116 may, for example, include one or more “bet” buttons for wagering, a “play” button for commencing play, a “collect” button for cashing out, a help” button for viewing a help screen, a “pay table” button for viewing the pay table(s), and a “call attendant” button for calling an attendant. Additional game specific buttons may be provided to facilitate play of the specific game executed on the machine. A touch screen overlaying video display 112 may define touch keys for implementing many of the same functions as the push-buttons. Additionally, in the case of video poker, the touch screen may implement a card identification function to indicate which cards a player desires to keep for the next round. Other possible user interface devices include a keyboard and a pointing device such as a mouse or trackball.
In some embodiments, gaming machine 100 includes a top box 140. Top box 140 may contain a video display, a mechanical display, or a diorama display that supplements display 112. For example, the display in top box 140 may be a wheel such as a rotating wheel, mechanical dice, a board for a board game, or other such display.
A processor controls operation of the gaming machine 100. In response to receiving a wager and a command to initiate play, the processor randomly selects a game outcome from a plurality of possible outcomes and causes the display 112 to depict indicia representative of the selected game outcome. In the case of slots for example mechanical or simulated slot reels are rotated and stopped to place symbols on the reels in visual association with one or more pay lines. If the selected outcome is one of the winning outcomes defined by a pay table, the CPU awards the player with a number of credits associated with the winning outcome.
Gaming machine 100 may include a player tracking card reader 124. A player may be enrolled in the gaming establishment's player club and may be awarded certain complimentary offers as that player collects points on his player tracking account. The player inserts the player-tracking card into the reader, allowing the gaming establishment's player tracking server to record the player's wagering activity. The gaming machine 100 may also include a player tracking display 127 to be used with the player-tracking card and card reader 124.
In some embodiments, gaming machine 100 may include signage 120. Signage 120 may be a display device capable of displaying advertising, gaming information (e.g. type of game, denomination of game etc.) or other information to a player or potential player.
System memory 224 stores control software, operational instructions and data associated with the gaming machine. In some embodiments, the system memory 224 comprises a separate read-only memory (ROM) and battery-backed random-access memory (RAM). However, it will be appreciated that the system memory 224 may be implemented on any of several alternative types of memory structures or may be implemented on a single memory structure. For example, memory 224 may comprise multiple banks of memory, including RAM, compact flash, hard drives, CD-ROM drives, DVD-ROM drives and combinations thereof.
A payoff mechanism 226 is operable in response to instructions from the processor 220 to award a payoff to the player. The payoff may, for example, be in the form of a number of credits. The number of credits is determined by one or more math tables stored in the system memory 224. As noted above with respect to
Network interface 228 operates to communicably couple system 200 in gaming machine 100 to a network. The network may be any type of wired or wireless network and the network interface 228 may vary based on the type of network. In some embodiments, the network comprises a gaming establishment network such as a LAN (local area network). In alternative embodiments, the network may be an intranet linking multiple networks, for example, the networks of a gaming enterprise that operates multiple gaming establishments. In further alternative embodiments, the network may comprise the Internet. Additionally, gaming machine 100 may have a single network interface 228 or more than one network interface 228 (e.g. network interfaces 228.1 and 228.2). In those embodiments having multiple network interfaces, the network interfaces may provide a redundant interface to a single network, or the network interfaces may be coupled to independent networks. In the case of independent networks, the networks may be of the same type or the networks may be of differing types (e.g. a wired and a wireless network).
As noted above, various services may be provided on network 340. Examples of such services include name service 302, progressive service 304, central determinant service 306, bonus service 308 and player tracking service 310. Those of skill in the art will appreciate that other services may now exist or be developed in the future, and that such services are within the scope of the inventive subject matter. Various combinations of the aforementioned services may be located on the same server, all of the services may be located on a single server, or the services may each be located on their own server. The embodiments of the invention are not limited to any particular service/server configuration.
Name service 302 provides a well known location for gaming machine applications and other services to send queries for the network address of services available on gaming network 340. Name service responds to queries with the network address bound to the named service.
Progressive service 304 manages one or more progressive wagering game in which multiple gaming machines 100 contribute to a pool of potential winnings that may be paid out to any gaming machine participating in the progressive wagering game upon certain outcomes.
Central determinant service 306 provides a centralized game outcome provider. The central determinant service executes a random number generator (RNG) that is used to determine the outcome for a wagering game or bonus round on behalf of the gaming application invoking the service.
Bonus service 308 provides bonus round data (outcomes, video, audio etc.) for a gaming application invoking the service.
Player tracking service 310 gathers and maintains data regarding a player on a gaming machine. A player inserts a player tracking card or other identification device into the gaming machine. The gaming machine can then obtain player preferences from the player tracking service and also communicate game related data to the player tracking service (e.g. game outcomes, amounts wagered, credits won/lost etc.).
Gaming application 408 and service 410 each utilize a network stack to communicate data through network 340. In some embodiments, network stack comprises network interface 228, IP layer 402, transmission protocol layer 404, and API (Application Program Interface) 406.
Network interface 228 provides a hardware and software interface to a physical network 340. Network interface 228 will vary depending on the type of network. In addition, network interface 228 includes device driver software that may be called by the IP layer 402 (or an intermediate MAC layer) in order to send and receive network data.
IP layer 402 implements the Internet Protocol, which provides a packet format and a common addressing scheme that is used to identify a particular machine or device on a network that will receive the packet.
Transmission protocol layer 404 provides connection oriented network services for applications and services that are configured to communicate with one another. Transmission protocol layer 404 defines a protocol data unit (also referred to as a packet) that includes header data used to provide connection oriented data communication via a communication association 420 and communication streams 422. In some embodiments, transmission protocol layer 404 provides the following capabilities:
In some embodiments, transmission protocol layer 404 conforms to the SCTP (Stream Control Transmission Protocol).
API 406 provides an interface to the transmission protocol layer for applications 408 and services 410. In some embodiments, the API is a socket based API as is known in the art.
In operation, a game application may establish a connection with a service 410 by creating a communication association 420 and one or more communication streams 422 within communication association 420. Communication association 420 establishes a logical data connection between two endpoint machines, in this example gaming machine 100 and server 430. The communication association may specify a single IP address, which in turn is associated with a single network interface 228.
However, in some embodiments, the communication association may be multi-homed. In these embodiments, a communication association may specify multiple IP addresses (each assigned to a separate network interface 228), each of which may be used to send and receive data for the communication association. A multi-homed association is desirable, because it provide fault tolerance to the connection. For example, if the communication association is multi-homed through IP addresses associated with network interfaces 228.1 and 228.2, network interface 228.1 fails, data may still be communicated over the other network interface 228.2 using the IP address associated with network interface 228.2. Similarly if the network interfaces 228.1 and 228.2 are associated with separate networks 340.1 and 340.2 respectively, then a failure anywhere along network 340.1 may be detected and data transmitted over network 340.2 using the IP address associated with network interface 228.2.
In some embodiments, one of the multiple IP addresses in a multi-homed communication association may be designated as the primary IP address, which will handle all data communication in the absence of a failure.
In some embodiments, a failure in an association is detected using heartbeat messages. A heartbeat message may be transmitted through an IP address assigned to an communication association. If the heartbeat message is not acknowledged, transmission protocol layer 404 may determine that the network interface associated with the IP address has failed. Transmission protocol layer 404 may then communicate data over a different IP address assigned to the communications association. In some embodiments, the switching of network interfaces caused by selecting a different IP address assigned to the communications association may occur without the intervention or knowledge of the gaming application or gaming service.
It should be noted that although
Communication streams 422 are separate and uniquely identified message delivery channels within a communication association 420, and provide connection oriented data communication between a game application and a game service (or between two game service or between two game applications). In some embodiments, the streams are unidirectional. In these embodiments, the number of streams in a communication association between a source and destination may be different in each direction. In the example illustrated in
Each communication stream may have a separate priority, where messages in higher priority communication streams are processed before messages in lower priority communication streams. The prioritization mechanism may be used in system 400. For example, a progressive service may communicate data with a gaming application participating in the progressive service using multiple streams, a first stream to communicate the progressive amounts to the progressive server for addition to the progressive pool and a second stream used to communicate display information regarding the progressive game to the participating gaming application. In order to insure the integrity of the progressive pool, it may be desirable to place a higher priority on messages related to updating the pool and a lower priority on messages used to deliver data for display purposes.
The method begins by establishing a communication association between two gaming system endpoints (block 502). For example, a communication association may be established between a gaming application client and a gaming server providing gaming related services.
Next, in some embodiments, one or more network interfaces are assigned to the communication association (block 504). The network interfaces may be coupled to a common network or the network interfaces may be coupled to different networks in order to provide redundant paths between the gaming system endpoints. In the case of multiple network interfaces being assigned to a communication association, one of the network interfaces may be designated as a primary interface for the communication association.
Next, a first communication stream within the communication association is established with a service (block 506). In some embodiments a second communication stream within the communication association may be established (block 508). Once established, data may be sent or received over the first and/or second streams (block 510). The first and second communication streams may be assigned differing priorities in order to allow high priority data to be sent or received via one stream while lower priority (presumably less important) data is sent or received over the second communication stream.
Periodically, a failure may be detected on an interface (block 512). In some embodiments, the failure may be detected when a response to a heartbeat message sent over the interface is not received. In alternative embodiments, the failure may be detected when messages sent via an interface are not acknowledged by the recipient.
In the absence of failure, messages may continue to be sent over the streams using the first interface (block 510). However, when a failure is detected, the system switches to sending messages via a second interface (block 514).
Periodically the system may check to determine if the first interface has recovered (block 516), for example by sending a heartbeat message and receiving a response indicating acknowledging the heartbeat message. If a recovery is not detected, the system continues to use the second interface to communicate messages (unless it too fails, in which case a third interface may be used if available). If the first interface has recovered, the system may resume using it to send or receive messages (block 510).
Systems and methods for using a transmission protocol such as SCTP in a gaming network have been described. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the inventive subject matter.
The terminology used in this application is meant to include all of these environments. It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. Therefore, it is manifestly intended that this invention be limited only by the following claims and equivalents thereof.
The Abstract is provided to comply with 37 C.F.R. §1.72(b) to allow the reader to quickly ascertain the nature and gist of the technical disclosure. The Abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
This application is a U.S. National Stage Filing under 35 U.S.C. 371 from International Patent Application Serial No. PCT/US2006/028217, filed Jul. 20, 2006, and published on Jan. 25, 2007 as WO 2007/012034 A2 and republished as WO 2007/012034 A3, which claims the priority benefit of U.S. Provisional Application Ser. No. 60/701,195 filed Jul. 20, 2005, the contents of which are incorporated herein by reference.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2006/028217 | 7/20/2006 | WO | 00 | 1/17/2008 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2007/012034 | 1/25/2007 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6033306 | De Souza | Mar 2000 | A |
6527638 | Walker et al. | Mar 2003 | B1 |
7452270 | Walker et al. | Nov 2008 | B2 |
7779154 | Lipsanen et al. | Aug 2010 | B2 |
20040204234 | Walker et al. | Oct 2004 | A1 |
20050043020 | Lipsanen et al. | Feb 2005 | A1 |
Number | Date | Country | |
---|---|---|---|
20080248876 A1 | Oct 2008 | US |
Number | Date | Country | |
---|---|---|---|
60701195 | Jul 2005 | US |