Perhaps the title of this Blog should be "How I want to make an MMOG" or even "Exercises in futile wishful thinking". But I am a fan of the positive outlook, even though not actually capable of maintaining one constantly, and so getting the tense wrong on purpose seemed like a good idea.
I should though, I think, try to be reasonably honest in describing what is going on in my MMOG development. Therefore I will say that at present there is no MMOG, nor anything which could be described as such. The culmination of 18 months of trying out different languages, platforms, libraries and tools has led me back to an old friend, C#. Now I realise that many people roll their eyes when C# comes up in conversation and I have chosen it for one main reason only. It is a very friendly development environment, and for the time being, free to use the express versions of the tools.
This is great. I have experience with Linux, my last company used Linux, Perl, C and Java exclusively for our online web service and this worked really well. But for writing a MINIMAL (see scope control) MMO I want the easiest, simplest, most supportive development platform and C#, XNA and Windows OSs is it.
I've considered C++ or Python with OGRE3D as a library, because those are also great languages in which I enjoy coding things. But C# with XNA is more robust and does what I expect more often.
This is version 1, or will be, I reserve the expectation that version 2 will be completely rewritten from the ground up.
That said, I adopt a technical control before top-down design approach to coding. In other words I want a collection of device drivers for the muscles and eyes before I write my robots OS. This might seem like a daft approach to some developers, but in my experience solving the technically difficult problems from the bottom up creates useful insights which can guide the much more difficult top-down design of the complex parts of a project. Bringing it all together and structuring the game is complicated, but not difficult. Working with a physics engine is not complicated, but it is difficult (at least it goes in the difficult box until it works).
I recently signed a licence agreement for the excellent BEPU physics engine. So one small, but significant, part of the world is in place and no longer difficult - at least not for me. Why use a physics engine for a simple MMO I hear you cry ? Because a friend with more experience in these matters recommended it to me, repeatedly (not the BEPU engine, but using a physics engine more generally) and eventually I crumbled and tried it. He was right, it was not too difficult, it integrated into my test build framework easily and it worked after solving a few stupid problems of my own creation.
Why use a physics engine at all ? Well two reasons. First, and most importantly, it does the collision detection for your models. Secondly it is available if you end up using physics anywhere in your game, which I think I would like to include. Adding a physics engine later on would be unpleasant, so it was one of the first things built into the framework.
So far I have created a mini-game framework in XNA (I've even built an Xbox version and tested it, but I'm not planning to support that platform in version 1). My framework NOW has working: 3D sound with listener located at the camera and sounds placed in the world; a collection of cameras from First Person and Fly Anywhere to some of my own devising (more on that later); a working webcam capture to 3D object surface texture (not sure I need this, but I wanted to be able to do it in the same framework (!); BEPU physics integrated and compound physics models working (e.g. 3 cylinders joined to 'wrap' a sword with cross-hilt); A collection of simple models from Blender (courtesy of #2 son); Code to import Blender .fbx export models at runtime (or compile time); Models can be scaled to a fixed coordinate system (including their wrapping physics models) and skybox code.
A lot of the understanding of XNA has come from reading books. I thoroughly (and completely) recommend that anyone thinking of playing with XNA should obtain a copy of Riemer Grootjans excellent recipes book and work their way through it.
So... once you've done that... welcome back!
(if you don't want to do it now, that's okay, but it is essential reading for a developer who wants to 'get' XNA quickly).
Next up we have some posts on design and game building with emphasis on trimming the scope to keep things achievable in my limited time-frame. I really want to get to the stage where I can upload a trial game and see what people think but this currently is more than 2 months away.
No comments:
Post a Comment