Nick's Space System for MOO =========================== My design employs a generic client-server kind of architecture, which involves three objects (in a working system): Outer Space Space Ship Game Manager These three objects work in concert to provide a realistic, playable, fast and secure space simulation. Outer Space ---------- Outer Space does a lot in my system (much in contrast to a lot of existing systems implimented in various places, in which Outer Space is nothing more than a placeholder, or a mere 3d engine). Well, its only slightly more than a mere 3d engine; its a mere 3d engine with live motion. It: * manages a list of objects in Outer Space, and their movement vectors * contains all objects in Outer Space * imposes a time-based update system to move those objects, and keep them apraised of their current X Y Z positons (movement based on stored movement vectors) * accepts new movement vectors for objects * (possibly) imposes inertia based on previous movement vectors when new vectors are inserted Space Ship ---------- Actuall any object contained in Outer Space. It really does nothing except exist as a placeholder in Outer Space. Conceivably, a simplistic implimentation could be composed of just an Outer Space object and a simple Space Ship that provides an easy interface to the players so they can move around in Outer Space (by calculating and normalizing movement vectors and passing them to Outer Space). A more advanced design gives the Space Ship object a simple interface *API*, so someone could design any sort of user interface they want; this would open the door to out-of-moo interfaces, and more interesting, off the wall interfaces. Game Manager ------------ This object is by far the most complicated and non-generic. It basically does all the work as far as the *game* is concerned. It has to talk to the space object (which gives it carte blanc access to all positional data), and provide Space Ships with objects that they can scan. It has to watch for colitions and potential colitions, and manage Space Ship's weaponry, fuel, speed. Potentially, this object proxies all calls to Outer Space in order to enforced game rules, physics, and Space Ship limitations. This object would also potentially manage ship-to-ship docking, landing, orbiting, etc. Of course, this object could also arbitrarily alter data on Outer Space to facilitate jump-gates or other physics-defying manuvers.