Original Post
For everyone who wants to make an MMO Since the launch of WOW there has been a increase of people/indie projects that wants to create their own MMO. Most of them are where I was about 6-7 years ago, I had this idea of an MMO but no idea how to implement it, for the worse I didn't even research about what tools I should use before I started to develop. I seriously overestimated my own abilities, the scope of an MMO project and the limitations the tools I were using were imposing on my project. My path of failure to make an MMO: I was no noob, I had several years of programming experience in C, C++, Java and Python, and I knew a lot about design patterns, program architecture and database design, still my first tries was doomed to failure because I was building the MMO in the same way as I always made programs. With this I mean I used a program that was built to run on one computer with one CPU and executing a main loop that iterates over objects to update them. I begun developing my game in python (which was my favorite language at the moment), believing I would have something that working within a year. For about 4 years I developed about 2 different server architectures. 1: The first was to test my abilities. It was a 2d space game using a python server and python (pygame) clients. The clients could fly around in with tie-fighters on a starmap and fire green lasers. I felt I was ready to make the same in 3d. 2: The second game I manged to create a virtual world which you could explore, with physics and everything. At this stage 4 years had passed, I realized I would never be able to make a real MMO engine of out my code, it couldn't handle many players at the same time because it couldn't handle concurrency very well, I had barely started looing into distributing my servers to other machines, which is a huge and complex task. I had two choices: 1: Continue developing software I knew never would scale up to handle massive amount of players. I could drop the massive part and write software for a smaller amount of players. I would probably ended up with something like the game love (http://www.quelsolaar.com/love/index.html) that can handle about 300 players per sharded server (because the servers are developed in C or C++). 2: Finding better tools to build a better platform that my previous ones. I choose number 2. I had learned about Erlang on the University but never realized the strengths with the language until I begun researching for best languages for servers. I started to develop, from scratch again a new platform in Erlang, using the languages built-in support for concurrency and distribution. After 2 more years I finally have platform that gracefully spread over a cluster in a way I would never could dream of making in C++, Java or Python, unless I had a whole staff and a budget of 100 million dollars and could spend 10 years developing what Erlang already has. Conclusion: If you want to make an MMO forget getting something workable in a year (unless it's buggy, crashing and doesn't scale), if you use the right tools it will ateast take 3 years before you have something to show, add a few more years and you might have something ready for beta testing. To have a scalable platform, forget writing servers in C++/Java, Python or any other imperative language (Stackless Python and Scala, neither help you to distribute). Erlang is the only language at the moment that is feasible to write non-sharded MMO platforms with a small team or one man team. Erlang does a lot of magic for you, but still you will have to deal with pretty complex stuff and distribution problems. Erlang does not remove those problem but makes them far more easily to solve. Learning the language Erlang can be done in a week or two (it is seriously the smallest language I know), but what makes Erlang powerful is the OTP library which is sort of framework for developing applications. OTP is complex and will take time to learn, but it's worth it when you feel the power of the language and how much more easily you can scale compared to other languages. Be prepared to spend at least one year progressing your skill with Erlang and OTP, the good thing is that you can start developing your servers and learning OTP at the same time. And to speed up the development on the client side, use a 3d renderer like Ogre3d, Irrlicht or Torque. My personal favorite is Ogre3d since it does only rendering (you can plug in your own physics, GUI etc), it's also very stable and has a great API. Epilouge After years of hard working, spending about 2 - 8 hours of my spare time programming I finally have a seed for an MMO and just about to start developing the fun parts, world building tools, night/daytime system, skills system etc. The best part is that the platform I developed by myself that is far more advanced and powerful than that what WOW or EvE Online have. AFTER YEARS OF DEVELOPMENT, I HAVE NOT EVEN STARTED MAKING THE ACTUAL GAME YET! Now I face other difficulties, such as managing a team, graphics (concept art, 3d models) which I need other people to help me with. If you posting on these forums how to use the winsocks to write server/client MMO, or how to implement threading so your server can multitask, I hope my experiences can help you, so you don't have to spend 6 years of your life developing software you will have to scratch. [Edited by - flodihn on October 8, 2009 3:22:43 PM]