Patent ID: 12260714

Corresponding reference characters indicate corresponding parts throughout the drawings.

DETAILED DESCRIPTION OF EMBODIMENTS

With reference to the drawings and in operation, the present invention is directed towards a gaming machine, a control method for a gaming machine, and a program for a gaming machine and/or mobile computing device that provides a game to a player. The gaming machine according to the present embodiment, receives a predetermined game value from the player, generates a game result, and provides a payout to the player according to the game result and one or more pay tables. The gaming machine includes a gaming cabinet that includes a display device and a user input device. The display device includes a display configured to display computer generated graphics. The user input device includes a plurality of input buttons that allows a player to initiate game play and interact with video images being displayed on the display device. The gaming machine includes a control unit having a computer processor that is programmed generate and display a structured graphic user interface displayed on the display device using computer generated graphics. The structure graphic user interface includes a plurality of virtual reels displaying game symbols within a grid. The control unit is also programmed to animate the virtual reels to simulate spinning the virtual through the grid and stop the virtual reels to reveal an outcome of a game. The control unit is also programmed to generate and present additional computer animations in specific animated sequences to display bonus features associated with the game.

Referring toFIGS.1A-1D, in the illustrated embodiment, the gaming machine10includes a cabinet12providing a display unit14and a control panel16and may also house a player tracking or ranking unit18. The cabinet12also houses a game control unit20(seeFIG.2) that controls each part (see below). The control unit20also implements a random number generator (RNG) that is used during operation of the game. Each configuration is described below.

The display unit14may be liquid crystal display devices and/or organic EL display devices and the like, and by controlling via each control unit20, the display area mentioned below functions as a display unit14provided to the player. In some embodiments, the display unit14may include an upper display22and a lower display24. As shownFIGS.1A,1F, and1G, in some embodiments, the upper and lower displays22,24are shown on a single display device. In other embodiments, as shown inFIGS.1B-1E, the upper and lower displays22,24may be shown on multiple display devices.

Speakers26are provided on the left and right of the cabinet12, and by controlling via the control unit20, sound is provided to the player. On the control panel16, a bill/ticket identification device28, a printer device30, and an operation unit32are provided.

The player tracking unit18may be housed on the center of the front surface of the cabinet12below the display unit14. The player tracking unit18has a card reader that recognizes a player identification card, a display that presents data to the player, and a keypad that receives input by the player. This type of player tracking unit18reads information recorded on the player identification card inserted by the player into the card reader and displays the information and/or information acquired by communicating with the external system on the display, by cooperatively operating with the control unit20mentioned below or an external system. Further, input from the player is received by the keypad, the display is changed according to the input, and communication with the external system is carried out as necessary.

The bill/ticket identification device28is disposed on the control panel16in a state where the insertion opening that a bill/ticket is inserted into is exposed, an identification part that identifies a bill/ticket by various sensors on the inside of the insertion opening is provided, and a bill/ticket storage part is provided on the outgoing side of the identification part. The bill/ticket identification device28, receives and identifies bills/tickets (including vouchers and coupons) that are the game value as a game executing value, and notifies the control unit20mentioned below.

The printer device30is disposed on the control panel16in a state where the ticket output opening that a ticket is output from is exposed, a printing part that prints predetermined information on a printing paper on the inside of the ticket output opening is provided, and a housing part that houses the printing paper inside the paper inlet side of the printing part is provided. The printer device30, under the control of the control unit20mentioned below, prints information on paper and outputs a ticket according to credit payout processing from the gaming machine10. The output ticket can use the payout credit as game play by being inserted into the bill/ticket identification device28of another gaming machine or can be exchanged for cash by a kiosk terminal inside of the casino or a casino cage.

The operation unit32receives the operation of the player. The operation unit32includes a group of buttons34that receives various instructions from the player on the gaming machine10. The operation unit32, for example, may include a spin button and a group of setting buttons. The spin button receives an instruction to start (start rotating the reel) an instance of the game. The group of setting buttons34includes a group of bet buttons, a denomination button, a group of line-designation buttons, a max bet button, and a payout button and the like. The group of bet buttons receives an instruction operation regarding the bet amount of credits (bet number) from the player. The group of line-designation buttons receive an instruction operation that designate a pay line subjected to a line judgment below from the player. The max bet button receives an instruction operation regarding the bet of the maximum amount of credits that can be bet at one time from the player. The payout button receives an instruction operation instructing a credit payout accumulated in the gaming machine10. The gaming machine10also includes illumination devices36that provides decorative lighting to the gaming machine10.

In one embodiment, the control panel16includes a plurality of user input devices that may include an acceptor device which accepts media associated with a monetary value to establish a credit balance, a validator configured to identify the physical media, a cash-out button actuatable to cause an initiation of a payout associated with the credit balance. The acceptor device may include a touchscreen display associated with the display unit14and/or the player tracking unit18, the bill/ticket identification device28, the operation unit32, the player tracking unit18, a coin slot, a ticket in ticket out (TITO) system, a bill acceptor, and/or any suitable device that enables the gaming machine10to receive media associated with a monetary value and establish a credit balance for use in playing the gaming machine10. In one embodiment, the acceptor device may be configured to receive physical media such as, for example, a coin, a medal, a ticket, a card, a bill, currency, and/or any suitable physical media that enables the gaming machine10to function as described herein. The acceptor device may also be configured to accept virtual media such as, for example, a player tracking account, a virtual credit balance, reward points, gaming credits, bonus points, and/or any suitable virtual media that enables the gaming machine10to function as described herein.

For example, in one embodiment, the coin slot may include an opening that is configured to receive coins and/or tokens deposited by the player into the gaming machine10. The control unit20converts a value of the coins and/or tokens to a corresponding amount of gaming credits that are used by the player to wager on games played on the gaming machine10. The bill acceptor may include an input and output device that is configured to accept a bill, a ticket, and/or a cash card into the bill acceptor to enable an amount of gaming credits associated with a monetary value of the bills, ticket, and/or cash card to be credited to the gaming machine10. In one embodiment, the bill acceptor also includes a printer (not shown) that is configured to dispense a printed voucher ticket that includes information indicative of an amount of credits and/or money paid out to the player by the gaming machine10during a gaming session. The voucher ticket may be used at other gaming devices, or redeemed for cash, and/or other items as part of a casino cashless system.

