I've been doin' stuff... I promise!
Man, have I ever been the lurker lately. Haven't done any posts since before the Easter weekend. Speaking of Easter, had me a nice lazy weekend. Had some friends over and did some stuff at church, but otherwise nice & quiet.
So what have I been doing?
I hear you ask? (or maybe you're already pressing "back" on yer browser [razz])
Well, I had more than one religious experience on the w'end. I was noticing that many of the new samples in the DX SDK are C# only and I remembered hearing that C# is somewhat based on Cpp. So out of curiosity I did a quick google and found this article about the differences between C# & Cpp (there's also one on that page about .Net). Didn't sound too bad. I also remembered that the XNA framework first came out for C# and then I stumbled upon this guy's page.
WOAH
That pretty much sums up my reaction. Scene-graphs, shaders, post-processing, models, octtree culling, quaternion cameras and more in 12 tutorials? He even has the beginnings of a scene-editor in there! Granted I had already implemented most of that stuff in my current editor, but XNA just made it all look so EASY! Plus he shows how to seperate the engine into a nicely-packaged dll for quick plugging into your demo/game/editor in a snap. I knew I was hooked. So a few quick downloads later (C# 2005 Express, XNA, latest DX SDK) and I was already hacking away at my own version.
So a few days of coding and learning C# as I go and I have the following components looking decent: scene-graph, octtree with frustum-culling, batched shader system (all objects are batched together "per shader" for drawing), camera system and model-loading. I've got some bugs to fix, but after that I'll be setting to the task of implementing a scene-editor using windows forms & the new engine.
Why???????
Yes, yes, I already had a working scene-editor with many of the features I've already described above, implemented in cpp. There were a few reasons for "starting over" in C#. First off, I'll admit I was bedazzled by what C# and XNA could offer. The IDE is a pure joy to work with. The features of the language and Visual Studio 2005 mean I can break ground on new components quickly and relatively cleanly. I have my reservations about performance and memory use, and I'll have to wait for some stress-testing to check those, but at the moment I'm fairly optimistic that those will be very minimal hits.
I want to focus on getting my project out the door (well, more accurately, into a playable state) as soon as possible and XNA is certainly something that will help me achieve this. While I'm a little dissapointed in some of the missing features (no built-in text or GUI support), I'm sure these will be rectified in future releases and on the whole, I'm very impressed. In terms of something that will prevent me from having to reinvent the wheel, while allowing me the flexibility to create the engine with the features I want, I'm pretty impressed.
The other main reason for the change was that I've realised that having a mesh-editor in my scene-editor was heaps of overkill. I'll mainly be working with an external editor (probably blender atm) and importing the meshes into my scene as .x files. Again, this is for ease of development. While having an integrated mesh editor in your scene-editor is cool, the time spent maintaining it and keeping it "usable" was eating into game-dev time majorly.
I'm planning to have some screenshots to show later in the week. But for now, you'll have to be satisfied with my textual droolery. Really, anyone who is interested in getting into 3D engines (although it's not really for complete noobs) in a nice simple framework would do well to take a look at the tutorials above. It doesn't result in a complete engine, but would get you well on your way.
Heh, I see that "initial shock" a lot. C# makes life pretty nice, but it certainly wears off a lot once you realize that your C#+XNA application is more or less impossible to distribute to any non C#+XNA developers. [sad]