Tuesday, May 29, 2012

Let's Call it MLT.

I need a name for the Ultimate Online Game Framework we've been discussing so people know what I'm refering to (crazy idea, or something for that project). I want it to be the greatest thing in the world. And as everyone knows, that is a nice MLT (Mutton, Lettuce and Tomato sandwich). I was toying with calling it Quantum, because I like the thought of Quantum Entanglement to represent entity state replication. So maybe the Quantum Distributed Entity System (QDES), and later the Quantum this and that.

I'm also really stuck on what language to write it in. C++ or Java. I think it is critical that a game development team use the same language on client and server. Otherwise the team gets split in half, and winds up not talking enough. Being able to swap people onto what ever needs work is really important for keeping to a schedule. And hiring from two piles of expertise is just that much harder. Java has so many great libraries. But C++ is so much more popular in the game industry. On mobile, you've got Objective-C. If you're using Unity, you've got C#.

To be honest, most of your game logic should probably be written (at least initially) in your favorite scripting language. Java and C++ both support Python, Lua, Javascript for example. IKVM appears to allow Mono to be embedded in Java, so you could maybe even do C# on both sides. This argument (http://www.mono-project.com/Scripting_With_Mono) is certainly compelling. Ever heard of Gecko? It embeds a C++ compiler so you can compile and load/run C++ "scripts" at run time. The reason I bring up all these options is: you could implement client and server in different languages, but embed the same scripting engine in both sides, so the game developers get the benefit of reusing their staff on both sides.

If the architecture and design of QDES is awesome enough, someone might reimplement it in their favorite language anyway. Or port it to a very different platform that doesn't support whatever language choice we make. So maybe the choice I'm stuck on isn't that serious right now. Maybe I should just start with the architecture and design.

I'm drafting some high level requirements and am thinking I'll post them here on a "page" instead of a blog article. Not sure how comments and such would work with that however. But I wanted something stickier than a post and something I could update and have a single reference to. Same with the designs as they start to come.

Anyway. Thanks for being a sounding board. Maybe some of you and your friends will have time to contribute to (or try out) all this. (And I haven't completely forgotten about doing that tech survey to see what other similar projects are out there in the open source world. I found a few. Some are a little dusty. Some are a little off track from what I'm thinking.)

5 comments:

  1. I like the idea of the online game framework. Please keep posting about it :-)

    As far as language is concerned, I'm currently using Python for a scalable web/MMO middleware.
    Pros:
    - concise and fast to write: 80% of the time is spent on the white board (as opposed to writing boilerplate code in Java, or rolling my own string parser/linked list/set/higher-level data types in C++)
    - can go to C-level for critical routines (e.g. message handling or server-side physics) (as you said)
    - Stackless is used by EVE Online
    - Jython runs in the JVM (as you said)
    - tons of core libraries, and pygame for the game graphics
    Cons:
    - no MMO server in python (you have nothing to benchmark against)
    - not many game clients in python (you have to code your own demo app)

    If you go with JS, you can benefit from your server-side and client-side objects being in the same language by using Node.js and a web browser (preferably with websockets). And since quite some MMOs are going to the web these days ... :-)

    If you find Quantum to be too similar to Quazal, here's a couple ideas for the name:
    - OGF = online game framework
    - WAGS = well-architected game server
    - ...


    I'm following your blog from the RSS, so when you put up a requirements page, could you please post it in a blog? Thanks!

    ReplyDelete
  2. If you haven't seen this already, here is a fairly current compilation of free gaming modules/apis what-not:

    http://www.ebonyfortress.com/blog/free-game-development-libraries/

    ReplyDelete
  3. One MMO framework to include in your survey is probably Panda3D (http://www.panda3d.org). I haven't used it personally, but it was originally created by Disney and is used in a few (all?) of their MMOs.

    The 3D client doesn't rival any of the major off-the-shelf engines, but as an integrated MMO framework it's probably one of the most complete. It's Python-based, with C++ extensions rather than embedded within a C++ application.

    ReplyDelete
  4. Btw, Richard Garriott may have an issue with the name Ultimate Online Game Framework :)

    ReplyDelete
  5. Darrin,

    Like your blog postings.
    What will be the potential benefits for users of this framework. What kind of games can one use it for? This may help refine the specs and nail down its name.

    ReplyDelete