FIG.2shows a functional block diagram of the gaming machine10, according to the present embodiment. The gaming machine10provides the control unit20. Within the cabinet12, control unit20includes a control board equipped with a central processing unit38(abbreviated as CPU below) including a processor, an interface unit (or part)40, a memory device including a memory42and a storage44, and the like are incorporated. The control board is configured so that communication is possible through the interface unit40and each of the components equipped on the cabinet12. The CPU38controls the operation of each component by executing the program recorded in the memory42or the storage44of the CPU38and provides a game to the player. The function of the CPU38is to execute and display the game on the display unit14of the gaming machine10.

The control unit20is configured as the interface unit40including a chip set providing communication functions of the CPU38, a memory bus connected to a CPU38, various expanding buses, serial interfaces, USB interfaces, Ethernet (registered trademark) interfaces and the like, and a computer unit where the CPU38provides the addressable memory42and the storage44through the interface unit40. The memory42can be configured to include RAM that is a volatile storage medium, ROM that is a nonvolatile storage medium, and EEPROM that is a rewritable nonvolatile storage medium. The storage44provides the control unit20as an external storage device function, can use reading devices such as a memory card that is a removable storage medium, and a magneto optical disk and the like, and can use hard disks.

On the interface unit40, in addition to the CPU38, the memory42, and the storage44, a bill/ticket identification unit controller46, a printer unit controller48, the player tracking unit18, a graphic controller50, an input controller52, and a sound controller54are connected. That is, the control unit20is connected to the operation unit32through the input controller52and connected to the display unit14through the graphic controller50. Further, when illumination devices36that provides decorative lighting to the gaming machine10is provided, the illumination is controlled under the control of the control unit20on the interface unit40, and an illumination controller56that controls the illumination devices36to provide a decorative lighting effect may be connected.

The control unit20, which includes memory42and storage44, controls each part by executing a program stored in the memory42and the storage44, and provides a game to the player. Here, for example, the memory42and storage44may be configured to store a program and data of an operating system and subsystem that provide the basic functions of the control unit20to the EEPROM of the memory42and stores a program and data of an application that provides a game to the storage44. According to such a configuration, it can be easy to change or update a game by replacing the storage44. Further, the control unit20may be a multiprocessor configuration that has a plurality of CPUs.

Each block connected to the control unit20is described below. The bill/ticket identification unit controller46operates the bill/ticket identification device28to receive bills/tickets in the insertion opening and notifies the control unit20of identifying information corresponding to the assortment of bills or the payout processing of credits. The bill/ticket identification unit controller46notifies the information to the control unit20, and the control unit20increases the usable credit amount inside of the game according to the notified content. The printer unit controller48corresponds to the printer device30, and under the control of the control unit20that receives an operation of the payout button of the group of setting buttons34, information corresponding to the credit payout processing from the gaming machine10is printed and output on a printed ticket.

The player ranking (or tracking unit) unit18cooperatively operates with the control unit20and sends and receives information and the like of the player from the casino management system. The graphic controller50controls the display unit14, under the control of the control unit20, and displays a display image that includes various graphic data. The sound controller54drives the speakers26under the control of the control unit20, and provides various sounds such as an announcement, sound effects, BGM and the like.

Further, the interface unit40, has various communication interfaces for communicating with the exterior of the gaming machine10, for example the interface unit40can communicate with an external network by Ethernet58,60, and a serial interface62. In the present embodiment, one example shows when there is communication between a well-known server-side gaming network58(Server Based Gaming), a G2S network60(Game to System), and a slot information system62(Slot Data System), respectively.

FIG.3schematically shows a display area64provided by the gaming machine10. Such a display area64is displayed on the display unit14(the upper display22and/or the lower display24) by the control unit20executing a predetermined program. In the illustrated embodiment, the display area64is displayed on the lower display24. For instance, as shown, during a game, the upper display22may be utilized to display game related information, e.g., game title information and/or graphics.

In one aspect of the present invention, the control unit20executes a game execution program to provide a game66that includes a primary game68and one or more bonus feature events. The control unit20displays a game screen within the display area64that includes the primary game68and the bonus feature events. In the illustrated embodiment, the primary game68and the bonus feature events are displayed on the lower display24. The upper display22may be used to display animations and/or game identifying information during the game and/or during an attract mode. Further, the lower display24may display a decorative area, and an area that displays credit amount, bet number, and a credit amount obtained by winning (WIN number) and the like. In another embodiment, the primary game68may be displayed in the lower display24and the bonus feature events may be displayed in the upper display22.

In the illustrated embodiment, the primary game68includes a video slot game using a plurality of virtual reels70,72,74,76,78(shown inFIGS.3-4). The video slot game utilizes a grid80in the display area64. The illustrated embodiment shows the state of displaying the display area64in the lower display24. By using such a display area, the gaming machine10of the present embodiment operates as a slot machine that pays a payout according to a winning combination of symbols displayed on the display area64.

The display unit14displays a plurality of game symbols in the grid80. The grid80has a plurality of rows (r) and columns (c). The grid80is configured by a plurality of cells82that are the stop position of symbols. On each of the plurality of cells82of the display area64, one symbol is stopped and displayed.

In the illustrated embodiment, the grid80is displayed with fifteen cells82arranged in three rows and five columns, and the control unit20generates five virtual reels70,72,74,76,78for use in displaying the primary game68. On each cell82of the grid80, as shown inFIG.3, a game symbol84is displayed based on the symbol arrangement of virtual reels including virtual reels70,72,74,76,78(also shown inFIG.4) configured as a virtual reel set86. That is, the cells82of the grid80correspond to the virtual reels70to78, by column, and the game symbols84disposed on predetermined parts of each virtual reels70to78are displayed. In the illustrated embodiment, each of the virtual reels70to78displays multiple symbols within a corresponding column with the virtual reel in a stopped position. For example, as shown inFIG.3, when stopped, each virtual reel70to78displays game symbols within each corresponding column. Furthermore, by moving (scrolling or spinning) each game symbol84by column based on the symbol arrangement of the virtual reels70to78, the game symbols84displayed in the cells82of the grid80change, and by stopping the movement (scrolling or spinning) by columns, the game symbols84are stopped. Here, the virtual reels70to78are data where the control unit20uses a program having the memory42or the storage44, and data showing the symbol arrangement (i.e., the order of symbols on each reel strip) regulated by each cell column. Further, the virtual reel set86is a general term for such virtual reels70to78.

