As for some real advice:
*) Never ever trust anything the client says. If the client says “I drop 60 gold coins here”, double check that he indeed has 60 gold coins before dropping anything, and remove those 60 coins immediately without waiting for the client to say so. Having this as a base line for all development with really help reduce the amount of possible exploits.
Pretend the client is going to end up being open sourced, and assume any code in there can and will be changed by anyone for any reason.
This might seem like a bit overly advanced advice at this point, but if you don’t do this from the start, you’ll be kicking yourself in a year or two.
*) Decide what level of interaction the player should have with the world. Is the world static (players can’t build new buildings, chop down trees, and so)? Is the game mostly indoors or outdoors?
If it’s mostly indoors with a static world, you can probably get away with a simple BSP type renderer (like quake uses), which gives really good performance.
If it’s outdoors, you might want to consider a plain heightmap. If you want long viewing distance on top of that, you’re going to need some form of LOD rendering. This link is worth its weight in gold.
For a dynamic world, you’ll need to figure out a way to send world updates to players who log in or happen to be around when a change happens. Do you send these changes every time the player logs in, or do you store it in the client? If you store it, what happens when the player logs in from a different computer.
*) If you’re going for heightmapped terrain, I suggest using World Machine to generate the base heightmaps, but keep in mind you’re probably going to need an artist to tweak it quite a bit. It’s a nice and simple way of getting a massive base terrain with plenty of (random) detal, though.
*) Figure out what the core focus of your game is. Pick just one for now, but keep in mind you might want to expand in the future. If it’s questing, start by building a solid quest engine that makes it easy for artists and writers to add new quests and content, and get one up and running ASAP. If it’s PVP, make sure it’s balanced. Make a simple design first, then spend most development time just balancing it. If it’s exploration, you’re going to need a huge world, and a massive amount of content.
*) When adding something, make sure you ask yourself two questions:
- Is this fun? If not, why is it needed? Can it be made fun?
- Does this fit with the rest of the game?