Abstract:
A method and system is described for an electronic agent to automatically travel from an origination computer to a destination computer. The method comprises the monitoring of requests for travel, generating a list of possible destinations, determining the final destination, prioritizing the importance of the travel, and then finally inserting that traveling action into the stack. A system is further disclosed and claimed for enabling the above methodology over a data network.

Description:
BACKGROUND OF THE INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     The present invention relates generally to the traveling patterns of electronic agents over a data network, and more particularly to, a method and system for artificial intelligence algorithms to determine said travel patterns.  
         [0003]     2. Description of the Related Art  
         [0004]     Electronic agents have typically taken several forms and names in the past, including virtual pets and electronic pets, and they have performed conventional virtual pet activities. These activities include eating, playing ball, chasing objects, scratching, and other common “pet” activities.  
         [0005]     These primitive electronic agents stay on one computer, display little intelligence, and have little interest in the activities of the user. Often, electronic agents take the form of “avatars”, virtual pets, or virtual entities on web pages. The web pages are traditionally quite static and only allow for limited interaction.  
         [0006]     There exist several disadvantages to current electronic agent implementations.  
         [0007]     A first disadvantage is that electronic agents exist only on the user&#39;s computer. This disadvantage means that the electronic agent is then unable to leave the user&#39;s computer to perform tasks or actions elsewhere. Because existing electronic agents are completely unaware of a greater electronic (world) around them, their limited programming prevents them from any sort of exploration, actions, or tasks outside of the user&#39;s computer.  
         [0008]     A second disadvantage is that electronic agents are unable to interact with network events on behalf of the user. In essence, electronic agents do not “help” the user with any external activities, such as making friends, locating interesting news, making appointments, etc.  
         [0009]     A third disadvantage is that electronic agents have limited capabilities because their wealth of knowledge is constrained to their existing programming and knowledge gained on the user&#39;s computer. They are unable to “learn” from other computers because of their isolation. The isolation means that electronic agents are unable to learn new capabilities or interact with other agents or computers in activities that might be compelling to the user.  
         [0010]     A need therefore exists for a method and system for an intelligent traveling electronic pet that alleviates many of these disadvantages.  
       SUMMARY OF THE INVENTION  
       [0011]     The present invention provides for a method for electronic agents to travel amongst computers. The method involves a series of decisions that determine the destination of the electronic agent.  
         [0012]     An “electronic agent” can have many manifestations. It is a software program that is seen most commonly by the user in the form of an “avatar”. The avatar can take many forms and goes by many names. Forms and names include virtual pets, virtual agents, electronic pets, or any other interactive entities on the screen that display some sort of intelligence.  
         [0013]     Similarly, each “electronic agent” has an owner, which is also referred to in this patent as a “user”. In the preferred embodiment, the agents-to-owner have a many-to-one ratio; in that one owner can own many agents. The owner is not necessarily a human, but it can also be another software program. In another embodiment, agents can be shared by owners.  
         [0014]     There is a two step process in determining the destination of an electronic agent. The first step is the process of deciding whether or not to travel to another computer. This decision is made via a simple algorithm that is either event-based or timer-based. The algorithm examines requests and events that may affect the electronic agent. The electronic agent may have a great number of potential activities, one of which includes traveling to another computer. If the algorithm decides that the next action will indeed be a “traveling” action, the next step is begun. The second step is the determination of the destination. Once it has already been decided that the electronic agent will be traveling, all of the possible destinations are considered and weighed accordingly.  
         [0015]     There are many events that may cause an electronic agent to travel. Likewise, there are many reasons a user may want their electronic agent to travel on their own. The traveling decision is handled by the server AI (Artificial Intelligence) and the client AI. These two AI systems, which can either be on the same computer or different computers, often work together to ensure appropriate pet behavior and pet actions.  
         [0016]     The server AI is responsible for slightly different decisions than the client AI, in the event that the AI is separated into different entities for client/server topology reasons. For the simplicity of example, the remainder of this text will assume that the client AI and server AI are their own separate entities on separate machines, even though that does not necessarily need to be the case.  
         [0017]     The server AI is responsible for such decisions as examining the inherent “needs” of the electronic agent. Because the electronic agent can be some level of an autonomous entity, the AI can make decisions without any input from the user. The server AI will take into consideration both the profile of the user and the profile of the electronic agent to determine what action or behavior to undertake next. For example, the server AI may decide that the electronic agent must visit another computer to make “friends” with the owner of that computer because it has examined all the relevant profiles and determined that the owners might have a high propensity for friendship. Another example may include a situation where the electronic agent&#39;s server AI decides to send the electronic agent over to visit one or more other electronic agents so that they may begin to “play a game” together.  
         [0018]     The client AI may make other sorts of decisions that are different from the server AI, but still connected in the sense that it affects the actions of the electronic agent. The client AI will monitor the user&#39;s behavior and pay particular attention to the user&#39;s actions. For example, the user may choose to pick up the electronic agent and drop them on another part of the screen. In another example, the user may choose to throw a tennis ball across the screen. In another example, the user may interact with their calendar and the agent to perform another set of actions. In these various examples, the pet will react accordingly, based on the decisions of the client AI. These actions would include acting annoyed, chasing a tennis ball, and running off to tell other friends about a change in the calendar. In terms of traveling, client AI may determine that an event that has transpired is so important that it requires the electronic agent to either be summoned to the client or to be expelled from the client.  
         [0019]     The electronic agent is always subject to their stack. The stack is a queued series of actions that the electronic agent must perform seriatim. Each action takes a certain amount of time to complete. Upon completion of one of the actionable items, that item is then removed from the queue and the next item becomes the active item.  
         [0020]     The client AI and the server AI must work with the existing stack when making decisions. After either AI makes a decision, the action item is then inserted into the stack. The insertion point is based on the weighted importance of the item. Extremely urgent action items will go be inserted close to the front of the queue or perhaps the current action item in the queue will be immediately usurped for the new urgent action item. Less important action items will either be inserted towards the rear or the end of the queue.  
         [0021]     Another fundamental element that makes AI-determined actions possible is the event handler. The event handler can be broken down into the client event handler and the server event handler, which may or may not be separate entities. The event handler is constantly “listening” for any events. The events may emanate from network events, user events, agent events, and the like. The event handler takes the important information and passes it into the AI subroutines so they can perform the pertinent activities.  
         [0022]     The electronic agent itself is an entity that has fundamental properties that help govern its actions. This “DNA” is the building blocks that help to form the intelligence, desires, and characteristics of the electronic agent. The electronic agent is “born” with set of characteristics that can change and evolve over time. In addition, as time continues, each electronic agent can collect a unique history of actions performs, places visited, friends made, tasks accomplished, skills learned, items gained, and the like.  
         [0023]     The electronic agent&#39;s actions are partially dictated by its internal meters. These internal meters change over time and each one has one or more “threshold” levels. Once the meter changes enough and one of the thresholds is met, an event is spawned which then becomes the domain of the event handler. The internal meters may be connected to one another or be totally independent from one another. Examples of internal meters would include desire for food, desire for human interaction, desire to make more friends for owner, desire to make more friends for self, desire to travel to another computer, desire to play, desire to schedule activities for their owner to have more fun, desire to find a good book for their owner, etc.  
         [0024]     The electronic agent is able to move anywhere that the data network has a connection. The destination can be any type of computer system including PCs, game console systems, handhelds, mobile devices, in-car display devices, televisions, PDA&#39;s, or any other network-enabled display device. The agent may also be sent to other non-conventional clients such as robots.  
         [0025]     The manner in which the server and client work together is analogous to a “soul” and a “ghost”. The “soul” of the electronic agent always remains on the server. The client only receives a “ghost”, or a physical representation, of the soul. This is illustrated when the client is no longer active, the “ghost” disappears, but the “soul” persists on the server to spawn another “ghost” on a client in the future.  
         [0026]     The electronic agent can be in more than one place at a time, or it can exist only in one discrete location at a time. If the agent can only be in one place at a time, it adds to the “believability” that an electronic agent is more analogous to a sentient being that “travels”. For example, a “Joe&#39;s” electronic agent may be a fluffy cat that may stay on a Joe&#39;s desktop for a while before leaving and traveling to a Joe&#39;s girlfriend&#39;s desktop to play with her electronic-agent.  
         [0027]     The electronic agent acts as a proxy for the user. The user may be very busy doing other tasks and may choose to allow the electronic agent to perform certain tasks for them. Another possibility is that the user is unaware of various possibility spaces that might exist for them, whereas their agent will constantly explore these possibility spaces on their behalf.  
         [0028]     For example, the electronic agent may be a facilitator for an electronic social network. An electronic social network is a software program that enables various parties in multiple locations to create acquaintances, friendships, business contacts, or romantic connections. One problem with social networking is that users may be shy, unaccustomed, or unskilled at expanding their own social network. These problems can be mitigated by an electronic agent that is actively traveling across the network to grow the user&#39;s social network on the user&#39;s behalf. As has already been detailed, the electronic agent makes traveling decisions based on the user profile, so it may do an excellent job of finding potential expansion points for the social network. If the electronic agent took the form of a cute pet, it can visit other social networking “candidates” in a proactive yet non-intrusive manner. The premise is that a user is much more amiable to a cute cat visiting their screen to make friends than a text-message friend request. Thus, allowing pets to make friends on a user&#39;s behalf is a much more effective method for expanding a user&#39;s social network. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0029]     A more complete appreciation of the invention and many of the advantages thereof will be readily obtained as the same becomes better understood by reference to the detailed description when considered in connection with the accompanying drawings, wherein:  
         [0030]      FIG. 1  is a block diagram view of the preferred embodiment of the present invention;  
         [0031]      FIG. 2  is a flow chart of an embodiment of the method of the present invention;  
         [0032]      FIG. 3  is a block diagram view of an embodiment of the server of the present invention;  
         [0033]      FIG. 4  is a block diagram view of an embodiment of the artificial intelligence services of the present invention;  
         [0034]      FIG. 5  is a flow chart of an embodiment of the method of the present invention;  
         [0035]      FIG. 6  is a flow chart of an embodiment of the method of the present invention; and  
         [0036]      FIG. 7  is a block diagram view of a general purpose computer that may be used to implement an embodiment of the method and system of the present invention.  
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0000]     System Overview  
         [0037]      FIG. 1  is a block diagram view of an embodiment of the computer system of the present invention. In  FIG. 1 , a computer system is shown to have an electronic agent  155  that is associated with a server  130 . The server  130  is associated with a one or a plurality of clients ( 100 ,  115 ,  120 ,  125 ). Any client (e.g.  100 ) can receive the agent  155  via the server  130 . The server  130  decides the destination of the agent  155 . The agent  155  may then exist on one or more clients  100 . The server  130  or the origin client may decide that the agent should travel to another client ( 100 ,  115 ,  120 ,  125 ). Upon leaving the origin client, the agent then travels to the destination client ( 100 ,  115 ,  120 ,  125 ), until which time the server  30  or client decides the agent needs to travel again.  
         [0038]     The client  100  may take many manifestations  135  besides a traditional computer. These manifestations  135  include, but are not limited to, handheld computers, mobile phone, wireless devices, and the like.  
         [0039]     The server storage medium  135  may be any type of storage device as are well known in the art, for example, any type of disc including hard disc, flash memory, micro drives, hard drives, floppy disc, optical disc, DVD, CD-ROMS, magnetic optical discs, RAM, EPROM, EEPROM, magnetic or optical cards, or any type of storage media that is suitable for storing electronic instructions/data. The server storage medium  135  may reside on the same physical system as the server  130 .  
         [0040]     It is noted that the computer system, as shown in the embodiment of  FIG. 1 , shows a server  130  and client  100  as two separate general purpose computers ( FIG. 7 ). However, as is apparent to one skilled in the art, the server  130  and client  100  connected by the data network may, in fact, be a single general purpose computer, where the data network is a bus ( FIG. 7 ) rather than a data network such as the Internet. That is, while the embodiment of  FIG. 1  shows the server and client as separate entities, those entities may in fact be one general purpose computer as shown in  FIG. 7 .  
         [0041]     Still in  FIG. 1 , a data network connects the server  130  and the client  100 . The data network may be an Internet, an Intranet, an Extranet, a wireless connection, an ethernet-type bus, or any type of connection that is able to transfer data between the server  130  and client  100 . In one embodiment, the data network is the Internet, where data is transmitted from different geographical locations where the server  130  and the client  100  are located. The server  130  includes a server processor (not shown), which may be any well-known central processing unit (CPU) or a microprocessor (whether a single microprocessor or a plurality of microprocessors). The server&#39;s  130  processor, in one embodiment of the present invention, generates a series of actions for the electronic agent  155  based on the profile of the user  325  and/or the profile of the electronic agent  320 . Thus, as more fully described below, a user  165  will provide personalized data, in the form of a profile  170 , via the client  100 .  
         [0042]      FIG. 3  shows the preferred embodiment of the server system  130 . The server  130  is the heart of the system that determines the agent&#39;s  155  behavior and traveling patterns. The server  130  contains a variety of services that add to the functionality of the electronic agent  155 . The fundamental services include the agent profile  320 , a service that is responsible for keeping track of all of the activities, needs, desires, history, and extended profile data of the electronic agent  155 ; the owner profile  325 , a service that is responsible for keeping track of all the activities, needs, desires, hobbies, interests, characteristics, attributes, history, and extended profile data of the owner; the inventory management  330 , a service that maintains a list of all of the objects the various agents and owners can utilize; the user management  335 , a service that maintains account information for the user and pertinent account and billing activity; and the transport service  340 , a service that enables services to communicate with one another. Layered on top of these basic services are the database service  345  and the client communication layer  315 . The database service enables the server to access the databases  350  including the owner data  355  and the agent data  360 . The owner database  355  is commonly the domain of the owner profile  325  service. The agent database  360  is commonly the domain of the agent profile  320  service.  
         [0043]     The logging service  300  maintains a log of server  130  activities and can be adjusted by the administrator to log whatever information is pertinent that stems from client and/or server activities.  
         [0044]     The client communication layer  315  is the common service that acts as the interface between the client and the server. This directly interfaces with the data network  160 , which in turn maintains a connection to the client  100 .  
         [0045]     The server  130 , in another embodiment, can perform a great deal more services other than the basic ones described above. The server may be utilized by agents to perform a variety of services that prove to be beneficial to the owner  165  or to the agent program itself. Such services include shopping, making appointments, blogging, playing games, and other extended services.  
         [0046]      FIG. 4  is a block diagram representation of the preferred embodiment for the artificial intelligence (AI) engine. Because the electronic agent  155  is an entity that is stored on the server  130 , but often spends time on various clients  100 , it is necessary to have various levels of AI working together in concert. As has been stated, because the client  100  and server  130  can indeed be one general purpose computer, these AI pieces can be one in the same.  
         [0047]     The server  130  has a service running that is called the Server AI  480 . The server AI  480  is responsible for many activities that govern the behavior and activities of the electronic agent  155 . The server AI  480  is largely responsible, but not solely responsible, for determining the traveling destinations of the agent  155 . It performs this via the traveling algorithms  405 . The server AI  480  performs many other important stateful activities including games activity  410 , a decision which may require the agent&#39;s presence within a game session; deciding who to meet  415 , a social networking decision; group and flocking decisions, a series of parameters that determine if an agent should join other agents in a particular location; and other server side decisions  425 . Once these decisions are made and the server  130  decides on an activity or behavior, that activity is placed in the stateful stack  465 . The stateful stack  465  is a server-side stack that maintains its state even when no client activity is registered. The stateful stack  465  differs from the session stack  470  in that the session stack  470  disappears whenever the client  100  is logged off.  
         [0048]     Similar to the server AI  480 , the client AI  485  is responsible for decisions affecting the actions and behaviors of the electronic agent  155 . These decisions are more related to specific client-side activities and are often specific to interactions with the owner  165 .  
         [0049]     The client AI  485  is only active when the client  100  is active. When the client  100  is “on”, a session begins. The session will perform a series of actions with the electronic agent  155 . The session will continue to make decisions while the client  100  is on. These decisions are determined by the client AI  485 , and then placed into the session stack  470 . The session stack  470  will also receive new items from the server  130 , which is responsible for determining the stateful actions which originate from the stateful stack  465 .  
         [0050]     The client AI  485  can perform several decisions that do not relate to any permanent “state”. These decisions include items such as sleeping  435 , eating  440 , communicating with user  445 , communicating with other agents  450 , how to communicate  455 , and other client side decisions  460 .  
         [0051]     Once the client  100  is no longer active, including being offline and turned off, the session stack  470  is emptied.  
         [0052]     Certain activities that are inserted into the session stack  470  by the client AI  485  can also be replicated onto the server  130  and inserted into the stateful stack  465 .  
         [0053]      FIG. 5  illustrates a preferred embodiment of a process flow of the present invention. The overall concept is one where an electronic agent acts as a semi-autonomous entity that intelligently performs actions, local and remote, on behalf of the user.  
         [0054]     The process begins with the user performing actions on a client system  500 . It is assumed that these actions are performed while the electronic agent  155  is activated. The user then performs actions that affect the agent  505 . The system, which is governed by AI algorithms, then issues requests for future actions  510 . These activities are then placed into the stack based on priority  515 . Finally, the agent performs actions seriatim in the stack  520 .  
         [0055]      FIG. 7  illustrates a high-level block diagram of a general purpose computer which is used, in one embodiment, to implement the method and system of the present invention. The general purpose computer, in one embodiment, acts as either the server  130  or client  100  of  FIGS. 1, 3  and  4  above. The general purpose computer of  FIG. 7  includes a processor  730  and memory  725 . Processor  730  may contain a single microprocessor, or may contain a plurality of microprocessors, for configuring the computer system as a multi-processor system. In alternative embodiments described above, the processor  730  includes the server processor and client processor of  FIGS. 1, 3  and  4  above. Memory  725 , stores, in part, instructions and data for execution by processor  730 . If the system of the present invention is wholly or partially implemented in software, including computer instructions, memory  725  stores the executable code when in operation. Memory  725  may include banks of dynamic random access memory as well as high speed cache memory.  
         [0056]     The computer of  FIG. 7  further includes a mass storage device  735 , peripheral device(s)  740 , audio means  750 , input device(s)  755 , portable storage medium drive(s)  760 , a graphics subsystem  770  and a display means  785 . For purposes of simplicity, the components shown in  FIG. 1  are depicted as being connected via a network (i.e. transmitting means). However, the components may be connected through a bus  780  on a single general purpose computer. For example, processor  730  and memory  725  may be connected via a local microprocessor bus, and the mass storage device  735 , peripheral device(s)  740 , portable storage medium drive(s)  760 , and graphics subsystem  770  may be connected via one or more input/output (I/O) buses. Mass storage device  735 , which is typically implemented with a magnetic disk drive or an optical disk drive, is in one embodiment, a non-volatile storage device for storing data and instructions for use by processor  730 . The mass storage device  735  includes the storage medium of embodiments of the present invention, and the server storage medium and client storage medium in alternative embodiments. In another embodiment, mass storage device  735  stores the first and second algorithms of the server in an embodiment of the present invention. The computer instructions that implement the method of the present invention also may be stored in processor  730 .  
         [0057]     Portable storage medium drive  760  operates in conjunction with a portable non-volatile storage medium, such as a flash memory, wireless storage device, floppy disk, or other computer-readable medium, to input and output data and code to and from the computer system of  FIG. 7 . In one embodiment, the method of the present invention that is implemented using computer instructions is stored on such a portable medium, and is input to the computer system  790  via the portable storage medium drive  760 . Peripheral device(s)  740  may include any type of computer support device, such as an input/output (I/O) interface, to add additional functionality to the computer system  790 . For example, peripheral device(s)  740  may include a network interface card for interfacing computer system  790  to a network, a modem, and the like.  
         [0058]     Input device(s)  755  provide a portion of a user interface. Input device(s)  755  may include an alpha-numeric keypad for inputting alpha-numeric and other key information, or a pointing device, such as a mouse, a trackball, stylus or cursor direction keys. Such devices provide additional means for interfacing with the customized media list and the customized media in the method of the present invention. In order to display textual and graphical information, the computer of  FIG. 7  includes graphics subsystem  770  and display means  785 . Display means  785  may include a cathode ray tube (CRT) display, liquid crystal display (LCD), other suitable display devices, or means for displaying, that enables a user to view the customized media list or customized media. Graphics subsystem  770  receives textual and graphical information and processes the information for output to display  785 . The display means  785  provides a practical application for providing the customized media list of the present invention since the method of the present invention may be directly and practically implemented through the use of the display means  785 . The computer system of  FIG. 7  also includes an audio system  750 . In one embodiment, audio means  750  includes a sound card that receives audio signals from a microphone that may be found in peripherals  740 . In another embodiment, the audio system  750  may be a processor, such as processor  730 , that processes sound. Additionally, the computer of  FIG. 7  includes output devices  745 . Examples of suitable output devices include speakers, printers, and the like.  
         [0059]     The devices contained in the computer system of  FIG. 7  are those typically found in general purpose computer, and are intended to represent a broad category of such computer components that are well known in the art. The system of  FIG. 7  illustrates one platform which can be used for practically implementing the method of the present invention. Numerous other platforms can also suffice, such as Macintosh-based platforms available from Apple Computer, Inc., video game platforms such as handheld devices from Nintendo (like the Nintendo DS) and from Sony (like the Sony PSP), platforms based on mobile phones that feature graphical user interfaces, platforms with different bus configurations, networked platforms, multi-processor platforms, other personal computers, workstations, mainframes, navigation systems, and the like.  
         [0060]     In a further embodiment, the present invention also includes a computer program product which is a computer readable medium (media) having computer instructions stored thereon/in which can be used to program a computer to perform the method of the present invention. The storage medium can include, but is not limited to, any type of disk including flash memory, hard disks, floppy disks, optical disks, DVD, Writable DVDs, CD ROMs, magnetic optical disks, RAMs, EPROM, EEPROM, magnetic or optical cards, or any type of media suitable for storing electronic instructions.  
       COMPREHENSIVE EXAMPLE  
       [0061]      FIG. 2  is a flow chart of an embodiment of the method of the present invention. In  FIG. 2 , the comprehensive example of one embodiment of the methodology and system of the present invention begins at step  200  where a user, such as user  165  of  FIG. 1 , logs on to the client  100  that runs the application that enables the electronic agent  155 .  
         [0062]     Once the client  100  is running after step  200 , the client  100  then determines if the electronic agent  155  is currently on another client  205 . If the electronic agent  155  is indeed on another computer, then the client  100  recalls the agent  210 . After this event, or in the case of a negative response from  205 , step  215  begins when the agent is shown appearing on the user&#39;s client.  
         [0063]     The user then continues to perform actions on the client  100  which may or may not affect the status of the electronic agent  155 . This “cycle” of the user performing actions is covered by step  220 . As the user performs actions, the event handler  640  continues to build up a series of activities to perform. Some of these activities may or may not have to do with traveling to another computer. As this comprehensive example describes traveling, only those activities and decisions based on traveling are germane.  
         [0064]     In this embodiment, the electronic agent  155  has three different possibilities that can affect its traveling status. The first traveling check is made against the internal threshold for desire to wander in step  225 . This can be further described as the electronic agent&#39;s inherent needs and desires to travel. This desire can increase over time while the agent is not traveling. It operates similar to “hunger”, where if the agent does not eat any food for a long time, it will become hungrier. Upon reaching a predefined threshold level, the agent will begin to seek to remedy that “hunger” automatically. In this case the “hunger” is the desire to travel. If that level is reached in  225 , they move on to step  240 .  
         [0065]     In step  240 , the agent decides on a destination category. There are a variety of traveling categories that indicate the destination preferences as indicated in profile  170 . Preference categories include friends, friends of friends, random, custom, and friends of the agent itself. The user has some or total control over how these preferences are weighed and prioritized.  
         [0066]     Once a category is decided in step  240 , step  245  determines exactly which owner to visit within that category. It begins with the substep of examining the list of all the owners within the destination category. Note that in another embodiment, the owners in the destination category may not want to be visited by the given electronic agent for a variety of reasons. These reasons can include but are not limited to specific barring of a particular agent, general filter that filters out agents that fall into a certain category, or the client is too full of existing agents or to busy to support additional agents. After the list is examined, the list is sorted into a preference order and a scattering algorithm determines the final choice that weights by preference.  
         [0067]     Once the destination is decided in  245 , the traveling action is placed into the stack in  255 . If the traveling action is urgent, it may be placed first in the stack. If the agent is busy performing higher priority tasks, it may place the item further down the stack. Finally, in step  260 , the agent arrives at the destination.  
         [0068]     If the agent has not reached the wandering threshold in step  225 , there is a check to see if there has been a request from another owner in step  230 . There are many events that might transpire to precipitate this activity, including the new online arrival of an agent&#39;s “friend”, a specific request from another owner, or activity at another location that requests the presence of an agent. This final possibility is mentioned more specifically in step  235 , when an agent receives a request from another agent.  
         [0069]     If either of these steps  230  or  235  are true, then step  250  ensues where the agent determines the destination address. This is a specific location based on the origination of the request, so there is no need to perform the algorithms described in steps  240  and  245 .  
         [0070]      FIG. 6  illustrates a possible embodiment of the present invention in terms of how it handles the stack. The stack  475  contains a series of activities that are in the queue for the electronic agent  155  to perform. In this example, the server AI  480  and or the client AI  485  has determined actions to be placed onto the stack. The first item to be performed in the stack is an idle animation  605 , followed by a finding food action  610 , followed by talking to another agent  615 , followed by playing a game  620 , followed by making dinner reservations for the owner  625 , followed by joking with the owner  630 , followed by other tasks.  
         [0071]     The current action being performed is the action at the beginning of the stack. In the example in  FIG. 6 , the current action is idle animation  605 . Each action may take only an instant to perform, while others may take several seconds, minutes, hours, or days. It is possible for the current action to be a plurality of actions. For example, the agent may be able to make dinner reservations while playing a game with the user.  
         [0072]     The event handler  640 , is constantly monitoring all events  645  and then choosing the appropriate location for insertion into the stack  475 . In this example, the stack is examining all the current meters of the electronic agent  155 . These meters may include but are not limited to thirst, hunger, desire for human interaction, desire for interaction with another agent, desire to travel, desire to play, desire to help their user be more healthy, boredom, and the like.  
         [0073]     If, while monitoring current meters  645 , the traveling threshold has been met or a remote request has been made  650 , then the event handler will create a new traveling action  655 . Every action has a priority attached to it, so there will then be a prioritized placement into the existing stack.  
         [0074]     Although the present invention has been described in detail with respect to certain embodiments and examples, variations and modifications exist which are within the scope of the present invention as defined in the following claims.