In some embodiments, the control unit20generates each virtual reel70to78using reel strip data files88(shown inFIG.11) and symbol image data files stored in memory42and/or storage44. The reel strip data file88includes a reel designation90associated with each virtual reel70to78and sequential symbol position logic cells92associated with each reel designation90. Each symbol position logic cell92includes indicators for rendering the virtual reels with a plurality of game symbols. The reel strip data file88includes information associated with a plurality of reel strips94,96,98,100,102that correspond to each virtual reel70to78and are used to generate virtual reel70to78. Each reel strip94,96,98,100,102includes a number of symbol positions104configured to be populated by game symbols84that are selected from symbol image data files stored in memory42and/or storage44. The reel strips94-102also include reel stop positions106associated with each symbol position104. The symbol positions104and the corresponding game symbols84are arranged in an order defined by each reel strip94,96,98,100,102. In addition, one or more reel strips94,96,98,100,102includes a different number of symbol positions104.

In some embodiments, each reel strip94,96,98,100,102, includes a plurality of fixed symbol positions104for displaying game symbols84. Each fixed symbol position104includes instructions for displaying a predefined game symbol84selected from a set of game symbols84included in a game symbol image data file. For example, for each play of the game, the fixed symbol positions104have an associated predefined game symbol84from a symbol set. The game symbol image data file includes the details of game symbols84populating the fixed symbol positions104and includes varieties of game symbols84. This symbol set includes card symbols (“9”, “10”, “J”, “Q”, “K”, and “A”) that imitate playing cards as regular symbols, and picture symbols (“PicA”, “PicB”, “PicC”, and “PicD”) that show a pattern. Further, this symbol set includes a wild symbol (“Wild”) that is substituted as another symbol when a win combination is determined and a special symbol (“Special”) that may be used to determine if a game feature is to be provided. Each of these symbols have a different rank from each other regarding their value when winning, their rank gradually raises in this order: “9”, “10”, “J”, “Q”, “K”, “A”, “PicE”, “PicD”, “PicC”, “PicB”, “PicA”. A combination of symbols that includes high-ranking symbols when winning, can obtain a larger winning payout compared to a combination of low-ranking symbols when winning.

One or more of the reel strips94,96,98,100,102may also include a plurality of variable symbol positions105that display a varying inner symbol (“inner”). The variable symbol positions105are populated using a variable symbol reel strip data file and/or a variable symbol weight table. The variable symbol reel strip data file includes a variable symbol reel strip that includes a number of symbol positions populated by game symbols that are selected from game symbol image files, and stop positions associated with each symbol position. When generating the virtual reels70to78, the control unit20is programmed to populate the variable symbol positions105by randomly selecting game symbols from the predefined group of symbols using the variable symbol reel strip. For example, the control unit20may be programmed to randomly select a stop position of the variable symbol reel strip, select the symbol position associated with the randomly selected stop position, and populate the variable symbol position105with the game symbol84associated with the selected symbol position.

It should be noted that in one aspect of the present invention, one or more dynamic virtual reel strips may be utilized. Using virtual reel strips, the symbols and/or symbol positions and/or virtual reel strips and/or length or size and/or any aspect of a virtual reel strip may change from one spin or play to the next. For example, a dynamic reel strip includes a plurality of symbol positions with symbols from the symbol set and a plurality of variable symbol positions. The variable symbol positions may be in the form of one or more stacks, i.e., adjacent symbol positions. In one embodiment, the location and/or size of the stacks may change from one spin to the next, either randomly and/or in a predetermined pattern.

Alternatively, a virtual reel strip associated with a column of cells may be dynamically changed from one spin or play to another spin or play. This may occur randomly, every spin or play and/or in a predetermined pattern. It should be noted that in the illustrated embodiment, each column of the grid80has a corresponding reel. When the reel stops, a symbol from the respective reel appears in each one of the cells of the respective column of the grid80.

In general, the control unit20starts an instance of the primary game68and determines the stop position of each virtual reels70to78randomly using a reel stop position data file108(shown inFIG.12) stored in the memory device. The virtual reels70to78that are displayed in the display unit14(for example, the lower display24) are moved from a current position and stopped based on a stop position to express an outcome of the primary game. Due to this, in the display or grid80, the symbols included on the virtual reels70to78are continuously moved (scrolled or spun) in a vertical direction of the display area64, and one symbol of one cell82is aligned in an order of the symbol based on the symbol arrangement is stopped so that it is displayed.

The control unit20changes and stops the plurality of symbols displayed on the display unit14according to the operation of the player received by the operation unit32, and a payout may be paid according to the stopped symbols inside the display area64and a pay line set and paytable data file110(show inFIG.13) stored in the memory device.

In the display area64, a pay line is set that is used when winning is determined. The pay line is set to be extended over the column on the right end from the cells of the column of the left end and is a line that combines the plurality of cells82determining a win. The number of effective lines within the set pay line is selected by the operation of a group of line designation buttons included in the group of setting buttons34of the operation unit32for the player. The control unit20, in regard to the result of a game that is a combination of symbols, determines a win when a predetermined number of identical symbols is surpassed and aligned on a set pay line, and pays a payout to the player according to the type and number of symbols. The system for determining a win may determine a win when a predetermined number of identical symbols from cells of the column on the left end are aligned on a set pay line, may determine a win when a predetermined number of identical symbols from cells of the column on the right end are aligned on a set pay line, and may determine a win when a predetermined number of identical symbols are aligned on a continuous column on a predetermined pay line. It should be noted that pay lines shown other than (or in addition to) the pay lines shown inFIG.13may be used. In general, the pay lines start in the first column and end in the last column and include one cell per column. However, one or more pay lines could include one or more cells in the same column and may include a vertical pay line.

In some embodiments, upon detecting the occurrence of the trigger condition occurring with the primary game, the control unit20executes a bonus feature event algorithm to display a bonus feature event. For example, upon detecting the occurrence of the trigger condition, the control unit20may display additional game symbols and/or game animations on the game screen and/or transitions the game screen from the primary game to the bonus feature event.

Referring toFIGS.5-8, in the illustrated embodiment, the memory42stores a game application program200that includes computer executable instructions that, when executed by the processor38, cause the processor38to generate and display the game on the display unit14of the gaming machine10. In one embodiment, the game application program200includes program code202and program object data204that includes computer executable instructions for implementing a game using the algorithms shown inFIG.14.

In the illustrated embodiment, the memory42stores the game application program200and a system application program206that includes computer executable instructions that, when executed by the processor38, cause the processor38to generate and display the game on the display unit14of the gaming machine10. The game application program200provides game specific/front-end functions and the system application program206program provides generic/back-end functions, when executed by the processor38. In the illustrated embodiment, the game application program200and the system application program206are implemented on the same operating system. However, it should be noted that these programs may be implemented on different operating system and/or by different processors. In one embodiment, the game application program200includes a plurality of software modules including a bet/denomination/payline button listener module208, a start button listener module210, a credit balance manager module212, a sampling manager214, a random number generator216, a comparison manager218, a game result generator220, a win evaluator222, a game presenter224, a game graphics presenter226, a game sound presenter228, a win indicator230, an award provider232, an application manager234, and an external communicator236. The game application program200may also include the reel strip data files, the symbol image data files, the variable symbol reel strip data files, the reel stop position data file, the credit prize symbol weight tables, the pay line set, and the paytable data file.

