Thoughts on an MMO Framework

I was getting started on developing a small scale MMO project (paradoxical much?) using jME when I began to realize it’s a lot of work… I figured there must be some work already done on the subject out there, and behold; Project DarkStar / RedDwarf, Multiverse, Marauroa, etc.



I was wondering if any monkeys out there had experience or opinions to share on these systems. RedDwarf looks promising, but it also likes kinda dead… Multiverse looked very intriguing except it seems they make a lot of assumptions about what kind of game you’re making and looks like it’s really tailored towards making just one very specific genre.



Thoughts?

1 Like

Hi, When i’m creating a small server I do these steps:



How many user’s do I want?

10-100 TCP/UDP (if you want to use a framework then this would be spidermonkey(networking for jme)

2000-3000(if implemented good) NIO ( if you want to use a framework then Jetty is your choice for this)

Do I want a working build fast?

If so then you will use some framework.

TCP/UDP spidermonkey

Nio Jetty

//////////////////////////////////////



One tip never use a framework that’s dead.



And multiverse if for games like second life and there…

TCP/UDP is not mutually exclusive with NIO. SpiderMonkey uses NIO selectors for its TCP server.



Any non-federated framework will have issues with large numbers of users, though. This has nothing to do with NIO or non-NIO. The messages have to be handled and dispatched and that’s where most of the time will go. The lower layers may reduce efficiency but it will be a relatively small percentage of what the total time taken is.



For example, a fixed native buffer NIO implementation will easily win on raw throughput but you will have to handle all messages inline (thereby causing other incoming messages to back up). On the other hand, SpiderMonkey queues up every message received right away and dispatches them on separate threads… the down side here being that there is a small allocation overhead and lots of GC churn. But you will never cause backups or stalls in the channels.



Anyway, the bottom line of both of these posts is that you need to decide firmly what the “M” in MMO means to you specifically, ie: “how many users online at once?” For anything more than a few 1000 or so, I think you’d be crazy not to design a federated architecture based on a persistent “entity system”.

I use RedDwarf but I did start while it was still Project Darkstar and supported by Sun.



RedDwarf works and is a solid/stable product for single node but unless some developers come in and take it up then it’s got limited potential moving forward. Which is a crying shame as the way it works and the potential of multi node was really impressive.

1 Like

Presuming you don’t find something prepackaged that works for you (and I suspect you won’t)… you should do some thinking about your game architecture since some designs will make a “federation of servers” easier than others.



For example, an “entity system” means that in some cases the various servers can operate completely independent and your only concern will be load balancing.

Entity Systems are the future of MMOG development – Part 1 – T-machine.org



Game Developer magazine this month had an interesting article on peer-to-peer meshes for doing trusted distribution… it can even work for MMOs. It is CONSIDERABLY more complicated than a federated set of entity systems but it’s nice because the infrastructure requirements are low.



How many users do you want to handle?

3 Likes

I’m new to the term federated, but if I’m not mistaken you’re referring to a server system composed of many many computers working together on a network to present a unified game universe to the outside world - which is definitely what I’m intending and it would be madness otherwise. Granted it’s kinda madness in the first place for me to be trying but hey, it’s a fun challenging hobby.



So RedDwarf is caught it limbo then? That’s very unfortunate. The goals the project set out with sounded amazing.



Any other solid frameworks out there or shall I be expecting to build my own? I’m not looking for the game code here but rather something that would help set up a distributed system. IE persistence, load balancing, redundancy, fault tolerance.

I’d like the system to be built as much as possible for horizontal scaling ~ dreaming big here but as high as thousands or tens of thousands of users someday.



And yar, reading up on a variety of these frameworks has gotten me to do some serious contemplation on my design. It is seeming more and more like my particular needs will likely not be met by any one pre-built solution. My development group will be very busy in the days to come :slight_smile:

There is a framwork thats partly developed by the university of Münster (which I visited once and saw a presentation about). It looks decent for me as a noob in that area but unfortunately it’s written in C++ and I can’t find any downloadlink. But maybe you find some readings of your interest if you want to really dive into that topic:

http://www.edutaingrid.eu/index.php?option=com_content&view=frontpage&Itemid=1

Yes. The concept behind Project Darkstar was (and still is) really promising.



Unfortunately while it is open source every developer on it was a paid Sun employee. When Oracle took over Sun they closed down all the labs and that included the Darkstar team who all got made redundant. Frustratingly estimates are they were less than 6 months from having multi node working at that time :frowning:



We grabbed all the code and documentation and got RedDwarf up and running and Owen (one of the PDS developers) got the first RDS release out but he has only limited time and there are no small jobs left to do… so unless someone can round up a few really talented developers with nothing better to do then its pretty much stalled. I released PDS SQL (used for SQL access from RDS) and do some forum user support but there is no way I have time to do any core development.



Single node works well (and depending on the nature of usage copes with thousands of simultaneous users) but multi node isn’t complete…

1 Like

Thank you pspeed for that link. I have just read two pages yet but it already triggered a lot in my mind :wink:

BTW that entity system reading is very interesting. I’ve seen similar designs but nothing that pushes it that far. It truly is presented as a fundamentally different paradigm then OOP. Thanks for the link!

@magister said:
BTW that entity system reading is very interesting. I've seen similar designs but nothing that pushes it that far. It truly is presented as a fundamentally different paradigm then OOP. Thanks for the link!


Make sure to read the comments, too. There is a lot of useful discussion there. I remember it taking me a long time to work through all of the material when I first read it... then I spent that weekend coding up my entity system with DB persistence and all. :)

My guess is they’re real, but they don’t get much bigger than that. Pretty much a flying squirrel in lizard form. Still cool!

1 Like
@erlend_sh said:
My guess is they're real, but they don't get much bigger than that. Pretty much a flying squirrel in lizard form. Still cool!


Perhaps you meant this for a different thread?
1 Like
@erlend_sh said:
My guess is they're real, but they don't get much bigger than that. Pretty much a flying squirrel in lizard form. Still cool!

:facepalm:

it’s madjack’s fault and he knows it.

I… don’t even know what just happened…