Quote:Original post by swordfish
Think small, brainstorm, prototype and experiment. Break your project down into major component pieces (ie, Renderer, Game Engine, Network Client, Network Server), and then further break down each component piece into smaller pieces - and then prioritize each piece. It is common to write an entire prototype and then start over from scratch using what you learned.
For an MMORPG, here as some starting points (off the top of my head, I am by no means an MMORPG developer):
Renderer
--Scene
----Camera
----Scene Graph
------Models, Geometry, Effects, etc.
--User Interface
----UI Components
Game Engine
--Resources
----Models, Meshes, Textures/Images, Effects, Sounds, Music, etc.
--Scripting
--Gameplay
Networking
--Client
--Server
--Database
Believe it or not, game rules and economy (ie, "gameplay"), are probably the least important things from a development point-of-view (however, it is likely the most important thing from a production point-of-view). It is tempting, but try not to look at your project from a gamer's perspective. Think development, not production (although the two are closely related), and you should be fine.
I would say that is a bit tangled up and misguided. Mostly because your resources when considered objects in memory should not be part of the game engine unless you have some way of rendering them and moving them yourself.
You should always strive for a tree of code where at the very bottom there are small and modular buckets of code that do very specific stuff. The top should be a very highlevel interface for the game designer and gameplay programmers to utilize. This will easy the front end of the developement such as content creation, gameplay rules, etc. If you have a very hardcore engine with an easy to use front face (think of a 3D Modeler, giving you tools to do a very hard thing) you can create content and consequently a game very fast.
If you start coupling things and moving them to where they shouldn't be it will be hard to go back and change things. I can tell you this from experience that it is very worth it to look into the design of the backend and take that very seriously first.