Sea of Memes Archive
|
| Newest First ... Oldest First | September ... |
The base layer of the Sea of Memes is a virtual machine (VM). All the higher layers will be code executing inside the VM. So will all the user-written code attached to objects in the shared world. And so will any application programs developed inside the shared world. This puts several requirements on the VM:
Written inside the VM, there needs to be a shared-object database. This will allow higher levels to publish objects for the shared world, and allow the shared world client to find all the graphics it needs to display. Since there's no central server, this will be some sort of peer to peer object caching mechanism. Since the word "object" is seriously overused in this context (a 3-d graphical "object", an item in the shared-"object" database, and a programming "object"), let's give this a name. The peer-to-peer shared-object database is called the plenum. I like the first definition here, "A space that is completely filled with matter". It's also used for cabling and airspace, but I suppose that could connote connectivity, which is OK.
The Sea of Memes client starts by displaying some "world" object, which is fetched from the plenum. That "world" object then references other shared objects which contain the landscape, rooms, characters, etc.., also fetched from the plenum. Characters have their appearance defined by plenum objects, and are controlled by the various clients running on machines around the internet. The plenum would also contain any data shared by users, as in software projects, images, music, documents, etc.
Communication between clients consists of text chat, voice chat, and updates to the position and state of world objects, including your avatar. Communicating all this through the plenum would be too slow (it's intended for long-term storage of relatively static material), so we also have a peer to peer "chat" server that allows broadcast of instant updates. Call this the aether, taking the third definition here, "An elastic substance once thought to fill all space, and to allow for the transmission of light."
In keeping with these other names, I should probably name the VM. Since it's the lowest level of the system, I could call it the nadir. I'll have to see how that sits with me as I go. I'm not sure I like it.
On top of the plenum and aether, the 3D world client displays the shared world, lets you create and move a character within the world. Applications running inside the world include program development tools, 3d artwork tools, text and voice chat. I guess I need a name for the 3D world as well, since there are a lot of them out there now. MMOG, for "Massive Multiplayer Online Game" is the generic name, but a bit cumbersome. I think I'll call the shared world the figment. (Although browsing the thesaurus, I see "firmament" and "welkin", which look interesting.)
I guess I can stand to call a character in the world an avatar, although more people seem to use "char" or "toon." One of the times I stared on this project, I wanted to call them a "doppel", for the German "doppelganger", defined as "a ghostly double or counterpart of a living person". I doubt I can make that stick though.
During my last attempt at this, I wrote a partial virtual machine, then implemented a Java compiler on top of it. Rather than do anything general, I implemented builtin methods for creating graphics. I then messed around with some demos, written in my Java, running on the VM. Those demos are all packaged together as FTM Demo 2 in my downloads section.
I'm not sure what the right approach should be this time. There's a conflict between getting the architecture right, doing the least amount of implementation (since the project is huge), getting decent performance, and keeping up my interest level in the project. I also need something to show other people, if I want any feedback on this.
I will have to think some more about that.
| Newest First ... Oldest First | September ... |