The bet/denomination/payline button listener module208is a software module for receiving a signal from the bet button, the denomination button, or the payline button which is generated by the button when a player operates the button to select number of bet, denomination, or number of paylines. In response to receiving the signal, the bet/denomination/payline button listener module208communicates the occurrence of the signal to application manager234for changing bet, denomination, or payline configuration of the game.

The start button listener module210is a software module for receiving a signal from the start button which is generated by the button when a player operates the button to start a game. In response to receiving the signal, the start button listener module210communicates the occurrence of the signal to application manager234for starting the game.

In response to receiving the signal from start button listener module210, the application manager234requests the sampling manager214to obtain necessary number of random numbers from the random number generator216.

The random number generator216generates random numbers based on predetermined algorithm of computational random generation method. The random number generator216may be a pseudorandom generator. In response to a request from sampling manager214, the random number generator216returns random number. In some implementations, the random number generator216may be implemented in a central server. The random number generator216may be implemented as an integrated circuit or hard wired logic.

The comparison manager218compares the current state of the game or each random number with the reel strip data files, the symbol selection data files, the reel stop position data file, the pay line set, and/or the paytable data file and specifies corresponding reel layout, stop position, prize symbol, or trigger symbol based on each random number.

The game result generator220generates game result based on selected reel layout, stop positions of each reel, and bonus features.

The win evaluator222evaluates the game result with reference to the pay table. \

The game presenter224provides game presentation process with visual and sound so as to form the predetermined game result finally.

The game graphics presenter226provides visual game presentation process on the display so as to form the predetermined game result finally.

The game sound presenter228provides sound presentation process by using sound controller and speakers.

The win indicator230indicates win combinations and payment condition of prize symbol formed in the game result.

The award provider232provides award credit to win meter based on the win evaluation.

The application manager234administrates activity and status of each software module. In addition, the application manager234administrates configuration, progress and states of the game application program200.

The external communicator236communicates instruction and data with the system application program206.

The credit balance manager module212executes a process for decrementing credit balance and incrementing credit balance based on win amount displayed in win meter.

In the illustrated embodiment, the system application program206provides background processing and functions other than game specific functions. The system application program206includes a plurality of software modules including a system manager238, a security manager240, a slot management module242, a denomination manager244, a data logger246, a communications manager248, a bill acceptor manager250, a metering module252, and a cashout manager254.

The system application program206may also include a game recall file256, accounting logs258, and meters260.

The system manager238is a software module for administrating all of the background processing and functions other than game specific functions conducted by the system application program206.

The security manager240is a software module for administrating game verification, door security and monitoring security sensors.

The slot management module242is a software module for administrating data accumulation and communicating with external slot information system62.

The denomination manager244is a software module for establishing denomination setting of the gaming machine10. The denomination setting may include 1 cent, 2 cent, 5 cent, 25 cent, 1 dollar, 5 dollar and the like.

The data logger246is a software module for logging result of each primary game and the free game bonus to the game recall. In addition, the data logger246stores error events, bill log, cashout log, ticket log etc. to the accounting log.

The game recall file256is an accumulated data including results of each primary game and free game bonus. The game recall file256is stored in a non-volatile memory.

The accounting logs258is an accumulated data including error events, bill log, cashout log, ticket log etc. The accounting logs258are stored in a non-volatile memory.

The communications manager248is a software module for administrating communication between game application program200and system application program206. The communications manager248also administrates network communication between system application program206and external network such as slot management system network, G2S network, gaming server for server based gaming network or VLT system network.

The bill acceptor manager250is a software module for administrating the bill acceptor and receives bill information inserted in the bill acceptor. In response to receiving the information from the bill acceptor, the bill acceptor manager250communicates with the metering for incrementing credit balance based on the inserted bill.

The metering module252is a software module for adjusting values of the meters260in response to communication with the game application program200via communications manager248, the bill acceptor manager250or the cashout manager254. The meters260includes a credit meter for indicating current credit balance on the gaming machine and a win meter for indicating win amount of current game session. The meters further include background meters such as coin-in, coin-out, total drop, attendant paid jackpots and/or bill-in. These meters might be implemented as data on the non-volatile memory or hardware meters.

The cashout manager254is a software module for administrating cashout procedure. In response to a player's operation on the cashout button, the cashout manager254is activated and the gaming machine pay total amount of the credit meter.

Referring toFIGS.9and10, in one embodiment, the present invention includes a networked server computer system300that is configured to deliver the game to one or more client computing devices302over the Internet. In the illustrated embodiment, the networked computer system300includes an iGaming server system304that is coupled in communication with one or more client computing devices302via a communications network306. The communications network306may be any suitable connection, including the Internet, an Intranet, LAN, a virtual private network (VPN), cellular networks, etc. . . . , and may utilize any suitable or combination of technologies including, but not limited to wired and wireless connections, always on connections, connections made periodically, and connections made as needed.

The client computing device302may include any suitable device that enables a user to access and communicate with the server system300including sending and/or receiving information to and from the server system300and displaying information received from the server system300to a user. In the illustrated embodiment, the client computing device302includes a processor coupled to a memory device. The memory device stores various programs and data that are executed by the processor for operating the client computing device302. The client computing device302also includes an input device configured to receive operational inputs from the user, and a display device configured to display a graphical user interface. The input device and display device enable a user to interact with the server system300via the client computing device302. For example, in one embodiment, the client computing device302may include, but is not limited to, a desktop computer, a laptop or notebook computer, a tablet computer, smartphone/tablet computer hybrid, a personal data assistant, a handheld mobile device including a cellular telephone, and the like. In one embodiment, the processor of the client computing device302may be programmed to function as the control unit22of the gaming machine10.

In the illustrated embodiment, the client computing device may include a web browser program stored in the memory device. The processor executes the web browser program to display web pages on the display device that includes information received from the server system300to enable a user to interact with and operate the server system300.

