As most (if not all) know, I'm developing a MMORPG set in space.  I have decided to develop a new system that will handle game elements from a much more structured standpoint.  For the most part this would be beneficial to someone else developing an online game with content that may change frequently or is so vast that you don't want to force it all to be downloaded at once.

The system is based on what I'm calling (for lack of a better term) Entity objects.  These are simple beans that contain information about what model to load, placement information, transformation information, etc.  Someone else has already developed something similar to this via XML.  However, what I'm planning to do is transfer these beans via JGN so the server can send relevant information about the scene.  Further, there is a EntityManager that will manage the creation of the entities passed to it along with taking a Loader interface to be able to see current progress (it may be null if you don't care).  Finally, the EntityManager makes use of a ContentManager that is responsible for getting the actual binary content for the models.  This will have a content location that the content can be downloaded from and it will check the lastModified state of the local cached file to see if it needs to be updated and loads based on the model quality specified by the game. 

This way you only end up downloading models as needed and only in the quality your system needs.  Further, every time a scene loads it sends a list of all entities and their location at connection time for that scene so any changed models or other details are sent.  After that JGN then takes over to handle synchronization of scene elements.

On the server this content will be running in memory (although persistence to a database behind the scenes) and just deals out information.  This will also help to reduce the load on an individual server having to server content because it can be offloaded to a content server that the data is streamed from, but the area in space you are in designates to a specific server and that server only has to deal with game synchronization and status.

This is an area where I don't have a lot of real-world experience yet, so any constructive criticism would be appreciated on the design concepts.

Sounds good.

Got a hell of a lot of potential. For a MMORPG that could lead to downloading a hell of a lot of data when a new/infrequent player joins a game/scene.  Could/would it be practical to only stream data required for elements of the scene in the players immediate vicinity? I suppose it depends on the type/amount of data being downloaded.

Well, I'm developing a universe that is not split into sectors but rather continuous space, so it will background load entities as they come into range.  It will load common entities when the game loads the first time and progressively load additional models as necessary hopefully never even noticeable to the game client.  The system I'm writing could be utilized in a number of different ways though.

Sounds excellent. A lot of your ideas/proposals are inline with my game plans (albeit more advanced).

What I'm best at is innovation…I suck at actually doing anything but creating frameworks I often feel like though. :slight_smile:

Creating a game seems much more difficult to me…but I guess that's one of the things that appeals to me.  Game development I believe is the hardest work that a developer can undertake, but also the most rewarding.

Well its good to have you around else without those nifty frameworks to rely on (JGN) our games would suck  :smiley: