Hi, everyone. I've been lurking here for a while, and I read this forum most days, but this is my first post.
I'm almost completely new to 3D graphics, game development, and programming in general. In the last couple of months, I've been exploring the possibility of making a game, and I've spent some time learning about each of the major areas involved -- design, art/sound creation, and programming -- to try to convince myself that it
might be possible for me actually to accomplish this. Although I know that statistically my chances of finishing a game are astronomically small, I've enjoyed what I've been doing enough that I've decided to go for it, anyway.
However, I have no desire to reinvent the wheel. My real interest is in making a game, not making an engine, so it seems only natural to use a pre-existing game engine, or at least a 3D engine. After quite some time researching the options available to a hobbyist/indie lone developer, I narrowed my list to
C4 and
NeoAxis for game engines, and
OGRE and Horde3D for graphics engines. At first, I leaned pretty heavily towards the game engines, and I spent some serious time working with NeoAxis. There's a lot to love about the engine (which is basically a C# wrapper around OGRE, PhysX, and FMOD with a nice custom GUI system, a couple of decent editors, and a very good entity system), but the more I worked with it the more I found myself wishing I could change parts of it to fit my own style, and the more I came to dislike the restrictive licensing system and the community. Although I haven't completely ruled out using NeoAxis or C4 (which is also great, and has the huge benefit of offering full source with an indie license, but unfortunately uses C++ exclusively, which I would rather avoid), I've become increasingly more interested in customizing an engine for myself around OGRE or Horde3D and incorporating some of the excellent free libraries out there.
Here's where I run into problems, though. As I mentioned above, I'm new to all of this. I have very little programming experience. I took a CS course in high school that was taught in C++ (in 2003, the last year that the American AP exam was done in C++ rather than Java), and since then I've done a little bit of programming at times to support my university coursework and research (I'm majoring in physics and mathematics). But I've never really gotten past the point of being able to write simple 40 or 50 line programs and/or modifying someone else's well documented code. My C++ knowledge was never very advanced -- somewhat past a typical American high school course, since it was AP level and at a math/science magnet school, but not much -- and it's more or less vanished over the course of five years of disuse. My programming since then has been very hack-y, and mostly done in domain-specific scientific programming languages (primarily IDL and Mathematica).
To make a long story short: I'm a pretty smart guy with a good grasp of math and physics. I can do vector manipulation and other 3D geometry/linear algebra stuff in my sleep. But I've never written a large scale program, I have absolutely no knowledge of any "design patterns", I don't know any programming language well, even my level of knowledge of object oriented design techniques is pretty low, and I've never done any kind of graphics programming at all. I don't know if I have the mindset
ever to be a good a programmer, but I certainly know I'm not one now.
My most important question is this: will I be way over my head with Horde3D?
In some ways, I think I might be better off working with OGRE, which has the benefit of a huge community and plenty of tutorials and other material to get me started learning. But I've taken a look at some of that, and unfortunately I just don't really
like OGRE. I much prefer the elegance and cleanliness of what I've seen of Horde3D, and I think that I will
eventually be able to more fully understand Horde3D's lightweight code than OGRE's bloat. This forum is both great and terrifying. On the one hand, everyone who posts here seems extremely competent, intelligent, pleasant, and articulate -- which is obviously a very nice thing. But on the other hand, all the regular posters seem extremely experienced, which is intimidating; lurking in this forum, I often feel like a schoolchild who accidentally wandered into an academic scientific conference instead of his 3rd grade science class. There's no one here who asks dumb questions (which certainly can't be said of OGRE!), which is both good and bad. Do you guys think that maybe Horde3D isn't ready for people like me -- people who want to learn from the ground up? It seems like while the
engine is at 1.0, the community and the documentation are still in their fairly early stages (although what there
is for documentation seems excellent, and the wiki is damn sexy, there just aren't many tutorials and resources for newbies). Would I maybe be better off first learning the basics with OGRE or Irrlicht, always intending to come back to Horde3D in a few months when I'm ready to start understanding it? Or are the engines' philosophies too different for that to be useful?
One way or another, I don't plan to really start working with
any engine until I get a better handle on just programming. I made that mistake with NeoAxis -- I thought that maybe the best way to learn would just be to jump in and start hacking away, but unforunately that didn't seem to work for me. I just felt overwhelmed and discouraged. I'm planning to get a decent grasp of the fundamentals before I start working with anything larger. I've been working my way through a couple of books on C# for the last week or so, and I intend to finish them and then write
some sort of medium-to-large scale program before working on a game engine. (I'm thinking about writing a tool/editor, so that I can keep motivated and working on my game without actually having to start working on the game engine . . . since I'm planning on a dialog-heavy single-player RPG, I'm kind of thinking about developing a GUI-based dialog/script editor that exports XML files, which should be compatible with whatever engine I end up using.)
Sorry that this is such a long post. And that so much of it was irrelevant. I just see a lot to love about Horde3D, but making a game is a daunting task, and I'm so inexperienced I don't even really know where to begin. Would I be making a mistake to plan on using Horde3D? Should I give up on learning C#, and try to learn modern C++ instead? Is building a game engine around a graphics engine and other free libraries simply too hard for a one-person team, so that I should go back to a full game engine like NeoAxis or C4?
I'm open to suggestions, and I'd greatly appreciate any advice you can offer!
Thanks,
Corey