In one embodiment, the client computing device302includes a mobile computing device308(shown inFIG.10) such as, for example, a tablet computer, a smartphone/tablet computer hybrid, a smartphone such as an iPhone™, and the like. The mobile computing device308includes a processor coupled to a memory device for storing various programs and data for use in operating the mobile computing device308. The mobile computing device308may also include a display unit14including a touchscreen, one or more video image cameras, one or more speakers, a microphone, at least one input button, and one or more sensors including, but not limited to, a touch ID fingerprint sensor coupled to an input button, a barometer, a three-axis gyro, an accelerometer, proximity sensor, and an ambient light sensor. In addition, the mobile computing device308may also include a Wi-Fi antenna, a cellular network antenna, a Bluetooth™ communications device, assisted GPS and GLONASS, a digital compass, and an iBeacon™ microlocation device.

The mobile computing device308may be programmed to store and execute mobile computer program applications that display graphical user interfaces on the touchscreen display unit14including display area64that allows the user to access the server system300to retrieve and store information within the server system300as well as interact with and operate the server system300. In addition, in one embodiment, the server system300may install one or more mobile computer application programs in the memory device of the mobile computing device308. When initiated by the processor of the mobile computing device308, the mobile computer application program causes the processor of the mobile computing device308to perform some or all of the functions of the gaming machine10.

In the illustrated embodiment, the server system300includes one or more remote gaming servers310, one or more back-end servers312, one or more real money gaming website hosting servers314, and one or more social gaming website hosting servers316. In the illustrated embodiment, the social gaming website hosting server316and the real money gaming website hosting server314are programmed to host a website that is accessible by a user via one or more client computing devices302. The website hosting servers314and316execute a website application program that retrieves application code from the back-end server312and executes the application code to render one or more webpages on a display device of a client computing device302in response to requests received from the user via the client computing device302to allow users to interact with the website. The website hosting servers314and316are configured to generate and display webpages displaying a game. For example, the real money gaming website hosting server314is configured to host a real money wagering website that enables players to convert monetary funds to gaming credits that may be used to place wagers on the game. The social gaming website hosting server316is configured to host a social media and/or social gaming website that allows players to receive gaming credits for activities such as purchasing goods and/or services through an e-commerce website, and/or purchase gaming credits that may be used to play the game.

Each back-end server312is configured to perform operations to support the functions of the webpages and/or website being displayed by the website hosting servers314and316. For example, in one embodiment, the back-end servers312may include a player account system server that is configured to generate player accounts that include data associated with a player including, but not limited to, player identification information, player financial account information, player gaming credit account information, and/or any suitable player information, that may be used to establish credit meters and allow players to place wagers on the game.

Each remote gaming server310includes one or more copies of the game application program200stored in a memory device of the remote gaming server310. A processor of the remote gaming server310is programmed to retrieve and transmit the game application program200to one or more back-end servers312for use in displaying the game to the user via a webpage being displayed by the web browser program.

In one embodiment, the game application program200may include instructions for rendering the game and executing the game on the client computing device302. For example, the game application program200may include instructions for generating rendered code, such as, for example HTML code, which may be used by the web browser program of the client computing device302for displaying the game. For example, the game application program200may include program software code including, but not limited to, HTML, JavaScript, cascade style sheets (CSS), and any suitable programming code that may be used for rendering and operating the game via a website and/or mobile computer application.

In one embodiment, upon receiving a request from the website hosting servers314,316via the back-end server312, the remote gaming server310may execute the game application program200to operate the game and execute a render-to-string operation to generate rendered code indicative of the game, such as, for example HTML code, and transmit the rendered code to the back-end server312. The back-end server312may then transmit the rendered code to the corresponding website hosting servers314,316for use in displaying the game on the website. As the player plays the game, the remote gaming server310may execute the game application program200for each instance of the game, and transit rendered code to the back-end servers312.

In another embodiment, the remote gaming server310may transmit the game application program200to the back-end server312and/or the website hosting servers314,316. The back-end server312and/or the website hosting servers314,316may then execute the game application program200to initiate the instances of the game and execute render-to-string operations to generate rendered code indicative of the game.

In yet another embodiment, the back-end server312may receive a request to initiate the game from a mobile computing device308executing the mobile computer application program. Upon receiving the request, the back-end server312may access the game application program200and execute a render-to-string operation to generate rendered code indicative of the game and transmit the rendered code to the mobile computing device308. In one embodiment, the back-end server312may continuously execute the game application program200to generate each instance of the game using a random number generator of the back-end server312based on input received from the mobile computing device308and generate and transmit rendered code for each instance of the game to the mobile computing device308. In another embodiment, the back-end server312may execute a partial-render operation and generate partially-rendered code of the game using the game application program200and transmit the partially rendered code of the game and object data of game assets to the mobile computing device308. The partially rendered code includes instructions for generating rendered code using the game assets and a random number generator of the mobile computing device for generating and displaying the game on the mobile computing device308using the mobile computer application program.

In one embodiment, the game application program200may be stored on several different servers. The game code on these servers is used to distribute game content to social or real money gaming websites and mobile applications. The distribution method is very flexible. For example, the game code and/or game application program200including game code and game object assets may be stored on a remote gaming server310. One remote gaming server310may be connected to one or more back-end server312.

Each back-end server312is configured to distribute the games to one or more websites or mobile applications. Players connect to these websites/mobile applications with the client devices or mobile devices and have access to the game content. A copy of game application program200including game code and game object assets is stored on the remote gaming server310for each back-end server312that is connected to the remote gaming server310and that distributes the game. For example, if one remote gaming server310is connected to two back-end servers312, which is connected to three website hosting servers314,316that distribute the game, the remote gaming server310would store two copies of the game application program200including game code and game object assets for the game (e.g., one copy for each back-end server312).

For example, the server system300may be configured to implement the game on a mobile application such as, for example, “my KONAMI Slots™” mobile application available in Apple iOS™, Google Android™, and Amazon Kindle™ operating platforms, or on social-media websites such as the “my KONAMI Slots™” available on Facebook™. In one embodiment, the mobile application may download the game code from remote gaming server310via the real money gaming site314or the social gaming site316and execute the game code on the client computing device302. In this embodiment, the game code may provide game specific/front-end function when executed by the processor of the client computing device, and the back end system312may provide generic/back-end function.

FIG.14is a flow chart of method400illustrating the algorithms included in the game application program200and performed by the processor38when executing the game application program200for operating the gaming machine10and/or iGaming server system300to implement the game. The methods include a plurality of steps. Each method step may be performed independently of, or in combination with, other method steps. Portions of the methods may be performed by any one of, or any combination of, the components of the gaming machine10and/or iGaming server system300.

