Looks like you and I are gonna design this suckah in an afternoon or three … or slightly more, in "R-Pi time"
You"re on the right track with your assumptions that dupes are better than accidental drops, not everything needs to be kept updated everywhere at the same time, etc. Networks are a lot faster and more reliable than ever, so, life is getting easier for this sort of thing, although it"s still not easy to do, ideally. A lot can be done using in-situ statistical analysis to predict what needs to be where, and when, which is rarely performed in most systems because the fastest, perfect data replication and routing is assumed necessary, and no precedence is applied to any particular data types to help triage it. Ironically, every TCP/IP packet has carried precedence bits since the protocol was established in the early 1970s, but, no agreement was ever established for the semantics (e.g., is 255 the highest precedence, or 0?). We can encode that sort of thing in the data bits, anyway, so, even if the precedence bits get mangled by routers/switches/etc. (that"s what is supposed to use the precedence bits), it won"t matter. I think they finally did establish semantics for expanded precedence and quality-of-service (QoS) bits in IPV6, since digital video, spam, etc., are swamping the Internet, and something needed to be done.
I haven"t looked yet to see what"s being used as a DBMS in these engines, but, I"ll bet it"s overkill for what we need, and will be too much to have running on every R-Pi, anyway. Too many developers just pull stuff like this off the shelf and move on because they have no idea how to do it themselves, or even bother to look at open source to see what the key pieces they only need are. Same thing with network stuff, and it"s a well-known dirty little secret that network code tends to be even worse, as it"s more mysterious to many than DBMS concepts.
There is also a lot of cruft in some Linux libraries, especially when code is statically linked because someone couldn"t be bothered to tease apart dependencies (look at what the poor guy who"s trying to recompile tens of thousands of Debian files with hardware floating point enabled – even Perl is currently DOA). I don"t want to have to redo _everything_, but, over time, I"m sure we can get pretty lean and mean, especially if we can find some eager-beaver kids who can be turned loose on this sort of thing. While it can get pretty advanced, if some reasonably sharp kids (who haven"t acquired bad coding habits, yet) can get in on the ground floor, this would provide an incredible learning experience for them, and they would really own it. Employers would just eat up such experience.
A good friend is one of Yahoo"s network gurus and, while they just announced another 2,000 layoffs, he"ll be one of the last out the door even if the whole company eventually shrinks to 10 people. He can provide me some pointers on how to do some of what we need to do and, if it gets interesting enough, he and some of his friends who do the same kind of work for all of the big kahunas in SillyCon Valley and around the world. Heck, they"d like to play something like Pi-finity! and would probably help out as much as they could.
It will be insteresting to see if anyone has ever instrumented any MMORPGs, even commercial ones, and whether we can get access to the data, if it exists. If not, we could augment an open-source system to gather it ourselves, perhaps more than one to see if there are variances at the functional level (e.g., character geographic navigation, interaction encounters and outcomes, typical level/reward achievements, etc..).
Java should be fine, as I know there are ARM-compatible JREs and JDKs, although whether they"re fully optimized for the R-Pi CPU/GPU, I don"t know. Oracle/Sun has generally been pretty good about helping with ports when needed, especially when something new and popular comes along. Gee, if only we knew of something like that … and was actually shipping to hundreds of thousands of customers, many of them new to computing beyond the consumer level … uh-oh, I think the admins are onto us … cheese it!
I was awarded a patent about 13 years ago for techniques involving keeping network nodes updated without local intervention (web browsers and modified proxy web servers before data push was common – it was licensed by Microsoft, Google, Yahoo, AOL/Netscape, etc.). It will work for what we"re doing here, too, particularly portions dealing with concepts called "information logistics" (the precedence stuff a a bunch more) and "dissemination distance" (a measure of the typical time delay between nodes which may effectively be closer or further away than they"re physically separated). It"s pretty mind-bending stuff that has a lot to do with the physical wide-area network topology that favors East-West propagation over North-South for historical infrastructure demand reasons, and it changes all the time with time-of-day, day-of-week, day-of-month, time-of-year, real-world events, equipment failures, etc. The Internet really is a living organism that"s a collective extension of everyone who uses it.
I"m pretty impressed with Panda3D, at least in terms of the games that use it. I"ve heard that model conversion is better in some directions between platforms than others, so, we"ll have to see what"s what. I"ve been expecting to have to do a lot of customization, if not outright completing/fixing things. Sometimes open source is orphaned for a good reason, it gets overtaken by better technology/methodology, people move on before it"s really done, they decided to just start over, it"s an earlier version of a fully-cooked commercial product, etc. Probably the most important thing to look at is the data structures that are shared between the clients and server(s), especially the most complex, well-implemented systems, as we won"t need to reinvent that wheel.
Sometimes, the data structures are at least as important as the execution paths – if they"re too rigid or convoluted, no amount of code can make up for transmitting more than is needed, update cycles aren"t granular enough and take too much time per transaction (per the precedence issue already discussed), assumptions about the client and/or resources are off (one of our biggest challenges), etc. Just describing all of the issues that are going to need to be dealt with is going to be a tome, much less the design and implementation. Phew! Note to self: need to stock up on aspirin …
The best things in life aren't things ... but, a Pi comes pretty darned close!
"Education is not the filling of a pail, but the lighting of a fire." -- W.B. Yeats
In theory, theory & practice are the same - in practice, they aren't!!!