Original Post
I apologize if this has been answered in bits and pieces in different threads, but a brief look in this forum hasn't answered my question. I would like to write a game similar to Magic Online. In the game, players should be able to chat in rooms, chat with each other, join clans/leagues, enter rooms where they can challenge other players to a match, and enter rooms where they can sign up for tournaments. I would also like to eventually have auction capability for in-game items, similar to World of Warcraft. Game play itself will be very similar to Magic (turn based). My first question is the following: what technology should I use? Ideally I would like to get the networking part up and running as fast as possible. Initially, I think allowing up to a couple of hundred players should be sufficient for beta testing. Would using Python/Twisted be a good starting point? Should I write a server in C#? In the unlikely that the game turns out to be commercially viable, I think writing a full-blown C/C++ IO completion port server will be necessary and that can be done at that point. Also, is there a better choice between TCP and UDP? The messages between server and client will never be very large. I was also thinking of sending the messages in XML format in order to increase ease of use and facilitate later porting to other platforms - would that be a huge waste of bandwith? For the client, I was thinking of writing it in C#. Is there a better choice for rapid development? For the database I was going to use PostgreSQL. I would love to use SQLite, but that's probably not realistic for a decent sized project. I'd rather not use MySQL as I don't want to deal with license issues. I was told BerkeleyDB is very fast, but isn't a traditional SQL database and I have other things to learn for this project. Last question: what order should I implement everything in? My thinking was to start with chat, then inventory management/trading/auctioning (could do this last instead), then game play, then tournaments for last. About myself: my formal education was in applied math, and am self-taught in programming. I know C++ fairly well, and have picked up many languages/technologies over the years professionally and when working on personal projects (VBA - I know, not a real language :-) - C#, perl, Python, SQL, HTML/CSS/javascript, Flash/Flex). I plan on hosting the server at home. I appreciate your taking the time to read this. Thanks, Marc.