Sunday, August 19, 2007

Game development diary now open and first demo of my MMORPG project

Like many persons, I once woke up with the desire to build my own game and I did. Chasing Tortoise is now online for some months now and I'm quite happy with the result. The game is stable enough to run with minimum maintenance.

While it's my intention to keep working on this first game, I was now ready for another challenge. Something bigger, more challenging. A MMORPG, I was going to start working on a MMORPG.

I already hear many saying "Here's yet another hobbyist aiming for something out of his reach". Indeed, how many times have we seen someone posting on a forum "Hey, I have a good idea and I want to know how to do a MMORPG. Can someone help me?"... Well...

I know what I'm able to do and most important, I know my limits. Trying to build the "next generation" game in 3D with the latest technologies is not something I can hope to achieve. While I have programming experience (it's my day job), I know nothing about 3D, C++, DirectX or anything else about how to build games like WoW, Everquest or Ultima Online and it's not my intention for now to start learning this.

However, I have good knowledge of ASP.NET, SQL and Javascript. Those will be my tools. If I want to get something done, I need to fit my project with my abilities. If you go read some "How to break into the game industry" on blogs like Raph Koster, Brian Green or Damion Schubert, you will see suggestions like "do a mod for another game", "start working on an existing MUD". While those are probably good (those guys pretty much know what they're talking about), I prefer to be the captain of my own ship. It will be more work but again, I know what I can go for.

So, how do you start a MMORPG? Well, I started by putting on paper what I wanted to achieve. I'm not talking about what name it will have or what will be the backstory. Those are useless since I don't even have a framework to build the game. I thought of using an existing tool but like I said, I want to stick with things I'm familiar with (and it's part of the fun too!). So the only option is to start from scratch. Do I want a graphic interface? Do I want PvP? Do I want trading? How is the world generated?

I builded a requirements list and put this in Enterprise Architect (helps to have those softwares at work). Still using this tool, I created my entities. I need characters, I need something to create buildings, weapons and other objects, I need a way to allow chat and so on.

Maybe 5-6 weeks later, I had something to start with. My idea was clear and I was now ready to start building my framework.

For the database, I'm using SQL Server 2005 Express edition. For my framework, I'm using VB.NET. For the interface, I'm currently using Javascript and some AJAX libraries. For communication between the interface and the server, I'm using web services and JSON. The interface for now is only needed to help testing and debugging so I'm not spending much time on it. Since I'm using web services, in the end I could decide to build a Flash interface but I think I'll be able to achieve what I want with AJAX. Anyway, the interface is not a priority for now.

The goal of this framework is to allow to create the game while playing it. It's currently not important to know what buildings or zones there will be in the game. I just want to be able to create them. So if I want to create a castle, I log into the game and type something like "/create castle".

After 1 month of work, I'm now able to show a first demo of how the system works. Don't pay attention to how it looks since it's not the point. Having nice little graphics would be of no help at this point.

Click here to see the demo: Demo 1

So this is the first step of my project. Add this blog to your RSS reader to follow this journey I'm already enjoying.

5 Comments:

Jedaz said...

It looks quite interesting. However in my personal opinion you should create the interface in flash if posible.

About 6% to 10% of people have javascript turned off so using flash would enable a wider audience to play. Of course this in itself would punish the dial up users, but I have the feeling that they would already not be playing the game because of the images ect. (I can't imagine anyone playing CT on dial up either because of the average page size)

Of course doing a flash interface is pointless if your don't have the necessary skills, as you've already said. Well good luck on the project, I'll be interested to see how it turns out.

Anonymous said...

Heya! Congrats on the demo. :)

The reason why we usually say to work on something smaller is because it's less work. Not having to worry about some aspects of the game are nice. For example, doing a mod to an FPS is nice because some things like the basic graphics rendering and physics might be taken care of for you. This also means there's less for you to worry about.

However, I think an online RPG is an achievable goal for a small team. People have been doing it, but it's been low-key for the most part. It's still a lot to worry about.

Some friendly advice:
* Don't believe that bigger is better. Don't strive to handle thousand of people on a single server. A few hundred people playing together is still an online game.

* Keep performance in mind. Things change radically between the times when it's a few connections from your machine and a dozen people connecting through the vagaries of the internet. Unfortunately, it's nearly impossible to really test this with just a small team, so you might have things working just fine only to find out that 15 people break it terribly.

* Don't be afraid to accept outside help. If I might add a bit of blunt feedback, your interface, uh, "could use some work." The biggest issue was having to type "/open" instead of walking into a doorway.
This seemed excessively clumsy.

Anyway, good luck. I'll try to head back here and check out how things are going. Feel free to drop me a line if you have questions.

Have fun,

-Psychochild

Over00 said...

Jedaz said

However in my personal opinion you should create the interface in flash if posible.

Having a flash interface is something I'm seriously thinking about. I know a bit about Flash and the reason why I would go this way is because it would probably make things prettier for animations. And like you said, it's might be less of a problem for compatibility. But I've seen some nice stuff done with javascript too.

Psychochild said

Heya! Congrats on the demo. :)

Thanks!

If I might add a bit of blunt feedback, your interface, uh, "could use some work." The biggest issue was having to type "/open" instead of walking into a doorway.

Yes, I agree. I will probably link some "/commands" to mouse events and/or movement (like click on an NPC to talk to him instead of typing /talk).

Anyway, for now I'm coding the server so this interface is just a dirty prototype to make sure my commands works as expected (I was having a hard time to test my web services with just the text interface). Once it's done, I can easily "hide" those commands with the interface.

Anyway, good luck. I'll try to head back here and check out how things are going. Feel free to drop me a line if you have questions.

Thanks for the advices and for your offer. Much appreciated. I can certainly enjoy tips from someone with your experience!

Over00

Артём Овечкин said...

Cool blog. Really helpful in some areas of gamedelopment. Keep on. It's a good work.

Anonymous said...

Nice post. I used to be checking continuously this blog and I am impressed!
Extremely useful information particularly the ultimate
part :) I maintain such information a lot. I was looking for this particular information for a
long time. Thanks and best of luck.

My web-site ... www.mentalcave.com