Online multi-player services for video games such as the XBOX LIVE® service (Microsoft Corporation, Redmond, Wash.) allow gamers anywhere in the world to play with and against each other. Online multi-player services enable users to interact with each other within the gaming service.
Electronic commerce systems strive to connect a user to items and/or services likely to be of interest to the user. For example, an electronic commerce system may present recommendations, suggestions, related items and/or services, or the like to the user. The user may also be shown contextual advertisements similar to the item or service being viewed.
These electronic commerce systems generally use make recommendations based on the user's buying/viewing history, the clustering of purchases made by others at the site, recommendations made by strangers to the user, and the like. However, these legacy recommendation techniques do not leverage the unique information available in the environment of an online multi-player gaming service that captures aspects of the natural social network developed within the online multi-player gaming service. The art of targeted recommendations may be improved by leveraging this unique information about the relationships of like minded users.
The disclosed methods and systems leverage the preferences of users in an on-line multiplayer gaming environment and the natural social-networking relationships among those users to provide recommendations, such as e-commerce recommendations. To illustrate, a first user and a second user may connect to an on-line multiplayer gaming environment. Once connected, the users may interact with the gaming environment and/or each other within the gaming environment.
Activity that indicates a relationship between a first user and second user may be tracked. The activity may be indicative of an interaction between the first user and the second user within the on-line multiplayer gaming environment. For example, the first user and the second user may have played a game together, may have listed each other as friends within the gaming environment, may have participated in a common on-line chat within the gaming environment, or the like. The users may transfer game data to each other, may play the same instance of the same game, may transfer text, audio or video communications with each other, or the like.
An e-commerce preference of the second user may be received. The e-commerce preference may be associated with a product and/or service that the second user has purchased and/or used. For example, the e-commerce preference may be associated with a game that the second user regularly plays within the gaming environment.
The activity between the first and second user as well as the e-commence preference of the second user may be used to determine a recommendation for the first user. The recommendation may be sent to the first user in a format compatible with an access device of the first user. For example, the access device may include a gaming console and the recommendation may include a link to a recommended product, such as a downloadable game within the gaming environment.
Because the first user and the second user may have an established relationship within the natural social network of an on-line multiplayer gaming environment, it is more likely that they have common interests, hobbies, beliefs, values, etc. Thus, it is more likely that a recommendation based on the preferences of a second user will be more relevant to the first user and more effective at connecting the first user with a desired product and/or service.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail. Those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting.
The systems, methods, and computer readable media for making recommendations to users of an online multi-player gaming service via a computerized gaming environment based on that user's behavior and social networks in accordance with this specification are further described with reference to the accompanying drawings in which:
Certain specific details are set forth in the following description and figures to provide a thorough understanding of various embodiments. Those of ordinary skill in the relevant art will understand that they can practice other embodiments without one or more of the details described below. While various methods are described with reference to steps and sequences in the following disclosure, the description as such is for providing a clear implementation of embodiments of the invention, and the steps and sequences of steps should not be taken as required.
An access device 112, 114 is a computing device which a user 110, 114 may use to connect to an online multi-player gaming environment 100. This may comprise a dedicated video game console, a general purpose computer which is configured to play games online, a portable digital media player which is configured to play simple games, a cellular telephone or personal data assistant which is configured to play simple games, or the like. Through the access device 112, 116, a user 110, 114 is able to access the online multi-player gaming environment 100 and engage in activities thereon.
The online multi-player gaming environment 100 is an environment that comprises services that enable users to interact with one another. For example, a user may play a game with or against another user, chat with another user via audio, video and text (both in real-time and asynchronously), post to a message board, view audio or video, and otherwise participate in the services offered by the service. As a result of users interacting via the environment, social networks may be formed. A social network is a social structure made of nodes (which are generally individuals or organizations) that are tied by one or more specific types of interdependency, such as values, visions, idea, financial exchange, friends, kinship, dislike, conflict, trade, and web links. These network connections may be both explicit, such as when two users add each other to a list of “friends” kept by the server, or implicit, such as when two users post to the same message board, though do not explicitly direct their messages at each other.
A component of an online multi-player gaming environment may be an e-commerce server 104. This provides the functionality that allows a user to search for, learn about, and purchase an item. The item may be an entire game, additional content for a game like a new map on which to play, video content, music, and the like. Included in the functionality of purchasing an item is the functionality of interfacing with financial institutions to transfer funds to pay for a purchase. The e-commerce server may be a web server separate from the online multi-player gaming environment.
Another component of an online multi-player gaming environment may be a gaming server 102. This gaming sever may allow a user to find other users playing the same game, establish an instance of the game with each other, and to enable the mutual play of the game. The gaming server may also track such things as a user's high score, the best users in a game, tournament play, and a user's record against another user. In one embodiment, the gaming server assists a user in finding other users to play a game with, initializes the game according to the chosen parameters, and then monitors all communication between players while the game occurs. In another embodiment, the gaming server assists a user in finding other users to play a game with, initializes the game according to the chosen parameters, and then the users communicate independent of the game server during game play.
An e-commerce activity or preference of a second user may comprise an item the second user has searched for, an item the second user has viewed the details of, an item the second user has rated, an item the second user has read reviews of and an item the second user has purchased. Data indicative of the first user's online activity may comprise a game that the first user plays, a video that the first user watches, a content that the first user purchases, a service that the first user uses, and a preferred language of the first user. Data indicative of a second user's preference may comprise a game that the second user plays, a video that the second user watches, a content that the second user purchases, a service that the second user uses, and a preferred language of the second user.
A recommendation server 106 may take both data indicative of a first user's online activity 118 drawn from the first user's access device 112 as well as data indicative of a second user's preference 120 drawn from a second user's access device 116 to determine a recommendation 112 which is then sent to the first user. The recommendation server takes this data and from it determines a recommendation which comprises an item offered by the service in which the first user is likely to be interested. The recommendation may comprise a friend to add to a friends list, a video to watch, a song to hear, a game to play, a competition in which to engage, a group to which to subscribe, and an opponent to play a game against. For example, the recommendation server may take the first user's friends list, and data that many of the users on that friends list have downloaded a new game to make a recommendation of that new game to the first user.
There exists with the recommendation server 200, which may be a component of an online multi-player gaming environment, a bi-directional communication link with a first user's access device 202. This device may comprise a gaming console, a cellular telephone, a personal data assistant, a general purpose computer, and a portable digital music player that is capable of playing simple games.
While interacting with the online multi-playing gaming environment, the user will convey behavioral data which is collected by the behavioral data collection component 204. This behavioral data may be the entirety of the information conveyed by the first user to the environment, such as which sections of the environment the user views, which videos the user watches, and which games the user plays. The behavioral data may also be e-commerce behavior.
The behavioral data is then sent from the behavioral data collection component to the behavioral data cleansing and aggregation component 206. This component may determine which portion of the data is valuable in making a recommendation, and pass only that data along. For instance, in one embodiment, it may not be useful in making a recommendation to know how much time the user has spent viewing a particular section of the environment, only that the user has viewed that section. In such a case, the behavioral data cleansing and aggregation component would pass along from that data the information about which sections the user viewed, but not how long the user spent viewing each section.
The behavioral data cleansing and aggregation component then sends the cleaned data to a data analytics and inference engine 214. The engine takes this information, along with information from a user database 208, an item database 210 and a games database to assign relative weights to each item in the item database, where the relative weight represents the likelihood that the first user will be interested in the item. The user database 208 may comprise a collection of users, noting which ones have relationships with the first user and the nature of such relationship, as well as preferences of each user regarding items. The item database 210 may comprise a collection of items offered by the recommendation server, such as a game, a video, a song, a user to befriend, and supplemental content to a game, as well as information that describes each item, such as a title, descriptive text, and a preview. The games database may comprise a list of games that may be played on the online multi-player gaming environment, and also games that may be downloaded to an access device and played independent of the environment.
The data analytics and reference engine 214 then sends its weighted results to a recommendation component 216. The recommendation component takes that information, along with the user database 208, the item database 210 and the games database 212 and may use that information to determine a recommended item to return to the first user via the first user access device 202. In one embodiment, the recommendation component may return to the first user the item which the first user is most likely to desire. In another embodiment, the recommendation component may return to the first user a plurality of items which comprise those items that the user is likely to be interested in. For example, the recommendation may comprise a link to purchase the item, descriptive text about the item, a title for the item, a preview of the item, reviews of the item, and where appropriate, the item itself.
At 300 the process flow begins. The process may be triggered in response to a determination that a first user is using the online-multiplayer gaming service, for example.
At 302, activity of the first user within an online multiplayer gaming environment may be tracked. The activity may include logging into the online multiplayer gaming environment selecting aspects of a game to play, such as game maps and/or levels to play. The activity may include selecting characteristics that modify game play such as music, game options, difficulty levels, and the like. The activity may include operations that interact with other users of the online multiplayer gaming environment. For example, the activity may include online chatting, collaborative game play, message postings, and the like.
The activity may be indicative of a relationship between the first user and a second user. For example, the first and second user may play each other in an online match. The first and second user may chat with each other. The first and second user may play with other users in common. The first and second user may have similar game options and/or difficulty levels. The first and second user may be part of the same online grouping or team.
In an embodiment, the activity may include playing games that the first and second user play with or against each other. The activity may include audio, video and text communications directly between the first user and the second user. The activity may include interactions with mutual friends. The activity may include presenting videos, music, message boards, etc. that are common to both the first user and the second user.
The tracking may include storing data about the activity in a database. The storing may include filtering the data about the activity such that the data is indicative of an interaction between the first user and the second user.
The interaction between the first user and the second user could comprise an explicit interaction. For example, the two users may add each other to their respective friends lists, may play a game with or against each other, may post to the same thread on a message board, and/or may have a direct conversation with each other, such as over instant messaging, audio, and/or video chat. The interaction between the first user and the second user could also be implicit of a relationship. For example, they could share a mutual friend, have played the same game, watched the same video, log in from the same time zone, share a default language preference, or rated something the same level.
The interaction between the first user and the second may occur in real-time, such as during an audio or video chat session, or playing a game together, or asynchronously, such as when the first user posts to a message board while the second user is not using the environment, and the second user later responds on that message board while the first user is not using the environment.
At 304, first data that is indicative of a preference of the second user may be received, for example, at the recommendation engine. In an embodiment, the first data comprises a game that the second user plays, a video that the second user watches, a content that the second user purchases, a service that the second user uses, and a preferred language of the second user. Additionally, the preference of the second user may also comprise preferences as manifested by any of gaming activities of the second user within the gaming environment, e-commerce activities of the second user within the gaming environment, e-commerce activities of the second user outside of gaming the environment, and social activities of the second user within the environment.
A preference of the second user may be explicit. Such an explicit preference may comprise answering a survey, rating a product, message board post, video, game or user, or voting for or against something in a poll. A preference of the second user may also be implicit. Such an implicit preference may comprise playing a specific game, playing a specific game often, viewing content, and spending a large portion of time on a specific portion of the environment.
A preference of the second user may originate in the gaming system. Such a preference that originates in the gaming system may comprise downloading a map for a game, playing a game against a particular user, and playing a game. A preference of the second user may also originate outside the gaming system. Such a preference that originates outside the gaming system may comprise searching for, and purchasing a product from an e-commerce website.
At 306, a recommendation based on the first data and the activity may be determined. The recommendation may suggest a course of action for the first user. For example, the recommendation may recommend a friend to add to a friends list, a game to play, a competition in which to engage, a group to which to subscribe, and an opponent to play a game against.
The online multi-player gaming environment may determine a plurality of recommendations suitable for the first user. The recommendation presented to the user may be selected as the most relevant of the determined recommendations.
In an embodiment, determining the recommendation may include receiving a data indicative of a preference of the first user and basing the recommendation on the preference of the first user. The preferences of the first user may help provide better results, like where the first user has shown a strong preference away from obtaining new game maps for games the user possesses.
Furthermore, in an embodiment, the recommendation may be determined determining the recommendation based on any of a characteristic of a social network of the first user, a behavior of a third user connected to the first user via the second user, and a characteristic of the first user's gaming environment, or the like. The additional data about the first user may be help provide better results.
The recommendation may be determined based on the communications capabilities of an access device associated with the first user. The access device could comprise a gaming console, a cellular telephone, a personal data assistant, a general purpose computer, and a portable digital music player. For example, where the first user is using an portable digital music player that has the capability to play simple games, it may be preferable to make the recommendation either a song or a simple game—things that can be used with the portable digital music player.
In an embodiment, the recommendation could comprise a suggestion for a course of action for the first user. This course of action could be to visit a message board with content that might be of interest to the first user, or to use the service at a certain time, when users of a similar skill level at a game frequently play that game.
In an embodiment, determining the recommendation may be based on any of a characteristic of a social network of the first user, a behavior of a third user connected to the first user via the second user, and a characteristic of the first user's gaming environment
In one embodiment, determining the recommendation comprises determining the recommendation based on a characteristic of a social network of the second user. The characteristic of a social network of the second user may comprise any of a quantity of friends associated with the second user, feedback from other users about the second user, behavior of friends of the second user, and behavior of friends of the second user's friends.
In one embodiment, this operation also includes receiving a request for the recommendation from the first user. The first user may click on a link that indicates that the user wishes to see which game maps are recommended to that user, or when viewing such a map may click on a link to display similar maps that the user might like. In both of those instances, such action comprises a request by the first user to receive a recommendation that is sent to the online multi-player gaming environment.
The recommendation system may employ an information filtering algorithm to determine the recommendation based on the activity and the first data about the preferences of the second user. The information filtering algorithm may include collaborative filtering methods that coordinate multiple inputs from multiple sources to formulate a recommendation. For example, the information filtering algorithm may be a slope-one algorithm.
At 308, the recommendation may be sent to the first user. The recommendation may include a descriptive object. The descriptive object may be selected to be compatible with the communications capabilities of the first user's access device. For example, the descriptive object may include descriptive text, price, title, length, an image of the recommendation, a preview of the recommendation, a rating of the quality level of the recommendation, a rating of the age-appropriateness of the recommendation, or the like.
The recommendation may include additional content. For example, where a song is recommended, a short sample of the song may be included in the recommendation. The recommendation may further include a descriptive object containing the text that describes the song, genre information, artist information, the song name, a photograph of the artist or album from which the song is drawn, the length of the song, a sample of an accompanying music video to the song, and other such information.
The descriptive object may be selected based on the compatibility of the first user's access device. For example, the first user's access device may include a gaming console, a cellular telephone, a personal data assistant, a general purpose computer, and a portable digital music player. To illustrate, where the first user is using an portable digital music player that has the capability to play audio files, the descriptive object might include towards audio information. Similarly, where the first user's access device has limited communications bandwidth, the selected descriptive object may have a complementary small storage size. In an embodiment, the recommendation may be sent to the first user responsive to a request from the first user for the recommendation. The first user may not wish to receive unsolicited recommendations, but may welcome one when he or she initiates the process.
In an embodiment, the recommendation may include a link to a product. For example, the link may be a hyperlink in accordance with the hypertext markup language (HTML), eXtensible markup language (XML), or the like. The link may facilitate a purchase of a product and/or service in accordance with the recommendation.
There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems may be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many of such networks are coupled to the Internet, which provides the infrastructure for widely distributed computing and may encompass many different networks. Aspects of various embodiments could be usable to distribute computer-readable instructions, code fragments, applications, and the like, to various distributed computing devices.
An example of a known network configuration is the Microsoft Xbox® networking service. Microsoft Xbox® consoles support home network connections to a service called Xbox LIVE®. Xbox LIVE® is an online network developed by Microsoft that enables Xbox® game systems to play with or against other Xbox® users over the Internet or other network. The service allows players to communicate verbally, maintains scoreboards, etc. The connection allows for multi-player Internet contact.
The network infrastructure enables a host of network topologies such as client/server, peer-to-peer, or hybrid architectures. The client is a member of a class or group that uses the services of another class or group to which it is not related. Thus, in computing, a client may be a process (i.e., a set of instructions or tasks) that requests a service provided by another program. The client process may utilize the requested service without having to know any working details about the other program or the service itself. In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer (i.e., a server). A server may be a remote computer system accessible over a remote network such as, for example, the Internet. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server.
Clients and servers may communicate with one another using the functionality provided by a protocol layer. For example, Hypertext-Transfer Protocol (HTTP) is a common protocol that is used in conjunction with the World Wide Web (WWW). A computer network address such as a Uniform Resource Locator (URL) or an Internet Protocol (IP) address may be used to identify the server or client computers to each other. Communication among computing devices may be provided over a communications medium. In particular, the client and server may be operatively coupled to one another by way of TCP/IP connections for high-capacity communication.
In general, the computer network may comprise both server devices and client devices deployed in a network environment (in a peer-to-peer environment devices may be both clients and servers). Communications network 460 may be a LAN, WAN, intranet or the Internet, or any combination thereof that facilitates communication among a number of computing devices 400a-400e. Moreover, communication network 460 may comprise wireless, wired or a combination of wireless and wired connections. Additionally, the computer network may comprise a distributed computing environment. In such an environment, a computing task may be spread over a number of computing devices that are addressable elements in a computer network.
According to an embodiment, communication network 460 may host a network service 450 that is accessible from the plurality of computers 400a-400e. The network service 450 may gather information and track users of computers 400a-400e to provide computing services for the users of service 450.
Game console 500 has a central processing unit (CPU) 501 having a level 1 (L1) cache 502, a level 2 (L2) cache 504, and a flash ROM (Read-only Memory) 506. The level 1 cache 502 and level 2 cache 504 temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput. The flash ROM 506 can store executable code that is loaded during an initial phase of a boot process when the game console 500 is initially powered. Alternatively, the executable code that is loaded during the initial boot phase can be stored in a FLASH memory device (not shown). Further, ROM 506 can be located separate from CPU 501. Game console 500 can, optionally, be a multi-processor system; for example game console 500 can have three processors 501, 503, and 505, where processors 503 and 505 have similar or identical components to processor 501.
A graphics processing unit (GPU) 508 and a video encoder/video codec (coder/decoder) 514 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit 508 to the video encoder/video codec 514 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 540 for transmission to a television or other display device. A memory controller 510 is connected to the GPU 508 and CPU 501 to facilitate processor access to various types of memory 512, such as, but not limited to, a RAM (Random Access Memory).
Processor 500 may include an I/O controller 520, a system management controller 522, an audio processing unit 523, a network interface controller 524, a first USB host controller 526, a second USB controller 528 and a front panel I/O subassembly 530 that may be implemented on a module 518. The USB controllers 526 and 528 serve as hosts for peripheral controllers 542(1)-842(2), a wireless adapter 548, and an external memory unit 546 (e.g., flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface 524 and/or wireless adapter 548 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.
System memory 543 may store application data that is loaded during the boot process. A media drive 544 may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 544 may be internal or external to the game console 500. When media drive 544 is a drive or reader for removable media (such as removable optical disks, or flash cartridges), then media drive 544 is an example of an interface onto which (or into which) media are mountable for reading. The media drive 544 may access the application data 544 for execution, playback, etc. by game console 500. The media drive 544 may be connected to the I/O controller 520 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394). While media drive 544 may generally refer to various storage embodiments (e.g., hard disk, removable optical disk drive, etc.), game console 500 may specifically include a hard disk 552, which can be used to store game data, application data, or other types of data.
The system management controller 522 may provide a variety of service functions related to assuring availability of the game console 500. The audio processing unit 523 and an audio codec 532 may form a corresponding audio processing pipeline with high fidelity, 3D, surround, and stereo audio processing according to aspects of the present subject matter described herein. A communication link may carry audio data between the audio processing unit 523 and the audio codec 526. The audio processing pipeline outputs data to the A/V port 540 for reproduction by an external audio player or device having audio capabilities.
The front panel I/O subassembly 530 supports the functionality of the power button 550 and the eject button 552, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the game console 500. A system power supply module 536 may provide power to the components of the game console 500. A fan 538 may cool the circuitry within the game console 500.
The interconnection between the CPU 501, GPU 508, memory controller 510, and various other components within the game console 500 may be via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures.
When the game console 500 is powered on or rebooted, application data can be loaded from the system memory 543 into memory 512 and/or caches 502, 504 and executed on the CPU 501. The application can present a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console 500. In operation, applications and/or other media contained within the media drive 544 may be launched or played from the media drive 544 to provide additional functionalities to the game console 500.
The game console 500 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the game console 500 may allow one or more users to interact with the system, watch movies, listen to music, and the like. However, with the integration of broadband connectivity made available through the network interface 524 or the wireless adapter 548, the game console 500 may further be operated as a participant in a larger network community.
A computer system can be roughly divided into three component groups: the hardware component, the hardware/software interface system component, and the applications programs component (also referred to as the “user component” or “software component”). In various embodiments of a computer system the hardware component may comprise the central processing unit (CPU) 521, the memory (both ROM 564 and RAM 525), the basic input/output system (BIOS) 566, and various input/output (I/O) devices such as a keyboard 540, a mouse 562, a monitor 547, and/or a printer (not shown), among other things. The hardware component comprises the basic physical infrastructure for the computer system.
Computer 641 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computer 641, and includes both volatile and nonvolatile media, removable and non-removable media. By way of example and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, random access memory (RAM), read-only memory (ROM), electronically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 641.
Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 622 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 623 and random access memory (RAM) 660. A basic input/output system 624 (BIOS), containing the basic routines that help to transfer information between elements within computer 641, such as during start-up, is typically stored in ROM 623. RAM 660 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 659. By way of example and not limitation,
The computer 641 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 641 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 646. The remote computer 646 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 641, although only a memory storage device 647 has been illustrated in
When used in a LAN networking environment, the computer 641 is connected to the LAN 645 through a network interface or adapter 637. When used in a WAN networking environment, the computer 641 typically includes a modem 650 or other means for establishing communications over the WAN 649, such as the Internet. The modem 650, which may be internal or external, may be connected to the system bus 621 via the user input interface 636, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 641, or portions thereof, may be stored in the remote memory storage device. By way of example and not limitation,
It should be understood that the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatus of the presently disclosed subject matter, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the presently disclosed subject matter. In the case of program code execution on programmable computers, the computing device generally includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs may implement or utilize the processes described in connection with the presently disclosed subject matter, e.g., through the use of an API, reusable controls, or the like. Such programs are preferably implemented in a high-level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and may be combined with hardware implementations.
Then, the data analytics and inference engine 714 takes information about items contained in the item database 710 as well as information aggregated from the first user's behavior, as well as existing information about the first user, his or her friends, and his or her social network. This data analytics and inference engine 714 determines amongst all relevant items in the item database 710, the best recommendation for the first user, given his or her past behaviors well as the behavior of his or her friends in his social networks. For example, if all of the first user's friends have purchased a certain game's additional map and the first user has not, the likelihood of the first user purchasing that map is much higher than him or her buying an item in which no one in his or her network has show interest.
The recommendation component 716 takes the calculated relevance of each recommendable item from the data analytics and inference engine 714 and combines it with data from the user database 708, item database 710 and games database 712 in order to determine a recommendation to send to the first user. In one embodiment, this recommendation is the recommendation determined to be most helpful to the user. Along with the recommendation can be sent meta-data about the recommendation. For example, where the recommendation is a song, an image of the artist or album associated with the song, as well as text covering the song name, the artist name, the album name, the length of the song, similar artists, and a description of the song may be sent along with a link to purchase the item. This recommendation is then returned to the first user.
The processor 700 can be implemented as a client processor and/or a server processor. In a basic configuration, the processor 700 can include at least one processing portion 702 and memory portion 704. The memory portion 704 can store any information utilized in conjunction with media reliability. Depending upon the exact configuration and type of processor, the memory portion 704 can be volatile (such as RAM) 708, non-volatile (such as ROM, flash memory, etc.) 710, or a combination thereof. The processor 700 may include both removable storage 712 and non-removable storage 714 including, but not limited to, magnetic or optical disks, tape, flash, smart cards or the like. Computer storage media, such as memory portions 704, 708, 710, 712, and 714, may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, universal serial bus (USB) compatible memory, smart cards, or any other medium which can be used to store the desired information and which can be accessed by the processor 700. Any such computer storage media can be part of the processor 700.
The processor 700 can also contain communications connection(s) 720 that allow the processor 700 to communicate with other devices. Communications connection(s) 720 is an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and may include any information delivery media. Modulated data signal may compose a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein may include both storage media and communication media. The processor 700 also can have input device(s) 718 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 716 such as a display, speakers, printer, etc. also can be included.