Many of today's gaming casinos and other entertainment locations feature different single and multi-player gaming systems such as slot machines and video poker machines. The gaming machines may include a number of hardware and software components to provide a wide variety of game types and game playing capabilities. Exemplary hardware components may include bill validators, coin acceptors, card readers, keypads, buttons, levers, touch screens, coin hoppers, ticket printers, player tracking units and the like. Software components may include, for example, boot and initialization routines, various game play programs and subroutines, credit and payout routines, image and audio generation programs, various component modules and a random or pseudo-random number generator, among others.
Gaming machines are highly regulated to ensure fairness. In many cases, gaming machines may be operable to dispense monetary awards of a large amount of money. Accordingly, access to gaming machines is often carefully controlled. For example, in some jurisdictions, routine maintenance requires that extra personal (e.g., gaming control personal) be notified in advance and be in attendance during such maintenance. Additionally, gaming machines may have hardware and software architectures that differ significantly from those of general-purpose computers (PCs), even though both gaming machines and PCs employ microprocessors to control a variety of devices. For example, gaming machines may have more stringent security requirements and fault tolerance requirements. Additionally, gaming machines generally operate in harsher environments as compared with PCs.
In many casinos and other entertainment locations, the gaming machines may be networked to one or more devices that monitor the functions of the gaming machines during operation. For example, a system may monitor and regulate the amount of money received by a gaming machine and the amount of money paid out by the gaming machine. The system may also monitor and regulate multi-player gaming, pooling of player wagers, etc. on the gaming machine. For example, networking and/or control software may be used to regulate game performance across all players, such as graphics that allows each player to participate in the same scene in the game. Networking and/or control software may be used to unify separate gaming machines such that the multi-player gaming may appear as one game to the system. Networking may also allow two or more gaming machines to be combined under the same model, which allows several players to play the same game, while at different gaming machines.
According to various example embodiments, a method for providing a wagering agent at a gaming machine is disclosed. The method includes receiving, a plurality of times, player input to play a first wagering game on the gaming machine, wherein the player input comprises receiving a wager. The method further includes generating, each time the player input is received, game results for the first wagering game, the first wagering game being initiated when the player input is received. The method also includes generating game results for a second wagering game, the second wagering game being initiated based on credits allocated to game play for the second wagering game, the credits being allocated as a result of game play of the first wagering game. The method includes presenting an animation of the wagering agent engaging in wagering activities, wherein the animation of the wagering activities of the wagering agent depicts the game results of the second wagering game.
According to one example embodiment, a controller for a gaming machine is disclosed. The controller includes a processor configured to receive, a plurality of times, player input to play a first wagering game on the gaming machine, wherein the player input comprises receiving a wager. The processor further configured to generate, each time the player input is received, game results for the first wagering game, the first wagering game being initiated when the player input is received. The processor also configured to generate game results for a second wagering game, the second wagering game being initiated based on credits allocated to game play for the second wagering game, the credits being allocated as a result of game play of the first wagering game. The processor also configured to present an animation of the wagering agent engaging in wagering activities, wherein the animation of the wagering activities of the wagering agent depicts the game results of the second wagering game.
According to another example embodiment, a computer-readable storage medium is disclosed. The storage medium has machine instructions stored therein, the instructions being executable by a processor to cause the processor to perform operations. The operations include receiving, a plurality of times, player input to play a first wagering game on the gaming machine, wherein the player input comprises receiving a wager. The operations also include generating, each time the player input is received, game results for the first wagering game, the first wagering game being initiated when the player input is received. The operations further include generating game results for a second wagering game, the second wagering game being initiated based on credits allocated to game play for the second wagering game, the credits being allocated as a result of game play of the first wagering game. The operations also include presenting an animation of the wagering agent engaging in wagering activities, wherein the animation of the wagering activities of the wagering agent depicts the game results of the second wagering game.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the disclosure will become apparent from the descriptions, the drawings, and the claims, in which:
Numerous specific details may be set forth below to provide a thorough understanding of concepts underlying the described embodiments. It may be apparent, however, to one skilled in the art that the described embodiments may be practiced without some or all of these specific details. In other instances, some process steps have not been described in detail in order to avoid unnecessarily obscuring the underlying concept.
Referring to
Gaming machine 102 may include any number of user interface devices that convey sensory information to a user and/or receive input from the user. For example, gaming machine 102 may include a first electronic display 110, a second electronic display 122, speakers 126, and/or a candle device 112 to convey information to the user of gaming machine 102. Gaming machine 102 may also include a console 124 having one or more inputs 134 (e.g., buttons, track pads, etc.) configured to receive input from a user. A controller (not shown) within gaming machine 102 may run a game, such as a wager-based game, in response to receiving input from a user via inputs 134 or displays 110, 122. For example, inputs 134 may be operated to place a wager in the game and to run the game. In response, the controller may cause reels shown on display 122 to spin, such as with a slot game, and/or display 110 to display the results of the game.
Gaming machine 102 may also include devices for conducting a wager-based game. For example, gaming machine 102 may include a ticket acceptor 116 and a printer 120. In various embodiments, gaming machine 102 may be configured to run on credits that may be redeemed for money and/or other forms of prizes. Ticket acceptor 116 may read an inserted ticket having one or more credits usable to play a game on gaming machine 102. For example, a player of gaming machine 102 may wager one or more credits within a video slot game. If the player loses, the wagered amount may be deducted from the player's remaining balance on gaming machine 102. However, if the player wins, the player's balance may be increased by the amount won. Any remaining credit balance on gaming machine 102 may be converted into a ticket via printer 120. For example, a player of gaming machine 102 may cash out of the machine by selecting to print a ticket via printer 120. The ticket may then be used to play other gaming machines or redeemed for cash and/or prizes. According to various embodiments, gaming machine 102 may record data regarding its receipt and/or disbursement of credits. For example, gaming machine 102 may generate accounting data whenever a result of a wager-based game is determined. In some embodiments, gaming machine 102 may provide accounting data to a remote data collection device, allowing the remote monitoring of gaming machine 102.
In one embodiment, gaming machine 102 may include a loyalty card acceptor 130. In general, a loyalty card may be tied to a user's loyalty account. A loyalty account may store various information about the user, such as the user's identity, the user's gaming preferences, the user's gaming habits (e.g., which games the user plays, how long the user plays, etc.), or similar information about the user. A loyalty account may also be used to reward a user for playing gaming machine 102. For example, a user having a loyalty account may be given a bonus turn on gaming machine 102 or credited loyalty points for playing gaming machine 102. Such loyalty points may be exchanged for loyalty rewards (e.g., a free meal, a free hotel stay, a free room upgrade, discounts, etc.).
Referring now to
Network 206 may be any form of communications network that conveys data between gaming machines 102, 204 and repository 208. Network 206 may include any number wired or wireless connections. For example, repository 208 may communicate over a wired connection that includes a serial cable, a fiber optic cable, a CAT5 cable, or any other form of wired connection. Similarly, repository 208 may communicate via a wireless connection (e.g., via WiFi, cellular, radio, etc.). Network 206 may also include any number of intermediary networking devices, such as routers, switches, servers, etc.
Repository 208 may be one or more electronic devices connected to network 206 configured to collect data from gaming machines 102, 204. For example, repository 208 may be a single computer, a collection of computers, or a data center. Repository 208 may include one or more data storage devices in communication with one or more processors. The data storage devices may store machine instructions that, when executed by the one or more processors, cause the one or more processors to perform the functions described with regard to repository 208. Generally, repository 208 is configured to receive and store data regarding gaming machines 102, 204 and to provide the data to a user interface (e.g., a display, a handheld device, etc.). In some cases, repository 208 may perform data analysis on the received data. For example, repository 208 may determine averages, trends, metrics, etc., for one or more of gaming machines 102, 204. Data may be sent by gaming machines 102, 204 to repository 208 in real-time (e.g., whenever a change in credits or cash occurs, whenever another type of system event occurs, etc.), periodically (e.g., every fifteen minutes, every hour, etc.), or in response to a request from repository 208.
The data received by repository 208 may include operational data. In general, operational data may be any other form of data indicative of the operational state of gaming machines 102, 204. For example, operational data may include data indicative of the number of games played on gaming machines 102, 204, the types of games played on gaming machines 102, 204, errors or alerts generated by gaming machines 102, 204, whether gaming machines 102, 204 are currently in use, etc. Repository 208 may use the received operational data to allow gaming machines 102, 204 to be monitored. Repository 208 may also provide notifications, if maintenance is required for any of gaming machines 102, 204. For example, a notification may be sent to a display (e.g., a display attached to repository 208, a display of a handheld device operated by a technician, etc.), so that an error may be corrected.
In some embodiments, the data received by repository 208 may include data related to a user's loyalty account. For example, a user of gaming machine 102 may link their loyalty account to gaming machine 102, so that she can gain loyalty points, free turns, etc., while playing gaming machine 102. A user may link his or her loyalty account to gaming machine 102 in any number of ways. For example, the user may insert a loyalty card into gaming machine 102 and/or provide biometric data to gaming machine 102 (e.g., by conducting a finger print scan, a retinal scan, etc.). In some cases, a mobile device operated by the user may provide data regarding the user's loyalty account to gaming machine 102. The mobile device may transfer data to gaming machine 102 wirelessly (e.g., via Bluetooth, WiFi, etc.), via a wired connection (e.g., via a USB cable, a docking station, etc.), via the user's body (i.e., the mobile device transmits data through the user's body and into gaming machine 102), or in another manner. Repository 208 may then associate the user's time playing gaming machine 102 with the user's loyalty account (e.g., to add loyalty points to the user's account, to provide certain rewards to the user, such as a bonus turn, etc.).
Repository 208 may provide data to gaming machines 102, 204 via network 206. For example, repository 208 may notify a user of gaming machine 102 that the user qualifies for a loyalty award, such as a free meal, a free night in a hotel, a discount, a bonus turn, and so on. In some cases, repository 208 may provide a service window to gaming machines 102, 204. For example, the service window may appear within a Flash application executed by gaming machines 102, 204 via the lower display of the machines. A service window may allow notifications to be provided by repository 208 to an individual user during game play.
The process of
At 308, the player may play the primary wagering game on the gaming machine, which may include providing a wager. For example, the player may pull an arm or push a button on the gaming machine, causing a wagering event to occur (e.g., a spinning of slot machine reels). In an example embodiment, funding for the wagering agent is provided via wagering of the player on the gaming machine. For example, the player may use a percentage of their credits, money, etc., such that the more the player bets on the game, the more likely the player is rewarded by the customizable wagering agent. In an example embodiment, a percentage of the player's base wagers are used as deferred wagers. For example, if a player provides a wager of $1.00, then $0.05 may be designated as deferred wagers. The deferred wagers may be represented to the player via the wagering agent.
At 310, the primary wagering credits may be updated. For example, the gaming machine 102 may alert the player as to how many credits the player has remaining to play the game on the gaming machine. In another example, the primary wagering credits may be updated based on the wagering agent and its ability to retrieve additional credits, items, awards, i.e., a secondary wagering event.
At 312, a secondary wagering event may take place. For example, the wagering agent may retrieve credits, items, awards, etc. at intervals of time. In some implementations, wagering agent may overlay the gaming screen using flash technology or the wagering agent may appear in a service window. In some implementations, the retrieval of the item, credit, award, etc. may be performed off-screen. In some implementations, the intervals of time may be determined based on when sufficient credits have been accumulated for the secondary wagering event to occur. In other implementations, the intervals of time may also be predetermined, such as every 5 minutes, assuming the player has sufficient credits. For example, in a dog-themed game, the player's customizable wagering agent, a dog, may retrieve an item every 5 minutes. The item may be a credit, an award, etc. that may be applied to the player's credits on the gaming machine. The deferred wagers may be represented to the player through the pet trying to retrieve items, awards, credits, etc. For example, in a “Golden Retriever” themed game, the player's animated dog may run offscreen and return with a mystery item. If the dog returns with an old boot or fish bones, then the player receives nothing. If the dog returns with gold coins, then the player is awarded credits on the gaming machine, as part of 310.
At 314, the secondary wagering credits may be updated and displayed to the player. For example, a meter may be displayed to represent the player's level of secondary wagering credits. For example, in the pet-themed game, the wagering agent may have a “happiness” meter. In the casino, wagers placed by the player may purchase secondary wagering credits for the wagering agent, which is displayed on-screen and may ensure that the meter remains above a threshold. That is, the player increases the pet's happiness by betting. In some implementations, the wagering agent will only perform actions for the player, such as making wagers, when the happiness meter exceeds a threshold.
Future wagering equity, such as deferred wagers, may be accumulated and displayed to the player by way of the happiness meter. For example, the player may need to increase the level of secondary wagering credits before placing a wager, such as, e.g., increasing the “happiness” of the wagering agent. If the meter does not exceed a threshold, e.g., “wagering equity” is not reached, prior to an interval of time, then the wagering agent will not retrieve an item, credit, award, etc. In some implementations, the player is encouraged to wager to increase the likability, attractiveness, etc. of their wagering agent. The player may also earn items for the wagering agent by reaching the base game wagering threshold.
At 316, 318, the player may continue playing the game on the gaming machine by providing a wagering event at 308, 312. The player may also determine to cash out at 320, 322. If the player attempts to cash out while the wagering agent includes deferred wagers, then a forced wager event may occur to clear out the equity, e.g., the wagering agent may retrieve one last item, credit, reward, etc. before the cash out is processed. In some implementations, there may be unclaimed revenue when the player cashes out. The unclaimed revenue (awards, items, etc.) may be used to increase the enjoyment of future games. In this example, the player's wagering agent may engage in another wagering event to determine an award and determine if previously unclaimed funds are available. If unclaimed funds are available, then a supplementary award may be determined. The standard award may be added to the supplementary award and provided to the player through a single payout during one of the wagering agent's retrieval missions.
At 324, the player finishes playing gaming machine 102 that provides the primary wagering event. For example, the player may leave the gaming machine or the casino. In some implementations, the secondary wagering game may also be ended at 326. However, in other implementations, the secondary wagering game may be continued outside of a casino by the wagering agent.
As discussed above, if a player attempts to cash out of a gaming machine while the wagering agent has equity, then the results of the deferred wager events (e.g., the retrieval of items, awards, rewards, etc. by the wagering agent) may be provided on website 400 or as a link on website 400. In some implementations, the deferred wager events may be provided to a mobile computing device, a social networking website, etc. The player may retrieve the award at a participating casino to collect the award. In some implementations, the deferred award may be awarded as cashable credits to the player's loyalty account. If the award remains unclaimed after an interval of time, then it may be rolled back into an award either in the game on website 400 or the game on the gaming machine.
Once the player exits an environment that houses the gaming machine, the intervals between wagering events may be extended. For example, if the wagering event occurs every 5 minutes during the game on the gaming machine, the interval may be extended to every 2 hours once the player has left the casino. For example, at intervals of 2 hours, the player may receive text messages on the player's mobile device advising that the animated pet went on a mission and advising whether the animated pet retrieved valuable items. This may have the effect of reminding the player of the positive gaming experience in the casino and provide incentive to the player to return to the casino to retrieve the award.
Website 400 may also include a link to related games or contests. The player may enter their wagering agent into an online contest, which may require an additional fee. In some implementations, the contest provides cash awards that may be applied to the gaming machine. For example, the player may enter their wagering agent into a race for a wager and, if the wagering agent wins, the player may redeem the win for actual cash. The online contest may include player vs. gaming manufacturer, player vs. other players, etc.
The pet's happiness meter may persist outside of the location of the gaming machine (e.g., casino). In some implementations, the player may ensure the meter exceeds the threshold by, e.g., purchasing items for the wagering agent as micro-transactions online, purchasing other items from the game manufacturer, etc. For example, the player may purchase dog food for the player's pet to ensure the pet's happiness. The purchases, including the micro-transactions, may provide value to the player by allowing the player to increase levels in the game, wager in the game, etc. Players may use the pets to participate in a variety of “play for fun” games and other online activities, which may earn the ability to further customize their pets as well as win vanity items for their pets.
The wagering agent along with the items, rewards, credits, etc. may be meta-tagged with an identifier of the casino, such that the wagering agent, items, etc. become property of the casino so that revenue (e.g., cash-outs, rewards, credits, pay-outs, etc.) may be linked to that property for accounting purposes. In some implementations, casinos and/or game manufacturers may split revenue. For example, if a wagering agent is created, built, etc. at Casino A and receives items, etc. via a micro-transaction, then Casino A may share the resulting revenue with another casino, game manufacturer, etc.
The wagers may include standalone wagering events, in which a collected wager amount is wagered against a fixed pay table, machine, etc. In another implementation, the wagers may be provided at all participating games/machines that may be linked together. A percentage of coin-in from all of the participating games/machines may be pooled so that players may receive a percentage of the pool's funds each time the wagering agent retrieves an item off-screen (based on a random number generator event).
Referring now to
Process 500 includes receiving player input to play a first wagering game (e.g., a slot machine game) on a gaming machine at 502. The player input may be received a plurality of times. For example, a player playing a slot machine may pull a mechanical arm of the slot machine a plurality of times. The player input may include a wager. For example, for a dollar slot machine, each pull of the mechanical arm may have an associated one dollar wager. In some implementations, the player input may be received by an interface on the gaming machine, e.g., mechanical arm, touch screen, display, etc. The interface may show representations of various images to the player and may receive input from the user. For example, the interface may include a touch screen display, so that the player may press the images to interact with them on the display. In some implementations, input to the interface may be provided using a trackball, mouse, keyboard, mechanical arm, etc.
Process 500 includes generating game results for the first wagering game (block 504). The game results may be generated each time a player input is received. For example, when the player pulls the mechanical arm on a slot machine, this may initiate spinning of the reels. The gaming machine may generate and display results (e.g., a particular combination of reel positions.)
Process 500 includes generating game results for a second wagering game (block 506). The second wagering game may be initiated based on credits allocated to game play for the second wagering game. The credits may be allocated as a results of game play of the first wagering game. For example, for a dollar slot machine, five cents of every dollar may be allocated for use by the wagering agent every time the mechanical arm is pulled. Process 500 may also include allocating a first portion of the wager to the first wagering game and a second portion of the wager to the second wagering game. The allocation may take place each time the player input is received. This method may also include accumulating gaming credits for the second wagering game.
Process 500 also includes presenting an animation of the wagering agent engaging in wagering activities. (block 508). The animation of the wagering activities of the wagering agent depicts the game results of the second wagering game. For example, for a wagering agent that is a golden retriever, the golden retriever may bring back a pot of gold (win) or fish bones and dirty sneakers (loss).
Implementations of the subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on one or more computer storage medium for execution by, or to control the operation of, data processing agent. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver agent for execution by a data processing agent. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). Accordingly, the computer storage medium may be tangible and non-transitory.
The operations described in this specification can be implemented as operations performed by a data processing agent on data stored on one or more computer-readable storage devices or received from other sources.
The term “client or “server” include all kinds of agent, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The agent can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The agent can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The agent and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and agent can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display), OLED (organic light emitting diode), TFT (thin-film transistor), plasma, other flexible configuration, or any other monitor for displaying information to the user and a keyboard, a pointing device, e.g., a mouse, trackball, etc., or a touch screen, touch pad, etc., by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking or parallel processing may be utilized.