In the illustrated embodiment, the game application program200includes computer instructions for generating the primary game68and the bonus feature event. In general, the bonus feature event is executed when a triggering event is detected during the primary game68. In one embodiment, the primary game68includes a reel-type game that includes a plurality of virtual reels that spin and stop to display the outcomes of the primary game. In other embodiments, the primary game68may include a playing card game, a bingo game, a Keno game, and/or any suitable casino type wagering game.

In the illustrated embodiment, the control unit20is programmed to execute the algorithm illustrated in method400for executing the game and displaying the game on the display unit14. In method step402, the processor38of the control unit20generates the virtual reels70-78for use with an instance of the primary game68and displays the virtual reels70-78in the grid80.

In method step404, the processor38receives a signal to initiate an instance of the game66and generates the virtual reels70-78for use during the instance of the game66. For example, the processor38may receive a signal from the display unit14and/or the operation unit32indicating a player's request to initiate an instance or play of the game66. In one embodiment, the player may transmit a request to initiate an instance or play of game66by depressing a corresponding “spin” button on the operation unit32by touching a corresponding button icon being displayed on a touchscreen of the display unit14. Upon receiving a signal from the display unit14and/or the operation unit32, the processor38initiates the instance of the game66by generating the virtual reels70-78for use in the primary game68.

In method steps406-416, the processor38randomly determines an outcome of an instance of the primary game68and spins the virtual reels70to78and sequentially stops the virtual reels70to78to display the randomly generated outcome including a game symbol being displayed in each cell82of the grid80. For example, in one embodiment, the processor38starts spinning each virtual reel70to78, obtains random numbers from the random number generator, and determines a stop position of each virtual reel70to78based on the random numbers and the reel stop position data file108. In the illustrated embodiment the reel stop position data file108includes a range of random numbers associated with each symbol position in the sequence of symbol positions associated with the virtual reel. In one embodiment, the processor may obtain a random number for each simulate virtual reel70to78, i.e., five random numbers. The processor38then establishes a reel stop counter, “i”, and sets the reel stop counter, i, equal to 1. The processor38then identifies the ithvirtual reel strip associated with the stop counter, i, and stops the identified virtual reel strip to display the corresponding symbols in the corresponding cells82associated with the identified virtual reel strip. The processor38then increments the reel stop counter, i, by 1, i.e., i=i+1, and repeats the process of identifying the virtual reel strip associated with the incremented reel stop counter and stopping the identified virtual reel. This process continues until each virtual reel has been stopped. In this embodiment, for example, the virtual reels are numbered 1-5. In one embodiment, during the reel spin, the player may initiate the stopping of the reels by depressing the spin button, which enables the player to accelerate game play.

In method step418, the processor38determines whether a trigger condition has been detected in the outcome of the primary game68. If a trigger condition is detected during the primary game68, the processor38initiates the bonus feature event in method step420.

In method step422, upon completion of the primary game68and/or the bonus feature event, the processor38determines and provides any award associated with the outcome of the primary game68and/or the bonus feature event. For example, the processor38may determine whether any winning combination of symbols is displayed in the outcome of the instance of the primary game68and/or the bonus feature event provide an award by increasing a balance of the credit meter based on the amount of the award.

FIG.15is a flow chart of method500illustrating the algorithms included in the game application program200and performed by the processor38when executing the game application program200for operating the gaming machine10and/or iGaming server system300to implement the game. The methods include a plurality of steps. Each method step may be performed independently of, or in combination with, other method steps. Portions of the methods may be performed by any one of, or any combination of, the components of the gaming machine10and/or iGaming server system300.

In the illustrated embodiment, as shown inFIGS.15-22, the game application program200includes computer instructions for providing the Wheel Boost 7s™ slot game feature offered by Konami Gaming™ Inc. The Wheel Boost 7s™ slot game feature includes a bonus wheel112containing credit prizes, jackpot prizes and Free Games. A bonus wheel feature114is triggered by collecting a predefined number of bonus wheel symbols116in a bonus wheel meter118. Bonus wheel symbols116appear on the reels70-78randomly. Bonus wheel symbols116may also appear on the bonus wheel112. Thus, during the bonus wheel feature114the player can start collecting towards the next Bonus Wheel Feature (and this will reduce zero persistence states that make walking away easy). Bonus wheel symbols116appearing on the bonus wheel112may also have credit prizes awarded.

Bonus wheel upgrade symbols120also appear on the reels70-78randomly. When a bonus wheel upgrade symbol120lands on the reels70-78, the bonus wheel upgrade symbol120upgrades one of the prizes on the bonus wheel112. The bonus wheel wedge that is upgraded is randomly chosen. The upgrade amount may be fixed to schedule (Ex: 1×, 2×, 3×, etc.), or may be randomly selected. The upgrade can happen to any of the prizes on the bonus wheel. For example, the upgrade will increase the value of credit prizes and jackpot prizes, while increasing the number of Free Games on Free Games prize. The Upgraded Prize will have a visual change to easily convey that it has been upgraded. Upgraded Prizes will remain upgraded until they are awarded. Prizes can be upgraded more than once.

Extra wheel spin symbols122also appear on the reels70-78randomly. Extra wheel spin symbols122will increase the number of bonus wheel spins by 1. The number of extra wheel spins will be applied when the Bonus wheel feature114is triggered. In some embodiments, up to 5 wheel-spins may be awarded during the bonus wheel feature114.

The processor38may be programmed to provide a free game feature. For example, the appearance of the bonus wheel upgrade symbol120on the reels70-78may increase the number of free games, e.g., free reel spins. More coins may appear in free games.

As shown inFIGS.15-22, in method step502, the processor38displays the game66on the game screen64including a plurality of reels70,72,74,76,78displaying a plurality of game symbols84, The reels70-78are displayed in the grid80including a plurality of cells82arranged in a plurality of rows (r) and a plurality of columns (c). In some embodiment, the game66may include 5 reels with each reel being displayed in a corresponding column (c). The processor38also displays a bonus wheel112on the game screen64positioned above the plurality of reels70-78. The bonus wheel112includes a plurality of wheel wedges124displaying a plurality of prize symbols126and a prize selector128. During the bonus wheel feature114, the processor38may spin and stop the bonus wheel112to display a prize symbol126adjacent to the prize selector128and award the corresponding prize symbol126to the player (e.g., increase the credit meter based on the prize symbol126displayed adjacent to the prize selector128when the bonus wheel112is stopped).

