Method and apparatus for assigning users to virtual world servers based on social connectivity
The method and apparatus optimize virtual world server connections by ranking servers based on social connectivity, ensuring users interact with friends and like-minded individuals, addressing scalability and interaction limitations in existing systems.
Patent Information
- Application Number
- JP2025536225
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-12-20
- Filing Date
- 2023-12-20
- Publication Date
- 2026-01-21
AI Technical Summary
Existing virtual world server architectures struggle to efficiently connect users based on social connectivity, leading to users being placed with strangers rather than friends or individuals with common interests, limiting interaction opportunities and scalability.
A method and apparatus that rank virtual world servers based on social network connectivity data, using friendship graphs to connect users to servers that maximize interaction with friends and individuals with common interests, while considering parameters like security, proximity, and bandwidth.
Enhances user interaction by placing users in virtual worlds with friends and like-minded individuals, improving scalability and user experience by optimizing server allocation based on social connections.
Smart Images

Figure 2026502138000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a method and apparatus for receiving a request to connect a client device to one of a plurality of virtual world servers, ranking the plurality of virtual world servers, and connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking. Summary of the Invention [Means for solving the problem]
[0002] A live experience in a 3D social world is essentially a massively multiplayer online game (MMOG). MMOGs are typically delivered using a client-server architecture. The server holds the master copy of all mutable objects (anything that can be changed in the game) and avatars and maintains comprehensive knowledge of the game world. Clients connect to the server and receive necessary information about the game world. Clients implement changes to secondary copies or replicas of mutable objects, while the server arbitrates the results based on all client input (e.g., the first event to modify its master copy). All player updates and interactions are sent to the server for execution and conflict resolution, and the server is responsible for sending object updates to all participating players after the updates are executed. A drawback of this approach is that even the best-provisioned server can support only a limited number of players. Each user added to the server increases simulation computation and network traffic. A common solution to improve scalability is to add multiple servers. However, this may lead to users who are not currently active in the social world being placed in the social world based on system considerations rather than friendship connections in the virtual world. Thus, there is a need in the industry to provide methods and arrangements that allow users to join virtual worlds with other users (e.g., friends and / or users with common interests).
[0003] Described below are methods and apparatus for connecting a client device to a virtual world server of a plurality of virtual world servers based on rankings of the plurality of virtual world servers.
[0004] In some embodiments, a method is provided in which a request to connect a client device to one of a plurality of virtual world servers is received (e.g., by control circuitry coupled to a communications path and a memory). Following this, the control circuitry accesses social network connectivity data of a user account associated with the client device and subsequently identifies a plurality of other user accounts based on the social network connectivity data. The plurality of virtual world servers are then ranked (e.g., by the control circuitry) based on connections with devices associated with the plurality of other user accounts. The client device is then connected to a virtual world server of the plurality of virtual world servers based on the ranking.
[0005] In some embodiments, identifying the plurality of other user accounts based on the social network connectivity data further includes receiving metadata from the server, determining a friendship graph comprising the plurality of other users from the metadata, and determining an online friendship graph comprising a subset of the plurality of other users from the metadata. In some embodiments, ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further includes determining a static online friendship graph from the metadata or determining a dynamic online friendship graph from the metadata.
[0006] In some embodiments, the online friendship graph may comprise a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendships between each of the plurality of users. In some embodiments, the static online friendship graph may further comprise a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user, and a first node for the first user and a second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user. In some embodiments, the static node may further comprise a first node for the first user and a second node for the second user joined by n vertices representing an n-hop friendship connection between the first user and the second user, where the one-hop friendship connection represents a close friendship and the friendship level decreases with each hop. In the dynamic online friendship graph, each vertex between two nodes can be given a weight to determine the level of friendship, where the weight is determined based on any one of the duration of interaction between the two users, the frequency of interaction between the two users, and / or the activeness of interaction between the two users, with a higher weight representing a close friendship and a lower weight representing a less close friendship.
[0007] In some embodiments, ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts may further include determining a level of friendship between the user at each virtual world server of the plurality of world servers and each of the plurality of users based on a level of friendship between the user of the client device and each of the plurality of users in the online friendship graph. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts may further include ranking each of the plurality of virtual world servers based on a number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking.
[0008] In some embodiments, at least one behavioral characteristic of the plurality of users can be determined from the metadata. The at least one behavioral characteristic may comprise any one of a period of time spent online, a period of time spent in any one of the plurality of virtual world servers, and / or the plurality of users' level of interaction with other users. Subsequently, based on the at least one behavioral characteristic, it can be determined that at least one of the plurality of users in the connected virtual world server is a lurker. If it is determined that at least one of the plurality of users in the connected virtual world server is a lurker, the system can remove the lurker while calculating connectivity in the online friendship graph. For example, a request can be transmitted to disconnect the lurker's client device from the virtual world server. Subsequently, a request can be transmitted to reconnect the lurker's client device to a different one of the plurality of virtual world servers. If the spot occupied by the lurker in a different one of the plurality of virtual world servers is needed for a different client device (e.g., a non-lurker), the lurker's client device can be reconnected to yet another one of the plurality of virtual servers. That is, another request can be sent to disconnect the lurker's client device from a different one of the plurality of virtual world servers, followed by a request to connect the lurker's client device to a different one of the plurality of virtual world servers. If at least one of the plurality of parameters (e.g., security, proximity, and bandwidth requirements) of the different virtual world servers is within a predetermined threshold, connecting the lurker's client device to any one of the plurality of virtual world servers is performed.
[0009] In some embodiments, connecting the client device to a virtual world server of the plurality of virtual world servers based on the rankings can further include identifying at least one parameter for each of the plurality of virtual world servers, determining a virtual world server of the plurality of virtual world servers with the highest ranking, connecting the client device to the virtual world server with the highest ranking if the at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold, and connecting the client device to a virtual world server with a lower ranking if the at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold. The at least one parameter can comprise any one of a security threshold, a proximity threshold, and a bandwidth threshold.
[0010] In some embodiments, each of a plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold can be identified based on the at least one parameter identified for each of the plurality of virtual servers. Subsequently, each of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold can be presented for display based on a ranking of the plurality of virtual world servers. User input can be received at a client device, and subsequently, the client device can be connected (based on the user input) to a virtual world server of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold.
[0011] In some embodiments, following connecting a client device to a virtual world server of a plurality of world servers, a loss of connection between the client device and a virtual world server of the plurality of virtual world servers can be determined. If the loss of connection is below a predetermined threshold period, the client device can be connected to the same virtual world server of the plurality of world servers. If the loss of connection is above a predetermined threshold period, the client device can be connected to a different virtual world server of the plurality of world servers.
[0012] In some embodiments, an apparatus is provided that includes a memory that stores instructions, a communication path, and control circuitry coupled to the communication path and the memory. The control circuitry is configured to execute the instructions to connect a client device to one of a plurality of virtual world servers. Following this, the control circuitry accesses social network connectivity data of a user account associated with the client device and subsequently identifies a plurality of other user accounts based on the social network connectivity data. The plurality of virtual world servers are then ranked (e.g., by the control circuitry) based on connections with devices associated with the plurality of other user accounts. The client device is then connected to a virtual world server of the plurality of virtual world servers based on the ranking.
[0013] It should be noted that the methods, apparatus, and / or aspects described above may be applied to or used in accordance with other systems, methods, apparatus, and / or aspects described in this disclosure. [Brief explanation of the drawings]
[0014] The present disclosure, according to one or more various embodiments, will be described in detail with reference to the following figures. The figures are provided for illustrative purposes only and merely depict typical or exemplary embodiments. These figures are provided to facilitate understanding of the concepts disclosed herein and are not to be considered as limiting the scope, scope, or applicability of these concepts. It should be noted that for clarity and ease of illustration, these figures have not necessarily been made to scale.
[0015] The above and other objects and advantages of the present disclosure may become apparent upon consideration of the following detailed description taken in conjunction with the accompanying drawings.
[0016] [Figure 1]FIG. 1 illustrates an example scenario of assigning users to a virtual world based on social connectivity, according to some embodiments of the present disclosure.
[0017] [Figure 2] FIG. 2 illustrates an exemplary online friendship graph at a server, according to some embodiments of the present disclosure.
[0018] [Figure 3] FIG. 3 illustrates shard-based servers and region-based servers according to some embodiments of the present disclosure.
[0019] [Figure 4] FIG. 4 illustrates an example system for assigning users to virtual worlds based on social connectedness, according to some embodiments of the present disclosure.
[0020] [Figure 5] FIG. 5 shows a block diagram of a media device and control circuitry including a processor and memory according to some embodiments of the disclosure.
[0021] [Figure 6] FIG. 6 shows a block diagram of an illustrative media system according to some embodiments of the disclosure.
[0022] [Figure 7] FIG. 7 shows a flowchart of illustrative steps involved in assigning users to virtual worlds based on social connectedness, according to some embodiments of the present disclosure.
[0023] [Figure 8] FIG. 8 shows another flowchart of illustrative steps involved in assigning users to virtual worlds based on social connectedness, according to some embodiments of the present disclosure.
[0024] [Figure 9]FIG. 9 shows another flowchart of illustrative steps involved in assigning users to virtual worlds based on social connectedness, according to some embodiments of the present disclosure.
[0025] [Figure 10] FIG. 10 shows another flowchart of illustrative steps involved in assigning users to virtual worlds based on social connectedness, according to some embodiments of the present disclosure.
[0026] [Figure 11] FIG. 11 illustrates an exemplary lifecycle of a friendship relationship between two users, according to some embodiments of the present disclosure.
[0027] [Figure 12] 12A and 12B illustrate two separate servers for demonstrating new users joining a virtual world, according to some embodiments of the present disclosure.
[0028] [Figure 13] FIG. 13 illustrates a user interface that is involved in maximizing the possibilities for user interaction, according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0029] Detailed Description
[0006] Described herein are methods and apparatus for connecting a client device to a virtual world server of a plurality of virtual world servers based on a ranking of the plurality of virtual world servers. The disclosed methods and systems may be implemented on one or more computing devices. As referred to in this specification, a computing device may be any device that comprises a processor and memory, such as a television, a smart television, a set-top box, an integrated receiver decoder (IRD) for handling satellite television, a digital storage device, a digital media receiver (DMR), a digital media adapter (DMA), a streaming media device, a DVD player, a DVD recorder, a connected DVD, a local media server, a BLU-RAY® player, a BLU-RAY® recorder, a personal computer (PC), a laptop computer, a tablet computer, a WebTV box, a personal computer television (PC / TV), a PC media server, a PC media center, a handheld computer, a landline telephone, a personal digital assistant (PDA), a mobile telephone, a portable video player, a portable music player, a portable game console, a smartphone, a smartwatch, an augmented reality device, a mixed reality device, a virtual reality device, or any other television, computing, or wireless device, and / or combinations thereof.
[0030] The methods and / or any instructions for implementing any of the embodiments discussed herein may be encoded on a computer-readable medium. A computer-readable medium includes any medium capable of storing data. A computer-readable medium may be transient, including but not limited to a propagating electrical or electromagnetic signal, or non-transitory, including but not limited to volatile and non-volatile computer memory or storage devices such as hard disks, floppy disks, USB drives, DVDs, CDs, media cards, register memory, processor cache, random access memory (RAM), solid-state drives (SSD), etc.
[0031] Live experiences in the Metaverse social world are delivered by virtual machines, such as gaming servers. Typically, a single server can handle a small number of users (e.g., 20-200), each of whom has an avatar moving around in space. To handle a large number of users, such as in a virtual reality (VR) concert, a load balancer (e.g., as described below) can assign different users to different servers so that the load across the servers is evenly distributed. In this way, the load balancer can balance the computational load of the simulation as well as the ingress and egress traffic (e.g., bandwidth requirements). A problem with this approach is that only users assigned to the same server can interact with each other. Users can either be invited to participate in a live social experience with friends, or they can be grouped with strangers.
[0032] An example of a live social experience is a virtual concert in VR within a social world (e.g., VRChat and Horizon Venues). Another example could be the exploration of a virtual world (e.g., Decentraland and Sandbox). In a related but dissimilar example, users may set up a private server (e.g., Minecraft) and interact with each other while excluding strangers from participating. Another example is a virtual concert platform (e.g., from Wave) that uses broadcast technology to allow artists to perform live for their fans around the world through different digital channels. Artists transform into digital avatars on a virtual stage, customized to accurately represent the artist's style and actions. Fans also appear as avatars in the audience and can chat with other spectators around them using VR and PC desktop apps (e.g., accessible using Oculus Rift, Windows Mixed Reality, and other devices). Such concerts could have record-breaking audience numbers of 10 million or more concurrent users. However, with current technology, only a limited number of users (typically 100 at a time) within a virtual concert platform can see and interact with others around them. This limitation of 100 at a time comes from the capacity of a single server to handle only a limited number of users.
[0033] 1 illustrates an exemplary scenario 100 for assigning a new user 102 to a virtual world 108 based on social connectivity and system considerations, according to some embodiments of the present disclosure. For example, when a new user 102 decides to join a virtual world 108, the user's 102's social connectivity may be determined by mapping the user's online friendship graph 104 and using the online friendship graph to determine candidate servers. Further details regarding the online friendship graph 104 are described below with reference to FIGS. 2, 7-10, and 11. Once a candidate server is found, a second process can take place in which the candidate server's parameters (e.g., security, proximity, and bandwidth requirements) are checked. If the candidate server's parameters are determined to be acceptable for a live experience, the user 102 is added to the virtual world 108 using the allocated server. If the parameters of a candidate server are determined to be unacceptable for a live experience (e.g., a secure link cannot be established, the servers are too far away, and / or the bandwidth does not meet minimum threshold requirements), the candidate server is deemed unavailable and a different candidate server is selected based on the online friendship graph.
[0034] Advantageously, a server architecture (e.g., a sharded multi-server architecture as described below with reference to FIG. 3) allows users to become part of a community in a social world without the need to create long and unmanageable friend lists in advance, which reflects real-world interactions between people.
[0035] 2 illustrates an exemplary online friendship graph 200 at a server according to some embodiments of the present disclosure. The online friendship graph 200 is a subset of a friendship graph, which models friendship relationships between multiple users in a virtual world 108, and the online friendship graph 200 represents multiple users in the friendship graph who are online at a given time (e.g., already in the virtual world 108 or otherwise currently active on social media or the Internet). The online friendship graph 200 is modeled based on nodes 202, 206 and vertices 204. The nodes 202, 206 represent users in the online friendship graph, and the vertices (or edges) 204 represent friendship relationships between the multiple users 202, 206. Within the multiple servers, each server may have its own online friendship graph 200, thereby allowing the online friendship graph (and therefore the multiple servers) to be ranked based on the number of friends and / or friendship closeness of the multiple users within the server relative to the new user (e.g., user 102).
[0036] The vertices 204 of the graph can be connected (e.g., there is a path from any vertex or user to any other vertex or user), or in rare cases, discrete. In FIG. 2, a connected graph is shown as an example; however, other graphs are also contemplated. Online friendship graph 200 shows that user 2, who is online, has friends 1 and 5 online. User 5 has friends 2, 7, and 6 online, and user 9 has friends 6, 4, and 8 online, all on the same server. When a user decides to dive into the social world and has not intentionally chosen to join friends in the social world (e.g., friends are not online, or the user prefers to interact with a community rather than friends), the system can select a server for him / her that maximizes the number of online users 202, 206 connected to the user in a maximum of n hops (n is a system parameter). The friendships in an online friendship graph (e.g., online friendship graph 200) can be measured as a static friendship graph, a dynamic friendship graph, or a combination of the two to allow for more flexible selection of candidate servers. Static friendship graphs and dynamic friendship graphs are described in more detail below.
[0037] As described in more detail below, when a load balancer selects a candidate server for a new user, it can combine parameters (e.g., security, proximity, and bandwidth requirements) along with the server's online friend relationship graph 200 to allocate a server to the new user 102. System parameters (or system policies) can be driven by server availability or quality of experience (QoE) parameters, or both. The load balancer can first maximize online users connected to the new user 102 within a maximum of n hops to determine a candidate server, and then check the server's parameters to ensure that the new user 102 will have a good experience on the selected candidate server. In doing so, the load balancer can maximize interaction opportunities while also ensuring that the new user 102 has an acceptable experience. If the first candidate server does not meet the parameter requirements, a second (e.g., next-best candidate) server can be selected using its online friend relationship graph 200. The parameters of the next best candidate server are checked again and the process is repeated until a server is found for the new user.
[0038] The online friendship graph 200 is maintained by a system (e.g., a server or multiple servers), which may be stored on a device (such as that described below with reference to FIG. 5), a server (such as that described below with reference to FIG. 6), or any combination thereof. The system models each of the friendships of multiple users in the virtual world 108 while also capturing their proximity (e.g., friendship closeness) to other users who may not be their friends. Each server's online friendship graph 200 is available to a load balancer. The load balancer can use these online friendship graphs to distribute new users 102 requesting to join the social world 108 to particular servers by maximizing the connectivity of the new users 102 with their online friends, friends of online friends, friends of friends of online friends, etc. As a corollary, when applied recursively, the load balancer can distribute new users 102 to servers without the first user having to specify the specific second user they wish to be with. Thus, interaction opportunities are maximized not only among online people who are one-hop connected (e.g., close friends) in the online friendship graph 200, but also among online people who are n-hop connected (e.g., with each new user, all servers mimic a community of connected users), which helps to encourage the creation of communities or cliques.
[0039] FIG. 3 illustrates two categories of multi-server architectures 300, namely, shard-based servers 302 and region-based servers 304, according to some embodiments of the present disclosure. In a shard-based server 302 (also known as "sharding"), several complete instances of a virtual world 108 (e.g., a game world) exist, also called shards. Each shard is maintained by a server. Every server serves a different set of clients (e.g., users) and has a complete copy of the virtual world 108. That is, each set of clients (e.g., users) and their servers follow a traditional client-server architecture. Typically, there is no need for communication between these servers. In a region-based server 304, there is only a single virtual world 108, which is divided into several regions (e.g., virtual regions). Each region is maintained by a separate server. Users are all in the same virtual world 108; however, in most virtual worlds 108, they can only interact with other users within the same region. Users are allowed to move between regions, but this requires support for a handoff mechanism between servers that can be transparent to the player.
[0040] Sharding 302 is primarily used as a multi-server architecture because it has several advantages over region-based techniques (e.g., predictably limiting the number of players can lead to a more predictable experience for controlling QoE (and lag)). Player handoff to another server (e.g., another region-based server 304) is often very cumbersome. Furthermore, if the virtual world 108 is not scalable, ensuring a more even distribution of users across regions in the game world can be difficult, and region-based techniques are not a good option. In virtual worlds 108, users typically collaborate in the metaverse to socially interact, transact, and virtually enjoy experiences as if they were physically together. These worlds, albeit in fantasy, are expected to model real-world human behavior. Real-world interactions are modeled as communities or peers, where people interact not only with their own friends but also with friends of friends or people they meet through others. When people jump into a metaverse or social world with only their friends in a region-based server 304 (as opposed to a community, which is possible within sharding 302), they miss the opportunity to interact with others and expand their circle of friends. This limits the usefulness of the metaverse platform. Social worlds allow users to associate their friends' accounts with their user account. By receiving invitations to join their friends' searches, users can then freely roam these social worlds with their friends. They can go to theme parks, casinos, or play other games while enjoying the company of their friends within a social metaverse like Decentraland or Sandbox. In some worlds, a user can form a "squad," and their friends can join them.A problem with the current shard-based server 302 structure is that if the new user 102's friends are not currently active in the social world, or if the new user 102 does not select specific friends or groups to join, the new user 102 will be dropped into the experience based on system considerations. Sharding 302 in combination with the use of load balancers as described above and below can enable new users 102 to join a virtual world 108 with friends or groups of people with common interests.
[0041] 4 illustrates an example system 400 for assigning users to a virtual world 108 based on social connectedness, according to some embodiments of the present disclosure. An application client 402 or end user 402 (e.g., a new user 102 joining the virtual world 108 as well as all other users in the virtual world 108) can send client-requested services to an application server 408 (e.g., as described below with reference to FIG. 6). Before the client-requested services are sent to the application server 408, they first reach the Internet 404 (e.g., a communications network as described below with reference to FIG. 6) and are then forwarded to a load balancer 406 (e.g., using a wired or wireless communication path). The load balancer 406 can be a hardware load balancer or a software load balancer. The load balancer 406 can match client requests to servers 408 based on configured parameters / policies. The parameters / policies are set based on various considerations, including security, location (proximity), ensuring that servers 408 are relatively equally loaded (i.e., one server is not overloaded with requests while others are idle), failover (redundancy), etc. The sharded multi-server architecture 302 can have parameters / policies based on which new users can be allocated to existing servers. As described above with reference to FIG. 2 and in more detail below, the friends and connections of a new user 102 can be modeled as a graph (e.g., online friend relationship graph 200). In addition to the parameters / policies, the online friend relationship graph 200 can be a further input to the load balancer 406 logic for selecting candidate servers 408 when a new user 102 requests to join the social world. This is described in more detail below with reference to FIGS. 7-11.
[0042] FIG. 5 shows a block diagram of a media device 500 and control circuitry including a processor and memory according to some embodiments of the present disclosure. A user (e.g., new user 102) may access media content from virtual world 108 on media device 500 from one or more of his or her user equipment devices 500. FIG. 5 shows a generalized embodiment of an illustrative user equipment device 500. A more specific implementation of a user equipment device is discussed below in connection with FIG. 6. User equipment device 500 may receive content and data via input / output ("I / O") path 502. I / O path 502 may provide content (e.g., broadcast programs, on-demand programs, Internet content, content available via a local area network (LAN) or wide area network (WAN), and / or other content) and data to control circuitry 504, which includes processing circuitry 506 and storage device 508. Control circuitry 504 may be used to send and receive commands, requests, and other suitable data using I / O path 502. I / O path 502 may connect control circuitry 504 (specifically, processing circuitry 506) to one or more communication paths (as described below with reference to FIG. 6). An I / O function may be provided by one or more of these communication paths, but is shown as a single path in FIG. 5 to avoid overcomplicating the drawing.
[0043] Control circuitry 504 may be based on any suitable processing circuitry, such as processing circuitry 506. As referred to herein, processing circuitry should be understood to mean circuitry that is based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc., and may include multi-core processors (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputers. In some embodiments, the processing circuitry may be distributed across multiple separate processors or processing units, for example, multiple processing units of the same type (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor).
[0044] In client / server-based embodiments, control circuitry 504 may include appropriate communications circuitry for communicating with a guidance application server or other network or server. Instructions for performing the above-referenced functionality may be stored on the guidance application server. The communications circuitry may include a cable modem, an Integrated Services Digital Network (ISDN) modem, a Digital Subscriber Line (DSL) modem, a telephone modem, an Ethernet card, a wireless modem for communicating with other equipment, or any other appropriate communications circuitry. Such communications may involve the Internet or any other appropriate communications network or path (described in more detail below in connection with FIG. 6). Additionally, the communications circuitry may include circuitry that enables peer-to-peer communication of user equipment devices or communication of user equipment devices at locations remote from each other (described in more detail below).
[0045] The memory may be an electronic storage device provided as storage device 508 that is part of control circuitry 504. In some embodiments, storage device 508 may be coupled to processing circuitry 506 (e.g., by an I / O communication path). As referred to herein, the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random access memory, read-only memory, a hard drive, an optical drive, a digital video disc (DVD) recorder, a compact disc (CD) recorder, a BLU-RAY® Disc (BD) recorder, a BLU-RAY 3D Disc recorder, a digital video recorder (DVR, sometimes called a personal video recorder or PVR), a solid-state device, a quantum storage device, a game console, game media, or any other suitable fixed or removable storage device, and / or any combination thereof. Storage device 508 may be used to store various types of content described herein, as well as media guidance data described below. Non-volatile memory may also be used (e.g., to invoke boot-up routines and other instructions). Cloud-based storage, described in connection with Figure 6, may be used to supplement or in place of storage device 508.
[0046] Control circuitry 504 may include video generation and tuning circuitry, such as one or more analog tuners, one or more MPEG-2 decoders or other digital decoding circuitry, high-definition tuners, or any other suitable tuning or video circuitry, or a combination of such circuitry. Encoding circuitry (e.g., for converting over-the-air, analog, or digital signals to MPEG signals for storage) may also be provided. Control circuitry 504 may also include scaling circuitry for upconverting and downconverting content to a preferred output format for user equipment 500. Control circuitry 504 may also include digital-to-analog and analog-to-digital converter circuitry for converting between digital and analog signals. The tuning and encoding circuitry may be used by the user equipment device to receive and display, play, or record content. The tuning and encoding circuitry may also be used to receive guide data. For example, the circuitry described herein, including tuning, video generation, encoding, decoding, encryption, decryption, scaling, and analog / digital circuitry, may be implemented using software running on one or more general-purpose or specialized processors. Multiple tuners may be provided to handle simultaneous tuning functions (e.g., watch and record functions, picture-in-picture (PIP) functions, multi-tuner recording, etc.). If storage 508 is provided as a device separate from user equipment 500, the tuning and encoding circuitry (including multiple tuners) may be associated with storage 508.
[0047] A user may send commands to control circuitry 504 using user input interface 510. User input interface 510 may be any suitable user interface, such as a remote control, a mouse, a trackball, a keypad, a keyboard, a touchscreen, a touchpad, a stylus input, a joystick, a voice recognition interface, or other user input interface. Display 512 may be provided as a stand-alone device or may be integrated with other elements of user equipment device 500. For example, display 512 may be a touchscreen or a touch-sensitive display. In such situations, user input interface 510 may be integrated with or combined with display 512. Display 512 may be one or more of a monitor, television, liquid crystal display (LCD) for a mobile device, amorphous silicon display, low-temperature polysilicon display, electronic ink display, electrophoretic display, active matrix display, electrowetting display, electrofluidic display, cathode ray tube display, light-emitting diode display, electroluminescent display, plasma display panel, high performance addressing display, thin film transistor display, organic light-emitting diode display, surface-conduction electron emitter display (SED), laser television, carbon nanotube, quantum dot display, interferometric modulator display, or any other suitable device for displaying visual images. In some embodiments, display 512 may be HDTV-compatible. In some embodiments, display 512 may be a 3D display, and the interactive media guide application and any suitable content may be displayed in 3D. A video or graphics card may generate output to display 512. The video card may provide various features such as accelerated rendering of 3D scenes and 2D graphics, MPEG-2 / MPEG-4 decoding, TV output, or the ability to connect multiple monitors.The video card may be any of the processing circuitry described above in connection with control circuitry 504. The video card may be integrated with control circuitry 504. Speakers 514 may be provided integrated with other elements of user equipment device 500 or may be a stand-alone unit. Audio components of video and other content displayed on display 512 may be played through speakers 514. In some embodiments, the audio may be distributed to a receiver (not shown), which processes and outputs the audio via speakers 514.
[0048] The guidance application may be implemented using any suitable architecture. For example, it may be a standalone application implemented entirely on user equipment device 500. In such an approach, the application's instructions are stored locally (e.g., in storage 508), and data for use by the application is periodically downloaded (e.g., from an out-of-band feed, from an Internet resource, or using another suitable approach). Control circuitry 504 may read the application's instructions from storage 508 and process the instructions to generate any of the displays discussed herein. Based on the processed instructions, control circuitry 504 may determine an action to perform when input is received from input interface 510. For example, up / down movement of a cursor on a display may be indicated by the processed instructions when input interface 510 indicates that the up / down button has been selected.
[0049] In some embodiments, the media guidance application is a client-server-based application. Data for use by a thick or thin client implemented on user equipment device 500 is retrieved on demand by issuing requests to a server remote from user equipment device 500. In one example of a client-server-based guidance application, control circuitry 504 runs a web browser that interprets web pages provided by a remote server. For example, the remote server may store instructions for the application in a storage device. The remote server may use circuitry (e.g., control circuitry 504) to process the stored instructions and generate the displays discussed above and below. The client device may receive displays generated by the remote server and display the content of the displays locally on equipment device 500. In this manner, the processing of instructions is performed remotely by a server, while the resulting displays are provided locally on equipment device 500. Equipment device 500 may receive inputs from a user via input interface 510 and transmit those inputs to a remote server for processing and generating corresponding displays. For example, the appliance device 500 may transmit a communication to the remote server indicating that the up / down button was selected via the input interface 510. The remote server may process instructions according to the input and generate a display of the application corresponding to the input (e.g., a display that moves the cursor up / down). The generated display is then transmitted to the appliance device 500 for presentation to the user.
[0050] In some embodiments, the media guidance application is downloaded and interpreted or otherwise run by an interpreter or virtual machine (run by control circuitry 504). In some embodiments, the guidance application may be encoded in ETV Binary Interchange Format (EBIF), received by control circuitry 504 as part of an appropriate feed, and interpreted by a user agent running on control circuitry 504. For example, the guidance application may be an EBIF application. In some embodiments, the guidance application may be defined by a series of JAVA-based files that are received and run by a local virtual machine or other suitable middleware executed by control circuitry 504. In some such embodiments (e.g., those employing MPEG-2 or other digital media encoding schemes), the guidance application may be encoded and transmitted, for example, in an MPEG-2 object carousel with scheduled MPEG audio and media items.
[0051] FIG. 6 is a block diagram of an illustrative media system 600 according to some embodiments of the disclosure that implements user devices (such as user device 500 as depicted in FIG. 5 above) as user television equipment 602, user computer equipment 604, wireless user communications device 606, or any other type of user equipment suitable for accessing content, such as a non-portable gaming console. User television equipment 602, user computer equipment 604, wireless user communications device 606, or any other type of user equipment suitable for accessing content may be substantially similar to user device 500 as described above with reference to FIG. 5. For simplicity, these devices may be collectively referred to herein as user equipment or user equipment devices and may be substantially similar to the user equipment devices described below. User equipment devices on which a media guidance application may be implemented may function as stand-alone devices or may be part of a network of devices. Various network configurations of devices may be implemented and are discussed in more detail below.
[0052] User equipment devices utilizing at least some of the system features described above in connection with FIG. 5 may not be classified simply as user television equipment 602, user computing equipment 604, or wireless user communications device 606. For example, user television equipment 602, like some user computing equipment 604, may be Internet-enabled, allowing access to Internet content, while user computing equipment 604, like some television equipment 602, may include a tuner, allowing access to television programs. The media guidance application may have the same layout on various different types of user equipment or may be tailored to the display capabilities of the user equipment. For example, on user computing equipment 604, the guidance application may be provided as a website accessed by a web browser. In another example, the guidance application may be scaled down for wireless user communications device 606.
[0053] In system 600, there will typically be more than one of each type of user equipment device, but to avoid overcomplicating the drawing, only one of each is shown in Figure 6. In addition, each user may utilize more than one type of user equipment device and also more than one of each type of user equipment device.
[0054] In some embodiments, a user equipment device (e.g., user television equipment 602, user computer equipment 604, wireless user communications device 606) may be referred to as a “second screen device.” For example, the second screen device may complement the content presented on the first user equipment device. The content presented on the second screen device may be any appropriate content that complements the content presented on the first device. In some embodiments, the second screen device provides an interface for adjusting settings and display preferences of the first device. In some embodiments, the second screen device is configured for interacting with other second screen devices or for interacting with a social network. The second screen device can be located in the same room as the first device, in a different room from the first device but in the same home or building, or in a different building from the first device.
[0055] Users may also set various settings to maintain consistent media guidance application settings across in-home and remote devices. Settings include those described herein as well as favorite channels and programs, program preferences utilized by the guidance application to recommend programs, display preferences, and other desired guidance settings. For example, if a user sets a channel as a favorite on their personal computer in their office, e.g., on the website www.allrovi.com, the same channel will appear as a favorite on the user's in-home devices (e.g., user television equipment and user computer equipment) and, if desired, on the user's mobile device. Thus, changes made on one user equipment device can change the guidance experience on another user equipment device, regardless of whether they are the same or different types of user equipment devices. Additionally, changes made may be based on settings entered by the user as well as user activity monitored by the guidance application.
[0056] User equipment devices may be coupled to communications network 614. That is, user television equipment 602, user computer equipment 604, and wireless user communications device 606 are coupled to communications network 614 via communications paths 608, 610, and 612, respectively. Communications network 614 may be one or more networks including the Internet, a mobile telephone network, a mobile voice or data network (e.g., a 4G or LTE network), a cable network, a public switched telephone network, or other types of communications networks, or a combination of communications networks. Paths 608, 610, and 612, separately or together, may include one or more communications paths, such as satellite paths, fiber optic paths, cable paths, paths supporting Internet communications (e.g., IPTV), free space connections (e.g., for broadcast or other wireless signals), or any other suitable wired or wireless communications paths, or a combination of such paths. Paths 608, 610, and 612 may each be wireless or wired paths. Communication with user equipment devices may be provided by one or more of these communication paths, but is shown in FIG. 6 as a single path per device to avoid overcomplicating the drawing.
[0057] Although communication paths are not depicted between the user equipment devices, these devices may communicate directly with each other via communication paths such as those described above in connection with paths 608, 610, and 612, as well as other short-range point-to-point communication paths such as a USB cable, an IEEE 1394 cable, a wireless path (e.g., Bluetooth, infrared, IEEE 802-1 1x, etc.), or other short-range communication via a wired or wireless path. BLUETOOTH is a certification mark owned by Bluetooth SIG, INC. User equipment devices may also communicate directly with each other through an indirect path via communications network 614.
[0058] System 600 includes a media content source 616 and a user account database 618, each coupled to a communications network 614 via a communications path 620. The user account database 618 may store multiple friendship graphs and online friendship graphs 200, as mentioned above and below with reference to FIG. 2. Path 620 may include any of the communications paths described above in connection with paths 608, 610, and 612. Communications with the media content source 616 and the user account database 618 may be exchanged via one or more communications paths, but are shown as a single path in FIG. 6 to avoid overcomplicating the drawing. Additionally, there may be more than one of each of the content source 616 and the user account database 618, but only one of each is shown in FIG. 6 to avoid overcomplicating the drawing. (Different types of each of these sources are discussed below.) If desired, the media content source 616 and the user account database 618 may be integrated as a single source device. Although communication between sources 616 and 618 and user equipment 602, 604, and 606 is shown as being through communications network 614, in some embodiments, sources 616 and 618 may communicate directly with user equipment 602, 604, and 606 via communications paths (not shown) such as those described above in connection with paths 608, 610, and 612.
[0059] Media content sources 616 may include one or more types of content distribution equipment, including television distribution facilities, cable system headends, satellite distribution facilities, programming sources (e.g., television broadcast companies such as NBC, ABC, HBO, etc.), intermediate distribution facilities and / or servers, Internet providers, on-demand media servers, and other content providers. NBC is a trademark owned by National Broadcasting Company, Inc., ABC is a trademark owned by American Broadcasting Company, INC., and HBO is a trademark owned by Home Box Office, Inc. Media content sources 616 may be content originators (e.g., television broadcast companies, webcast providers, etc.) or may not be content originators (e.g., on-demand content providers, Internet providers of broadcast schedule content for download, etc.). Media content sources 616 may include cable sources, satellite providers, on-demand providers, Internet providers, over-the-top content providers, or other content providers. Media content sources 616 may also include remote media servers used to store different types of content (including video content selected by users) at locations remote from any of the user equipment devices. Systems and methods for remotely storing content and providing remotely stored content to user equipment are discussed in more detail in connection with U.S. Pat. No. 7,761,892 to Ellis et al., issued July 20, 2010, which is incorporated herein by reference in its entirety.
[0060] A user account database 618 may optionally be coupled to the communications network 614 and may comprise a database of user accounts, their preferences, and the genres of media assets they are interested in. Each user account may update their preferences and genres of interest on the user preference database at any time. The user account database 618 may further comprise multiple friend relationship graphs for each of the multiple servers in the virtual world 108 and the online friend relationship graph 200, as described above.
[0061] Additionally, system 600 may include a media guidance data source (not shown). The media guidance data source is coupled to communications network 614 via communications path 620. Communications between media content source 616 and user account database 618 and the media guidance data source may be exchanged via one or more communications paths. The media guidance data source may provide media guidance data, such as the media guidance data described above and below. The media guidance data may be provided to user equipment devices using any suitable approach. In some embodiments, the guidance application may be a stand-alone interactive television program guide that receives program guide data via a data feed (e.g., a continuous feed or a trickle feed). Program schedule data and other guidance data may be provided to user equipment on a sideband of a television channel, using an in-band digital signal, using an out-of-band digital signal, or by any other suitable data transmission technique. Program schedule data and other media guidance data may be provided to user equipment on multiple analog or digital television channels.
[0062] In some embodiments, guidance data from a media guidance data source may be provided to a user's equipment using a client / server approach. For example, a user equipment device may pull media guidance data from a server, or the server may push media guidance data to the user equipment device. In some embodiments, a guidance application client resident on the user's equipment may initiate a session with the source and obtain the guidance data when needed, e.g., when the guidance data is out of date or when the user equipment device receives a request from the user to receive the data. Media guidance may be provided to the user equipment at any suitable frequency (e.g., continuously, daily, at a user-defined period, at a system-defined period, in response to a request from the user equipment, etc.). The media guidance data source may provide user equipment 602, 604, and 606 with the media guidance application itself or software updates for the media guidance application.
[0063] In some embodiments, media guidance data may include viewer data. For example, viewer data may include current and / or historical user activity information (e.g., the content a user typically views, the time of day the user views content, whether the user interacts with social networks, the time the user interacts with social networks and posts information, the type of content the user typically views (e.g., pay TV or free TV), mood, brain activity information, etc.). Media guidance data may also include subscription data. For example, subscription data may identify sources or services to which a given user subscribes and / or sources or services to which a given user previously subscribed but later discontinued access (e.g., whether the user subscribed to premium channels, whether the user added premium level services, whether the user increased their internet speed). In some embodiments, viewer data and / or subscription data may identify patterns for a given user over a period of more than one year. Media guidance data may include models (e.g., survivorship models) used to generate a score indicative of the likelihood that a given user will terminate access to a service / source. For example, the media guidance application may process the viewer data along with the subscription data in conjunction with a model to generate a value or score that indicates the likelihood that a given user will terminate access to a particular service or source. In particular, a higher score may indicate a higher level of confidence that the user will terminate access to a particular service or source. Based on the score, the media guidance application may generate promotions that encourage the user to retain the particular service or source that the score indicates as one that the user will likely terminate access to.
[0064] The media guidance application may be, for example, a stand-alone application implemented on the user equipment device. For example, the media guidance application may be implemented as software or a set of executable instructions that may be stored in storage 508 and executed by control circuitry 504 of user equipment device 500. In some embodiments, the media guidance application may be a client-server application, where only the client application resides on the user equipment device and the server application resides on a remote server. For example, the media guidance application may be implemented partially as a client application on control circuitry 504 of user equipment device 500 and partially on a remote server as a server application (e.g., a media guidance data source) running on the remote server's control circuitry. When executed by the control circuitry of the remote server (such as the media guidance data source), the media guidance application may instruct the control circuitry to generate a guidance application display and transmit the generated display to the user equipment device. The server application may instruct the media guidance data source's control circuitry to transmit the data for storage on the user equipment. The client application may instruct the receiving user equipment's control circuitry to generate a guidance application display.
[0065] The content and / or media guidance data delivered to user equipment 602, 604, and 606 may be over-the-top (OTT) content. OTT content delivery allows internet-enabled user devices, including any of the user equipment devices described below, to receive content transmitted over the internet, including any of the content described above, in addition to content received via cable or satellite connections. OTT content is delivered over an internet connection provided by an internet service provider (ISP), although third parties also distribute the content. ISPs may not be involved in viewing capabilities, copyright, or redistribution of the content and may only transmit IP packets provided by the OTT content provider. Examples of OTT content providers include YOUTUBE®, NETFLIX, and HULU, which provide audio and video over IP packets. YouTube® is a trademark owned by Google Inc., Netflix is a trademark owned by Netflix Inc., and Hulu is a trademark owned by Hulu, LLC. OTT content providers may additionally or alternatively provide the media guidance data described above. In addition to the content and / or media guidance data, the provider of the OTT content may distribute a media guidance application (e.g., a web-based application or a cloud-based application), or the content may be displayed by a media guidance application stored on the user equipment device.
[0066] Media guidance system 600 is intended to illustrate several approaches or network configurations whereby user equipment devices and sources of content and guidance data may communicate with one another for purposes of accessing content and providing media guidance. The embodiments described herein may be applied in any one or subset of these approaches, or in systems employing other approaches for delivering content and providing media guidance. The following four approaches provide specific illustrations of the generalized example of FIG. 6:
[0067] In one approach, user equipment devices may communicate with each other within a home network. The user equipment devices can communicate with each other directly via the short-range point-to-point communication scheme described above, via an indirect path through a hub or other similar device provided on the home network, or via communications network 614. Multiple individuals within a single household may each operate different user equipment devices on the home network. As a result, it may be desirable for various media guidance information or settings to be communicated between different user equipment devices. For example, as described in more detail in U.S. Patent Publication No. 2005 / 0251827 to Ellis et al., filed July 11, 2005 (herein incorporated by reference in its entirety), it may be desirable for a user to maintain consistent media guidance application settings on different user equipment devices within a home network. Different types of user equipment devices within a home network may also communicate with each other and transfer content. For example, a user may transfer content from a user computer device to a portable video player or a portable music player.
[0068] In the second approach, users may have multiple types of user equipment through which they access content and obtain media guidance. For example, some users may have a home network accessed by in-home and mobile devices. Users may control their in-home devices through a media guidance application implemented on a remote device. For example, users may access an online media guidance application on a website through a personal computer in their office or a mobile device such as a PDA or web-enabled mobile phone. Users may set various settings (e.g., recording, reminders, or other settings) on the online guidance application and control their in-home devices. The online guide may control their devices directly or by communicating with the media guidance application on their in-home devices. Various systems and methods for communication between user equipment devices, where the user equipment devices are remote from each other, are discussed, for example, in U.S. Patent No. 8,046,801 to Ellis et al., issued October 25, 2011, which is incorporated herein by reference in its entirety.
[0069] In a third approach, users of user equipment devices inside and outside the home can use their media guidance application to communicate directly with media content sources 616 and access content. Specifically, within the home, users of user television equipment 602 and user computer equipment 604 may access the media guidance application to navigate among and identify desired content. Users may also use wireless user communications devices 606 to access the media guidance application outside the home to navigate among and identify desired content.
[0070] In a fourth approach, user equipment devices may operate within a cloud computing environment and access cloud services. In a cloud computing environment, various types of computing services for content sharing, storage, or distribution (e.g., video sharing sites or social networking sites) are provided by a collection of network-accessible computing and storage resources referred to as the “cloud.” For example, a cloud may include a collection of server computing devices, which may be located in central or distributed locations, that provide cloud-based services to various types of users and devices connected through a network, such as the Internet via communications network 614. These cloud resources may include one or more content sources 616, one or more user account databases 618, and one or more media guidance data sources. Additionally or alternatively, the remote computing sites may include other user equipment devices, such as user television equipment 602, user computer equipment 604, and wireless user communications devices 606. For example, the other user equipment devices may provide access to stored copies of videos or streamed videos. In such an embodiment, the user equipment devices may operate in a peer-to-peer manner without communicating with a central server.
[0071] The cloud provides access for user equipment devices to services such as content storage, content sharing, or social networking services, as well as any of the content described above, among other examples. Services can be provided in the cloud through a cloud computing service provider or through other providers of online services. For example, cloud-based services can include content storage services, content sharing sites, social networking sites, or other services through which user-supplied content is distributed for viewing by others on connected devices. These cloud-based services may enable user equipment devices to store content in and receive content from the cloud, rather than storing content locally and accessing the locally stored content.
[0072] Users may record content using a variety of content capture devices, such as camcorders, digital cameras with video modes, audio recorders, mobile phones, and handheld computing devices. Users can upload content to a content storage service on the cloud directly, for example, from user computing equipment 604 or from a wireless user communication device 606 with content capture features. Alternatively, users can first transfer content to a user equipment device, such as user computing equipment 604. The user equipment device that stores the content uploads the content to the cloud using a data transmission service on communications network 614. In some embodiments, the user equipment device itself is a cloud resource, and other user equipment devices can access the content directly from the user equipment device on which the user stored the content.
[0073] Cloud resources may be accessed by a user equipment device using, for example, a web browser, a media guidance application, a desktop application, a mobile application, and / or any combination of these access applications. The user equipment device may be a cloud client that relies on cloud computing for application delivery, or the user equipment device may have some functionality without accessing cloud resources. For example, some applications running on the user equipment device may be cloud applications, i.e., applications delivered as a service over the Internet, while other applications may be stored and run on the user equipment device. In some embodiments, a user device may receive content from multiple cloud resources simultaneously. For example, a user device may stream audio from one cloud resource while downloading content from a second cloud resource. Or, a user device may download content from multiple cloud resources for more efficient downloading. In some embodiments, a user equipment device can use cloud resources for processing operations, such as the processing operations performed by the processing circuitry described in connection with FIG. 5.
[0074] 7 is a flowchart 700 of illustrative steps involved in assigning a user to a virtual world based on social connectivity, according to the arrangement described above with reference to FIGS. 1-6. At step 702, a request (e.g., a client request received from a user) is received (e.g., in control circuitry as described above with reference to FIGS. 5 and 6) to connect a client device (e.g., a device 500 as described above with reference to FIG. 5 associated with a new user 102) to one of a plurality of virtual world servers (e.g., one of a plurality of sharded world servers 302, 408 as described above with reference to FIGS. 3, 4, and 6). At step 704, the control circuitry may access social network connectivity data of a user account associated with the client device. The social network connectivity data may include the online friendship graph 200 as described above. At step 706, the control circuitry may identify a plurality of other user accounts based on the social network connectivity data. At step 708, the plurality of virtual world servers 302, 408 may be ranked (e.g., by the load balancer 406) based on connections with devices associated with the plurality of other user accounts. At step 710, the control circuitry (e.g., the load balancer 406) may connect client devices to virtual world servers 302, 408 of the plurality of virtual world servers 302, 408 based on the ranking.
[0075] In addition to steps 702-710 described above, optional steps 710-714 may also be performed. In step 710, following connecting the client device 500 to a virtual world server 302, 408 of the plurality of virtual world servers 302, 408, the control circuitry (e.g., the load balancer 406) may determine a loss of connection between the client device 500 and a virtual world server 302, 408 of the plurality of virtual world servers 302, 408. In step 714, the client device 500 may be reconnected by the control circuitry to the same virtual world server 302, 408 if the loss of connection is below a predetermined threshold period. In step 716, the client device 500 may be connected to a different virtual world server 302, 408 of the plurality of virtual world servers 302, 408 if the loss of connection is above a predetermined threshold period. For example, the control circuitry may distinguish between a user explicitly "leaving" (e.g., selecting an exit option) versus a user being disconnected (e.g., leaving due to connection issues). In the case when a user is disconnected, the system 400 may reserve a spot for that user (for a predetermined amount of time) in anticipation of the user rejoining. This means that the load balancer 406 takes into account the reserved spot and ensures that a user who inadvertently leaves may be able to rejoin their community or peers once connection issues are resolved.
[0076] FIG. 8 is a flowchart 800 of illustrative steps involved in assigning users to virtual worlds based on social connectivity, building on the features presented in FIG. 7 above, according to the arrangement described above with reference to FIGS. 1-7. FIG. 7 begins with step 706 of FIG. 7, where control circuitry can identify multiple other user accounts based on social network connectivity data. Step 802 of FIG. 8 continues from step 706, where control circuitry (e.g., load balancer 406) can receive additional metadata from a server (e.g., user account database 618 as described above with reference to FIG. 6). The additional metadata may include, for example, a list of friends for each user within a world server of the multiple world servers, as well as the status of each user within a world server of the multiple world servers (e.g., online, available, busy, offline, etc.). In some embodiments, the additional metadata may include a list of friends (and / or their status) for each user within more than one world server of the multiple world servers or all of the multiple world servers. The additional metadata may also and / or separately include other information for each user in the friendship graph, such as, but not limited to, each user's interests, friends, photos, etc.
[0077] In step 804, the control circuitry (e.g., load balancer 406) may determine a friend relationship graph (as described above with reference to FIG. 2) comprising a plurality of other users from the metadata (e.g., a list of friends for each user). In step 806, the control circuitry (e.g., load balancer 406) may additionally determine an online friend relationship graph (as described above with reference to FIG. 2) comprising a subset of the plurality of other users from the metadata (e.g., each user's status). The method may then proceed to step 708 as described above with reference to FIG. 7.
[0078] In steps 808a and 808b, following step 708, ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts may further include determining a static online friendship graph 808a from the metadata or determining a dynamic online friendship graph 808b from the metadata. In some examples, a mixture of a static online friendship graph and a dynamic online friendship graph is determined. In some embodiments, the static online friendship graph, the dynamic online friendship graph, or a mixture of the two may be selected directly by the user 102 joining the virtual world 108.
[0079] In the static online friendship graph as determined in step 808a, whenever a user selects a friend, the system 400 adds a vertex (e.g., vertex 204 as described above with reference to FIG. 2) between nodes (e.g., nodes 202, 206 as described above with reference to FIG. 2) representing multiple users in the friendship graph (or online friendship graph). Typically, friendships are reciprocal, i.e., if user A selects user B as a friend, user B also selects user A as a friend (this may be through an explicit action of user B accepting user A's friend request). In this case, an undirected graph can be constructed as shown in FIG. 2 through the actions of multiple users selecting and accepting friends (vertex 204 does not have a direction from A to B or from 1 to 2, but is reciprocal). The online friendship graph for one server is then a subgraph of the friendship graph, comprising users (nodes) and vertices (friendships) of those who are currently online at that server. Thus, in some embodiments, the online friendship graph includes a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes, indicating the friendships between each of the plurality of users. The static online friendship graph may further include a first node for the first user and a second node for the second user, joined by a single vertex, representing a one-hop friendship connection between the first user and the second user; a first node for the first user and a second node for the second user, joined by two vertices, representing a two-hop friendship connection between the first user and the second user; and a first node for the first user and a second node for the second user, joined by n-2 vertices between them (not counting the first user and the second user), representing an n-hop friendship connection between the first user and the second user. As discussed in more detail below, the one-hop friendship connection may represent a close friendship, and the friendship level may decrease with each hop.
[0080] When a user (e.g., a new user 102) requests to join the virtual world, the system 400 may temporarily add the new user 102 to the online friendship graph at each server 408 and perform the following steps: A. Nodes 202, 206 are added to each of the server's online friendship graphs 200. B. The vertices 204 from this node 202, 206 to all other nodes are read from the friendship graph, and only those vertices 204 that connect to existing nodes 202, 206 in the online friendship graph 200 of this server are added. C. Using breadth-first search (BFS) augmented with a depth counter, starting at the temporarily added new user node 202, 206, the system 400 can determine the number of online friends at each level / depth up to a maximum of n hops (a system parameter). D. This is calculated for each server 408. The system 400 can then choose the server 408 with the largest number of online users that are connected to the new user 102 at most n hops in its online friendship graph.
[0081] In one embodiment, the system 400 can assign weights to nodes 202, 206 based on their proximity to the new user 102 to calculate a "figure of merit" for each server 408. For example, if a node (user) 202, 206 is one hop from the new user 102 (i.e., a friend), it is assigned a weight of 1; if the node is two hops from the new user 102 (i.e., a friend of a friend), it is assigned a weight of 0.5 (or some number less than 1 / 1), and so on. In this way, users who are a shorter hop distance away are weighted higher than users who are a longer hop distance. The figure of merit (FoM) for the candidate servers is then given by the following formula: [ka] W nis the weight assigned to the online user vertex that is n hops away from the new (transient user), [ka] is the number of online vertices (users) at n-hop distance from the new (transient user). The load balancer 406 can then select the candidate server 408 with the highest FoM as the best candidate. If that server 408 cannot satisfy the parameter / policy considerations, the server 408 with the next highest FoM is selected. This is repeated until a server 408 is found. In some embodiments, w1 = w2 = ... = w n , i.e., all weights are equal regardless of the hop distance from the online user to the new user in the online friendship graph. Once a server 408 is selected for the new user 102, the nodes 202, 206 of the new user 102 are added to that server's online friendship graph 200. These nodes are removed from the online friendship graphs 200 of other servers to which they were temporarily added for the purpose of calculating the FoM.
[0082] A breadth-first search traversal can be used because the resulting spanning tree has the property that each node 202, 206 is represented by its minimum hop distance from the starting node (i.e., the new user 102). A depth counter ensures that the traversal is aborted after n hops, starting from the new user node 202, 206.
[0083] In the dynamic online friendship graph as determined in step 808b, each vertex 204 between two nodes may be given a weight to determine the level of friendship, where the weight is determined based on the duration of interaction between the two users, the frequency of interaction between the two users, the positivity of interaction between the two users, or any combination of the above. The positivity of interaction between two users may be measured using an automatic speech recognition and / or natural language understanding (ASR-NLU) system in conjunction with a sentiment analysis system to determine whether the interaction is positive or negative. A higher weight represents a close friendship, and a lower weight represents a less close friendship.
[0084] Additionally, friendship vertices 204 between two users can be weighted based on the level or strength of their friendship, e.g., whether it is updated in some manner. In some embodiments, the weight is a cost, e.g., the higher the weight of a vertex between two users, the less friendly they are to each other. A direct (strong) friendship between two users is given a weight (or cost) of 1, which is the lowest system cost. In the limit, two users can [ka] , which is equivalent to them not being connected to each other. The system 400 may set the weight of the vertex 204 between two users based on their interaction. Even if the first user does not initially add the second user as a friend, the system 400 determines whether their interaction meets the friendship threshold (which may be the same threshold as that for updates). The system 400 may suggest to the two users that they add each other as friends based on their interaction. Furthermore, even when two users do not meet the interaction threshold for becoming friends, the system 400 may still determine a weight (value > 1) for the vertex between them. For example, if the interaction or time together in an experience is used as a metric to determine the weight of the vertex 204 between two users, the weight of the vertex 204 between users A and B may be: W AB = (threshold engagement time for friendship / time of engagement between users A and B) Therefore, W≧1.
[0085] In different embodiments: W AB = (threshold aggressiveness regarding friendship / aggressiveness of interaction between users A and B) Initially, when two users become friends, the weight of the vertex 204 between them in the friendship graph is 1. The friendship decays over time until an update occurs. The time over which the friendship decays is the time since their last update (typically a time of interaction or positive interaction as measured by other means such as ASR-NLU). This decay function can be modeled using a linear decrease over time, an exponential decrease, or another mathematical relationship. Because the decay function decreases over time, the inverse of the decay value is used to model the weight of the vertex 204. This gives the vertex 204 a value (>1) that increases as the friendship decays. When an update occurs, the weight of the vertex between the two users is returned to unity (1). Furthermore, once the friendship decays beyond a threshold (a system parameter), the friendship vertex 204 between the users can be removed. This optimization reduces the connectivity of the graph based on the insight that friendships are transient. The system 400 may present a prompt to a first user informing them that they have not interacted with a second user who is a friend for a while and asking them whether they wish to keep the second user as a friend. If the first user provides an affirmative response, this can be treated as an update event (which can also be performed reciprocally by the first and second users to affirm the update). Exponentially decreasing function of samples [ka] k is a negative number (system parameter) t is the time since the last update The weight of edges between users whose friendship relationships are modeled as a time decay function is [ka] is.
[0086] FIG. 11 illustrates an example life cycle 1100 of a friendship between two users. Initially, the two users are friends, and therefore the weight of the vertex 204 between the nodes 204 representing them is 1. Due to a lack of interaction, the friendship decays until the friendship decay function reaches A(t)=1 / 8 (a linear decay shown in this graph). The weight w of the vertex 204 between the user nodes 204 steadily increases, where w=8. At this point, the users' friendship undergoes an update; i.e., they significantly engage with each other. Again, w=1. This decays again until A(t)=1 / 2, and w increases to 2. In this way, the weights of the vertices 204 between the vertices 204 in the online friendship graph are constantly updated based on time information.
[0087] Thus, at step 810, following determining from the metadata the static online friendship graph and / or the dynamic online friendship graph in each of the plurality of world servers, the method may determine a level of friendship between the user 102 of the client device 500 and each of the plurality of other users (in each of the plurality of world servers 408). At step 812, based on the level of friendship between the user 102 of the client device and each of the plurality of users, a level of friendship between the user 102 and each of the plurality of users in each virtual world server of the plurality of world servers may be determined. At step 814, each of the plurality of virtual world servers may be ranked (as discussed above) based on the number of close friendships, with the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking, as discussed above.
[0088] In some embodiments, the system 400 maintains a friendship graph for each server 408 available to the load balancer 406 as well as the online friendship graph 200. Each online friendship graph has weighted vertices 204 connecting nodes 202, 206 as discussed above. The higher the weight of a vertex 202, 206, the lower the temporal strength of the friendship relationship and the greater the "cost." The vertex weight, or "cost," is inversely proportional to the temporal strength of the friendship relationship. An advantage of this modeling is that well-known graph traversal algorithms that use "cost" as the vertex weight can be leveraged to find paths between nodes 204 that incur the minimum "cost." A relevant insight into social behavior is that people are more likely to approve an association between two of their friends if they have a strong friendship relationship with each of them. Thus, incurring a lower "cost" in traversing from a first node to a second node indicates that two users (represented by nodes 202, 206) are more likely to have positive interactions when they are both online and part of a community or peer group.
[0089] As demonstrated in FIG. 12, when a new user A 102 wishes to join the (live) virtual world, they can be added to each server's online friendship graph 200 as a temporary node 202, 206 (also discussed above). FIG. 12 illustrates two separate servers 1200 to demonstrate this: one with users X, Y, and Z in FIG. 12A and another with users P, Q, and R in FIG. 12B. The online friendship graphs associated with each server are shown below. Users X and Z have an updated / strong friendship, as evidenced by their recent engagement with each other. Users X and Y are also interacting, but their interaction has progressed / decayed over time and is therefore assigned a weight of 4 over time. Similarly, on the other server, users Q and R have a strong friendship. User P interacts with both users Q and R, but his / her friendship with them has decayed. The weights of 4 and 2 with Q and R indicate that user P's friendship with user Q is more decaying than that with user R. Vertices 204 corresponding to user A's friendships with existing users in the server's online friendship graph are also added. The system 400 then chooses a server that maximizes the number of users connected to the new user, such that the "cost" (a measure of connectivity) to reach each such user is less than or equal to a threshold (a system parameter, "max cost").
[0090] In one embodiment, a user-friendly feature presents users 102 with multiple options, allowing them to choose a server to join based on existing online users connected to them by a maximum hop distance or "cost" function (as discussed above). For example, a user may be given the option to join (X, Y, Z) or (P, Q, R). There may be scenarios where users want to "catch up" regardless of the strength of their connection with (X, Y, Z) or (P, Q, R), and they can use such a medium to do so. For example, a user may talk to X every day, but today they may want to catch up with user P.
[0091] In one embodiment, a global "influencer graph" is also maintained along with the friend graph and the online friend graph. Influencers, typically celebrities, do not need to follow their followers. The "influencer graph" consists of two types of vertices 204: directed vertices, e.g., unidirectional links from followers to influencers, and undirected vertices, i.e., bidirectional links, with friends. Influencers are often interconnected and collectively may form peers. Users who interact with content from an influencer, such as by watching or liking it, may be marked as followers. Each server can maintain an "online influencer graph" available to the load balancer 406. In this case, the system 400 may present users 102 with the option to join influencers (or groups of influencers based on connectivity) when they are online and route users to servers 408 based on the influencers they follow on the social network. Thus, two different graphs exist (e.g., an online friendship graph and an influencer graph), and server availability can then be based on connections from both. In one example, a user receives a notification that an influencer (e.g., one-hop or two-hop connected based on the "influencer graph") is online and has joined the social world. The user may be presented with the option to "join" the influencer's server.
[0092] The system 400 can use the temporary node 202, 206 as the root node to calculate the "cost" of reaching each node 202, 206 in the server's online friendship graph. A "maximum cost" above which the system can abort the algorithm is set as a system parameter. The system then uses a shortest path algorithm (e.g., Dijkstra's algorithm) to calculate the cost of reaching each node 202, 206 in the online friendship graph 200, aborting the algorithm once the sum of the "costs" (of all vertices) to (reach) a node exceeds the "maximum cost" threshold.
[0093] FIG. 9 is a flowchart 900 of illustrative steps involved in assigning users to virtual worlds based on social connectivity, based on the features presented in FIG. 8 above, according to the arrangement described above with reference to FIGS. 1-8. FIG. 9 begins with step 802 of FIG. 8, in which metadata is received from a server. In step 902, at least one behavioral characteristic of a plurality of users can be determined from the metadata. The at least one behavioral characteristic comprises any one of a period of time spent online, a period of time spent on any one of a plurality of virtual world servers, and / or the plurality of users' level of interaction with other users. In step 904, a determination can be made that at least one of the plurality of users on the connected virtual world server is a lurker based on the at least one behavioral characteristic. The system can remove the lurker while calculating connectivity in the online friendship graph. In step 906, a request can be transmitted from the control circuitry to disconnect the lurker's client device from the virtual world server. Subsequently, in step 908, a request can be transmitted to reconnect the lurker's client device to a different one of the plurality of virtual world servers. If the spot occupied by the lurker on a different one of the plurality of virtual world servers is needed for a different client device (e.g., a non-lurker), the lurker's client device can be reconnected to another one of the plurality of virtual servers. That is, another request can be sent to disconnect the lurker's client device from a different one of the plurality of virtual world servers, followed by a request to connect the lurker's client device to a different one of the plurality of virtual world servers. If at least one of a plurality of parameters of the different virtual world servers (e.g., security, proximity, and bandwidth requirements) is within a predetermined threshold, connecting the lurker's client device to any one of the plurality of virtual world servers is performed. In one embodiment, historical data related to the amount of time a user spends within the virtual world environment can be recorded.When a client device (and / or user, such as a specific username) previously identified as a lurker rejoins the virtual world environment, the client device can be pre-identified as a lurker by the system based on stored historical data and previously stored identities. Following pre-identification of the lurker, the lurker can be assigned to any available server of a plurality of virtual world servers (e.g., any one of a plurality of virtual world servers that meets a predetermined threshold of at least one of a plurality of parameters, as described above). A lurker is defined as a user who exhibits behavioral characteristics such that they frequently join and exit a virtual world without necessarily interacting with other users on the virtual world server. To ensure that available bandwidth is used efficiently and ensure good QoE, the system 400 can make intelligent decisions to remove lurkers based on behavioral characteristics. For example, if user A has n-hop (or low-cost) connections to B, C, and D, and D is a "lurker," the system can remove D while calculating connectivity in the "online friendship graph." If the system identifies lurkers, it can allocate them to any server (assigning lurkers to servers is computationally less expensive).
[0094] FIG. 10 is a flowchart 1000 of illustrative steps involved in assigning users to virtual worlds based on social connectivity, based on the features presented in FIG. 7 above, according to the arrangement described above with reference to FIGS. 1-9. FIG. 10 begins with step 710 of FIG. 7, where a client device is connected to a virtual world server of a plurality of virtual world servers based on rankings. In step 1002, the method further identifies at least one parameter for each of the plurality of virtual world servers. The at least one parameter comprises any one of a security threshold, a proximity threshold, and a bandwidth threshold as discussed above. In step 1004, the virtual world server with the highest ranking of the plurality of virtual world servers is determined. In step 1006, the client device may be connected to the virtual world server with the highest ranking if at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold. In step 1008, the client device may be connected to a different virtual world server with a lower ranking if at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold.
[0095] Optionally, in step 1010, based on the at least one parameter identified for each of the plurality of virtual servers, each of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold may be identified. In step 1012, based on the ranking of the plurality of virtual world servers, each of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold may be presented for display on the client device (or any other device, such as device 500 described above with reference to FIG. 5). In step 1014, user input may be received at the client device (or any other device, such as device 500 described above with reference to FIG. 5). In step 1016, based on the user input, the client device may be connected to a virtual world server of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold. As discussed above, the load balancer 406 may then select the server 408 with the highest FoM as the best candidate. If that server 408 cannot satisfy policy considerations, the server 408 with the next highest FoM is selected. This is repeated until a server is found.
[0096] FIG. 13 illustrates a user interface 1300 related to maximizing the likelihood of user interaction, according to some embodiments of the present disclosure. Because the system 400 selects a server for the user that maximizes the likelihood of interaction with friends, friends of friends, etc., the system can present the user 102 with additional information about other users connected to him / her through more than one hop. FIG. 13 shows an exemplary user presentation 1302 in a social world. Here, the user finds HMLTN78F9, who is two-hop connected to the user through WOLF007. In another embodiment 1304, the system may provide the user with a visual indicator regarding certain other users connected to him / her, such as a colored outline or another shape (such as an arrow or an inverted triangle) that moves with the user. Such visual indicators may be used to identify friends, friends of friends, friends of friends of friends, etc. In another embodiment, a subgraph of the server's online friendship graph is displayed when a first user hovers their controller over a second user. The relationship through which a first user is connected to a second user can then be grasped through the sub-graph.
[0097] The processes described above are intended to be illustrative, not limiting. Those skilled in the art will understand that steps of the processes discussed herein may be omitted, modified, combined, and / or rearranged, and that any additional steps may be implemented without departing from the scope of the present disclosure. More generally, the above disclosure is intended to be illustrative, not limiting. Furthermore, it should be noted that features and limitations described in any one embodiment may be applied to any other embodiment herein, and that flowcharts or examples associated with one embodiment may be combined with, performed in a different order, or performed in parallel with, any other embodiment in an appropriate manner. In addition, the systems and methods described herein may be implemented in real time. It should also be noted that the systems and / or methods described above may be applied to or used in accordance with other systems and / or methods. This specification discloses embodiments, including, but not limited to, the following. 1. A method comprising: receiving a request to connect a client device to one of a plurality of virtual world servers; accessing social network connectivity data for a user account associated with the client device; Identifying a plurality of other user accounts based on the social network connectivity data; ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts; Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; A method comprising: 2. Identifying a plurality of other user accounts based on social network connectivity data further includes: receiving metadata from a server; determining a friendship graph comprising a plurality of other users from the metadata; determining an online friendship graph from the metadata comprising a subset of the plurality of other users; The method according to item 1, comprising: 3. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further comprises: determining a static online friendship graph from the metadata; or Determining a dynamic online friendship graph from metadata Item 3. The method according to item 2, comprising: 4. The online friendship graph comprises a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph also a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; a first node for the first user and a second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; a first node for a first user and a second node for a second user joined by n vertices representing n-hop friendship connections between the first user and the second user, where a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is The interaction time between two users, The frequency of interactions between the two users, and / or The activeness of the interaction between two users, where a higher weight represents a close friendship and a lower weight represents a less close friendship. The method according to item 3, wherein the determination is based on any one of the following: 5. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further comprises: determining a friendship level between the user at each virtual world server of the plurality of world servers and each of the plurality of users based on a friendship level between the user of the client device and each of the plurality of users in the online friendship graph; ranking each of the plurality of virtual world servers based on the number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking; Item 5. The method according to item 4, comprising: 6. Determining at least one behavioral characteristic of a plurality of users from the metadata, At least one behavioral characteristic is Time spent online, The amount of time spent on any one of the virtual world servers; and / or The level of interaction between multiple users and other users and determining, based on at least one behavioral characteristic, that at least one of a plurality of users in the connected virtual world server is a lurker; sending a request to disconnect the lurker's client device from the virtual world server; connecting a lurker client device to a different one of a plurality of virtual world servers; The method according to item 2, further comprising: 7. Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking further comprises: identifying at least one parameter for each of a plurality of virtual world servers; determining a virtual world server of the plurality of virtual world servers with a highest ranking; connecting the client device to the virtual world server with the highest ranking if at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold; connecting the client device to a virtual world server with a lower ranking if at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold; The method according to item 1, comprising: 8. At least one parameter must be a security threshold; a proximity threshold; Bandwidth threshold and Item 8. The method of item 7, comprising any one of the following: 9. Identifying each of a plurality of virtual world servers, based on the at least one parameter identified for each of the plurality of virtual servers, wherein the at least one parameter exceeds a predetermined threshold; presenting for display on the client device each of the plurality of virtual world servers having at least one parameter above a predetermined threshold based on the ranking of the plurality of virtual world servers; receiving user input at a client device; connecting the client device to a virtual world server of the plurality of virtual world servers where at least one parameter exceeds a predetermined threshold based on the user input; 8. The method of claim 7, further comprising: 10. Connecting the client device to a virtual world server of the plurality of world servers, followed by determining a loss of connection between the client device and the virtual world server of the plurality of world servers; connecting the client device to a same virtual world server of the plurality of world servers if the loss of connection is below a predetermined threshold period; If the loss of connection exceeds a predetermined threshold period, connecting the client device to a different virtual world server of the plurality of world servers. Item 1, the method of claim 1 further comprising: 11. An apparatus comprising: a memory for storing instructions; A communication path; control circuitry coupled to the communication path and the memory, the control circuitry executing instructions; receiving a request to connect a client device to one of a plurality of virtual world servers; accessing social network connectivity data for a user account associated with the client device; Identifying a plurality of other user accounts based on the social network connectivity data; ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts; Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; A control circuit network An apparatus comprising: 12. Identifying the plurality of other user accounts based on the social network connectivity data further comprises: control circuitry: receiving metadata from a server; determining a friendship graph comprising a plurality of other users from the metadata; determining an online friendship graph from the metadata comprising a subset of the plurality of other users; Item 12. The device according to item 11, comprising: 13. Ranking the plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: determining a static online friendship graph from the metadata; or Determining a dynamic online friendship graph from metadata Item 13. The device according to item 12, comprising: 14. The online friendship graph comprises a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph also a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; a first node for the first user and a second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; a first node for a first user and a second node for a second user joined by n vertices representing n-hop friendship connections between the first user and the second user, where a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is The interaction time between two users, The frequency of interactions between the two users, and / or The activeness of the interaction between two users, where a higher weight represents a close friendship and a lower weight represents a less close friendship. Item 14. The apparatus of item 13, wherein the determination is based on any one of the following: 15. Ranking the plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: determining a friendship level between the user at each virtual world server of the plurality of world servers and each of the plurality of users based on a friendship level between the user of the client device and each of the plurality of users in the online friendship graph; Ranking each of the plurality of virtual world servers based on the number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking. Item 15. The device according to item 14, comprising: 16. A control circuit network determining at least one behavioral characteristic of the plurality of users from the metadata; At least one behavioral characteristic is Time spent online, The amount of time spent on any one of the virtual world servers; and / or The level of interaction between multiple users and other users and determining, based on at least one behavioral characteristic, that at least one of a plurality of users in the connected virtual world server is a lurker; sending a request to disconnect the lurker's client device from the virtual world server; connecting a lurker client device to a different one of a plurality of virtual world servers; Item 13. The device of item 12, further comprising: 17. Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking further comprises: identifying at least one parameter for each of a plurality of virtual world servers; determining a virtual world server of the plurality of virtual world servers with a highest ranking; connecting the client device to the virtual world server with the highest ranking if at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold; connecting the client device to a virtual world server with a lower ranking if at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold; Item 12. The device according to item 11, comprising: 18. At least one parameter must be a security threshold; a proximity threshold; Bandwidth threshold and Item 18. The device of item 17, comprising any one of the following: 19. A control circuit network Identifying each of a plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold based on the at least one parameter identified for each of the plurality of virtual servers; presenting for display on the client device each of the plurality of virtual world servers having at least one parameter above a predetermined threshold based on the ranking of the plurality of virtual world servers; receiving user input at a client device; connecting the client device to a virtual world server of the plurality of virtual world servers where at least one parameter exceeds a predetermined threshold based on the user input; Item 18. The device of item 17, further comprising: 20. A control circuit network connecting the client device to a virtual world server of the plurality of world servers; and determining a loss of connection between the client device and a virtual world server of the plurality of world servers. connecting the client device to a same virtual world server of the plurality of world servers if the loss of connection is below a predetermined threshold period; If the loss of connection exceeds a predetermined threshold period, connecting the client device to a different virtual world server of the plurality of world servers. Item 12. The device of item 11, further comprising: 21. A non-transitory computer readable medium having encoded thereon non-transitory computer readable instructions that, when executed by control circuitry, cause the control circuitry to: receiving a request to connect a client device to one of a plurality of virtual world servers; accessing social network connectivity data for a user account associated with the client device; Identifying a plurality of other user accounts based on the social network connectivity data; ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts; Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; A non-transitory computer-readable medium for causing 22. Identifying the plurality of other user accounts based on the social network connectivity data further comprises: control circuitry: receiving metadata from a server; determining a friendship graph comprising a plurality of other users from the metadata; determining an online friendship graph from the metadata comprising a subset of the plurality of other users; 22. The non-transitory computer-readable medium of item 21, comprising: 23. Ranking the plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: determining a static online friendship graph from the metadata; or Determining a dynamic online friendship graph from metadata 23. The non-transitory computer-readable medium of item 22, comprising: 24. The online friendship graph comprises a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph also a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; a first node for the first user and a second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; a first node for a first user and a second node for a second user joined by n vertices representing n-hop friendship connections between the first user and the second user, where a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is The interaction time between two users, The frequency of interactions between the two users, and / or The activeness of the interaction between two users, where a higher weight represents a close friendship and a lower weight represents a less close friendship. 24. The non-transitory computer-readable medium of item 23, wherein the non-transitory computer-readable medium is determined based on any one of the following: 25. Ranking the plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: determining a friendship level between the user at each virtual world server of the plurality of world servers and each of the plurality of users based on a friendship level between the user of the client device and each of the plurality of users in the online friendship graph; ranking each of the plurality of virtual world servers based on the number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking; 25. The non-transitory computer-readable medium of item 24, comprising: 26. A control circuit network determining at least one behavioral characteristic of the plurality of users from the metadata; At least one behavioral characteristic is Time spent online, The amount of time spent on any one of the virtual world servers; and / or The level of interaction between multiple users and other users and determining, based on at least one behavioral characteristic, that at least one of a plurality of users in the connected virtual world server is a lurker; sending a request to disconnect the lurker's client device from the virtual world server; connecting a lurker client device to a different one of a plurality of virtual world servers; 23. The non-transitory computer-readable medium of item 22, further comprising: 27. Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking further comprises: identifying at least one parameter for each of a plurality of virtual world servers; determining a virtual world server of the plurality of virtual world servers with a highest ranking; connecting the client device to the virtual world server with the highest ranking if at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold; connecting the client device to a virtual world server with a lower ranking if at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold; 22. The non-transitory computer-readable medium of item 21, comprising: 28. At least one parameter must be a security threshold; a proximity threshold; Bandwidth threshold and 28. The non-transitory computer-readable medium of item 27, comprising any one of: 29. A control circuit network Identifying each of a plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold based on the at least one parameter identified for each of the plurality of virtual servers; presenting for display on the client device each of the plurality of virtual world servers having at least one parameter above a predetermined threshold based on the ranking of the plurality of virtual world servers; receiving user input at a client device; connecting the client device to a virtual world server of the plurality of virtual world servers where at least one parameter exceeds a predetermined threshold based on the user input; 28. The non-transitory computer-readable medium of item 27, further comprising: 30. A control circuit network connecting the client device to a virtual world server of the plurality of world servers; and determining a loss of connection between the client device and a virtual world server of the plurality of world servers. connecting the client device to a same virtual world server of the plurality of world servers if the loss of connection is below a predetermined threshold period; If the loss of connection exceeds a predetermined threshold period, connecting the client device to a different virtual world server of the plurality of world servers. 22. The non-transitory computer-readable medium of item 21, further comprising: 31. An apparatus comprising: means for receiving a request to connect a client device to one of a plurality of virtual world servers; means for accessing social network connectivity data of a user account associated with the client device; means for identifying a plurality of other user accounts based on the social network connectivity data; means for ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts; means for connecting a client device to a virtual world server of the plurality of virtual world servers based on the ranking; An apparatus comprising: 32. The means for identifying a plurality of other user accounts based on social network connectivity data further comprises: means for receiving metadata from a server; means for determining, from the metadata, a friendship graph comprising a plurality of other users; means for determining an online friendship graph comprising a subset of the plurality of other users from the metadata; Item 32. The device according to item 31, comprising: 33. The means for ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: a means for determining a static online friendship graph from the metadata; or A means for determining a dynamic online friendship graph from metadata Item 33. The device according to item 32, comprising: 34. An online friendship graph comprising a node for each of a plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph also a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; a first node for the first user and a second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; a first node for a first user and a second node for a second user joined by n vertices representing n-hop friendship connections between the first user and the second user, where a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is The interaction time between two users, The frequency of interactions between the two users, and / or The activeness of the interaction between two users, where a higher weight represents a close friendship and a lower weight represents a less close friendship. Item 34. The apparatus of item 33, wherein the determination is based on any one of the following: 35. The means for ranking a plurality of virtual world servers based on connections with devices associated with a plurality of other user accounts further comprises: means for determining a friendship level between the user of the client device and each of the plurality of users in each virtual world server of the plurality of world servers based on a friendship level between the user of the client device and each of the plurality of users in the online friendship graph; means for ranking each of the plurality of virtual world servers based on the number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking; Item 35. The device according to item 34, comprising: 36. A means for determining at least one behavioral characteristic of a plurality of users from metadata, comprising: At least one behavioral characteristic is Time spent online, The amount of time spent on any one of the virtual world servers; and / or The level of interaction between multiple users and other users and a means for detecting a temperature difference between the first and second electrodes; means for determining that at least one of a plurality of users in the connected virtual world server is a lurker based on at least one behavioral characteristic; means for transmitting a request to disconnect the lurker client device from the virtual world server; means for connecting a lurker client device to a different one of a plurality of virtual world servers; Item 33. The device of item 32, further comprising: 37. The means for connecting a client device to a virtual world server of a plurality of virtual world servers based on the ranking further comprises: means for identifying at least one parameter for each of a plurality of virtual world servers; means for determining a virtual world server of the plurality of virtual world servers with a highest ranking; means for connecting the client device to the virtual world server with the highest ranking if at least one parameter of the virtual world server with the highest ranking exceeds a predetermined threshold; means for connecting the client device to a virtual world server with a lower ranking if at least one parameter of the virtual world server with the highest ranking is below a predetermined threshold; Item 32. The device according to item 31, comprising: 38. At least one parameter must be a security threshold; a proximity threshold; Bandwidth threshold and Item 38. The device of item 37, comprising any one of the following: 39. A means for identifying, based on at least one parameter identified for each of the plurality of virtual servers, each of the plurality of virtual world servers for which at least one parameter exceeds a predetermined threshold; means for presenting for display on the client device each of the plurality of virtual world servers having at least one parameter above a predetermined threshold based on the ranking of the plurality of virtual world servers; means for receiving user input at the client device; means for connecting the client device to a virtual world server of the plurality of virtual world servers where at least one parameter exceeds a predetermined threshold based on user input; Item 38. The device of item 37, further comprising: 40. Following connecting a client device to a virtual world server of a plurality of world servers, means for determining a loss of connection between the client device and a virtual world server of a plurality of world servers; means for connecting the client device to a same virtual world server of the plurality of world servers if the loss of connection has been below a predetermined threshold period; means for connecting the client device to a different virtual world server of the plurality of world servers if the loss of connection exceeds a predetermined threshold period; Item 32. The device of item 31, further comprising:
Claims
1. 1. A method comprising: receiving a request to connect a client device to one of a plurality of virtual world servers; accessing social network connectivity data for a user account associated with the client device; identifying a plurality of other user accounts based on the social network connectivity data; ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts; connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; A method comprising:
2. Identifying a plurality of other user accounts based on the social network connectivity data further comprises: receiving metadata from a server; determining a friendship graph comprising the plurality of other users from the metadata; determining an online friendship graph from the metadata comprising a subset of the plurality of other users; The method of claim 1 , comprising:
3. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further comprises: determining a static online friendship graph from said metadata; or determining a dynamic online friendship graph from the metadata; The method of claim 2 , comprising:
4. the online friendship graph comprises a node for each of the plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph further comprises: a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; the first node for the first user and the second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; the first node for the first user and the second node for the second user being joined by n vertices representing n-hop friendship connections between the first user and the second user, wherein a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is: the interaction time between two users, the frequency of interactions between the two users, and / or the positivity of the interaction between the two users, with a higher weight representing a close friendship and a lower weight representing a less close friendship; The method of claim 3 , wherein the determination is based on any one of:
5. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further comprises: determining a friendship level between the user of the client device and each of the plurality of users in each virtual world server of the plurality of world servers based on the friendship level between the user of the client device and each of the plurality of users in the online friendship graph; ranking each of the plurality of virtual world servers based on a number of close friendships, the virtual world server with the greatest number of close friendships being given the highest ranking and the virtual world server with the least number of close friendships being given the lowest ranking; The method of claim 4, comprising:
6. determining from the metadata at least one behavioral characteristic of the plurality of users; The at least one behavioral characteristic is: Time spent online, the time spent on any one of said plurality of virtual world servers; and / or the level of interaction of said plurality of users with other users and determining, based on the at least one behavioral characteristic, that at least one of the plurality of users in the connected virtual world server is a lurker; sending a request to disconnect the lurker's client device from the virtual world server; connecting the client device of the lurker to a different one of the plurality of virtual world servers; The method of claim 2 further comprising:
7. Connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking further comprises: identifying at least one parameter for each of the plurality of virtual world servers; determining a virtual world server from the plurality of virtual world servers with a highest ranking; connecting the client device to the virtual world server with the highest ranking if the at least one parameter of the virtual world server with the highest ranking is above a predetermined threshold; connecting the client device to a virtual world server with a lower ranking if the at least one parameter of the virtual world server with the highest ranking is below the predetermined threshold; The method of claim 1 , comprising:
8. The at least one parameter is: a security threshold; a proximity threshold; Bandwidth threshold and 8. The method of claim 7, comprising any one of:
9. Identifying each of the plurality of virtual world servers for which the at least one parameter exceeds the predetermined threshold based on the at least one parameter identified for each of the plurality of virtual servers; presenting for display on the client device each of the plurality of virtual world servers for which the at least one parameter exceeds the predetermined threshold based on the ranking of the plurality of virtual world servers; receiving user input at the client device; connecting the client device to a virtual world server of the plurality of virtual world servers for which the at least one parameter exceeds the predetermined threshold based on the user input; The method of claim 7 further comprising:
10. subsequent to connecting the client device to a virtual world server of the plurality of world servers, determining a loss of connection between the client device and the virtual world server of the plurality of world servers; connecting the client device to a same virtual world server of the plurality of world servers if the loss of connection has been below a predetermined threshold period; if the loss of connection exceeds a predetermined threshold period, connecting the client device to a different virtual world server from the plurality of world servers; The method of claim 1 further comprising:
11. 1. An apparatus comprising: a memory for storing instructions; A communication path; control circuitry coupled to the communication path and the memory, the control circuitry executing the instructions; receiving a request to connect a client device to one of a plurality of virtual world servers; accessing social network connectivity data for a user account associated with the client device; identifying a plurality of other user accounts based on the social network connectivity data; ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts; connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; control circuitry configured to An apparatus comprising:
12. Identifying a plurality of other user accounts based on the social network connectivity data further comprises the control circuitry: receiving metadata from a server; determining a friendship graph comprising the plurality of other users from the metadata; determining an online friendship graph from the metadata comprising a subset of the plurality of other users; The apparatus of claim 11 , comprising:
13. Ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts further comprises the control circuitry: determining a static online friendship graph from said metadata; or determining a dynamic online friendship graph from the metadata; The apparatus of claim 12 , comprising:
14. the online friendship graph comprises a node for each of the plurality of users and a plurality of vertices connecting the plurality of nodes to indicate friendship relationships between each of the plurality of users; The static online friendship graph further comprises: a first node for the first user and a second node for the second user joined by a single vertex representing a one-hop friendship connection between the first user and the second user; the first node for the first user and the second node for the second user joined by two vertices representing a two-hop friendship connection between the first user and the second user; the first node for the first user and the second node for the second user being joined by n vertices representing n-hop friendship connections between the first user and the second user, wherein a one-hop friendship connection represents a close friendship and the friendship level decreases with each hop; Equipped with In the dynamic online friendship graph, each vertex between two nodes is given a weight to determine the level of friendship, and the weight is: the interaction time between two users, the frequency of interactions between the two users, and / or the positivity of the interaction between the two users, with a higher weight representing a close friendship and a lower weight representing a less close friendship; The apparatus of claim 13 , wherein the determination is based on any one of:
15. 1. An apparatus comprising: means for receiving a request to connect a client device to one of a plurality of virtual world servers; means for accessing social network connectivity data of a user account associated with the client device; means for identifying a plurality of other user accounts based on the social network connectivity data; means for ranking the plurality of virtual world servers based on connections with devices associated with the plurality of other user accounts; means for connecting the client device to a virtual world server of the plurality of virtual world servers based on the ranking; An apparatus comprising: