Claims
- 1. A system for simulating a simulation space, comprising:
a plurality of simulation servers performing a continuous distributed simulation of said simulation space, said simulation space is a three dimensional simulation space that includes a set of regions, each region of said set of regions is simulated by at least one of said simulation servers.
- 2. A system according to claim 1, wherein:
each of said simulation servers simulates one of said regions and communicates with one or more simulation servers simulating neighboring regions.
- 3. A system according to claim 1, wherein:
said regions are simulated by different simulation servers.
- 4. A system according to claim 1, wherein:
said set of regions are contiguous.
- 5. A system according to claim 1, wherein:
said simulation space includes a virtual space.
- 6. A system according to claim 1, wherein:
a particular simulation server communicates with users who can perceive objects in a region being simulated by said particular simulation server and does not communicate with users who cannot perceive objects in said region being simulated by said particular simulation server.
- 7. A system according to claim 1, further including:
a viewer process, said viewer process communicates with simulation servers that simulate regions having objects perceivable by said viewer process, as said viewer process changes in said simulation space such that different sets of objects become perceivable to said viewer process then said viewer process communicates with different simulation servers.
- 8. A system according to claim 1, wherein:
said plurality of simulation servers includes a first simulation server, a second simulation server and a third simulation server; said first simulation server simulates a first region in said simulation space; said second simulation server simulates a second region in said simulation space, said second region is adjacent to said first region in said simulation space; said third simulation server simulates a third region in said simulation space. said third region is adjacent to said first region in said simulation space and not adjacent to said second region; and said third simulation server is in communication with said first simulation server and not in communication with said second simulation server.
- 9. A system according to claim 1, wherein:
multiple simulation servers report about different objects that can be perceived by a single viewer within regions being simulated by said multiple simulation servers.
- 10. A system according to claim 1, wherein:
communication is dynamically maintained between said simulation servers and a user such that simulation servers simulating regions having objects perceivable by said user communicate with said user and simulation servers simulating regions not having objects perceivable by said user do not communicate with said user, a particular simulation server associated with a region having an object that becomes perceivable to said user begins communication in real time with said user and a given simulation server simulating a region that ceases to have objects that are perceivable to said user stops having communication with said user.
- 11. A system according to claim 1, further comprising:
a space server in communication with said simulation servers, said space server stores a partition map associating each region to one or more simulation servers.
- 12. A system according to claim 11, further comprising:
a data server in communication with said simulation servers, said data server stores data about objects in said simulation space.
- 13. A system according to claim 11, further comprising:
a viewer in dynamic communication with one or more of said simulation servers; and a user server in communication with said viewer and said space server, said user server facilitates in allowing a viewer to participate in said simulation.
- 14. A system according to claim 13, further comprising:
a data server in communication with said simulation servers, said data server stores data about objects in said simulation space.
- 15. A system according to claim 14, wherein said user server performs a process comprising the steps of:
receiving a request from a viewer to access said simulation; accessing said data server to authenticate said viewer; accessing said space server to determined which region and simulation server said viewer is to interact with; and informing said viewer of said region and simulation server to interact with.
- 16. A system according to claim 14, wherein:
at least one of said simulation servers includes an agent representing a user in said simulation space, said agent receives commands from said user and reports to said user about said simulation space.
- 17. A system according to claim 11, wherein a new simulation server joins said plurality of simulation servers according to a process comprising the steps of:
informing said space server that said new simulation server is available to join said plurality of simulation servers; receiving information from said space server identifying a first region in said simulation space and one or more simulation servers that simulate regions neighboring said first region; communicating with said simulation servers that simulate regions neighboring said first region including receiving information about said first region; and simulating said first region, said steps of informing, receiving, communicating and simulating are performed during said simulation.
- 18. A system according to claim 11, wherein a new simulation server joins said plurality of simulation servers according to a process comprising the steps of:
informing said space server that said new simulation server is available to join said plurality of simulation servers; receiving information from said space server identifying a first region in said simulation space and one or more simulation servers that simulate regions neighboring said first region; receiving information about said first region from said space server; communicating with said simulation servers that simulate regions neighboring said first region including receiving information about said regions neighboring said first region; and simulating said first region, said steps of informing, receiving information from said space server, receiving information about said first region, communicating and simulating are performed during said simulation.
- 19. A system according to claim 1, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region of said simulation space; said second simulation server simulates a second region of said simulation space, said second region is adjacent to said first region in said simulation space; said first simulation server communicates first simulation data to said second simulation server, said first simulation data pertains to a portion of said first region adjacent to said second region; said second simulation server uses said first simulation data to simulate said second region; said second simulation server communicates second simulation data to said first simulation server, said second simulation data pertains to a portion of said second region adjacent to said first region; and said first simulation server uses said second simulation data to simulate said first region.
- 20. A system according to claim 1, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region in said simulation space; said second simulation server simulates a second region in said simulation space, said second region is adjacent to said first region in said simulation space; said first simulation server includes a parent agent representing a user in said first region, said parent agent communicates with said user, said user can perceive objects in said second region; and said second simulation server includes a first child agent, said first child agent receives information about said user from said parent agent, said first child agent sends information to said user about objects perceptible by said user in said second region.
- 21. A system according to claim 20, wherein first and second simulation servers perform a process for said parent agent crossing from said first region to said second region comprising the steps of:
determining that said parent agent is crossing from said first region to said second region; indicating to said second simulation server that said parent agent is crossing from said first region to said second region; identifying said second simulation server to said user; transforming said parent agent into a second child agent; and promoting said first child agent to a new parent agent, said second child agent receives information about said user from said new parent agent and said second child agent sends information to said user about objects perceptible by said user in said first region.
- 22. A system according to claim 20, wherein said parent agent performs a process comprising the steps of:
determining whether a frustum for said user overlaps to said second region; sending a message to start said first child agent to said second simulation server; and sending updated information about said user to said first child agent.
- 23. A system according to claim 1, wherein:
said regions of said simulation space are divided into sections for data storage purposes; said simulation servers store simulation data for said sections of said regions; said simulation servers maintain checksums for said simulation data for said sections of said regions; said simulation servers perform physical simulation of said regions and update said simulation data as a result of said physical simulation; said simulation servers update said checksums as a result of said updating of said simulation data; at least one of said simulation servers includes an agent associated with a user, said agent receives commands from said user and reports to said user about changes in said simulation space; and said agent determines which sections and objects have changed by determining which checksums have changed.
- 24. A system according to claim 23, wherein:
said agent receives a command from a user and changes an object in response to said command; and said agent changes one or more of said checksums to indicate said change in said object.
- 25. A system according to claim 1, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region in said simulation space; said second simulation server simulates a second region in said simulation space, said second region is adjacent to said first region in said simulation space; and said first and second simulation servers perform a process for transferring an object from said first region to said second region comprising the steps of:
determining that said object is in a boundary area of said first region, creating a ghost object in a boundary area of said second region, determining that said object has crossed a border between said first region and said second region, changing said ghost object in said second region to become said object in said second region, and creating and maintaining for at least a period of time a ghost object in said boundary area of said first region after said step of determining.
- 26. A system according to claim 1, wherein said plurality of simulation servers perform a process comprising the steps of:
receiving a request to add a new object to a particular region of said simulation space; adding said new object to said particular region of said simulation space; determining that a new region should be added based on a measure of objects in said particular region; adding said new region to said simulation space during said simulation; and adding a new simulation server to said plurality of simulation servers during said simulation, said new simulation server simulates said new region.
- 27. A method for simulating a three dimensional simulation space, comprising the steps of:
providing a continuous distributed simulation of said three dimensional simulation space.
- 28. A method according to claim 27, wherein:
said three dimensional simulation space comprises a set of contiguous regions; said step of providing is performed by a plurality of simulation servers; and each region is simulated by a different simulation server of said plurality of simulation servers.
- 29. A method according to claim 28, wherein:
multiple simulation servers report about different objects that can be perceived by a single viewer within regions being simulated by said multiple simulation servers.
- 30. A method according to claim 28, wherein:
communication is dynamically maintained between said simulation servers and a user such that simulation servers simulating regions having objects perceivable by said user communicate with said user and simulation servers simulating regions not having objects perceivable by said user do not communicate with said user, a particular simulation server associated with a region having an object that becomes perceivable to said user begins communication in real time with said user and a given simulation server simulating a region that ceases to have objects that are perceivable to said user stops having communication with said user.
- 31. A method according to claim 28, wherein said plurality of simulation servers perform a process comprising the steps of:
receiving a request to add a new object to a particular region of said simulation space; adding said new object to said particular region of said simulation space; determining that a new region should be added based on a measure of objects in said particular region; adding said new region to said simulation space during said simulation; and adding a new simulation server to said plurality of simulation servers during said simulation, said new simulation server simulates said new region.
- 32. A method for simulating using a plurality of simulation servers, said method comprising the step of performing a continuous distributed simulation of a simulation space, said simulation space is divided in to a set of regions, each region of said set of regions is simulated by at least one of said simulation servers.
- 33. A method according to claim 32, wherein:
said simulation space is a three dimensional simulation space.
- 34. A method according to claim 33, wherein said step of performing a continuous distributed simulation includes separately simulating each region of said set of regions using different a different simulation server for each region.
- 35. A method according to claim 34, further comprising the step of:
communicating between simulation servers simulating neighboring regions.
- 36. A method according to claim 34, wherein:
said regions are contiguous.
- 37. A method according to claim 32, wherein:
each of said simulation servers simulates at least one of said regions.
- 38. A method according to claim 37, wherein:
a particular simulation server communicates with users who can perceive objects in a region being simulated by said particular simulation server and does not communicate with users who cannot perceive objects in said region being simulated by said particular simulation server.
- 39. A method according to claim 37, wherein:
multiple simulation servers report about different objects that can be perceived by a single viewer within regions being simulated by said multiple simulation servers.
- 40. A method according to claim 37, further comprising the step of:
dynamically maintaining communication between said simulation servers and a user such that simulation servers simulating regions having objects perceivable by said user communicate with said user and simulation servers simulating regions not having objects perceivable by said user do not communicate with said user, a particular simulation server associated with a region having an object that becomes perceivable to said user begins communication in real time with said user and a given simulation server simulating a region that ceases to have objects that are perceivable to said user stops having communication with said user.
- 41. A method according to claim 37, further comprising the steps of:
receiving a request from a viewer to access said simulation; accessing a data server to authenticate said viewer; accessing a space server to determined which region and simulation server said viewer is to interact with; and informing said viewer of said region and simulation server to interact with.
- 42. A method according to claim 37, wherein:
at least one of said simulation servers includes an agent representing a user in said simulation space, said agent receives commands from said user and reports to said user about said simulation space.
- 43. A method according to claim 32, wherein a new simulation server joins said plurality of simulation servers according to a process comprising the steps of:
informing a first server that said new simulation server is available to join said plurality of simulation servers; receiving information from said first server identifying a first region in said simulation space and one or more simulation servers that simulate regions neighboring said first region; communicating with said simulation servers that simulate regions neighboring said first region including receiving information about said first region; and simulating said first region, said steps of informing, receiving, communicating and simulating are performed during said step of performing a continuous distributed simulation.
- 44. A method according to claim 32, wherein a new simulation server joins said plurality of simulation servers according to a process comprising the steps of:
informing a space server that said new simulation server is available to join said plurality of simulation servers; receiving information from said space server identifying a first region in said simulation space and one or more simulation servers that simulate regions neighboring said first region; receiving information about said first region from said space server; communicating with said simulation servers that simulate regions neighboring said first region including receiving information about said regions neighboring said first region; and simulating said first region, said steps of informing, receiving information from said space server, receiving information about said first region, communicating and simulating are performed during said step of performing a continuous distributed simulation.
- 45. A method according to claim 32, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region of said simulation space; said second simulation server simulates a second region of said simulation space, said second region is adjacent to said first region in said simulation space; said first simulation server communicates first simulation data to said second simulation server, said first simulation data pertains to a portion of said first region adjacent to said second region; said second simulation server uses said first simulation data to simulate said second region; said second simulation server communicates second simulation data to said first simulation server, said second simulation data pertains to a portion of said second region adjacent to said first region; and said first simulation server uses said second simulation data to simulate said first region.
- 46. A method according to claim 32, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region in said simulation space; said second simulation server simulates a second region in said simulation space, said second region is adjacent to said first region in said simulation space; said first simulation server includes a parent agent representing a user in said first region, said parent agent communicates with said user, said user can perceive objects in said second region; and said second simulation server includes a first child agent, said first child agent receives information about said user from said parent agent, said first child agent sends information to said user about objects perceptible by said user in said second region.
- 47. A method according to claim 46, wherein first and second simulation servers perform a process for said parent agent crossing from said first region to said second region comprising the steps of:
determining that said parent agent is crossing from said first region to said second region; indicating to said second simulation server that said parent agent is crossing from said first region to said second region; identifying said second simulation server to said user; and transforming said parent agent into a second child agent; and promoting said first child agent to a new parent agent, said second child agent receives information about said user from said new parent agent and said second child agent sends information to said user about objects perceptible by said user in said first region.
- 48. A method according to claim 46, wherein said parent agent performs a process comprising the steps of:
determining whether a frustum for said user overlaps to said second region; sending a message to start said first child agent to said second simulation server; and sending updated information about said user to said first child agent.
- 49. A method according to claim 37, wherein:
said regions of said simulation space are divided into sections for data storage purposes; said simulation servers store simulation data for said sections of said regions; said simulation servers maintain checksums for said simulation data for said sections of said regions; said simulation servers perform physical simulation of said regions and update said simulation data as a result of said physical simulation; said simulation servers update said checksums as a result of said updating of said data; at least one of said simulation servers includes an agent associated with a user in said simulation space, said agent receives commands from said user and reports to said user about changes in said simulation space; and said agent determines which sections and objects have changed by determining which checksums have changed.
- 50. A method according to claim 49, wherein:
said agent receives a command from a user and changes an object in response to said command; and said agent changes one or more of said checksums to indicate said change in said object.
- 51. A method according to claim 37, wherein:
said plurality of simulation servers includes a first simulation server and a second simulation server; said first simulation server simulates a first region in said simulation space; said second simulation server simulates a second region in said simulation space, said second region is adjacent to said first region in said simulation space; and said first and second simulation servers perform a process for transferring an object from said first region to said second region comprising the steps of:
determining that said object is in a boundary area of said first region, creating a ghost object in a boundary area of said second region, determining that said object has crossed a border between said first region and said second region, changing said ghost object in said second region to become said object in said second region, and creating and maintaining for a period of time a ghost object in said boundary area of said first region after said step of determining.
- 52. A method according to claim 37, further comprising the steps of:
determining that a new region should be added; adding said new region to said simulation space during said simulation; and adding a new simulation server to said plurality of simulation servers during said simulation, said new simulation server simulates said new region.
- 53. One or more processor readable storage devices having processor readable code embodied on said processor readable storage devices, said processor readable code for programming one or more processors to perform a method comprising the step of performing a continuous distributed simulation of a simulation space, said simulation space is divided in to a set of regions, each region of said set of regions is simulated by at least one of said simulation servers.
- 54. One or more processor readable storage devices according to claim 53, wherein said step of performing a continuous distributed simulation includes separately simulating each region of said set of regions using a different simulation server for each region.
- 55. One or more processor readable storage devices according to claim 54, wherein said method further comprises the step of:
dynamically maintaining communication between said simulation servers and a user such that simulation servers simulating regions having objects perceivable by said user communicate with said user and simulation servers simulating regions not having objects perceivable by said user do not communicate with said user, a particular simulation server associated with a region having an object that becomes perceivable to said user begins communication in real time with said user and a given simulation server simulating a region that ceases to have objects that are perceivable to said user stops having communication with said user.
- 56. One or more processor readable storage devices according to claim 54, wherein said method includes a process of a new simulation server joining said plurality of simulation servers, said process comprising the steps of:
informing a space server that said new simulation server is available to join said plurality of simulation servers; receiving information from said space server identifying a first region in said simulation space and one or more simulation servers that simulate regions neighboring said first region; communicating with said simulation servers that simulate regions neighboring said first region including receiving information about said first region; and simulating said first region, said steps of informing, receiving, communicating and simulating are performed during said step of performing a continuous distributed simulation.
- 57. One or more processor readable storage devices according to claim 54, wherein:
multiple simulation servers report about different objects that can be perceived by a single viewer within regions being simulated by said multiple simulation servers.
- 58. One or more processor readable storage devices according to claim 54, wherein:
said simulation space is a three dimensional space.
- 59. A method for simulating using a plurality of simulation servers, comprising the steps of:
storing simulation data for one region of a set of contiguous regions comprising a simulation space; simulating said one region using said simulation data; and communicating at least a portion of said simulation data with simulation servers simulating neighboring regions such that said simulation servers perform a continuous distributed simulation of said simulation space.
- 60. A method according to claim 59, further comprising the steps of:
communicating first simulation data to a simulation server simulating a neighboring region to said one region, said first simulation data pertains to a portion of said one region that is adjacent to said neighboring region; and receiving second simulation data from said simulation server simulating said neighboring region, said second simulation data pertains to a portion of said neighboring region that is adjacent to said one region, said step of simulating said one region uses said first simulation data.
Parent Case Info
[0001] This application claims the benefit of U.S. Provisional Application No. 60/371,743, entitled, “Simulation of a Large Virtual Space Using A Distributed Network,” filed on Apr. 11, 2002, incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60371743 |
Apr 2002 |
US |