U.S. Pat. No. 9,669,291
SYSTEM AND METHOD TO FACILITATE MOVES IN A WORD GAME
AssigneeZynga, Inc.
Issue DateMay 3, 2012
U.S. Patent No. 9,669,291: System and method to facilitate moves in a word game
U.S. Patent No. 9,669,291: System and method to facilitate moves in a word game
Issued June 6, 2017, to Zynga, Inc.
Priority Date May 31, 2011
Summary:
U.S. Patent No. 9,669,291 describes a system and method for distributing letters in a digital scrabble game. In an analog Scrabble game, a player has to rely on luck when pulling their letters, compared to a digital game where a computer algorithm is selecting the pieces. Each letter has a probability rate based on the number of pieces that letter has in the physical board game. Once probability rates are established, the game then analyzes the digital game board, list of playable words, player skill levels, and relationships of particular letters in word formations. From there, the game adjusts the probability rates of the remaining letters. Changing the rates helps balance the competition between players of different skill levels and ensure that a player can play a word in most situations.
Abstract:
A system and method to facilitate moves in a word game includes a game asset distribution module that adjusts the respective distribution weights of letters in a set of alphabet letters. The letters are distributed to players in a word game with a probability proportional to the distribution weights. The game asset distribution module includes an analysis module to analyze the game board, lists of playable words, player skill levels, and relationships of particular letters in word formations. Accordingly, distribution weights of the letters are adjusted in order to facilitate allocation to the player of those letters which will facilitate word formation, ensure at least a minimum playable word experience, and enhance an overall user experience, even amongst players with significantly different skill levels.
Illustrative Claim:
1. A computer-implemented method comprising: assigning, via at least one processor, to each alphabet letter a respective distribution weight according to a weighting rule of an online game, wherein each respective distribution weight reflects a frequency the corresponding alphabet letter, to which the respective distribution weight is assigned, is available for a game action in the online game of a game network server system; allocating based on respective assigned distribution weights, for availability in one or more game actions by a particular player, instances of each alphabet letter in a plurality of the alphabet letters; initiating display, to the particular player, of the allocated instances of each alphabet letter in a game interface of the online game; receiving a game action representing completion of a formation of a word, the word based on selection of a subset of the allocated instances of each alphabet letter; determining a losing player being the particular player having a point score in the online game lower than any further player within the online game, wherein each further player has a respective social network connection in a social network server system with the particular player; based on determining the losing player being the particular player: determining a number of remaining instances of the alphabet letters, available for distribution, and yet to be allocated to the losing player, in accordance to the respective distribution weights and the plurality of alphabet letters previously allocated to the losing player; determining the number of the remaining instances of the alphabet letters is less than or equal to a predetermined threshold; comparing a set of played words based on one or more words previously formed in one or more game action selected by the losing player in the online game; determining a prospective word formation, in a subset of the remaining instances of the alphabet letters, matches at least one of the words previously formed; adjusting the respective distribution weight of each letter in the subset of the remaining instances of the alphabet letters, the adjusted respective distribution weight being greater than a prior corresponding distribution weight.
Illustrative Figure
Abstract
A system and method to facilitate moves in a word game includes a game asset distribution module that adjusts the respective distribution weights of letters in a set of alphabet letters. The letters are distributed to players in a word game with a probability proportional to the distribution weights. The game asset distribution module includes an analysis module to analyze the game board, lists of playable words, player skill levels, and relationships of particular letters in word formations. Accordingly, distribution weights of the letters are adjusted in order to facilitate allocation to the player of those letters which will facilitate word formation, ensure at least a minimum playable word experience, and enhance an overall user experience, even amongst players with significantly different skill levels.
Description
DETAILED DESCRIPTION In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of some example embodiments. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. In a system and method for distributing game assets in a social game, a game action is received from a player. The game action may comprise the formation of a word using at least one letter allocated to a player. Each letter of the alphabet may be weighted according to a weighting factor. At least one additional letter may be allocated to the player with a probability based on the respective distribution weight assigned to each alphabet letter. In many games, there is a virtual world or some other imagined playing space where a player/user of the game controls one or more player characters (herein “character,” “player character,” or “PC”). Player characters may be considered in-game representations of the controlling player. As used herein, the terms “player,” “user,” “entity,” and “friend” may refer to the in-game player character controlled by that player, user, entity, or friend, unless context suggests otherwise. The game display may display a representation of the player character. A game engine accepts inputs from the player, determines player character actions, decides outcomes of events and presents the player with a game display portraying the events that have transpired. In some games, there are multiple players, wherein each player controls one or more player characters. In many computer games, there are various types of in-game assets (aka “rewards” or “loot”) that a player character can obtain within the game. For example, a player character may acquire game points, gold coins, experience points, character levels, character attributes, virtual cash, game ...
DETAILED DESCRIPTION
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of some example embodiments. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details.
In a system and method for distributing game assets in a social game, a game action is received from a player. The game action may comprise the formation of a word using at least one letter allocated to a player. Each letter of the alphabet may be weighted according to a weighting factor. At least one additional letter may be allocated to the player with a probability based on the respective distribution weight assigned to each alphabet letter.
In many games, there is a virtual world or some other imagined playing space where a player/user of the game controls one or more player characters (herein “character,” “player character,” or “PC”). Player characters may be considered in-game representations of the controlling player. As used herein, the terms “player,” “user,” “entity,” and “friend” may refer to the in-game player character controlled by that player, user, entity, or friend, unless context suggests otherwise. The game display may display a representation of the player character. A game engine accepts inputs from the player, determines player character actions, decides outcomes of events and presents the player with a game display portraying the events that have transpired. In some games, there are multiple players, wherein each player controls one or more player characters.
In many computer games, there are various types of in-game assets (aka “rewards” or “loot”) that a player character can obtain within the game. For example, a player character may acquire game points, gold coins, experience points, character levels, character attributes, virtual cash, game keys, or other in-game items of value. In many computer games, there are also various types of in-game obstacles that a player must overcome to advance within the game. In-game obstacles may include tasks, puzzles, opponents, levels, gates, and actions. In some games, a goal of the game may be to acquire certain in-game assets, which can then be used to complete in-game tasks or to overcome certain in-game obstacles. For example, a player may be able to acquire a virtual key (i.e., the in-game asset) that can then be used to open a virtual door (i.e., the in-game obstacle).
An electronic social networking system typically operates with one or more social networking servers providing interaction between users such that a user can specify other users of the social networking system as “friends,” “contacts,” or “connections” (hereinafter generally referred to as “friends”). A collection of users and the “friend” connections between users can form a social graph that can be traversed to find second, third and more remote connections between users, much like a graph of nodes connected by edges may be traversed.
Many online computer games are operated on an online social network. Such a network allows both users and other parties to interact with the computer games directly, whether to play the games or to retrieve game- or user-related information. Internet users may maintain one or more accounts with various service providers, including, for example, online game networking systems and online social networking systems. Online systems can typically be accessed using browser clients (e.g., Firefox®, Chrome®, and Internet Explorer®).
In many computer games, there are various types of in-game actions that a player character may make within the game. For example, a player character in an online role-playing game may be able to interact with other player characters, build a virtual house, attack enemies, go on a quest, go to a virtual store to buy/sell virtual items, etc. A player character in word game may be able to form a word from a set of letters, collect additional letters to form additional words, play a word game against another player character, and so forth.
Environment
FIG. 1depicts a mobile device100, such as a cell phone105, engaged in an online game session as a client device. The mobile device100may serve as a physical platform to realize the playing space as described above. The mobile device100may incorporate a touch screen110to display images of game play and facilitate user interaction. A main game play area115may display a primary game play board area118, which may be a word game for example, where words may be spelled out from letter tiles120available from a “tile rack” or “letter rack”125. Each of two or more players (using different mobile devices or the same mobile device) may take turns spelling new words from their available letter tiles122where a new word includes at least one letter tile120associated with a previously played word to form the newly spelled word. A player may select a letter to play by applying a finger tip on the touch screen110over an available letter tile120in the tile rack125. The letter tile120may then be dragged to an unoccupied tile position in the game play board area118while continuous contact is maintained with the finger on the touch screen110.
In a user move, a succession of letter tiles122may be selected from the tile rack125and moved to a line of adjacent unoccupied tile positions to spell a complete word. Upon completion of spelling an entire word, an advertisement may be presented in an ad banner130in an upper portion of the touch screen110. The content of the advertisement may be related to the user move.
In the present embodiment, a user has selected a succession of letters S-D-A122to spell the word “SODA”135horizontally across the beginning of the word “ORB”140in an upper portion of the touch screen110. The word “SODA”135may be associated with an advertisement for a branded soft drink, such as the hypothetical “Rosco Root Beer” brand. Playing the user move S-D-A122to spell “SODA”135may cause the “Drink Rosco Root Beer” advertisement145to be displayed in the ad banner130at the mobile device100. After a new word may be completely spelled out, a next player proceeds with their turn to try and spell another word.
The preceding embodiment of a word game may be an example of one type of game play involving a user move by a player that may involve the display of an advertisement associated with the user move. The advertisement may be associated with a most recent user move and have advertising content relating to the content or context of the user move. For example, spelling out the word “shirt” may cause the display of an advertisement for laundry detergent.
Embodiments of game play triggering related advertisements are not limited to a single user. Multiple users may be playing the same game and each user's game play may trigger separate advertisements which may be displayed at the respective mobile device100of each user. In other embodiments it may be possible that a general promotional advertisement may be displayed to one or more users to prompt a certain type of user moves on the part of users in game play which may in turn relate to a product being promoted.
System
FIG. 2depicts a gameplay environment200including a gameplay system205and a social networking system210. The gameplay environment200is an example embodiment of an online network for gameplay between multiple users240utilizing various gameplay platform types245that may be facilitated by a network215, such as the Internet for example. The gameplay system205may include a game server220and a game data storage225. The gameplay system205maintains communication with the various gameplay platform types245of the multiple users240participating in multiple types of games as well as multiple “sessions” or “instances” of the same type of game. The gameplay system205may facilitate each gameplay session and manage transmissions between gameplay terminals during gaming sessions on the respective various gameplay platform types245. The gameplay system205may maintain all details of gameplay actions as well as abbreviated indications of the gameplay interactions between users. Additionally, the gameplay system205mirrors gameplay input actions to the further users involved in each respective gaming session and maintains additional indications of interactions between multiple users240in order to support further progress in the games facilitated by the game server220. An example of these additional interactions between users may be messaging between users during gameplay. All gameplay actions and related messaging may be stored on the game data storage225.
The gameplay system205may be communicatively coupled through the network215and an Internet bus250to the social networking system210. The social networking system210may include a social networking server230and social data storage235. Each of the gameplay actions that the game server220is involved in and that may be stored in the game data storage225may also be communicated to the social networking server230and correspondingly stored in the social data storage235. The storage of the gameplay indications (i.e., where indications may be abbreviations of complete gameplay actions) in the social data storage235may be thought of as constituting both a warehousing and mirroring of the totality of gameplay indications available to the game server220. Based on this warehousing and mirroring of all gameplay indications, the social networking server230has a complete set of information with which to manage configuration of gameplay notifications to the multiple users240involved in all of the games.
A gameplay system205and the social networking system210may be communicatively coupled through the network215to multiple users240. The multiple users240may be communicatively coupled through a particular device, selected from various gameplay platform types245, to the network215, the gameplay system205and the social networking system210. The various gameplay platform types245may include a cell phone, a smart phone, a personal data assistant, an electronic tablet, a notebook computer, a desktop computer, a deskside computer, and a terminal, for example. Any particular one of the various gameplay platform types245may be used by the respective user for gameplay, gameplay notifications, or a combination of both gameplay and gameplay notifications. A particular user may have multiple of the various gameplay platform types245for any combination of gameplay input and gameplay notifications.
A typical game may involve, for example, at least two players taking successive turns at gameplay actions until one of the players wins the game. The game server220may serve multiple gaming applications to various sets of the multiple users240. Any one of the multiple users240may be involved with several of the other multiple users240in multiple instances of the same game and in multiple types of games at the same time. The social networking server230receives indications of each move by each of the multiple users240in gameplay action.
A typical user of the multiple users240may not be able to be in continuous and concurrent attendance with another user of the same game during a gaming session. The typical user may desire to be informed about the completion of a pending move by another user. The typical user may also have multiple device types or platform types upon which the user may desire to have gameplay notifications communicated to. With the multitude of gaming sessions being played across multiple game types corresponding to each of the multiple users240there may be a critical demand created for a notification configuration within the social networking server230.
The components of gameplay environment200may be connected to each other in any suitable configuration, using any suitable type of connection. The components may be connected directly or over a network215, which may be any suitable network. For example, one or more portions of network215may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, another type of network, or a combination of two or more such networks.
Social networking system210is a network-addressable computing system that can host one or more social graphs. Social networking system210can generate, store, receive, and transmit social networking data. Social networking system210can be accessed by the other components of gameplay environment200either directly or via the network215. The gameplay system205is a network-addressable computing system that can host one or more online games. The gameplay system205can generate, store, receive, and transmit game-related data, such as, for example, game account data, game input, game state data, and game displays. The gameplay system205may be accessed by the other components of gameplay environment200either directly or via the network215. The multiple users240may use the various gameplay platform types245to access, send data to, and receive data from the social networking system210and the gameplay system205. The various gameplay platform types245can access the social networking system210or the gameplay system205directly, via the network215, or via a third-party system. As an example and not by way of limitation, the various gameplay platform types245may access the gameplay system205via the social networking system210. The various gameplay platform types245can be any suitable computing device, such as a personal computer, a laptop, a cellular phone, a smart phone, a computing tablet, etc.
AlthoughFIG. 2illustrates a particular number as the number of multiple users240, social networking systems210, game networking systems205, various gameplay platform types245, and networks215, this disclosure contemplates any suitable number as the number of multiple users240, social networking systems210, gameplay systems205, gameplay platform types245, and networks215. As an example and not by way of limitation, the gameplay environment200may include one or more gameplay systems205and no social networking systems210. As another example and not by way of limitation, gameplay environment200may include a system that comprises both the social networking system210and the gameplay system205. Moreover, althoughFIG. 2illustrates a particular arrangement of the various gameplay platform types245, the social networking system210, the gameplay system205, the various gameplay platform types245, and the network215, this disclosure contemplates any suitable arrangement of the various gameplay platform types245, the social networking system210, the gameplay system205, the various gameplay platform types245, and the network215.
The components of gameplay environment200may be connected to each other using any suitable connections250. For example, suitable connections250include wireline (such as, for example, Digital Subscriber Line (DSL) or Data Over Cable Service Interface Specification (DOCSIS)), wireless (such as, for example, Wi-Fi or Worldwide Interoperability for Microwave Access (WiMAX)) or optical (such as, for example, Synchronous Optical Network (SONET) or Synchronous Digital Hierarchy (SDH)) connections. In particular embodiments, one or more connections250each include an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, a portion of the Internet, a portion of the PSTN, a cellular telephone network, or another type of connection, or a combination of two or more such connections. The connections250need not necessarily be the same throughout the gameplay environment200. One or more first connections250may differ in one or more respects from one or more second connections250. AlthoughFIG. 2illustrates particular connections between the various gameplay platform types245, the social networking system210, the gameplay system205, the various gameplay platform types245, and the network215, this disclosure contemplates any suitable connections between the various gameplay platform types245, the social networking system210, the gameplay system205, the various gameplay platform types245, and the network215. As an example and not by way of limitation, in particular embodiments, the various gameplay platform types245may have a direct connection to the social networking system210or the gameplay system205, bypassing the network215.
Online Games and Game Networking Systems
In an online computer game, the game server220manages the game state of the game. The game state comprises all game play parameters, including player character state, non-player character (NPC) state, in-game object state, game world state (e.g., internal game clocks, game environment), and other game play parameters. Each the various gameplay platform types245controls one or more player characters (PCs). The game engine controls all other aspects of the game including non-player characters (NPCs) and in-game objects. The game engine also manages game state, including player character state for currently active (online) and inactive (offline) players.
An online game may be hosted by the gameplay system205, which may be accessed using any suitable connection with a suitable gameplay platform type245. A player may have a game account on the gameplay system205, wherein the game account can contain a variety of information associated with the player (e.g., the player's personal information, financial information, purchase history, player character state, and game state). In some embodiments, a player may play multiple games on the gameplay system205, which may maintain a single game account for the player with respect to all the games, or multiple individual game accounts for each game with respect to the player. In some embodiments, the gameplay system205can assign a unique identifier to each the various gameplay platform types245of an online game hosted on the gameplay system205. Gameplay system205can determine that a the various gameplay platform types245is accessing the online game by reading the user's cookies, which may be appended to HTTP requests transmitted by the various gameplay platform types245, and/or by the multiple users240logging onto the online game.
In particular embodiments, the various gameplay platform types245may access an online game and control the game's progress via the various gameplay platform types245(e.g., by inputting commands to the game at the client device). The various gameplay platform types245may display the game interface, receive inputs from the various gameplay platform types245, transmitting user inputs or other events to the game engine, and receive instructions from the game engine. The game engine may be executed on any suitable system (such as, for example, the various gameplay platform types245, the social networking system210, or the gameplay system205). As an example and not by way of limitation, the various gameplay platform types245can download client components of an online game, which are executed locally, while a remote game server, such as the gameplay system205, provides backend support for the client components and may be responsible for maintaining application data of the game, processing the inputs from the player, updating and/or synchronizing the game state based on the game logic and each input from the player, and transmitting instructions to the various gameplay platform types245. As another example and not by way of limitation, each time the various gameplay platform types245provides an input to the game through the various gameplay platform types245(such as, for example, by typing on the keyboard or clicking the mouse of the various gameplay platform types245), the client components of the game may transmit the player's input to the gameplay system205.
Game Systems, Social Networks, and Social Graphs
In an online multiplayer game, players may control player characters (PCs), while a game engine may control non-player characters (NPCs) and game features. The game engine also may manage player character state and game state and may track the state for currently active (i.e., online) players and currently inactive (i.e., offline) players. A player character may have a set of attributes and a set of friends associated with the player character. As used herein, the term “player character state” can refer to any in-game characteristic of a player character, such as location, assets, levels, condition, health, status, inventory, skill set, name, orientation, affiliation, specialty, and so on. Player characters may be displayed as graphical avatars within a user interface of the game. In other implementations, no avatar or other graphical representation of the player character is displayed. Game state encompasses the notion of player character state and refers to any parameter value that characterizes the state of an in-game element, such as a non-player character, a virtual object (such as a wall or castle), etc. The game engine may use player character state to determine the outcome of game events, sometimes also considering set or random variables. Generally, a player character's probability of having a more favorable outcome is greater when the player character has a better state. For example, a healthier player character is less likely to die in a particular encounter relative to a weaker player character or non-player character. In some embodiments, the game engine can assign a unique client identifier to each player.
In particular embodiments, the various gameplay platform types245may access particular game instances of an online game. A game instance is copy of a specific game play area that is created during runtime. In particular embodiments, a game instance is a discrete game play area where multiple users240can interact in synchronous or asynchronous play. A game instance may be, for example, a level, zone, area, region, location, virtual space, a game board, a game lobby, or other suitable play area. A game instance may be populated by one or more in-game objects. Each object may be defined within the game instance by one or more variables, such as, for example, position, height, width, depth, direction, time, duration, speed, color, and other suitable variables. A game instance may be exclusive (i.e., accessible by specific players) or nonexclusive (i.e., accessible by any player). In particular embodiments, a game instance is populated by one or more player characters or in-game objects controlled by multiple users240and/or one or more in-game objects controlled by the game engine. When accessing an online game, the game engine may allow the various gameplay platform types245to select a particular game instance to play from a plurality of game instances. Alternatively, the game engine may automatically select the game instance that the various gameplay platform types245will access. In particular embodiments, an online game comprises only one game instance that all the multiple users240of the online game can access.
In particular embodiments, a specific game instance may be associated with one or more specific players. A game instance is associated with a specific player when one or more game parameters of the game instance are associated with the specific player. As an example and not by way of limitation, a game instance associated with a first player may be named “First Player's Play Area.” This game instance may be populated with the first player's PC and one or more in-game objects associated with the first player. In particular embodiments, a game instance associated with a specific player may only be accessible by that specific player. As an example and not by way of limitation, a first player may access a first game instance when playing an online game and this first game instance may be inaccessible to all other players. In other embodiments, a game instance associated with a specific player may be accessible by one or more other players, either synchronously or asynchronously with the specific player's game play. As an example and not by way of limitation, a first player may be associated with a first game instance, but the first game instance may be accessed by all first-degree friends in the first player's social network. In particular embodiments, the game engine may create a specific game instance for a specific player when that player accesses the game. As an example and not by way of limitation, the game engine may create a first game instance when a first player initially accesses an online game, and that same game instance may be loaded each time the first player accesses the game. As another example and not by way of limitation, the game engine may create a new game instance each time a first player accesses an online game, wherein each game instance may be created randomly or selected from a set of predetermined game instances. In particular embodiments, the set of in-game actions available to a specific player may be different in a game instance that is associated with that player compared to a game instance that is not associated with that player. The set of in-game actions available to a specific player in a game instance associated with that player may be a subset, superset, or independent of the set of in-game actions available to that player in a game instance that is not associated with him. As an example and not by way of limitation, a first player may be associated with Blackacre Farm in an online farming game. The first player may be able to plant crops on Blackacre Farm. If the first player accesses game instance associated with another player, such as Whiteacre Farm, the game engine may not allow the first player to plant crops in that game instance. However, other in-game actions may be available to the first player, such as watering or fertilizing crops on Whiteacre Farm.
In particular embodiments, a game engine can interface with a social graph. Social graphs are models of connections between entities (e.g., individuals, users, contacts, friends, players, player characters, non-player characters, businesses, groups, associations, concepts, etc.). These entities are considered “users” of the social graph; as such, the terms “entity” and “user” may be used interchangeably when referring to social graphs herein. A social graph can have a node for each entity and edges to represent relationships between entities. A node in a social graph can represent any entity. In particular embodiments, a unique client identifier can be assigned to each user in the social graph. This disclosure assumes that at least one entity of a social graph is a player or player character in an online multiplayer game, though this disclosure contemplates any suitable social graph users.
The minimum number of edges required to connect a player (or player character) to another user is considered the degree of separation between them. For example, where the player and the user are directly connected (one edge), they are deemed to be separated by one degree of separation. The user would be a so-called “first-degree friend” of the player. Where the player and the user are connected through one other user (two edges), they are deemed to be separated by two degrees of separation. This user would be a so-called “second-degree friend” of the player. Where the player and the user are connected through N edges (or N−1 other users), they are deemed to be separated by N degrees of separation. This user would be a so-called “Nth-degree friend.” As used herein, the term “friend” means only first-degree friends, unless context suggests otherwise.
Within the social graph, each player (or player character) has a social network. A player's social network includes all users in the social graph within Nmax degrees of the player, where Nmax is the maximum degree of separation allowed by the system managing the social graph (such as, for example, the social networking system210or the gameplay system205). In one embodiment, Nmax equals 1, such that the player's social network includes only first-degree friends. In another embodiment, Nmax is unlimited and the player's social network is coextensive with the social graph.
In particular embodiments, the social graph is managed by the gameplay system205, which is managed by the game operator. In other embodiments, the social graph is part of the social networking system210managed by a third-party (e.g., Facebook®, Friendster®, Myspace®). In yet other embodiments, the various gameplay platform types245has a social network on both the gameplay system205and the social networking system210, wherein the various gameplay platform types245can have a social network on the gameplay system205that is a subset, superset, or independent of the player's social network on the social networking system210. In such combined systems, the gameplay system205can maintain social graph information with edge type attributes that indicate whether a given friend is an “in-game friend,” an “out-of-game friend,” or both. The various embodiments disclosed herein are operable when the social graph is managed by the social networking system210, the gameplay system205, or both.
FIG. 3is a block diagram illustrating an example of an out-of-game social network350within a social graph. As shown, a Player301can be associated, connected or linked to various other users, or “friends,” within the out-of-game social network350. These associations, connections or links can track relationships between users within the out-of-game social network350and are commonly referred to as online “friends” or “friendships” between users. Each friend or friendship in a particular user's social network within a social graph is commonly referred to as a “node.” For purposes of illustration and not by way of limitation, the details of out-of-game social network350will be described in relation to the Player301. As used herein, the terms “player” and “user” can be used interchangeably and can refer to any user or character in an online multiuser game system or social networking system. As used herein, the term “friend” can mean any node within a player's social network.
As shown inFIG. 3, the Player301has direct connections with several friends. When the Player301has a direct connection with another individual, that connection is referred to as a first-degree friend. In out-of-game social network350, the Player301has two first-degree friends. That is, the Player301is directly connected to Friend11311and Friend21321. In a social graph, it is possible for individuals to be connected to other individuals through their first-degree friends (i.e., friends of friends). As described above, each edge required to connect a player to another user is considered the degree of separation. For example,FIG. 3shows that the Player301has three second-degree friends to which he is connected via his connection to his first-degree friends. Second-degree Friend12312and Friend22322are connected to the Player301via his first-degree Friend11311. The limit on the depth of friend connections, or the number of degrees of separation for associations, that the Player301is allowed is typically dictated by the restrictions and policies implemented by the social networking system210.
In various embodiments, the Player301can have Nth-degree friends connected to him through a chain of intermediary degree friends as indicated inFIG. 3. For example, Nth-degree Friend1N319is connected to the Player301via second-degree Friend32332and one or more other higher-degree friends. Various embodiments may take advantage of and utilize the distinction between the various degrees of friendship relative to the Player301.
In particular embodiments, a player (or player character) can have a social graph within an online multiplayer game that is maintained by the game engine and another social graph maintained by a separate social networking system.FIG. 3depicts an example of in-game social network360and out-of-game social network350. In this example, the Player301has out-of-game connections355to a plurality of friends, forming out-of-game social network350. Here, Friend11311and Friend21321are first-degree friends with the Player301in his out-of-game social network350. The Player301also has in-game connections365to a plurality of players, forming in-game social network360. Here, Friend21321, Friend31331, and Friend41341are first-degree friends within the Player's301in-game social network360. In some embodiments, it is possible for a friend to be in both the out-of-game social network350and the in-game social network360. Here, Friend21321has both an out-of-game connection355and an in-game connection365with the Player301, such that Friend21321is in both the Player's301in-game social network360and the Player's301out-of-game social network350.
As with other social networks, the Player301can have second-degree and higher-degree friends in both his in-game and out of game social networks. In some embodiments, it is possible for the Player301to have a friend connected to him both in his in-game and out-of-game social networks, wherein the friend is at different degrees of separation in each network. For example, if Friend22322had a direct in-game connection with the Player301, Friend22322would be a second-degree friend in the Player's301out-of-game social network, but a first-degree friend in the Player's301in-game social network. In particular embodiments, a game engine can access in-game social network360, out-of-game social network350, or both.
In particular embodiments, the connections in a player's in-game social network can be formed both explicitly (e.g., users must “friend” each other) and implicitly (e.g., system observes user behaviors and “friends” users to each other). Unless otherwise indicated, reference to a friend connection between two or more players can be interpreted to cover both explicit and implicit connections, using one or more social graphs and other factors to infer friend connections. The friend connections can be unidirectional or bidirectional. It is also not a limitation of this description that two players who are deemed “friends” for the purposes of this disclosure are not friends in real life (i.e., in disintermediated interactions or the like), but that could be the case.
Game Systems
A game event may be an outcome of a user action, an engagement, a provision of access, rights and/or benefits, or the obtaining of some assets (e.g., health, money, strength, inventory, land, etc.). A game engine determines the outcome of a game event according to a variety of factors, such as the game rules, a player character's in-game actions, player character state, game state, interactions of other player characters, and random calculations. Engagements can include simple tasks (e.g., plant a crop, clean a stove), complex tasks (e.g., build a farm or business, run a café), or other events.
An online game can be hosted by the gameplay system205, which can be accessed over any suitable connections250with any appropriate gameplay platform types245. A player may have a game system account on the gameplay system205, wherein the game system account can contain a variety of information about the player (e.g., the player's personal information, player character state, game state, etc.). In various embodiments, an online game can be embedded into a third-party website. The game can be hosted by the networking system of the third-party website, or it can be hosted on the gameplay system205and merely accessed via the third-party website. The embedded online game can be hosted solely on the game server220or using a third-party vendor server. In addition, any combination of the functions of the present disclosure can be hosted on or provided from any number of distributed network resources. For example, one or more executable code objects that implement all or a portion of the game can be downloaded to a client system for execution.
Virtual Currency
In various embodiments, players within the game can acquire virtual currency. In such games, the virtual currency might be represented by virtual coins, virtual cash, or by a number or value stored by the server for that player's benefit. Such virtual currency represents units of value for use in the online game system, and is analogous to legal currency. Virtual currency can be purchased in one or more actual cash or credit transactions by a player, where the legal currency is transferred using a credit/debit/charge card transaction conveyed over a financial network. In some embodiments, a player may earn virtual currency by taking action in the game. For example, a player may be rewarded with one or more units of virtual currency after completing a task, quest, level, challenge, or mission within the game. For example, a farming game might reward10gold coins each time a virtual crop is harvested.
In some embodiments, virtual currency can be used to purchase one or more in-game assets or other benefits. For example, a player may be able to exchange virtual currency for a desired level, access, right, or item in an online game. In one embodiment, legal currency can be used to directly purchase an in-game asset or other benefit. The player can select the desired in-game asset or other benefit. Once the necessary selections are made, the player can place the order to purchase the in-game asset or other benefit. This order is received by the gameplay system205, which can then process the order. If the order is processed successfully, an appropriate financial account associated with the player can be debited by the amount of virtual currency or legal currency needed to buy the selected in-game asset or other benefit.
In some embodiments, multiple types of virtual currency may be available for purchase from the game system operator. For example, an online game may have virtual gold coins and virtual cash. The different types of virtual currency may have different exchange rates with respect to legal currency and each other. For example, a player may be able to exchange $1 in legal currency for either100virtual gold coins or $2 in virtual cash, but virtual gold coins may not be exchanged for virtual cash. Similarly, where in-game assets and other benefits can be purchased with virtual currency, they may have different exchange rates with respect to the different types of virtual currency. For example, a player may be able to buy a virtual business object for $10 in virtual cash, but may not purchase the virtual business object for virtual gold coins alone. In some embodiments, certain types of virtual currency can be acquired by engaging in various in-game actions while other types of virtual currency can only be acquired by exchanging legal currency. For example, a player may be able to acquire virtual gold coins by selling virtual goods in a business, but can only acquire virtual cash by exchanging legal currency. In some implementations, virtual cash may also be awarded for leveling up in the game.
Distribution of Game Assets
FIG. 4is a block diagram illustrating example modules of the gameplay system205related to distributing game assets in a social game. In some embodiments, the social game may be a word game in which players form words from one or more letters. Each word may be assigned a score depending on the letters used to form the word. Game assets may include the letters distributed to each player that are used to form words.
In certain word games, the player builds words and compares them against a dictionary of possible valid entries. Game assets, such as game tiles, featuring letters from the alphabet, are associated with points (which, in turn, is associated with the relative difficulty of using the particular letter in a word), and these tiles are drawn from a “bag”, which is finite and can be depleted. In other word games, the letter bag is infinite and cannot be depleted, which has its own implications about the frequency or probability of discrete letter draws and the ability of the player to form words with these tiles. In both cases, a system and method have been designed that can help create allowable moves while simultaneously reducing the amount of minimally-playable states.
An example of a minimally-playable state may occur in word games, and a player may be given letters with which they cannot make a meaningful play. The player may be forced to “pass” on that particular round of game action and end up having to wait for the next player(s) to make a move. An additional risk is that a player with a relatively high number of difficult to use tiles (e.g., high-point letters) may resort to playing words which they do not know the definitions of. This may also be frustrating for the other player, as they may be receiving words in gameplay that are not in common in everyday usage, and which neither player can define.
Ideally, the users have a larger subset of easily-usable letter tiles so that they have a wider potential vocabulary from which to pull. However, accomplishing this objective requires balancing optimal tile-draws without upsetting the overall balance of gameplay.
The gameplay system205includes a game asset distribution module400that is configured to distribute game assets in a social game. The game asset distribution module400, in turn, includes various modules404-416. A random generator module404is configured to generate random distributions of game assets to a user. The random generator module404may operate similarly to a person's stirring up of game tiles in a draw bag prior to drawing a letter. A weighting module406is configured to weight and adjust the weighting of assets to be distributed to a user. The weighting module406assigns to each game asset a respective “weight” or “distribution weight” affecting a corresponding distribution of each game asset. The weighting module406may receive input from an analysis module408, a game promotion module410, a game asset allocation module414, and a rules module416(each discussed below). For example, the weighting module406may receive input from the game asset allocation module414when a determination has been made that certain game assets (e.g., letters) should be weighted with an adjusted distribution weights that cause certain assets to be allocated to a user more frequently than would be the case with the assets having prior distribution weights. Based on the input from the game asset allocation module414the weighting module406may adjust distribution weights of certain of the alphabet letters being allocated to all or certain ones of the players in a game. The rules module416may provide input in a similar way according to portrayal of particular sets of rules.
The analysis module408is configured to analyze game actions to determine which game assets are used more frequently and in what situations and in response to what stimuli game assets are used. The analysis module408may determine how to adjust a distribution of weights across a set of alphabet letters or adjust a weight of a particular letter to better conform to a gameplay rule or objective. The analysis module408may be continually apprised of the gameplay rules and objectives by the rules module416. The analysis module408may collect information about playable situations on the game board, assess letters available for play from both a draw bag and from players' tile racks, and compare those inputs with the rules and objectives of the game to determine real-time updates that may be important to the weighting module406.
The game promotion module410is configured to determine whether a game promotional campaign is to be implemented and if so, to vary the weighting of game assets in a manner that incentivizes a user to participate in the game promotional campaign. For instance, a client may sponsor an ad campaign to promote a soft drink. A promotional word associated with the campaign may be the words “root beer.” The game promotion module410may provide input to the weighting module406to adjust the respective weights (or “distribution weights”) of the letters occurring in the words “root beer.” The respective weights of letters in the words “root beer” may be adjusted slightly higher than their normal occurring weights in a regular alphabet letter distribution or prior distribution weights in a particular state at gameplay so that a typical user may have a slightly greater access to them. This heightened access to these letters may enhance any player's likelihood of playing the words in a game action and participating in the campaign. Each player may still have to form the promotional word in a game action on their own recognizance. The heightened access to particular letters initiated by the game promotion module410, along with advertisements or promotional information available to the player, may help to spur the particular game action on the part of a given player for playing words featured in a promotional campaign.
A user profile module412is configured to access a user profile of a given user and may use any game history and other user profile factors available in the user's profile as input in determining a weighting distribution of game assets to the user. For instance, in perusing the game history of a given user the user profile module412may determine that the user has been winning a significant percentage of the games they have engaged in recently. A total number of wins or a high percentage of wins may determine a skill level for the user above a predetermined threshold. The user's skill level being determined this way as a relatively high skill level may mean that the user profile module412may operate in combination with the analysis module408, for instance, to determine a particular weighting distribution of game assets. For example, the distribution weight of the player's letters to be drawn in further game actions may be increased for high-point alphabet letters and decreased for low-point alphabet letters. The high-point alphabet letters are generally more difficult to play in the low-point alphabet letters are generally easier to play than some hypothetical nominal letter of the alphabet. The relatively highly skilled player may then receive more letters that are difficult to play and fewer letters that are easy to play. In this way a user with a relatively high skill level may be moderated to have a chance of winning that is more in keeping with other players in the same game having a lower skill level.
The game asset allocation module414is configured to account for the various weighting factors and determine which game assets should be distributed to the user. When various rules and objectives of a game are simultaneously vying for influence of distribution and weighting of game assets the game asset allocation module414may become involved to determine the allocation of assets to a particular player on a given move. When a promotional campaign may be underway, a game enters the latter stages of gameplay, an analysis of words having been played is underway, and a losing player has been identified, the game asset allocation module415may determine which assets are to be allocated to a given player in consideration of multiple rules, game objectives, and game states that may be operative through the various modules404-416. In this way, the asset allocation module may work, and possibly in conjunction with the rules module416, to develop a cohesive application of the sum-total of rules, objectives, and conditions in gameplay in determining asset allocations.
The rules module416is configured to manage and apply sets of rules used in implementing game-based directives and objectives affecting weighting and distribution of game assets. Many of the basic principles in application of rules and the implementation of gameplay objectives described here may be readily adapted to many languages other than English. The rules module416may be utilized to accommodate gameplay with different languages by changing the contents of the rules but may still utilize the same gaming framework.
For instance, when two or more letters commonly occur in relationship within certain word formations, the rules that may be involved in one language may be modified to accommodate two or more different letters having a similar occurrence relationship in a different language. Straightforward modification to particular letters applied in a given rule by the rules module416may be readily extended to another language with a simple change of letters corresponding to the other language. In this way, the same gameplay system205may be utilized with the same rules module416to accommodate a different language by incorporating straightforward changes to the rules. The analysis module408may also be used in conjunction with the rules module416to effect use of the gameplay system205with the new language.
The game data storage225retains gameplay actions, game state, game play parameters in-game object states, and game world state. The modules404-416are communicatively coupled to one another and to the game server220through an interconnect bus418.
Each of the modules discussed with reference toFIG. 4will be explained in further detail in accordance with the example methods disclosed herein.
Data Flow
FIG. 5is a block diagram illustrating an example data flow between the components of a gaming environment500. In particular embodiments, the gaming environment500can include various gameplay platform types245, the social networking system210, and the gameplay system205. The components of the gaming environment500can be connected to each other in any suitable configuration, using any suitable type of connection. The components may be connected directly or over any suitable network. The various gameplay platform types245, the social networking system210, and the gameplay system205can each have one or more corresponding data stores such as a local storage505, social data storage235, and game data storage225, respectively. The social networking system210and the gameplay system205can also have one or more servers that can communicate with the various gameplay platform types245over an appropriate network. The social networking system210and the gameplay system205can have one or more internet servers such as the game server220and the social networking server230, for example, for communicating with the various gameplay platform types245via the Internet. Similarly, the social networking system210and the gameplay system205can have one or more mobile servers for communicating with the various gameplay platform types245via a mobile network (e.g., GSM, PCS, Wi-Fi, WPAN, etc.). In some embodiments, one server may be able to communicate with the various gameplay platform types245over both the Internet and a mobile network. In other embodiments, separate servers may be used.
The various gameplay platform types245can receive and transmit game data523to and from the gameplay system205. This data can include, for example, web pages, messages, game inputs, game displays, HTTP packets, data requests, transaction information, updates, and other suitable data. At some other time, or at the same time, the gameplay system205can communicate data543,547(e.g., game state information, game system account information, page info, messages, HTTP packets, data requests, updates, etc.) with other networking systems, such as the social networking system210(e.g., Facebook®, Myspace®, etc.). The various gameplay platform types245can also receive and transmit data527to and from the social networking system210. This data can include, for example, web pages, messages, social graph information, social network displays, HTTP packets, data requests, transaction information, updates, and other suitable data.
Communication between the various gameplay platform types245, the social networking system210, and the gameplay system205can occur over any appropriate electronic communication medium or network using any suitable communications protocols. For example, the various gameplay platform types245, as well as various servers of the systems described herein, may include Transport Control Protocol/Internet Protocol (TCP/IP) networking stacks to provide for datagram and transport functions. Of course, any other suitable network and transport layer protocols can be utilized.
In addition, hosts or end-systems described herein may use a variety of higher layer communications protocols, including client-server (or request-response) protocols, such as the HyperText Transfer Protocol (HTTP) and other communications protocols, such as HTTP-S, FTP, SNMP, TELNET, and a number of other protocols, may be used. In addition, a server in one interaction context may be a client in another interaction context. In particular embodiments, the information transmitted between hosts may be formatted as HyperText Markup Language (HTML) documents. Other structured document languages or formats can be used, such as XML, and the like. Executable code objects, such as JavaScript and ActionScript, can also be embedded in the structured documents.
In some client-server protocols, such as the use of HTML over HTTP, a server generally transmits a response to a request from a client. The response may comprise one or more data objects. For example, the response may comprise a first data object, followed by subsequently transmitted data objects. In particular embodiments, a client request may cause a server to respond with a first data object, such as an HTML page, which itself refers to other data objects. A client application, such as a browser, will request these additional data objects as it parses or otherwise processes the first data object.
In particular embodiments, an instance of an online game can be stored as a set of game state parameters that characterize the state of various in-game objects, such as, for example, player character state parameters, non-player character parameters, and virtual item parameters. In particular embodiments, game state is maintained in a database as a serialized, unstructured string of text data as a so-called Binary Large Object (BLOB). When a player accesses an online game on the gameplay system205, the BLOB containing the game state for the instance corresponding to the player can be transmitted to the various gameplay platform types245for use by a client-side executed object to process. In particular embodiments, the client-side executable may be a FLASH-based game, which can de-serialize the game state data in the BLOB. As a player plays the game, the game logic implemented at the various gameplay platform types245maintains and modifies the various game state parameters locally. The client-side game logic may also batch game events, such as mouse clicks, and transmit these events to the gameplay system205. The gameplay system205may itself operate by retrieving a copy of the BLOB from a database or an intermediate memory cache (memcache) layer. The gameplay system205can also de-serialize the BLOB to resolve the game state parameters and execute its own game logic based on the events in the batch file of events transmitted by the client to synchronize the game state on the server side. The gameplay system205may then re-serialize the game state, now modified, into a BLOB and pass this to a memory cache layer for lazy updates to a persistent database.
With a client-server environment in which the online games may run, one server system, such as the gameplay system205, may support the various gameplay platform types245. At any given time, there may be multiple players at the various gameplay platform types245all playing the same online game. In practice, the number of players playing the same game at the same time may be very large. As the game progresses with each player, multiple players may provide different inputs to the online game at their respective gameplay platform types245and may transmit multiple player inputs and/or game events to the gameplay system205for further processing. In addition, the various gameplay platform types245may transmit other types of application data to the gameplay system205.
In particular embodiments, a computer-implemented game may be a text-based or turn-based game implemented as a series of web pages that are generated after a player selects one or more actions to perform. The web pages may be displayed in a browser client executed on the various gameplay platform types245. As an example and not by way of limitation, a client application downloaded to the various gameplay platform types245may operate to serve a set of web pages to a player. As another example and not by way of limitation, a computer-implemented game may be an animated or rendered game executable as a stand-alone application or within the context of a webpage or other structured document. In particular embodiments, the computer-implemented game may be implemented using Adobe Flash-based technologies. As an example and not by way of limitation, a game may be fully or partially implemented as a SWF object that is embedded in a web page and executable by a Flash media player plug-in. In particular embodiments, one or more described web pages may be associated with or accessed by the social networking system210. This disclosure contemplates using any suitable application for the retrieval and rendering of structured documents hosted by any suitable network-addressable resource or website.
Application event data of a game is any data relevant to the game (e.g., player inputs). In particular embodiments, each application datum may have a name and a value, and the value of the application datum may change (i.e., be updated) at any time. When an update to an application datum occurs at the various gameplay platform types245, either caused by an action of a game player or by the game logic itself, the various gameplay platform types245may need to inform the gameplay system205of the update. For example, if the game is a farming game with a harvest mechanic (such as Zynga FarmVille), an event can correspond to a player clicking on a parcel of land to harvest a crop. In such an instance, the application event data may identify an event or action (e.g., harvest) and an object in the game to which the event or action applies. For illustration purposes and not by way of limitation, the gaming environment500is discussed in reference to updating a multi-player online game hosted on a network-addressable system (such as, for example, the social networking system210or the gameplay system205), where an instance of the online game is executed remotely on the various gameplay platform types245, which then transmits application event data to the hosting system such that the remote game server synchronizes game state associated with the instance executed by the various gameplay platform types245.
In particular embodiment, one or more objects of a game may be represented as an Adobe Flash object. Flash may manipulate vector and raster graphics, and supports bidirectional streaming of audio and video. “Flash” may mean the authoring environment, the player, or the application files. In particular embodiments, the various gameplay platform types245may include a Flash client. The Flash client may be configured to receive and run Flash application or game object code from any suitable networking system (such as, for example, the social networking system210or the gameplay system205). In particular embodiments, the Flash client may be run in a browser client executed on the various gameplay platform types245. A player can interact with Flash objects using the various gameplay platform types245and the Flash client. The Flash objects can represent a variety of in-game objects. Thus, the player may perform various in-game actions on various in-game objects by make various changes and updates to the associated Flash objects. In particular embodiments, in-game actions can be initiated by clicking or similarly interacting with a Flash object that represents a particular in-game object. For example, a player can interact with a Flash object to use, move, rotate, delete, attack, shoot, or harvest an in-game object. This disclosure contemplates performing any suitable in-game action by interacting with any suitable Flash object. In particular embodiments, when the player makes a change to a Flash object representing an in-game object, the client-executed game logic may update one or more game state parameters associated with the in-game object. To ensure synchronization between the Flash object shown to the player at the various gameplay platform types245, the Flash client may send the events that caused the game state changes to the in-game object to the gameplay system205. However, to expedite the processing and hence the speed of the overall gaming experience, the Flash client may collect a batch of some number of events or updates into a batch file. The number of events or updates may be determined by the Flash client dynamically or determined by the gameplay system205based on server loads or other factors. For example, the various gameplay platform types245may send a batch file to the gameplay system205whenever50updates have been collected or after a threshold period of time, such as every minute.
As used herein, the term “application event data” may refer to any data relevant to a computer-implemented game application that may affect one or more game state parameters, including, for example and without limitation, changes to player data or metadata, changes to player social connections or contacts, player inputs to the game, and events generated by the game logic. In particular embodiments, each application datum may have a name and a value. The value of an application datum may change at any time in response to the game play of a player or in response to the game engine (e.g., based on the game logic). In particular embodiments, an application data update occurs when the value of a specific application datum is changed. In particular embodiments, each application event datum may include an action or event name and a value (such as an object identifier). Thus, each application datum may be represented as a name-value pair in the batch file. The batch file may include a collection of name-value pairs representing the application data that have been updated at the various gameplay platform types245. In particular embodiments, the batch file may be a text file and the name-value pairs may be in string format.
In particular embodiments, when a player plays an online game on the various gameplay platform types245, the gameplay system205may serialize all the game-related data, including, for example and without limitation, game states, game events, user inputs, for this particular user and this particular game into a BLOB and stores the BLOB in a database. The BLOB may be associated with an identifier that indicates that the BLOB contains the serialized game-related data for a particular player and a particular online game. In particular embodiments, while a player is not playing the online game, the corresponding BLOB may be stored in the database. This enables a player to stop playing the game at any time without losing the current state of the game the player is in. When a player resumes playing the game next time, the gameplay system205may retrieve the corresponding BLOB from the database to determine the most-recent values of the game-related data. In particular embodiments, while a player is playing the online game, the gameplay system205may also load the corresponding BLOB into a memory cache so that the game system may have faster access to the BLOB and the game-related data contained therein.
In particular embodiments, one or more described web pages may be associated with a networking system or networking service. However, alternate embodiments may have application to the retrieval and rendering of structured documents hosted by any type of network addressable resource or web site. Additionally, as used herein, a user may be an individual, a group, or an entity (such as a business or third party application).
FIG. 6is a block diagram illustrating an example network environment610, in which various example embodiments may operate. Particular embodiments may operate in a wide area network environment, such as the Internet, including multiple network addressable systems. Network cloud660generally represents one or more interconnected networks, over which the systems and hosts described herein, can communicate. Network cloud660may include packet-based wide area networks (such as the Internet), private networks, wireless networks, satellite networks, cellular networks, paging networks, and the like. AsFIG. 6illustrates, particular embodiments may operate in a network environment comprising one or more networking systems, such as social networking system620a, game networking system620b, and one or more client systems630. The components of social networking system620aand game networking system620boperate analogously; as such, hereinafter they may be referred to simply at networking system620. Client systems630are operably connected to the network environment via a network service provider, a wireless carrier, or any other suitable means.
Networking system620is a network addressable system that, in various example embodiments, comprises one or more physical servers622and data stores624. The one or more physical servers622are operably connected to computer network660via, by way of example, a set of routers and/or networking switches626. In an example embodiment, the functionality hosted by the one or more physical servers622may include web or HTTP servers, FTP servers, as well as, without limitation, web pages and applications implemented using Common Gateway Interface (CGI) script, PHP Hyper-text Preprocessor (PHP), Active Server Pages (ASP), Hyper Text Markup Language (HTML), Extensible Markup Language (XML), Java, JavaScript, Asynchronous JavaScript and XML (AJAX), Flash, ActionScript, and the like.
Physical servers622may host functionality directed to the operations of networking system620. Hereinafter servers622may be referred to as server622, although server622may include numerous servers hosting, for example, networking system620, as well as other content distribution servers, data stores, and databases. Data store624may store content and data relating to, and enabling, operation of networking system620as digital data objects. A data object, in particular embodiments, is an item of digital information typically stored or embodied in a data file, database, or record. Content objects may take many forms, including: text (e.g., ASCII, SGML, and HTML), images (e.g., jpeg, tif, and gif), graphics (vector-based or bitmap), audio, video (e.g., mpeg), or other multimedia, and combinations thereof. Content object data may also include executable code objects (e.g., games executable within a browser window or frame), podcasts, etc. Logically, data store624corresponds to one or more of a variety of separate and integrated databases, such as relational databases and object-oriented databases that maintain information as an integrated collection of logically related records or files stored on one or more physical systems. Structurally, data store624may generally include one or more of a large class of data storage and management systems. In particular embodiments, data store624may be implemented by any suitable physical system(s) including components, such as one or more database servers, mass storage media, media library systems, storage area networks, data storage clouds, and the like. In one example embodiment, data store624includes one or more servers, databases (e.g., MySQL), and/or data warehouses. Data store624may include data associated with different networking system620users and/or client systems630.
Client system630is generally a computer or computing device including functionality for communicating (e.g., remotely) over a computer network. Client system630may be a desktop computer, laptop computer, personal digital assistant (PDA), in- or out-of-car navigation system, smart phone or other cellular or mobile phone, or mobile gaming device, among other suitable computing devices. Client system630may execute one or more client applications, such as a web browser (e.g., Microsoft Internet Explorer, Mozilla Firefox, Apple Safari, Google Chrome, and Opera), to access and view content over a computer network. In particular embodiments, the client applications allow a user of client system630to enter addresses of specific network resources to be retrieved, such as resources hosted by networking system620. These addresses can be Uniform Resource Locators (URLs) and the like. In addition, once a page or other resource has been retrieved, the client applications may provide access to other pages or records when the user “clicks” on hyperlinks to other resources. By way of example, such hyperlinks may be located within the web pages and provide an automated way for the user to enter the URL of another page and to retrieve that page.
A webpage or resource embedded within a webpage, which may itself include multiple embedded resources, may include data records, such as plain textual information, or more complex digitally encoded multimedia content, such as software programs or other code objects, graphics, images, audio signals, videos, and so forth. One prevalent markup language for creating web pages is the Hypertext Markup Language (HTML). Other common web browser-supported languages and technologies include the Extensible Markup Language (XML), the Extensible Hypertext Markup Language (XHTML), JavaScript, Flash, ActionScript, Cascading Style Sheet (CSS), and, frequently, Java. By way of example, HTML enables a page developer to create a structured document by denoting structural semantics for text and links, as well as images, web applications, and other objects that can be embedded within the page. Generally, a webpage may be delivered to a client as a static document; however, through the use of web elements embedded in the page, an interactive experience may be achieved with the page or a sequence of pages. During a user session at the client, the web browser interprets and displays the pages and associated resources received or retrieved from the website hosting the page, as well as, potentially, resources from other websites.
When a user at a client system630desires to view a particular webpage (hereinafter also referred to as target structured document) hosted by networking system620, the user's web browser, or other document rendering engine or suitable client application, formulates and transmits a request to networking system620. The request generally includes a URL or other document identifier as well as metadata or other information. By way of example, the request may include information identifying the user, such as a user ID, as well as information identifying or characterizing the web browser or operating system running on the user's client computing device630. The request may also include location information identifying a geographic location of the user's client system or a logical network location of the user's client system. The request may also include a timestamp identifying when the request was transmitted.
Although the example network environment610described above and illustrated inFIG. 6described with respect to social networking system620aand game networking system620b, this disclosure encompasses any suitable network environment using any suitable systems. As an example and not by way of limitation, the network environment may include online media systems, online reviewing systems, online search engines, online advertising systems, or any combination of two or more such systems.
FIG. 7is a block diagram illustrating an example computing system architecture, which may be used to implement a server622or a client system630. In one embodiment, hardware system710comprises a processor702, a cache memory704, and one or more executable modules and drivers, stored on a tangible computer readable medium, directed to the functions described herein. Additionally, hardware system710may include a high performance input/output (I/O) bus706and a standard I/O bus708. A host bridge710may couple processor702to high performance I/O bus706, whereas I/O bus bridge712couples the two buses706and708to each other. A system memory714and one or more network/communication interfaces716may couple to bus706. Hardware system710may further include video memory (not shown) and a display device coupled to the video memory. Mass storage718and I/O ports720may couple to bus708. Hardware system710may optionally include a keyboard, a pointing device, and a display device (not shown) coupled to bus708. Collectively, these elements are intended to represent a broad category of computer hardware systems, including but not limited to general purpose computer systems based on the x86-compatible processors manufactured by Intel Corporation of Santa Clara, Calif., and the x86-compatible processors manufactured by Advanced Micro Devices (AMD), Inc., of Sunnyvale, Calif., as well as any other suitable processor.
The elements of hardware system710are described in greater detail below. In particular, network interface716provides communication between hardware system710and any of a wide range of networks, such as an Ethernet (e.g., IEEE 802.3) network, a backplane, etc. Mass storage718provides permanent storage for the data and programming instructions to perform the above-described functions implemented in the social networking server230and the game server220, whereas system memory714(e.g., DRAM) provides temporary storage for the data and programming instructions when executed by processor702. I/O ports720are one or more serial and/or parallel communication ports that provide communication between additional peripheral devices, which may be coupled to hardware system710.
Hardware system710may include a variety of system architectures and various components of hardware system710may be rearranged. For example, cache704may be on-chip with processor702. Alternatively, cache704and processor702may be packed together as a “processor module,” with processor702being referred to as the “processor core.” Furthermore, certain embodiments of the present disclosure may not require nor include all of the above components. For example, the peripheral devices shown coupled to standard I/O bus708may couple to high performance I/O bus706. In addition, in some embodiments, only a single bus may exist, with the components of hardware system710being coupled to the single bus. Furthermore, hardware system710may include additional components, such as additional processors, storage devices, or memories.
An operating system manages and controls the operation of hardware system710, including the input and output of data to and from software applications (not shown). The operating system provides an interface between the software applications being executed on the system and the hardware components of the system. Any suitable operating system may be used, such as the LINUX Operating System, the Apple Macintosh Operating System, available from Apple Computer Inc. of Cupertino, Calif., UNIX operating systems, Microsoft Windows® operating systems, BSD operating systems, and the like. Of course, other embodiments are possible. For example, the functions described herein may be implemented in firmware or on an application-specific integrated circuit.
Furthermore, the above-described elements and operations can be comprised of instructions that are stored on non-transitory storage media. The instructions can be retrieved and executed by a processing system. Some examples of instructions are software, program code, and firmware. Some examples of non-transitory storage media are memory devices, tape, disks, integrated circuits, and servers. The instructions are operational when executed by the processing system to direct the processing system to operate in accord with the disclosure. The term “processing system” refers to a single processing device or a group of inter-operational processing devices. Some examples of processing devices are integrated circuits and logic circuitry. Those skilled in the art are familiar with instructions, computers, and storage media.
Methods
FIG. 8is a flow chart illustrating an allocation and distribution method800, in accordance with an example embodiment, to assign and allocate distribution weights to alphabet letters in a game. The allocation and distribution method800may be performed by any of the modules, logic, or components described herein.
The various modules404-416of the game asset distribution module400may be involved in implementing the allocation and distribution method800. In some embodiments, the rules module416may generally manage, and the weighting module406may impose, rules for pulling tiles out of the bag. The rules may produce a sort of “shaped” randomness in that the respective distribution weights of various letters within the alphabet letters may be adjusted to promote or hinder allocation of a respective letter in some situation or context of gameplay. The respective distribution weights of the alphabet letters according to some embodiments may determine a probability that the corresponding letter will be drawn by a player in a given gameplay action.
The allocation and distribution method800may commence with the weighting module406assigning810to each alphabet letter in a game a respective distribution weight according to a weighting rule communicated from the rules module416. The method may continue with the game asset allocation module415allocating820an instance of at least one letter of the alphabet letters to a player based on the assigned distribution weight. The method may involve the gameplay system205receiving830a game action including a formation of a word using the instance of the at least one letter allocated to the player according to the assigned distribution weight. The method may next have the weighting module406adjusting840the respective distribution weights of the alphabet letters based on the weighting rule. The game asset allocation module415may be involved in allocating850an instance of at least one further letter according to the adjusted distribution weights. The gameplay system205may receive860a further game action including a formation of a further word using the instance of the at least one further letter. The instance of the at least one further letter may be allocated to the player or a further player.
FIG. 9is a flow chart illustrating a successive letter allocation method900, in accordance with an example embodiment, to reduce successive allocations of the same letter. The successive letter allocation method900may be performed by any of the modules, logic, or components described herein.
As part of the promotion of the “shaped” randomness implemented by the rules, the weighting module406may increase or decrease the chances of getting a duplicate letter as a player receives the initial letter from a letter bag. In some embodiments, for example, if a player has already drawn an “N,” for example, the weighting module406, as directed by the rules module416, may decrease the chances of drawing another “N” and greatly reduce the chances of drawing a third “N.” The weighting module406may decrease a chance of getting duplicate letters by decreasing by 20% the chance of receiving a second letter of the same type, decreasing by 50% weight to get a third letter of the same type, and by 80% weight to get a fourth letter of the same type. Or, in other instances, the weighting module406may start decreasing weight only after the first duplicate tile is drawn (and perhaps more sharply decline the percentage thereafter).
In implementing the successive letter allocation method900the game asset allocation module414may allocate910a first instance of a letter to the player based on an initial distribution weight. In response to the allocation of the first instance of the letter, the weighting module406may adjust920the distribution weight of the letter according to the weighting rule used in moderating a player's drawing successive letters. In further game action the game asset allocation module414may be involved in the method by allocating930an additional instance of the letter to the player based on the adjusted distribution weight. The allocation of the additional instance of the letter may occur even though the adjusted distribution weight is less than a prior distribution weight assigned to the letter. Because of the adjusted distribution weight according to these rules, the chances of this happening for the player are diminished.
FIG. 10is a flow chart illustrating a related letter allocation method1000, in accordance with an example embodiment, to allocate letters occurring in relationship within a word. The related letter allocation method1000may be performed by any of the modules, logic, or components described herein.
The weighting module406may increase the chances of drawing letters in proportion to common relationships among letter combinations occurring in the formation of certain words. For example, if a player draws a “Q,” the weighting module406may greatly increase chances of drawing a “U.” If the player draws a “C,” the weighting module406may promote drawing a “K.” If the player draws a “K,” the weighting module406may increase the weight of getting a “C” by 50%. If the player draws a “Y,” the weighting module406may increase the weight of “L” by 30%. Or, if the player draws an “H,” the weighting module406may increase the weight of the letters “S,” “C,” “T,” “P,” “G,” and “W” by 30%. The weighting module406may change the percentage chance of drawing a letter anywhere from +0 to +100%.
In some embodiments, in addition to promoting letter draws that have synergy with previously drawn letters, the weighting module406may also lessen or eliminate the chance for the player to get two or more of any combination of the letters “Z,” “X,” “J,” or “Q.” Another rule managed by the rules module416may be to not allocate more than two of the following letters: “A,” “U,” “O,” “I,” “W,” and “H” and not to give more than one of the following letters: “K,” “Q,” “X,” and “J.” If a player draws a “J,” the weighting module406may increase the weight of “A” and “U” by 30% and decrease the weight of “I” by 30%. Finally, the weighting module406may adjust these draws based on new analysis received from the analysis module408for words played across the player community.
The related letter allocation method1000method may determine1010an occurrence relationship between a first letter and a second letter in a word. The game asset allocation module414may be involved in the method to allocate1020to the player an instance of the first letter based on the assigned distribution weight. In response to the allocation of the instance of the first letter, the method may adjust1030the distribution weight of the second letter by incorporating the weighting module406. In later game action the gameplay system205allocate1040to the player an instance of the second letter based on the adjusted distribution weight. The adjusted distribution weight assigned to the second letter may be greater than a prior distribution weight when the relationship between the two letters is synergistic and it may be desirable for the second letter to occur in word formation with the first letter. The complement may be true when the first letter is difficult to play in game action and having a second letter of similar playing difficulty would produce a significant obstacle to reasonable gameplay action.
FIG. 11is a flow chart illustrating a distribution by skill level method1100, in accordance with an example embodiment, to adjust distribution weights of alphabet letters according to player skill level. The distribution by skill level method1100may be performed by any of the modules, logic, or components described herein.
In some embodiments, the user profile module412may be used to implement a gameplay mechanism allowing a way for players having moderate skill levels to play competitively with highly skilled players. The moderately skilled player might typically take a handicap in match play with highly skilled players. Yet, for the moderately skilled player who still wants to compete with highly skilled players, the gameplay mechanism may still allow the players of disparate skill levels to compete in the same game and have a meaningful gaming experience. In some embodiments, the objective may be to make games more “even” than would be the case without the distribution by skill level method1100. Toward this end, the game promotion module410and the game asset distribution module400may work together to increase the chance of a lesser-skilled player drawing a certain letter to catch up with other, higher-skilled players.
In some embodiments, the user profile module412and the rules module416may combine to skew the letters such that it is really difficult for an expert player to score points against a neophyte. This is a mechanism that may be used in cases where someone of an advanced skill level desires to play someone of a much more modest skill level. For instance, a parent wanting to play against a young child would be in this situation. In these embodiments, the lesser-skilled player may selectively toggle the game asset weighting feature or, more generally, a game play balancing feature, to ensure a leveling of the competition.
Towards these ends, the distribution by skill level method1100may incorporate the user profile module412and the analysis module408in analyzing1110profile factors included in a user profile of the player. The analysis module408may then determine1120a skill level of the player based on the profile factors. The method may continue by adjusting1130, with the weighting module406, the respective distribution weights of the alphabet letters based on the skill level of the player. One profile factor used by the user profile module412and the analysis module408may be a game history of the player.
When the skill level of the player is determined to be higher than a predetermined threshold, adjusting the respective distribution weights of the alphabet letters may include increasing a distribution weight of high-point alphabet letters and decreasing a distribution weight of low-point alphabet letters. According to these adjusted distribution weights the highly skilled player will receive more draws of high-point alphabet letters which are relatively more difficult to use in word formations than low-point alphabet letters. Likewise, the highly skilled player will tend to receive fewer of the low-point alphabet letters which are relatively easier to play in the formation of words. In this way, the highly skilled player will be challenged to accomplish the formation of words in game action. The more highly skilled a player may be the more accentuated the adjustments to the respective distribution weights of high-point alphabet letters and low-point alphabet letters may be to contribute to normalizing gameplay with the less-skilled player.
The advantages of this feature include the balancing of game play in games, particularly word games, where a memorizable knowledge set of a dictionary puts some players at a significant advantage over other players, and particularly new players. The advantages of this draw-shaping system (i.e., distribution weight adjustment system) lie in its adaptability: analysis and player requests coupled with this system can help to create more engaging play sessions with higher player retention and a reduced frequency of player frustration. Players who feel “beat down” in a game tend to not want to play again, and this system helps to mitigate some of this feeling.
FIG. 12is a flow chart illustrating a promotional campaign method1200, in accordance with an example embodiment, to adjust distribution weights of letters occurring in a promotional word. The promotional campaign method1200may be performed by any of the modules, logic, or components described herein.
In some embodiments, one or there may be a special type of gameplay, the game promotion module410may stack the letter tray such that a player may play a keyword related to a theme. For example, if there is a contest with a soda manufacturer, the game promotion module410may weight certain letters occurring in promotional words more heavily so as to provide more letters to the player to spell the name of that soda manufacturer or the name of a particular drink product.
The “draw-shaping” by adjusting distribution weights of certain letters can help to facilitate new and engaging avenues of advertising, such as promoting an opportunity to spell key words being promoted by the advertiser. The shaping of letter draws with distribution weight adjustments is subtle and would not necessarily be observable by any player in the game. The effect though may be more frequent formation of the promotional words. As a result, more overall participation in an ad campaign by players may be accomplished.
The method may start out with the gameplay system205receiving1210and an indication of a promotional word being featured in a promotional campaign. The gameplay system205may continue implementing the method by adjusting1220the respective distribution weight of each letter occurring within the promotional word with the weighting module406. The method may continue by allocating1230to a player an instance of any of the letters occurring within the promotional word based on the adjusted distribution weights of the letters occurring in a promotional word(s). The adjusted distribution weights of the letters occurring within the promotional word(s), is greater than a prior distribution weight. In this way the game asset distribution module400may provide a higher likelihood that promotional words will be played in a word game during an advertising campaign and that players are highly motivated to participate in the campaign.
FIG. 13is a flow chart illustrating a losing player allotment method1300, in accordance with an example embodiment, to adjust distribution weights of letters to be allocated to a losing player. The losing player allotment method1300may be performed by any of the modules, logic, or components described herein.
In some embodiments, it may be an objective of the game to enhance the experience of a losing player especially during the endgame or closing plays of the game. In some embodiments, any one of the analysis module408, the rules module416, and the game promotion module410may be used to increase a losing player's chance of drawing powerful game tiles, such as a “Q,” “J,” “X,” which are worth many points in some word games. This type of enhancement of a game may help to provide higher scoring opportunities for the losing player but may not be useful unless the losing player is of a skill level capable of readily turning the high-point letters into word formations.
In some embodiments, the game promotion module410may allocate or weight certain letters by comparing a word list (having a significantly large number of possible words) to the layout of the board to assess what possible word formations are prospectively available in further game play. Tiles that a player needs to build a high-scoring word or which are needed to play words that allow the player's tile rack to be emptied prior to the end of the game may be preferentially allocated. The player still has to know how to build the words and have the appropriate skill level for doing so.
For example, in some word games, it could be guaranteed that a player can put a word on the board every time. Such guarantees may satisfy a need since in some games, if the player has remaining tiles at the end of a game, the sum of the letters' point values are counted against the player. This negative and possibly dejecting result at the end of the game may be a point of confusion or disappointment on the part of a losing player. A game objective may be to not allow the drawing of certain tiles by a player if the letters on those tiles are already on the player's letter rack. It may also be an objective of the game to add tiles that would improve a user's chances of forming a word that is assured of appearing in a dictionary. In each case, one of the benefits provided by the system is that users assume letter draws are random, yet the gameplay system205may subtly shape the distribution weights of letters to promote engaging gameplay.
The losing player allotment method1300may commence with the gameplay system205receiving1310an indication of a number of remaining letters within a game being less than or equal to a predetermined threshold. The determination of this number of remaining letters indicates the game is entering a state of play commonly known as the endgame. The predetermined threshold may be implemented according to the rules module416and the indication may be made in conjunction with the analysis module408in some embodiments. In this way the game asset distribution module400may effectively track the state of gameplay and determine that the endgame has commenced. The method may continue by utilizing the analysis module408in analyzing1320a set of played words including all words having been played in a course of game actions within the game.
The method may again incorporate the rules module416in determining1330a prospective word formation including a corresponding set of prospective letters. The prospective word formation is capable of being played by the losing player among the set of played words with the prospective letters that occur within the remaining letters. The method may incorporate the weighting module406in adjusting1340the respective distribution weight of each letter in the set of prospective letters. The adjusted distribution weights are greater than the prior corresponding distribution weights of the respective letters.
The method continues by determining1350a losing player as that particular player that has a point score lower than any further player within the game. The method may incorporate the game asset allocation module414in allocating1360to the losing player an instance of at least one letter from the set of prospective letters based on the adjusted distribution weight.
FIG. 14is a flow chart illustrating a prospective distribution method1400, in accordance with an example embodiment, to adjust distribution weights of letters within prospective word formations. The prospective distribution method1400may be performed by any of the modules, logic, or components described herein.
In some embodiments, the analysis module408, in conjunction with the weighting module406, may allocate or weight certain letters by comparing a list of possible words to the layout of the board, including all of the played words, and only allocate letters that a player needs to build certain of the possible words capable of being played in the present game. The player would still have to know how to build the available words. For example, the analysis module408may be utilized in analyzing1410a set of played words including all words having been played in a course of game actions in the game. The analysis module408may also be utilized in determining1420a prospective word formation being situated among the set of played words. Next, the weighting module406may be involved in adjusting1430the distribution weight of a letter occurring within the prospective word formation. The adjusted distribution weight of the letter may be adjusted by the weighting module406to be greater than a prior distribution weight assigned to the letter. In this way, the distribution weight of letters occurring in prospective words, that are capable of being played in the game, are adjusted so that the player has a higher probability of receiving these letters in a further game action and therefore have the highest potential for forming one of the prospective words.
FIG. 15is a flow chart illustrating a minimum word method1500, in accordance with an example embodiment, to maintain a minimum number of prospective word formations. The minimum word method1500may be performed by any of the modules, logic, or components described herein.
In some word games, the game promotion module410and the game asset allocation module414may ensure the possibility of forming at least one word or possibly forming at least an 8-letter word (though the player would still have to perceive the possibility of playing the word and take action to play the word in each case). These word formation possibilities are ensured by discarding certain of the player's present letters and reallocating further letters until the player's tile rack includes a mix of tiles that can be arranged into an 8-letter word (or at least one word).
A further possible general objective of the game may be to guarantee a minimum number of potential words being playable by the player on any given turn. The weighting module406, the game promotion module410, and the game asset allocation module414may be responsible to enforce the condition, for example, that there has to be at least ten words the player may prospectively make. If the letters in player's tile rack do not meet the condition, certain letters may be discarded and further replacement letters allocated. In some embodiments, weighting conditions may be based on popularity of certain words in general gameplay, as determined by analysis obtained by the analysis module408, so people that are novices may still get tiles that provide a minimum of 5 common words.
In some embodiments, either the rules module416or the game promotion module410may weight and allocate certain letters toward the objective of a player having a minimum word-play possibility by comparing a word list to the layout of the board and only allocating the tiles that a player needs to make a playable word formation. The player would still have to know how to build the word. The assurance that the player may be able to at least make a minimum number of word formations in each turn helps to minimize the number of remaining tiles that are not used at the end of a game. This helps to minimize the point total of the remaining tiles that may be accumulated and counted against the player (discussed above).
The minimum word method1500may commence with the analysis module408determining1510a word list including all words prospectively playable in a further game action and analyzing1520a set of remaining letters available to the player in formation of a further word. The analysis module408may be further utilized in determining1530a number of words prospectively playable by the player in further game action utilizing the word list and the set of remaining letters. The method may culminate with the game asset allocation module414reallocating1540at least one letter when the number of words prospectively playable by the player is less than a predetermined threshold. In this way, the game asset distribution module400may ensure that an optimal number of word formations are playable by the player by assessing possible playable words, determining the number of those words that are prospectively playable by the player, and managing the reallocation of letters to fulfill the optimization of possible word formations.
FIG. 16is a flow chart illustrating a distribution ratio maintenance method1600, in accordance with an example embodiment, to maintain a predetermined distribution ratio of vowels-to-consonants. The distribution ratio maintenance method1600may be performed by any of the modules, logic, or components described herein.
An objective of the gameplay system205to increase or decrease the length of words that are formed by players. Toward this objective, the game asset distribution module400may increase or decrease letter percentages by adjusting the corresponding distribution weights of the letters (and therefore adjust the probability of a player drawing the corresponding letters) in the desired percentages. An additional, yet related objective of the game may be to ensure that a certain ratio of vowels-to-consonants is maintained in order to optimize the scope of available word formations to the players. By maintaining the predetermined ratio of vowels-to-consonants, ensuring that the set of prospective word formations available to the player is broad enough to satisfy the overarching objective of word length in gameplay is significantly easier.
In order to meet these objectives the ratio maintenance method1600may commence with the gameplay system205receiving1610a vowel as a replacement letter into a letter tray corresponding to the player. Receipt of the vowel may produce a vowel-consonant ratio greater than a predetermined distribution ratio. The game asset distribution module400may reallocate1620the replacement letter with another letter utilizing the game asset allocation module414. The method may proceed by suspending1630the reallocation of the replacement letter when a consonant is received. Receipt of the consonant at this point in the game assures that the vowel-consonant ratio is reestablished.
In embodiments of some word games, two letter bags, one populated only with vowels and the other with only consonants, may be used. Separating vowels and consonants into separate bags permits the game asset distribution module402to specify, when tiles are drawn, that a mix of letters facilitating and easing word formation is maintained. In some embodiments, four vowels and eight consonants are drawn, though this number may be made to be extremely variable. In some embodiments, the random generator module404may select or draw a random number of tiles from each bag. For example, the random generator module404may select or provide six to nine consonants, with the remaining slots to fill the player's tile rack being filled with vowels. An objective may be to ensure the player always has a tile-mix that allows them to easily build words. This concept can also be used to help balance gameplay among players with differing skill levels, which may help a disadvantaged layer remain competitive with opponents of a higher skill level.
In further word game embodiments played with languages other than English, the rules above may change. Changes required in the rules may be determined through measuring the words played in analysis provided by the analysis module408and provided to the rules module416for implementation with a different language. For example, rules utilized in the implementation of the method to reduce successive allocations of the same letter may simply have letters occurring in the alternate language implemented in the rule maintained by the rules module416. According to further embodiments, the rules incorporated in producing the method to allocate letters occurring in relationship within a word may again simply have related letter sets occurring in the alternate language provided to the rules module416. Generally the tasks of adjusting distribution weights and allocating letters provided by the weighting module406and the game asset allocation module414are fundamentally the same for the methods presented here to be implemented in the alternate language as they were for the English language. An adaptation for the appropriate words and corresponding letters of the alternate language need only be provided to modules such as the analysis module400a and a rules module416, for example, in order to provide the same results in the alternate language that these methods provided with the English language.
The adaptations to accommodate an alternate language may also include non-letter asset tiles for example, according to some embodiments; an alternate language may incorporate characters such as a hyphen in word formation. These game assets may be included within the methods described above and as prescribed by the alternate language in order to accomplish acceptable word formation within the alternate language and be able to use the methods described above.
Modules, Components and Logic
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied (1) on a non-transitory machine-readable medium or (2) in a transmission signal) or hardware-implemented modules. A hardware-implemented module is tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more processors may be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
In various embodiments, a hardware-implemented module may be implemented mechanically or electronically. For example, a hardware-implemented module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware-implemented module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware-implemented module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily or transitorily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, where the hardware-implemented modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware-implemented modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
Hardware-implemented modules can provide information to, and receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules may be regarded as being communicatively coupled. Where multiple of such hardware-implemented modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module may perform an operation, and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware-implemented module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware-implemented modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., Application Program Interfaces (APIs).)
Electronic Apparatus and System
Example embodiments may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Example embodiments may be implemented using a computer program product, e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
In example embodiments, operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and apparatus of example embodiments may be implemented as, special purpose logic circuitry, e.g., a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that that both hardware and software architectures require consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware may be a design choice. Below are set out hardware (e.g., machine) and software architectures that may be deployed, in various example embodiments.
Machine Architecture
FIG. 17is a block diagram of machine in the example form of a computer system1700within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer system1700includes a processor1702(e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory1704and a static memory1706, which communicate with each other via a bus1708. The computer system1700may further include a video display unit1710(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system1700also includes an alphanumeric input device1712(e.g., a keyboard), a user interface (UI) navigation device1714(e.g., a mouse), a disk drive unit1716, a signal generation device1718(e.g., a speaker) and a network interface device1720.
Machine-Readable Medium
The disk drive unit1716includes a machine-readable medium1722on which is stored one or more sets of instructions and data structures (e.g., software)1724embodying or utilized by any one or more of the methodologies or functions described herein. The instructions1724may also reside, completely or at least partially, within the main memory1704and/or within the processor1702during execution thereof by the computer system1700, the main memory1704and the processor1702also constituting machine-readable media.
While the machine-readable medium1722is shown in an example embodiment to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions or data structures. The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, including by way of example semiconductor memory devices, e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
Transmission Medium
The instructions1724may further be transmitted or received over a communications network1726using a transmission medium. The instructions1724may be transmitted using the network interface device1720and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), the Internet, mobile telephone networks, Plain Old Telephone (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.
Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof, show by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
Such embodiments of the inventive subject matter may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
Although the present invention has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Plural instances may be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores may be somewhat arbitrary, and particular operations may be illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the invention(s).
One or more features from any embodiment may be combined with one or more features of any other embodiment without departing from the scope of the disclosure.
A recitation of “a”, “an,” or “the” is intended to mean “one or more” unless specifically indicated to the contrary. In addition, it is to be understood that functional operations, such as “awarding,” “locating,” “permitting,” and the like, are executed by game application logic that accesses, and/or causes changes to, various data attribute values maintained in a database or other memory.
In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one. In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. Furthermore, all publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this document and those documents so incorporated by reference, the usage in the incorporated reference(s) should be considered supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls.
The present disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend. Similarly, where appropriate, the appended claims encompass all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend.
For example, the methods, game features, and game mechanics described herein may be implemented using hardware components, software components, and/or any combination thereof. By way of example, while embodiments of the present disclosure have been described as operating in connection with a networking website, various embodiments of the present disclosure can be used in connection with any communications facility that supports web applications. Furthermore, in some embodiments the term “web service” and “website” may be used interchangeably and additionally may refer to a custom or generalized API on a device, such as a mobile device (e.g., cellular phone, smart phone, personal GPS, personal digital assistance, personal gaming device, etc.), that makes API calls directly to a server. Still further, while the embodiments described above operate with business-related virtual objects (such as stores and restaurants), the invention can be applied to any in-game asset around which a harvest mechanic is implemented, such as a virtual stove, a plot of land, and the like. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the disclosure as set forth in the claims and that the disclosure is intended to cover all modifications and equivalents within the scope of the following claims.
The Abstract of the Disclosure is provided to comply with rules requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Claims
- A computer-implemented method comprising: assigning, via at least one processor, to each alphabet letter a respective distribution weight according to a weighting rule of an online game, wherein each respective distribution weight reflects a frequency the corresponding alphabet letter, to which the respective distribution weight is assigned, is available for a game action in the online game of a game network server system;allocating based on respective assigned distribution weights, for availability in one or more game actions by a particular player, instances of each alphabet letter in a plurality of the alphabet letters;initiating display, to the particular player, of the allocated instances of each alphabet letter in a game interface of the online game;receiving a game action representing completion of a formation of a word, the word based on selection of a subset of the allocated instances of each alphabet letter;determining a losing player being the particular player having a point score in the online game lower than any further player within the online game, wherein each further player has a respective social network connection in a social network server system with the particular player;based on determining the losing player being the particular player: determining a number of remaining instances of the alphabet letters, available for distribution, and yet to be allocated to the losing player, in accordance to the respective distribution weights and the plurality of alphabet letters previously allocated to the losing player;determining the number of the remaining instances of the alphabet letters is less than or equal to a predetermined threshold;comparing a set of played words based on one or more words previously formed in one or more game action selected by the losing player in the online game;determining a prospective word formation, in a subset of the remaining instances of the alphabet letters, matches at least one of the words previously formed;adjusting the respective distribution weight of each letter in the subset of the remaining instances of the alphabet letters, the adjusted respective distribution weight being greater than a prior corresponding distribution weight.
- The method of claim 1 , further comprising: prior to determining the losing player being the particular player: adjusting the respective distribution weights of the alphabet letters based on the weighting rule;allocating an instance of at least one further alphabet letter according to the adjusted distribution weights;incorporating display of the instance of the at least one further alphabet letter into the display of the allocated instances of each alphabet letter in the game interface of the online game;and receiving from the particular player a further game action representing completion of a formation of a further word that includes the instance of the at least one further alphabet letter.
- The method of claim 1 , further comprising: allocating an instance of a further letter to the player based on the distribution weight;responsive to the allocation of the instance of the further letter, adjusting the distribution weight of the further letter according to the weighting rule;and allocating an additional instance of the further letter to the player based on the adjusted distribution weight;wherein the adjusted distribution weight is less than a prior distribution weight assigned to the further letter.
- The method of claim 1 , further comprising: determining an occurrence relationship between a first letter and a second letter in a further word;allocating to the player an instance of the first letter based on the assigned distribution weight;responsive to the allocation of the instance of the first letter, adjusting the distribution weight of the second letter;and allocating to the player an instance of the second letter based on the adjusted distribution weight, wherein the adjusted distribution weight is greater than a prior distribution weight assigned to the second letter.
- The method of claim 1 , further comprising: analyzing profile factors included in a user profile of the player;determining a skill level of the player based on the profile factors;and adjusting the respective distribution weights of the alphabet letters based on the skill level of the player, wherein a profile factor is a game history and the adjusting the respective distribution weights includes increasing a distribution weight of high-point alphabet letters and decreasing a distribution weight of low-point alphabet letters when the skill level of the player is determined to be higher than a predetermined threshold, and wherein a high-point alphabet letter is relatively more difficult to use in word formations than a low-point alphabet letter.
- The method of claim 1 , further comprising: receiving an indication of a promotional word being featured in a promotional campaign;adjusting the respective distribution weight of each letter occurring within the promotional word;and allocating an instance of at least one letter of the each letter occurring within the promotional word based on the adjusted distribution weight, wherein, for each letter occurring within the promotional word, the adjusted distribution weight is greater than a prior distribution weight and an instance is allocated to one of the player and a further player.
- The method of claim 1 , further comprising: analyzing a set of played words including all words having been played in a course of game actions in the game;determining a prospective word formation being situated among the set of played words;and adjusting the distribution weight of a letter occurring within the prospective word formation, wherein the adjusted distribution weight of the letter is greater than a prior distribution weight assigned to the letter.
- The method of claim 1 , further comprising: determining a word list including all words prospectively playable in a further game action;analyzing a set of remaining letters available to the player in formation of a further word;determining a number of words prospectively playable by the player in further game action utilizing the word list and the set of remaining letters;and reallocating at least one letter when the number of words prospectively playable by the player is less than a predetermined threshold.
- The method of claim 1 , further comprising: receiving a vowel as a replacement letter into a letter tray corresponding to the player, the vowel producing a vowel-consonant ratio greater than a predetermined distribution ratio;reallocating the replacement letter;and suspending the reallocation of the replacement letter when a consonant is received.
- A non-transitory machine-readable storage medium embodying a set of instructions that, when executed by at least one processor, causes the at least one processor to perform operations comprising: assigning to each alphabet letter a respective distribution weight according to a weighting rule of an online game, wherein each respective distribution weight reflects a frequency the corresponding alphabet letter, to which the respective distribution weight is assigned, is available for a game action in the online game of a game network server system;allocating based on respective assigned distribution weights, for availability in one or more game actions by a particular player, instances of each alphabet letter in a plurality of the alphabet letters;initiating display, to the particular player, of the allocated instances of each alphabet letter in a game interface of the online game;receiving a game action representing completion of a formation of a word, the word based on selection of a subset of the allocated instances of each alphabet letter;determining a losing player being the particular player having a point score in the online game lower than any further player within the online game, wherein each further player has a respective social network connection in a social network server system with the particular player;based on determining the losing player being the particular player: determining a number of remaining instances of the alphabet letters, available for distribution and yet to be allocated to the losing player, in accordance to the respective distribution weights and the plurality of alphabet letters previously allocated to the losing player;determining the number of the remaining instances of the alphabet letters is less than or equal to a predetermined threshold;comparing a set of played words based on one or more words previously formed in one or more game action selected by the losing player in the online game;determining a prospective word formation, in a subset of the remaining instances of the alphabet letters, matches at least one of the words previously formed;adjusting the respective distribution weight of each letter in the subset of the remaining instances of the alphabet letters, the adjusted respective distribution weight being greater than a prior corresponding distribution weight.
- The non-transitory machine-readable storage medium of claim 10 , the operations further comprising: prior to determining the losing player being the particular player: adjusting the respective distribution weights of the alphabet letters based on the weighting rule;allocating an instance of at least one further alphabet letter according to the adjusted distribution weights;incorporating display of the instance of the at least one further alphabet letter into the display of the allocated instances of each alphabet letter in the game interface of the online game;and receiving from the particular player a further game action representing completion of a formation of a further word-that includes the instance of the at least one further alphabet letter.
- The machine-readable storage medium of claim 10 , the operations further comprising: allocating an instance of a further letter to the player based on the distribution weight;responsive to the allocation of the instance of the further letter, adjusting the distribution weight of the further letter according to the weighting rule;and allocating an additional instance of the further letter to the player based on the adjusted distribution weight, wherein the adjusted distribution weight is less than a prior distribution weight assigned to the further letter.
- The machine-readable storage medium of claim 10 , the operations further comprising: determining an occurrence relationship between a first letter and a second letter in a further word;allocating to the player an instance of the first letter based on the assigned distribution weight;responsive to the allocation of the instance of the first letter, adjusting the distribution weight of the second letter;and allocating to the player an instance of the second letter based on the adjusted distribution weight, wherein the adjusted distribution weight is greater than a prior distribution weight assigned to the second letter.
- The machine-readable storage medium of claim 10 , the operations further comprising: analyzing profile factors included in a user profile of the player;determining a skill level of the player based on the profile factors;and adjusting the respective distribution weights of the alphabet letters based on the skill level of the player, wherein the profile factor is a game history and the adjusting the respective distribution weights includes increasing a distribution weight of high-point alphabet letters and decreasing a distribution weight of low-point alphabet letters when the skill level of the player is determined to be higher than a predetermined threshold, and wherein a high-point alphabet letter is relatively more difficult to use in word formations than a low-point alphabet letter.
- The machine-readable storage medium of claim 10 , the operations further comprising: receiving an indication of a promotional word being featured in a promotional campaign;adjusting the respective distribution weight of each letter occurring within the promotional word;and allocating an instance of at least one letter of the each letter occurring within the promotional word based on the adjusted distribution weight, wherein, for each letter occurring within the promotional word, the adjusted distribution weight is greater than a prior distribution weight and an instance is allocated to one of the player and a further player.
- The machine-readable storage medium of claim 10 , the operations further comprising: analyzing a set of played words including all words having been played in a course of game actions in the game;determining a prospective word formation being situated among the set of played words;and adjusting the distribution weight of a letter occurring within the prospective word formation, wherein the adjusted distribution weight of the letter is greater than a prior distribution weight assigned to the letter.
- The machine-readable storage medium of claim 10 , the operations further comprising: determining a word list including all words prospectively playable in a further game action;analyzing a set of remaining letters available to the player in formation of a further word;determining a number of words prospectively playable by the player in further game action utilizing the word list and the set of remaining letters;and reallocating at least one letter when the number of words prospectively playable by the player is less than a predetermined threshold.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.
