Claims
- 1. A method of managing a collaborative process comprising:
defining a plurality of locales on a plurality of servers; creating a plurality of objects corresponding to players in the plurality of locales; and mediating object state of the objects between the locales in a seamless manner so that the locales form a seamless world.
- 2. The method of claim 1, wherein the plurality servers are hosted on multiple hosts.
- 3. The method of claim 1, wherein the objects include non-player characters.
- 4. The method of claim 1, wherein the object state is mediated by exchange of context-agnostic information across process boundaries.
- 5. The method of claim 4, further including syntactic validation during the exchange.
- 6. The method of claim 1, wherein the collaborative process is a game.
- 7. The method of claim 1, wherein the collaborative process is a simulation task.
- 8. The method of claim 1, wherein the collaborative process includes telepresence.
- 9. The method of claim 1, wherein the object state is distributed asymmetrically between the servers.
- 10. The method of claim 1, wherein sentinels are used to mediate object state between two different servers of the plurality of servers.
- 11. The method of claim 1, wherein the plurality of servers includes a first server and a second server, the method further comprising:
launching a proxy sentinel from the first server into the second server; starting a stub sentinel on the first server to correspond to the proxy sentinel; and communicating the object state from the proxy sentinel to the stub sentinel.
- 12. The method of claim 11, wherein the proxy sentinel is a sink for object state information of objects on the second server, and the stub sentinel is a source for the object state information of objects on the second server.
- 13. The method of claim 12, wherein the stub sentinel creates ghost objects that correspond to the objects on the second server that come in contact with the proxy sentinel.
- 14. The method of claim 11, wherein the object state of an object on the first server is transmitted to multiple objects on the second server.
- 15. The method of claim 1, wherein only a subset of the object state is mediated.
- 16. The method of claim 1, further comprising moving an object seamlessly from one host to another host.
- 17. The method of claim 1, further comprising moving an object seamlessly from one server to another server.
- 18. The method of claim 1, wherein additional locales can be added dynamically to the collaborative process to expand the seamless world.
- 19. The method of claim 1, wherein additional servers running additional locales can be added dynamically to the collaborative process to expand the seamless world.
- 20. The method of claim 1, wherein each locale is a thread in a single server.
- 21. The method of claim 1, wherein the object state is mediated using proxies.
- 22. The method of claim 1, wherein the object state is mediated asymmetrically between the servers involved in the mediating step.
- 23. A method of distributing object state across a plurality of hosts comprising:
initiating a plurality of server processes on the multiple hosts; defining a plurality of objects whose object state is maintained by a corresponding server process; and mediating exchanges of object state information between the plurality of objects such that the plurality of objects perceive a seamless world formed by the server processes residing on multiple hosts.
- 24. The method of claim 23, wherein only a subset of the object state for each object is exchanged.
- 25. The method of claim 23, wherein the object state is transmitted as an abstraction.
- 26. The method of claim 23, wherein the plurality of server processes are hosted on multiple hosts.
- 27. The method of claim 23, wherein the objects also include non-player characters.
- 28. The method of claim 23, wherein the object state is mediated by exchange of context agnostic information across process boundaries.
- 29. The method of claim 23, wherein sentinels are used to marshal object state between two different server processes of the plurality of server processes.
- 30. The method of claim 23, wherein the plurality of server processes includes a first server process and a second server process, and further including:
launching a proxy sentinel from the first server process into the second server process, starting a stub sentinel on the first server process to correspond to the proxy sentinel; and communicating the object state from the proxy sentinel to the stub sentinel.
- 31. The method of claim 30, wherein the proxy sentinel is a sink for object state of objects on the second server process, and the stub sentinel is a source for the object state of objects on the second server process.
- 32. The method of claim 31, wherein the stub sentinel creates ghost objects that correspond to the objects on the second server process that come in contact with the proxy sentinel.
- 33. The method of claim 30, wherein the object state of an object on the first server process is transmitted to multiple objects on the second server process.
- 34. The method of claim 23, wherein an object can seamlessly move from one host to another host.
- 35. The method of claim 23, wherein an object can seamlessly move from one server process to another server process.
- 36. The method of claim 23, wherein the object state is mediated using proxies.
- 37. A method of distributing object state across server process boundaries comprising:
initiating a plurality of server processes; defining a plurality of objects whose object state is maintained by a corresponding server process; marshalling the object state on a first server process using a Network Protocol Stack (NPS) and at least one NPS packet; transmitting the object state across a process boundary to a second server process; and de-marshalling the object state on the second server.
- 38. The method of claim 37, further including transmitting the object state of an object on the first server process to multiple objects on the second server process.
- 39. The method of claim 37, further including transmitting heartbeat packets with a beat that increases as packet traffic decreases.
- 40. A method of distributing object state across server process boundaries comprising:
initiating a plurality of server processes; defining a plurality of objects whose object state is maintained by a corresponding server process; initiating a message sink for the object state on a first server process; and creating a message source for the object state on the second server process such that the message source transmits the object state of objects on the first server process to objects on the second server process.
- 41. A method of managing a collaborative process comprising:
initiating a plurality of server processes; initiating at least one gateway connected to the plurality of server processes; directing data from a user to a server process by performing a discovery process to match the user to the server process; and dynamically redirecting the data from the user to another server process when a user moves from one server process to the another server process.
- 42. The method of claim 41, wherein the gateway dynamically routes instant messages through the discovery process and dynamic redirection to another gateway.
- 43. The method of claim 41, wherein the discovery process is performed in a multicast manner.
- 44. The method of claim 41, wherein the gateway acts as a proxy for a user for transmission of data from the user to a matched server process.
- 45. A method of managing a collaborative process comprising:
defining a plurality of objects on a plurality of servers, each server having a Network Protocol Stack; and exchanging information about state of the objects between the servers using their Network Protocol Stacks, wherein, during the exchanging step, reliable packets and unreliable packets are exchanged such that only dropped reliable packets are resent upon notification from a corresponding Network Protocol Stack to a sender of a dropped packet.
- 46. A method of managing a collaborative process comprising:
initiating at least one gateway connected-to a plurality of hosts; performing a discovery process to match a user to a host when a user sends data to an object residing on at least one of the hosts; and redirecting the data from the user to another host when the object moves from one host to the another host.
- 47. The method of claim 46, further including binding the user to an Identity residing on one of the plurality of hosts.
- 48. The method of claim 46, further including authenticating the user.
- 49. The method of claim 46, wherein the data is sent in a context agnostic manner.
- 50. The method of claim 46, wherein the Identity corresponds to an Avatar.
- 51. The method of claim 46, further including blocking messages from a user when the messages exceed a predetermined quota.
- 52. The method of claim 46, further including syntactically validating packets sent from the user to an object on the plurality of hosts.
- 53. A method of conducting a distributed secure transaction comprising:
receiving a proposal the distributed secure transaction between a first party and a second party, wherein the first party and the second party are represented by object states distributed across a plurality of servers; receiving approval for the distributed secure transaction from the first party and the second party; mediating the distributed secure transaction across the plurality of servers; verifying that object states of objects maintained on the plurality of servers before and after the distributed secure transaction are valid; and verifying that the distributed secure transaction is consistent with the original proposal for the distributed secure transaction.
- 54. A method of distributing object state across locale boundaries comprising:
initiating a plurality of locale threads; defining a plurality of objects whose object state is maintained in the locale threads; changing the object state of at least one object in a first locale; proxying marshaled data representing the changed object state through a proxy sentinel at the first locale to its corresponding stub sentinel at a second locale; distributing the marshaled data through the stub sentinel to a receiving object at the second locale.
- 55. A method of effecting a distributed secure transaction comprising:
receiving a proposal for a transaction from a first user; verifying that the proposal is genuine; securing the proposal against tampering with a first password; embedding the sealed proposal in a secure message, the secure message being sealed with a second password; transmitting the secure message to a second user; receiving the secure message from the second user, wherein the authenticity of the secure message has been verified, and the secure message has been countersigned by the second user; verifying that the secure message has been properly countersigned by the second user; and executing the transaction.
- 56. The method of claim 55, further including registering the proposal prior to embedding.
- 57. The method of claim 55, further including preserving atomicity of the transaction.
- 58. The method of claim 55, further including preserving consistency of the transaction.
- 59. The method of claim 55, further including preserving isolation of the transaction.
- 60. The method of claim 55, further including preserving durability of the transaction.
- 61. A system for managing a collaborative process comprising:
means for defining a plurality of locales on a plurality of servers; means for creating a plurality of objects corresponding to players in the plurality of locales; and means for mediating object state of the objects between the locales in a seamless manner so that the locales form a seamless world.
- 62. A system for distributing object state across a plurality of hosts comprising:
means for initiating a plurality of server processes on the multiple hosts; means for defining a plurality of objects whose object state is maintained by a corresponding server process; and means for mediating exchanges of object state information between the plurality of objects such that the plurality of objects perceive a seamless world formed by the server processes residing on multiple hosts.
- 63. A system for distributing object state across server process boundaries comprising:
means for initiating a plurality of server processes; means for defining a plurality of objects whose object state is maintained by a corresponding server process; means for marshalling the object state on a first server process using a Network Protocol Stack (NPS) and at least one NPS packet; means for transmitting the object state across a process boundary to a second server process; and means for de-marshaling the object state on the second server.
- 64. A system for distributing object state across server process boundaries comprising:
means for initiating a plurality of server processes; means for defining a plurality of objects whose object state is maintained by a corresponding server process; means for initiating a message sink for the object state on a first server process; and means for creating a message source for the object state on the second server process such that the message source transmits the object state of objects on the first server process to objects on the second server process.
- 65. A system for managing a collaborative process comprising:
means for initiating a plurality of server processes; means for initiating at least one gateway connected to the plurality of server processes; means for directing data from a user to a server process by performing a discovery process to match the user to the server process; and means for dynamically redirecting the data from the user to another server process when a user moves from one server process to the another server process.
- 66. A system for managing a collaborative process comprising:
means for defining a plurality of objects on a plurality of servers, each server having a Network Protocol Stack; and means for exchanging information about state of the objects between the servers using their Network Protocol Stacks, wherein, during the exchange of information, reliable packets and unreliable packets are exchanged such that only dropped reliable packets are resent upon notification from a corresponding Network Protocol Stack to a sender of a dropped packet.
- 67. A system for managing a collaborative process comprising:
means for initiating at least one gateway connected to a plurality of hosts; means for performing a discovery process to match a user to a host when a user sends data to an object residing on at least one of the hosts; and means for redirecting the data from the user to another host when the object moves from one host to the another host.
- 68. A system for conducting a distributed secure transaction comprising:
means for receiving a proposal the distributed secure transaction between a first party and a second party, wherein the first party and the second party are represented by object states distributed across a plurality of servers; means for receiving approval for the distributed secure transaction from the first party and the second party; means for mediating the distributed secure transaction across the plurality of servers; means for verifying that object states of objects maintained on the plurality of servers before and after the distributed secure transaction are valid; and means for verifying that the distributed secure transaction is consistent with the original proposal for the distributed secure transaction.
- 69. A system for distributing object state across locale boundaries comprising:
means for initiating a plurality of locale threads; means for defining a plurality of objects whose object state is maintained in the locale threads; means for changing the object state of at least one object in a first locale; means for proxying marshaled data representing the changed object state through a proxy sentinel at the first locale to its corresponding stub sentinel at a second locale; and means for distributing the marshaled data through the stub sentinel to a receiving object at the second locale.
- 70. A system for effecting a distributed secure transaction comprising:
means for receiving a proposal for a transaction from a first user; means for verifying that the proposal is genuine; means for securing the proposal against tampering with a first password; means for embedding the sealed proposal in a secure message, the secure message being sealed with a second password; means for transmitting the secure message to a second user; means for receiving the secure message from the second user, wherein the authenticity of the secure message has been verified, and the secure message has been countersigned by the second user; means for verifying that the secure message has been properly countersigned by the second user; and means for executing the transaction.
- 71. A computer program product for managing a collaborative process, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that defines a plurality of locales on a plurality of servers; a procedure that creates a plurality of objects corresponding to players in the plurality of locales; and a procedure that mediates object state of the objects between the locales in a seamless manner so that the locales form a seamless world.
- 72. A computer program product for distributing object state across a plurality of hosts, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates a plurality of server processes on the multiple hosts; a procedure that defines a plurality of objects whose object state is maintained by a corresponding server process; and a procedure that mediates exchanges of object state information between the plurality of objects such that the plurality of objects perceive a seamless world formed by the server processes residing on multiple hosts.
- 73. A computer program product for distributing object state across server process boundaries, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates a plurality of server processes; a procedure that defines a plurality of objects whose object state is maintained by a corresponding server process; a procedure that marshals the object state on a first server process using a Network Protocol Stack (NPS) and at least one NPS packet; a procedure that transmits the object state across a process boundary to a second server process; and a procedure that de-marshals the object state on the second server.
- 74. A computer program product for distributing object state across server process boundaries, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates a plurality of server processes; a procedure that defines a plurality of objects whose object state is maintained by a corresponding server process; a procedure that initiates a message sink for the object state on a first server process; and a procedure that creates a message source for the object state on the second server process such that the message source transmits the object state of objects on the first server process to objects on the second server process.
- 75. A computer program product for managing a collaborative process, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates a plurality of server processes; a procedure that initiates at least one gateway connected to the plurality of server processes; a procedure that directs data from a user to a server process by performing a discovery process to match the user to the server process; and a procedure that dynamically redirects the data from the user to another server process when a user moves from one server process to the another server process.
- 76. A computer program product for managing a collaborative process, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that defines a plurality of objects on a plurality of servers, each server having a Network Protocol Stack; and a procedure that exchanges information about state of the objects between the servers using their Network Protocol Stacks, wherein, during the exchange of information, reliable packets and unreliable packets are exchanged such that only dropped reliable packets are resent upon notification from a corresponding Network Protocol Stack to a sender of a dropped packet.
- 77. A computer program product for managing a collaborative process, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates at least one gateway connected to a plurality of hosts; a procedure that performs a discovery process to match a user to a host when a user sends data to an object residing on at least one of the hosts; and a procedure that redirects the data from the user to another host when the object moves from one host to the another host.
- 78. A computer program product for conducting a distributed secure transaction, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that receives a proposal the distributed secure transaction between a first party and a second party, wherein the first party and the second party are represented by object states distributed across a plurality of servers; a procedure that receives approval for the distributed secure transaction from the first party and the second party; a procedure that mediates the distributed secure transaction across the plurality of servers; a procedure that verifies that object states of objects maintained on the plurality of servers before and after the distributed secure transaction are valid; and a procedure that verifies that the distributed secure transaction is consistent with the original proposal for the distributed secure transaction.
- 79. A computer program product for distributing object state across locale boundaries, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that initiates a plurality of locale threads; a procedure that defines a plurality of objects whose object state is maintained in the locale threads; a procedure that changes the object state of at least one object in a first locale; a procedure that proxies marshaled data representing the changed object state through a proxy sentinel at the first locale to its corresponding stub sentinel at a second locale; and a procedure that distributes the marshaled data through the stub sentinel to a receiving object at the second locale.
- 80. A computer program product for effecting a distributed secure transaction, the computer program product comprising a computer useable medium having computer program logic recorded thereon for controlling a processor, the computer program logic comprising:
a procedure that receives a proposal for a transaction from a first user; a procedure that verifies that the proposal is genuine; a procedure that secures the proposal against tampering with a first password; a procedure that embeds the sealed proposal in a secure message, the secure message being sealed with a second password; a procedure that transmits the secure message to a second user; a procedure that receives the secure message from the second user, wherein the authenticity of the secure message has been verified, and the secure message has been countersigned by the second user; verifies that the secure message has been properly countersigned by the second user; and a procedure that executes the transaction.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of commonly assigned U.S. patent application Ser. No. 09/721,979, filed Nov. 27, 2000, and claims priority to commonly assigned U.S. Provisional Patent Application No. 60/364,640, filed Mar. 18, 2002, U.S. Provisional Patent Application No. 60/364,639, filed Mar. 18, 2002, all of which are hereby incorporated by reference in their entirety.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60364640 |
Mar 2002 |
US |
|
60364639 |
Mar 2002 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09721979 |
Nov 2000 |
US |
Child |
10368443 |
Feb 2003 |
US |