Rather than trying to deal with any licensing issues with those who wanted to use or play with the work I’ve done under the umbrella of the 3rd Space project, I’ve decided to open source the system. The source is hosted on my SVN repository, which is:
I have bugzilla and Trac enabled, but I haven’t done much of the necessary work to make those usable yet.
Right now, the system isn’t all that impressive from a full featured simulation environment perspective. I do have a lot of the basics covered and have a good idea of where I’m headed, but there still an enormous amount of work to do, obviously.
Still, the system is quite different from any of the other virtual worlds or simulation environments in that the underlying framework is an innovative system which provides an event driven simulation framework using Java as the language you write the simulations in. Naturally, you can also use any of the scripting languages supported by the JVM (not to mention, languages which use the JVM, such as Scala, etc), so it’s actually pretty interesting from that perspective as well.
I’ve also fully implemented the 2 dimensional Voronoi based Area of Interest management which I think is actually quite innovative. Currently, the state of the art in this arena is message based pub/sub systems which simply don’t scale at all, or some Frankenstein’s monster based on what amounts to a QuadTree structure. Not optimal. Naturally, the AOI management is all event driven, being implemented as part of the aforementioned simulation framework. I have the 3 dimensional Voronoi Sphere of Interest management in the works. Once that is in place, things will really start rocking.
You’ll find some interesting things in the source tree, such as a pretty darn sophisticated Data Flow Analysis framework that I found. I don’t actually use it in the simulation framework’s transformation logic, but it’s something that will likely have to be pulled out to solve some of the more nastier analysis issues that will inevitably have to be solved in that arena.
You’ll also find a Composite Object framework that I put together, which I call Janus. The composite patter is an important pattern in the simulation / virtual worlds area and I couldn’t find anything out there remotely useful. Yes, I’ve looked at the available frameworks, but they were either too simple to do anything useful, or literally tried to boil the ocean in the attempt to solve all problems with their framework (I’m looking at you, Qi4J). It’s small and extremely tight, leveraging ASM for the bytecode transformations to implement the composite, rather than creating a maze of twisty proxies, all alike. Again, I haven’t used it in anger yet, so who knows if it’s really useful. But it seems promising.
In any event, be aware that the code is licensed under the Affero GPL V3. I am fully aware that this is the “yes, I’m a complete asshole” license. Oh well. Please note that I’m a rapacious capitalist at heart and believe in making money off of stuff. But I also believe in the open source model. I figure if you want to contribute back your mods, then that’s a decent enough payment. The Affero GPL does a pretty good job of modeling the balance I want to strike with the release of the source.
As always, this is all “as is” and without warranty. I don’t exist to fix any bugs you might find and I may not even respond to your emails. But if you’re interested in working on some stuff that I think is pretty darn interesting, then this might be something you find useful. Let me know.
I’ll definitely start putting in the work to fill out the Trac WIKI with some more useful information and start detailing what the sub projects are, documenting the various frameworks and start laying out the road map I have in my mind.
In any event, I hope you find the code useful and interesting.