In the illustrated embodiment, the processor38also displays a bonus wheel meter118on the game screen64. The bonus wheel meter118includes a number of bonus wheel symbols116that are collected during spins of the reels70-78. The processor38may initiate the bonus wheel feature114when a predefined number of bonus wheel symbols116have been collected in the bonus wheel meter118. For example, the processor38may require five bonus wheel symbols116to be collected in the bonus wheel meter118before the bonus wheel feature114is triggered and initiated. The processor38may also be programed to display the bonus wheel meter118above the reels70-78and to include a collection of bonus wheel symbols116to allow the player to easily recognize the bonus wheel meter118and to identify the number of number of bonus wheel symbols116currently included in the bonus wheel meter118.

The processor38may also be programmed to display an extra wheel spin meter130on the game screen64. The extra wheel spin meter130indicates a number of extra wheel spins of the bonus wheel112that will be implemented by the processor38during the bonus wheel feature114. In the illustrated embodiment, the extra wheel spin meter130is displayed above the bonus wheel meter118and includes a collection of the extra wheel spin symbol122to allow the player to easily recognize the number of extra wheel spins of the bonus wheel112that will be awarded to the player if the bonus wheel feature114is triggered.

In method step504, the processor38spins and stops the reels70-78to display an instance of the game66. For example, in one embodiment, the processor38may access the reel strip data files88to generate each virtual reel70to78, prior to initiating a spin of the reels70-78to display an instance of the game66. The processor38may identify each variable symbol position105appearing in the reel strips94-102and access a variable symbol reel strip data file132(shown inFIG.16) for use in selecting a symbol to display in each variable symbol position105. For example, the variable symbol reel strip data file132may include a plurality of special wheel symbols134and selection weight associated with each special wheel symbol134. Each special wheel symbol134is associated with instructions that cause the processor38to initiate a feature event that is associated with the bonus wheel feature114. For example, in the illustrated embodiment, the plurality of special wheel symbols134includes a bonus wheel symbol116, a bonus wheel upgrade symbol120, and an extra wheel spin symbol122. The appearance of the bonus wheel symbol116on the reels70-78in an outcome of the game66causes the processor38to increase the number of bonus wheel symbols116that are collected and displayed in the bonus wheel meter118.

The appearance of the bonus wheel upgrade symbol120on the reels70-78in an outcome of the game66causes the processor38to randomly select a wheel wedge124displayed on the bonus wheel112and upgrade a corresponding prize symbol126displayed with the selected wheel wedge124. Upon detecting the appearance of the bonus wheel upgrade symbol120, the processor38may also increase the number of bonus wheel symbols116that are collected and displayed in the bonus wheel meter118.

The appearance of the extra wheel spin symbol122on the reels70-78in an outcome of the game66causes the processor38to increase the number of extra wheel spins indicated by the extra wheel spin meter130. Upon detecting the appearance of the extra wheel spin symbol122, the processor38may also increase the number of bonus wheel symbols116that are collected and displayed in the bonus wheel meter118.

By using the variable symbol reel strip data file132to randomly select special wheel symbols134to populate the variable symbol positions105appearing in the reel strips94-102, the processor38is able to vary the type special wheel symbols134(e.g., the bonus wheel symbol116, the bonus wheel upgrade symbol120, and the extra wheel spin symbol122) appearing in the reels70-78for each instance of the game66, and to vary the amount of bonus wheel symbols116, bonus wheel upgrade symbols120, and extra wheel spin symbols122that appear in the reels70-78.

Once the reels70-78have been generated, the processor38then initiates an instance of the game66by animating the reels70-78on the game screen64to simulate the reels70-78spinning and stopping.

In method step506, upon stopping the reels70-78, the processor38determines whether one or more bonus wheel symbols116appear in the reels70-78with the reels70-78stopped. Upon detecting an appearance of one or more bonus wheel symbols116appearing in the reels70-78with the reels70-78stopped, the processor38executes method step508to increase the number of bonus wheel symbols116included in the bonus wheel meter118based on the detected bonus wheel symbols116. As shown inFIG.19, for each bonus wheel symbol116appearing in the reels70-78, the processor38animates a copy of the bonus wheel symbol116appearing in the reels70-78to move onto the bonus wheel meter118to increase the number of bonus wheel symbols116collected in the bonus wheel meter118. If multiple bonus wheel symbols116appear in the reels70-78with the reels70-78stopped, the processor38will animate a copy of each of the bonus wheel symbols116to move from the reels70-78onto the bonus wheel meter118in a sequential order.

The processor38then initiates method step510to determine whether one or more bonus wheel upgrade symbols120appear in the reels70-78with the reels70-78stopped. Upon detecting an appearance of one or more bonus wheel upgrade symbols120appearing in the reels70-78with the reels70-78stopped, the processor executes method step512to upgrade a prize symbol126appearing on the bonus wheel112. For example, the processor38randomly selects a wheel wedge124displayed on the bonus wheel112and upgrades a corresponding prize symbol126displayed with the selected wheel wedge124. In some embodiment, the processor38may access a bonus wheel data file136(shown inFIG.17) that includes instructions associated with generating prize symbols126being displayed on the bonus wheel112. For example, the bonus wheel data file136may include instructions associated with each wheel wedge124including a wheel wedge ID and a selection weight associated with each wheel wedge. The bonus wheel data file136may also include instructions for displaying an initial prize symbol126for each wheel wedge124. When upgrading the bonus wheel112the processor38may access the bonus wheel data file136and randomly select a wheel wedge124based on the corresponding selection weights and upgrade the prize symbol126currently displayed in the randomly selected wheel wedge124. In one embodiment, the processor38may upgrade the current prize symbol126by a based on a fixed schedule (e.g., 1×, 2×, 3× multiplier, etc.). In other embodiments, the processor38may randomly select an upgrade such as, for example, a credit prize multiplier, progressive prize upgrade, and/or upgrade the wheel wedge to include special wheel symbols134(e.g., the bonus wheel symbol116, the bonus wheel upgrade symbol120, and the extra wheel spin symbol122).

Upon detecting an appearance of one or more bonus wheel upgrade symbols120appearing in the reels70-78, the processor38also executes method step514to increases the number of bonus wheel symbols116included in the bonus wheel meter118based on the detected bonus wheel upgrade symbol120. For example, if two bonus wheel upgrade symbols120appear in the reels70-78, the processor38will select two wheel wedges124to be upgraded and adds two bonus wheel symbols116to the bonus wheel meter118. As shown inFIGS.20-21, for each bonus wheel upgrade symbol120appearing in the reels70-78, the processor38animates a copy of the bonus wheel upgrade symbol120appearing in the reels70-78to move onto the bonus wheel meter118to increase the number of bonus wheel symbols116collected in the bonus wheel meter118and animates an upgrade symbol (e.g., a copy of the bonus wheel upgrade symbol120shown inFIG.20, or a “rocket” symbol shown inFIG.21) to move onto the randomly selected wheel wedge124to upgrade the prize symbol126displayed in selected wheel wedge124.

