Generic Architecture
Ok, here are some thoughts I've been having. We have enough experience in the development team to pull all of this off, even if it is a bit more difficult. All of these things will make the project easier to maintain without it, well, turning into EQEmu lol. Let me know what you think.
1) We should make the architecture layered and generic, that way even if sony completely breaks the netcode, we don't have to rewrite from scratch. E.g. we split the code into 3 layers, the netcode, the abstraction, and then the modules that do the actual work... perhaps even a 4th layer that adds additional functionality, depending on the module.
2) Everything should be 100% modular. If this is done right, it means that we can use modules from other languages as well, which could mean greater efficiency (e.g. using C++ for one) or greater control while testing (e.g. using Python). I don't think I have to speak on the importance of modularizing code.
3) Database code should be 100% abstracted and modular, ADODB-style. Even though we are all using much the same data, certain RDBMS's are more well suited for certain loads or even architectures.
4) WindCatcher and I have been discussing how network code can be completely high-level (e.g. a networking metalanguage) without losing speed. This would give us the advantage of being able to change structs without recompiling (if in dynamic mode) or make changing from one structure to a new one a trivial task. Endianness would also be a non-issue with this system. I will post more on this concept in a seperate thread.
5) Modules should be capable of processing in parallel. We should have a thread pool, and when we get a request, we should start the appropriate module's handler in an open thread from the pool. This will allow us to process unrelated requests in parallel, and speed things up both on uni-processor and SMP machines. (Thanks to Image for bringing this up)
If you have any ideas, I'd love to hear them.
Thanks.
Lord Daeken M. BlackBlade
(Cody Brocious)
Edit #1: Added #5.
Last edited by daeken_bb; 06-05-2005 at 11:34 AM..
|