This is us:

We use the same database to handle login and gameplay. Note that we can at anytime break up the business and the game database since they can talk to each other if we want.
Once on the game side, the presentation starts receiving updates from game logic one. Let's say this logic is physical in nature like where you are in the world. And let's suppose that game logic two represents another zone. Now when the player is about to cross over, there is overlap between zones. So for a while, the presentation is getting updates from BOTH game servers. Once the player crosses this boundry overlap zone, they are fully in control of the other server. Everything in the backend can be handled synchronized by the mysql backend.
Also, if you think of the 3DGS game server as a ROUTER and not a server at all, the idea of intra-server communication becomes academic since the server-clients are in fact communicating directly but using the 3DGS server-router to work between. It will add no more than a few milliseconds to do two hops (router->server) instead of one hop (->server) but I still don't have enough of a load to see if this makes a huge difference or not.
Quote:
-No efficient way to send multiple types of data in one message. [...]
-Native entity updates. [...]
-Sending data to specific clients. You and I have got this working, but it's not that simple and once again requires tons of hacks.
-No propper way of timestamping packets.
-Network statistics (F11) are unreliable in my experience.
-No way to connect to non-3dgs applications. I agree this is not a problem for most, but it is for me.
Three and four we can do. Call it a workaround or merely what has to be done, we can send data to specific people and timestamp strings as well. We can't effectivly timestamp vars so we don't use them that way and skills sent as vectors can be timestamped. Five is completely right. I don't trust it and the server will only show the thoughput for the last client connected which makes is useless as a MP diagnostic tool. And number six is just a skills issue. If you can DLL, you can do this. If not, find someone who does.
But number one, the multiple types of data in one message, this is one of the biggest things to look forward with c-lite: the ability to create structs. So I can put as many different types (bools, ints, longs) within a struct and send that over the network.
The ability to create custom events based on the type of packet coming in is a very powerful idea, one that would be nice (and easy?) to do for 3DGS. Once C-Lite starts doing MP I'll see about suggesting this.
And I think your architecture is sound and reminicent of ours. After all, like in ours if the front server goes down, the one the clients communicate with, they are out of the game and have to do the same thing as in 3DGS: reset and reboot the servers and re-login.
I don't see much difference in your architecture and ours. By the time A7 comes along, that 10% will be cut down to 5% since a lot of the things you are doing will be done with A7/C-Lite. Security is still and issue and I'd be curious to know how secure raknet is.
I WISH WE could design the 3DGS Net engine, put those tweaks that you need, those that I need, and make it a better engine. I know we are right. I know our ideas our sound. But with only a handful of us to appreciate why and where these changes are needed, Conitec will never fully step up to the plate and make these changes native. Which means there might alway be "workarounds" and "tricks" until our 3DGS MP community reaches critical mass. Will I be here for that? Will your plugin be a motivating factor towards that? I hope so on both accounts!