Hi,
I am in the middle of the process of designing browser-based MMORPG architecture and I am trying to define a generic set of functionalities which these kind of games typically needs. Hence, the challenge here is that these features or aspects should not be defined specific to some game - they should be applicable across typical MMORPGs. The games I am referring to are the likes of World of Warcraft and Silkroad Online, etc. Thus, I am very well aware that task I am doing is big -- but I am not trying to implement MMORPG from scratch here, I am simply trying to come up with an architecture proposal which is larger in content than many of the previously written articles, as they typically describes only the communication between the game client and the server and skips the issues raised around authentication / security and alike.
That said, I already went through the material regarding previously designed architectures and I conclude that non-functional requirement of "scalability" seems to be the deciding factor in MMORPG development.. and the latency, bandwidth and cpu usage basically makes developing these games remarkably hard and affects the scalability aspect of the game. However, there are also other things which I identified, and the initial list is here below:
Functional requirements:
- Authentication
- Registration
- Character creation/loading
- Game loading/saving
- Game state calculation/distribution
- Chat
- Quests
- Fighting
- Movement
- NPCs
Non-functional requirements (high-level overview):
- Security
- Reliability
- Scalability
- Availability
- Traceability
- Maintainability
- Usability
The way I am planning to use this knowledge is to find things which should be documented within the architecture and to be part of the architecture... the evaluation of the architecture is another thing -- for instance, it is very unlikely that I implement an MMORPG to test that it satisfies _all_ the requirements, I simply don't have time to do that. But I will come up a way of evaluation things once I get there.
But now, any comments will help, thank you!
Edit:
Realized that my "functional requirements" are more like "features" but nevertheless I think the goal of this post is still clear. I am planning to format them properly withing the actual work.. same applies for strict limits of non-functional requirements.