by Lloydyboy on Tue Apr 15, 2008 3:25 pm
Before the move from Codeplex, I was using the QSE to hack together a client for an FPS MMO. The project has been postponed indefinately since I was almost the only one submitting code, and I'm now doing a 2 year post grad degree, however, I do have a couple of insights which might help you out.
This is the first time I've looked at QSE since around xmas, so forgive me if i'm not up to date on any recent changes.
From what I was working on, the graphical side is suitable for an MMO, no questions really, and the modularisation of the component stuff is also very suitable.
The main problem I forsaw was that all the work on physics will be completely different from what an MMO needs.
MMOs need determinate physics on both client and server. They both process the physics, but at different speeds. Client does it every frame so the players move smoothly, server calculates depending on latency/bandwidth, and forces non compliant clients to readjust to be inline with the server if they get out of synch. If you just calculate physics on the server, the game can't run at 30fps. If you let the client run it's own physics you open the door to serious synch issues and exploits. The fact you have to run both, and couple them means you effectively will need to completely re-write all the physics in the QSE.
One of the other (but more minor) problems with the networking is that the component system creates problems associating various entities with networking. The networking doesn't have direct access to the entities, so you end up passing multiple messages through layers to reach the right places. This in itself isn't a problem, but could end up slowing things down and increasing complexity. You can overcome this, but you ideally don't want to be modifying any code in the QSE itself, as whenever a new patch is released things end up being broken (This goes for the physics integration too).
For what I was doing, it was great...I was only using it as a way to test out my server code, so hacking bits into QSE wasn't going to be a long term problem.
Ultimately tho, an MMO framwork is going to live and die based on its netcode, not its graphics engine. This is why we intended to ultimately write our own client...it would have been far easier for us to build graphics code ontop of MMO netcode than it would be to build MMO netcode ontop of a graphics engine. Very likely one of the main reasons commercial MMOs don't tend to use middleware is because of the proprietry nature of the underlying netcode, and the difficulties integrating with it.
I can't say wheter QSE will be worth building on for your project, and I'm not up to date with any of the networking or physics work which may have happened in the past 4 months. It looks like you have come to almost the same conclusions I had when you say it will be 'just for the rendering layer'. You need to evaluate how long it will take to write a new rendering layer, compared to how long it will take to integrate an existing one with your work.