Abstract:
Managing a virtual object in a server device includes storing the virtual object in a database accessible to the server device and, in response to a non-subscriber user performing a first action on the virtual object, sending a message from the server device to at least one user that subscribes to the virtual object.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application is a continuation of and claimed priority under 35 U.S.C. §120 to U.S. application Ser. No. 12/731,340, filed Mar. 25, 2010, entitled “MANAGING A VIRTUAL OBJECT,” which is incorporated herein by reference in its entirety. In turn, U.S. application Ser. No. 12/731,340 claims priority under 35 U.S.C. §119(a) from Taiwanese Patent Application Serial No. 98110594, filed on Mar. 31, 2009. 
     
    
     BACKGROUND 
       [0002]    Aspects of the present invention relate to an information service incorporating virtual objects, and more particularly to the interactions users and virtual objects in the information service. 
         [0003]    The Internet enables a variety of information services, by which a user can use his computer or other electronic devices to interact with other remote users. Such well-known information services include online transaction platforms, online social networking platforms, and online gaming platform 
         [0004]    Another popular type of information service available through the Internet is that of a “virtual world” which provides transactions, social networking, and gaming together. In this type of service, a user can select an “avatar” and can change the appearance or even the gender of the avatar at any time. Using the avatar as his or her proxy, the user can travel around the virtual world, chat with other users/avatars, or join a community to participate in activities in the virtual world. 
         [0005]    Through the avatar, a user also can interact with virtual objects implemented in the virtual world. For example, an avatar can buy or sell a virtual object or even try on a virtual item of clothing. By performing actions on a virtual object, one or more computers implementing the “virtual world” may alter selected characteristics associated with that virtual object based on a programmed functions associated with the virtual object, and render the virtual object in the “virtual world” according to its altered state. For example, if a first user “sells” a virtual object to a second user, ownership data associated with the virtual object may be altered to transfer ownership from the first user to the second user. 
       BRIEF SUMMARY 
       [0006]    A method of managing a virtual object in a server device includes: storing the virtual object in a database accessible to the server device; and in response to a non-subscriber user performing a first action on the virtual object, sending a message from the server device to at least one user that subscribes to the virtual object. 
         [0007]    A method of managing a virtual object includes: rendering the virtual object in a virtual environment implemented by at least one server device, the virtual environment being accessible to multiple users of the virtual environment; maintaining in the at least one server device a database of users that subscribe to the virtual object; and in response to a non-subscriber user performing a first action on the virtual object in the virtual environment, sending a message from the at least one server device to at least one of the users that subscribe to the virtual object. 
         [0008]    A server device includes a processor; and a memory communicatively coupled to the processor; the memory having executable code that causes the processor, upon execution of the executable code, to: maintain a database that includes a virtual object; maintain a database of users that subscribe to the virtual object; and in response to receiving a request from a non-subscriber user to perform a first action on the virtual object, send a message to at least one of the users that subscribe to the virtual object. 
         [0009]    A computer program product for managing a virtual object includes a computer readable storage medium having computer readable program code embodied therewith. The computer readable program code includes computer readable program code configured to store the virtual object in a database and computer readable program code configured to, in response to a non-subscriber user performing a first action on the virtual object, send a message to at least one user that subscribes to the virtual object. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0010]    The accompanying drawings illustrate various embodiments of the principles described herein and are a part of the specification. The illustrated embodiments are merely examples and do not limit the scope of the claims. 
           [0011]      FIG. 1  is a diagram of an illustrative information service system according to one exemplary embodiment of the principles described herein. 
           [0012]      FIG. 2  is a block diagram of an illustrative server according to one exemplary embodiment of the principles described herein. 
           [0013]      FIG. 3  is a block diagram of an illustrative client device according to one exemplary embodiment of the principles described herein. 
           [0014]      FIG. 4  is a diagram of an illustrative user interface at an illustrative client device according to one exemplary embodiment of the principles described herein. 
           [0015]      FIG. 5  is a flowchart diagram of an illustrative method according to one exemplary embodiment of the principles described herein. 
       
    
    
       [0016]    Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements. 
       DETAILED DESCRIPTION 
       [0017]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as an apparatus, a system, a method or a computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0018]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0019]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0020]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0021]    Computer program code for carrying out operations of the present invention may be written in an object oriented programming language such as Java, Smalltalk, C++ or the like. However, the computer program code for carrying out operations of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0022]    The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0023]    These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0024]    The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0025]    As used in the present specification and in the appended claims, the term “virtual object” refers to a computer-implemented representation of a physical object. 
         [0026]    As used in the present specification and in the appended claims, the term “perform an action,” when used with reference to a virtual object, refers to performing a function on the virtual object that is recognized and implemented by the computer system implementing the virtual object. 
         [0027]      FIG. 1  is an exemplary diagram of information service system  100  according to an embodiment of the present invention. The system  100  includes one or more servers  110  and one or more client devices  120 , such as desktop, laptop, mobile device, etc. A server  110  is communicated with a client device via the network  180 . The network  180  can be any type of network such as the Internet, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), etc. In any event, communication between the server  110  and the client device  120  could occur via a direct hardwired connection (e.g., serial port), or via an addressable connection that may utilize any combination of wire line and/or wireless transmission methods. Moreover, conventional network connectivity, such as Token Ring, Ethernet, WiFi or other conventional communications standards could be used. Still yet, connectivity could be provided by conventional TCP/IP sockets-based protocol. In addition, it should be understood, however, that although not shown, other hardware and software components (e.g., additional computer systems, routers, firewalls, etc.) could be included in the network  180 . 
         [0028]    The information service provided by the system  100  could be an online transaction platform, an online social networking platform, an online gaming platform, or the combinations thereof. In an embodiment, the information service provided by the system  100  is similar to a “virtual world” environment provided by Second Life® of Linden Lab, which is characterized by incorporating “virtual objects.” 
         [0029]    In this embodiment, the virtual object is created by computer code programming, and exists only in term of the computer processes used to run the information service. The virtual object could be shown to the user in text or in graphic at a client device  120 , and the user can execute particular actions with respect to the virtual object. For example, through his avatar, the user can “use,” “fetch,” “put,” “receive,” or “give” a virtual object. 
         [0030]    When a virtual object is created, a number of actions associated with the virtual object will be predetermined. For example, a virtual “dress” could be “tried on,” “sold” and “bought.” But the actions associated with the virtual object can be added, deleted, or changed later. 
         [0031]    Sometimes a virtual object can correspond to an object in the real world. Therefore a transaction of a virtual object can represent a transaction of an object in the real world. But a virtual object can also have nothing to do with anything in the real world. The virtual object described in the specification may be of the type implemented in Second Life® of Linden Lab, including, but not limited to, virtual buildings, virtual scenes, virtual vehicles, virtual furniture, virtual machines, virtual clothes, etc. Note that the information service provider could also create the virtual object. 
         [0032]    In certain embodiments, a user of the information service can use an avatar to participate in the information service. Typically an avatar can be shown in graphic or in text on the user interface of the client device  120 , and the user can control the avatar through use of a data input device (e.g., keyboard or mouse), to interact with (e.g., chat with) other users or to process (e.g., fetch) the virtual object. Note that in the present invention, a user is also able to interact with other users or virtual objects without using the avatar. 
         [0033]    As shown in  FIG. 2 , the server  110  has a processor  111  and a storage device  113 . In addition, the server  110  can have buses, I/O interface, input or output devices (such as keyboard and display), memories, caches, a communication system, and server software, all of which are not shown in the drawings. The processor could be a processor for the general information service server, such as Xeon® of Intel Corporation, and Athlon® or Opteron® of Advanced Micro Devices. (“Xeon” is a registered trademark of Intel Corporation in the United States, other countries, or both. “Athlon” and “Opteron” are registered trademarks of Advanced Micro Devices, Inc. in the United States, other countries, or both.) Note that the server  110  may have more than one processor. The storage device  113  can have one or more storage devices such as a hard disk drive or an optical disk drive. In other embodiments, the storage device  113  can have data spread in such as a LAN, a WAN or a SAN. The processor  111  executes an application program to provide a detection module  114 , a message module  115 , and a comparison module  116 . Meanwhile, the processor  111  can execute the application program to access or read/write the virtual object database  117  and the user database  119  maintained in the storage device  113 . 
         [0034]    The virtual object database  117  records the virtual objects in the information services and the actions executable to the virtual objects. In addition, the virtual object database  117  sets a user as a subscriber when he executes an action to a virtual object. The user database  119  keeps profiles of users, and a profile may record the communities that the user has joins, the activities that user has attended, or any other logs generated by the user when using in the information service, or any personal information that the user agrees to disclose. 
         [0035]      FIG. 3  is an exemplary block diagram of a client device  120  according to one embodiment of the present invention. The client device  120  employs a peripheral component interconnect (PCI) local bus architecture. Although the depicted example employs a PCI bus, other bus architectures such as Accelerated Graphics Port (AGP) and Industry Standard Architecture (ISA) may be used. Processor  151  (e.g., a CPU of Intel) and main memory  152  are connected to PCI local bus  154  through PCI bridge  153 . PCI bridge  153  also may include an integrated memory controller and cache memory for processor  151 . 
         [0036]    In the depicted example, local area network (LAN) adapter  155 , small computer system interface (SCSI) host bust adapter  156 , and expansion bus interface  157  are connected to PCI local bus  154  by direct component connection. In contrast, audio adapter  158 , graphics adapter  159 , and audio/video adapter  160  are connected to PCI local bus  154  by add-in boards inserted into expansion slots. Expansion bus interface  157  provides a connection for a keyboard and mouse adapter  161 , modem  162 , and additional memory  163 . SCSI host bus adapter  156  provides a connection for hard disk drive  164 , tape drive  165 , and CD-ROM drive  166 . Typical PCI local bus  154  implementations will support three or four PCI expansion slots or add-in connectors. 
         [0037]    An operating system runs on the processor  151  and is used to coordinate and provide control of various components within the client device  110 . The operating system may be a commercially available operating system such as Windows XP® of Microsoft Corporation. (“Windows XP” is a registered trademark of Microsoft Corporation in the United States, other countries, or both.) Instructions for the operating system, and applications or programs are located on storage devices, such as the hard disk drive  154 , and may be loaded into the main memory  152  for execution by the processor  151 . 
         [0038]    Processor  151  also executes a client process to communicate with server  110 , to allow the user logon to server  110  to use the information service  100 . In addition, as shown in  FIG. 4 , the client process can provide a user interface UI to show a virtual object OB (a flower) and an avatar AV (a little girl). The user can use the keyboard or mouse of the client device  120  to control the virtual object OB and the avatar AV. The user interface UI has a message field to show the message sent from server  110 . In some embodiments, the user can even use the interface UI to create a virtual object. 
         [0039]    In the following the embodiment shown in  FIG. 1  is further explained with the flowchart in  FIG. 5 . In step  501 , the user U 1  uses a client device  120  to logon to the server  110  and then uses the tools provided by the information service to create a virtual object OB (such as a flower) and determine the appearance of virtual object OB (e.g., a red flower) and actions A 1  and A 2  executable to the virtual object OB (e.g., “fetch,” “give,” “wave,” “throw,” “buy,” etc.) In other embodiments, the virtual object OB and the executable actions could be created and determined by the information service provider. 
         [0040]    In step  503 , the user U 1  executes an action A 1  with respect to the virtual object OB, and the virtual object database  117  will accordingly record the virtual object OB and the action A 1 , and further set the user U 1 , who executes the action A 1  to the virtual object OB, as a subscriber. Note that user A 1  could be set as a subscriber corresponding to the virtual object OB (say, an OB subscriber) or as a subscriber corresponding to the action A 1  of the virtual object OB (say, an A 1  subscriber). 
         [0041]    In step  505 , another user U 2  uses his client device  120  to logon to the server  110  and executes the action A 1  to the virtual object OB. 
         [0042]    In step  507 , the detection module  114  detects that the user U 2  executes the action A 1  to the same virtual object OB as the user U 1  did. For example, the detection module  114  can query user log files to determine if the user U 2  has executed any action to the virtual object OB and what actions he has executed. In step  509 , in response to the detection of detection module  114 , the message module  115  sends a message to the user U 1 , who has become a subscriber of the message in step  503 . 
         [0043]    Then in step  511 , the virtual object database  117  also set the user U 2  as another subscriber. In other words, both users U 1  and U 2  are subscribers now. In an embodiment, users U 1  and U 2  are set as OB subscribers, but in another embodiment, the user U 1  is an OB subscriber and the user U 2  is an A 1  subscriber. More details will be provided later. 
         [0044]    Moreover, in steps  503  and  509 , the subscribers set by the virtual object database  117  receive messages from the message module  115 . This part could be implemented in the server  110  using Session Initiation Protocol (SIP). 
         [0045]    Then similar to step  505 , another user U 3  can use his client device  120  to logon the server  110  and executes an action A 2  to the virtual object OB. Similar to step  507 , detection module  114  detects that the user U 3  executes the action A 2  to the same virtual object OB as user U 1  did with the action A 1 . In this embodiment, although users U 1  and U 3  execute different actions to the same virtual object OB, the detection module  114  still inform the message module  115  to send a predetermined message to the client device  120  of the user U 1  as an OB subscriber. But in another embodiment, because users U 2  and U 3  executes different actions A 1  and A 2  to the virtual object OB, the message module  115  will not send a message to the client device  120  of the user U 2 , who is set as an A 1  subscriber. 
         [0046]    Accordingly, if the user U 3  executes the action A 1  to the virtual object OB, the message module  115  will send a message to the client device  120  of the user U 1 , who is an OB subscriber, and also the message module  115  will send a message to the client device  120  of the user U 2 , who is an A 1  subscriber. In the subsequent step  511 , the user U 3  could be set as both an OB subscriber and an A 1  subscriber at the same time. 
         [0047]    Generally, a message from the message module  115  can include any kinds of content. In an embodiment, the message module  115  uses the message to reports to the user U 1  the event that user U 2  or U 3  execute actions to the virtual object OB, and the message will be shown in the message field MF of user interface of the client device  120 . In another embodiment, the message from the message module  115  can contain user profiles that stored in the user database  119 . More details will be discussed later. 
         [0048]    In an embodiment, a user can join a number of communities, and users in a community will receive notices or information associated with that community. For example, user profiles that stored in the user database  119  can record the communities that a user joins. In addition to the communities that a user joins, the user profiles can record the “virtual property” that the user owns or the characteristic of the avatar that the user chooses. A user can use the user interface U 1  (shown in  FIG. 4 ) to edit or revise his user profile. In the following the present invention will be further explained with the community mention above. 
         [0049]    In this example, the user database  119  records that user U 1  joins the community C 1 , the user U 2  joins the communities C 2  and C 3 , and the user U 3  joins the communities C 1  and C 4 . When users U 1 -U 3  join these communities, they can decide whether to disclose the communities they join. If not, certain communities they join will not be reported by the message module  115  to other users. In addition, the user database  119  may only provide some but not all (for example, only two) communities that a user joins most recently for the message module  115  to send messages to subscribers. 
         [0050]    If the user U 1  has been set as an OB subscriber, then when the detection module  114  detects that user U 2  executes an action A 1  to the virtual object OB, the message module  115  will send a message to the user U 1  to report the names or other information of the communities C 2  and C 3  that the user U 2  has joined. In another embodiment, the message module  115  reports only one of the communities C 2  and C 3  to the user U 1 . For example, the message module  115  can query a community database (not shown) and determines the community C 2  has more members or a longer history, so it only recommends the community C 2  to the user U 1 . 
         [0051]    If the user U 2  has been set as an A 1  subscriber, then when the detection module  114  detects that user U 3  executes the action A 1  to the virtual object OB, the message module  115  will send a message to the user U 2  to report the names or other information of the communities C 1  and C 4  that the user U 3  has joined. 
         [0052]    Meanwhile the user U 1  has been set as an OB subscriber, so when the detection module  114  detects that user U 3  executes an action to the virtual object OB, the message module  115  will send a message to the user U 1  to report the names or other information of the communities C 1  and C 4  that the user U 3  has joined. In another embodiment, the comparison module  116  will compare the profiles of users U 1  and U 3 , e.g., to compare the community C 1  that the user U 1  joined with the communities C 1  and C 4  that the user U 3  joined. After the comparison, the comparison module  116  will inform the message module  115  to only report to the user U 1  the community C 4  that the user U 1  has not joined. In other words, if the communities that the user U 1  and the user U 3  have joined are the same, for example, if the user U 1  and the user U 3  both only join the community C 1 , the message module  115  will not report to the user U 1  that the user U 3  also joins the same community C 1 . 
         [0053]    Moreover, when the user U 1  or U 2  receives the message reporting the new community (e.g., the community C 4 ) from the message module  115 , the user U 1  or U 2  can use the user interface UI as shown in  FIG. 4  to decide whether he also like to join the community C 4 . For example, the interface UI may provide a selection menu (not shown) for the new communities to the user. If the user U 1  or U 2  decides to join the community C 4 , the user database  119  will update or revise the profile of the user U 1  or U 2 , to record that the user U 1  or U 2  joins the community C 4 . In another embodiment, the server  110  may automatically enroll the user U 1  or U 2  to the community C 4  and update the user database  119  accordingly. 
         [0054]    Preferably, the detection module  114 , the message module  115 , and the comparison module  116  are implemented on the server  110 , using the SUBSCRIBE, NOTIFY, and PUBLISH processes described in the SIP protocol. More details could be referred to A. B. Roach,  Session Initiation Protocol  ( SIP )- Specific Event Notification  (http://www.ietf.org/rfc/rfc3265.txt) and A. Niemi, Ed,  Session Initiation Protocol  ( SIP )  Extension for Event State Publication  (http://www.ietf.org/rfc/rfc3903.txt). Particularly, in an embodiment, the users U 1 -U 3  are not made aware of these processes, so nothing will bother them when they enjoy the information service. 
         [0055]    The arrangement mentioned above provides long-term user interactions in the present invention. When a “subsequent” user (e.g., the users U 2  or U 3 ) executes an action to the virtual object OB, the community that the subsequent user joins will be reported to a “prior” user (say, the user U 1 ) who has executed an action to the virtual object OB before. In other words, the user who is the first one to execute an action to the virtual object OB will receive the community information of all subsequent users. Also as long as the virtual object OB still exists and whenever a new subsequent user executes an action to it, all prior users will receive the community information of the new subsequent user. 
         [0056]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
         [0057]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0058]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 
         [0059]    Having thus described the invention of the present application in detail and by reference to embodiments thereof, it will be apparent that modifications and variations are possible without departing from the scope of the invention defined in the appended claims.