1) One that college students learn from... I swear by "Object Oriented Programming in C++" by Waite Group Press. It covers a great deal of C++ programming, and newer releases should have development environment notes too.
2) Plan a multi-server architecture, running on an NT based OS, that heavily relies on multithreading. (Despite nay-sayers) it''s a very stable OS.
3) Run each client in a thread, that only does stuff based on incoming events. DO NOT check each client each loop, that''s just a waste of CPU time.
4) POL (a UO server program) saves data in text files. Head over to http://vulpin.burdell.org/pol/ and download and check out their program. Try running your own server to understand how each part of it works with the rest of the game. (This point is particularly important, I believe... nothing beats experience).
5) Clients should only play ''mother may I'' with the server. Let the server do all the work. This is important for large player-base games (2000-3000 as you mentioned) because of hackers that ruin the game for others.
6) Certainly, just learn fast/dirty ways to do it. It doesn''t need to be impressive or perfect.
7) Certainly.
- People WILL pay for something that has been free for a long time, that you suddenly give a price tag to. (I have proof of this, I work for a large company that only recently started selling their product that had been free for years.)
- You also need to listen to player feedback on those sorts of things. If you want to add a feature to the game, consult the players first. Always remember that they are your customer base, not your lab guinea pigs.
- Don''t try to overwhelm yourself the first time that you write a game. This sounds like your first venture into game programming. Make a small roam-the-world online game first, then add features to it as you see fit. Design your game engine before programming it, and design it modular.
GOod luck!
MatrixCubedhttp://MatrixCubed.org