The processor38then initiates method step516to determine whether one or more extra wheel spin symbols122appear in the reels70-78with the reels70-78stopped. Upon detecting an appearance of one or more extra wheel spin symbols122appearing in the reels70-78with the reels70-78stopped, the processor38initiates method step518to increase the number of extra wheel spins indicated by the extra wheel spin meter130based on the detected extra wheel spin symbol122and initiates method step520to increase the number of bonus wheel symbols116included in the bonus wheel meter118based on the detected extra wheel spin symbol122. As shown inFIG.22, for each extra wheel spin symbols122appearing in the reels70-78, the processor38animates copies of the extra wheel spin symbol122to the bonus wheel meter118and to the extra wheel spin meter130. For example, the processor38animates a copy of the extra wheel spin symbol122appearing in the reels70-78to move onto the extra wheel spin meter130to increases the number of extra wheel spins indicated by the extra wheel spin meter130and animates a copy of the extra wheel spin symbol122appearing in the reels70-78to move onto the bonus wheel meter118to increase the number of bonus wheel symbols116collected in the bonus wheel meter118. If multiple extra wheel spin symbols122appear in the reels70-78with the reels70-78stopped, the processor38will animate a copy of each of the extra wheel spin symbols122to move from the reels70-78onto the extra wheel spin meter130and the bonus wheel meter118in a sequential order.

In method step522, processor38determines whether to initiate the bonus wheel feature114. For example, the processor38may be programmed to initiate the bonus wheel feature114including a spin of the bonus wheel112upon determining that the increased number of bonus wheel symbols116included in the bonus wheel meter118is equal to a predefined number of bonus wheel symbols116. For example, the processor38may initiate the bonus wheel feature114when five bonus wheel symbols116have been collected in the bonus wheel meter118.

When initiating the bonus wheel feature114, the processor38executes method step524and determines a number of extra wheel spins indicated by the extra wheel spin meter130. The processor38then initiates an initial spin of the bonus wheel112to display an initial prize symbol126adjacent the prize selector128and initiates a number of additional spins of the bonus wheel112based on the number of extra wheel spins indicated by the extra wheel spin meter130. Each additional spin of the bonus wheel112displays an additional prize symbol126adjacent the prize selector128that is awarded to the player. For example, if the extra wheel spin meter130indicates three extra spins are to be provided (shown as “+3 extra spins” inFIG.22), when the processor38initiates the initiating the bonus wheel feature114, the processor38will provide4spins (1 initial spin and 3 extra spins) of the bonus wheel112and award the player a prize symbol126for each of the4spins.

The processor38may also reset the bonus wheel meter118to include an initial number of bonus wheel symbols116upon initiating the bonus wheel feature114. The initial number of bonus wheel symbols116may include a minimum amount of bonus wheel symbols116or no amount of bonus wheel symbols116(e.g., zero bonus wheel symbols116). In some embodiments, the processor38may display the bonus wheel112with a wheel wedge124displaying another bonus wheel symbol116. The processor38may then initiate a spin of the bonus wheel112and increase the number of bonus wheel symbols116included in the bonus wheel meter118upon detecting an appearance of the another bonus wheel symbol116adjacent the prize selector128with the bonus wheel112stopped.

In some embodiments, if an upgraded prize symbol126has been selected by the bonus wheel112(i.e., an upgraded prize symbol126appears adjacent the prize selector128with the bonus wheel112stopped) the processor38may reset corresponding wheel wedge124to display an initial prize symbol126. For example, during the bonus wheel feature114, if an upgraded prize symbol126appears adjacent the prize selector128and is awarded to the player, the processor38may access the bonus wheel data file136to retrieve instructions for displaying an initial prize symbol126for the corresponding wheel wedge124and animate the corresponding wheel wedge124to display the corresponding initiate prize symbol126indicated by the bonus wheel data file136.

The bonus wheel feature114is triggered by collecting a predefined number of bonus wheel symbols116in a bonus wheel meter118. Bonus wheel symbols116appear on the reels70-78randomly. Bonus wheel symbols116may also appear on the bonus wheel112. Thus, during the bonus wheel feature114, the player can start collecting towards the next Bonus Wheel Feature. In this way, the processor38reduces zero persistence states for the Bonus Wheel Feature and increases the players interest in the game.

Exemplary embodiments of a gaming device, a gaming system, and a method of providing an award to a player are described above in detail. The gaming device, system, and method are not limited to the specific embodiments described herein, but rather, components of the gaming device and/or system and/or steps of the method may be utilized independently and separately from other components and/or steps described herein. For example, the gaming device may also be used in combination with other gaming systems and methods and is not limited to practice with only the gaming device as described herein. Rather, an exemplary embodiment can be implemented and utilized in connection with many other gaming system applications.

A controller, computing device, or computer, such as described herein, includes at least one or more processors or processing units and a system memory. The controller typically also includes at least some form of computer readable media. By way of example and not limitation, computer readable media may include computer storage media and communication media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology that enables storage of information, such as computer readable instructions, data structures, program modules, or other data. Communication media typically embody 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 include any information delivery media. Those skilled in the art should be familiar with the modulated data signal, which has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Combinations of any of the above are also included within the scope of computer readable media.

The order of execution or performance of the operations in the embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations described herein may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention.

In some embodiments, a processor, as described herein, includes any programmable system including systems and microcontrollers, reduced instruction set circuits (RISC), application specific integrated circuits (ASIC), programmable logic circuits (PLC), and any other circuit or processor capable of executing the functions described herein. The above examples are exemplary only, and thus are not intended to limit in any way the definition and/or meaning of the term processor.

This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to practice the invention, including making and using any devices or systems and performing any incorporated methods. The patentable scope of the invention is defined by the claims, and may include other examples that occur to those skilled in the art. Other aspects and features of the present invention can be obtained from a study of the drawings, the disclosure, and the appended claims. The invention may be practiced otherwise than as specifically described within the scope of the appended claims. It should also be noted that the steps and/or functions listed within the appended claims, notwithstanding the order of which steps and/or functions are listed therein, are not limited to any specific order of operation.

Although specific features of various embodiments of the invention may be shown in some drawings and not in others, this is for convenience only. In accordance with the principles of the invention, any feature of a drawing may be referenced and/or claimed in combination with any feature of any other drawing.