I’ve got an idea for a game that I just have to get out of my system. One of those ideas that might not actually be a good idea, but nonetheless *could* be cool and will bug me until I make the game. I’ll pitch the idea in a few posts, but getting started planning has created some problems.
2d to 3d
All of my game programming up until now has been 2d. I’ve tons of sidescrollers and even a 2.5d arena fighter, so I feel that I have a pretty good grasp on what is involved. After thinking long and hard, I decided that my game idea is only going to work in 3d. I know at this point that I’m going to have to at least describe the game a little bit, so I’ll do my best to explain my line of reasoning.
The game is going to be an RPG of sorts, one that involves ground targeted spells/abilities. This immediately rules out a traditional sidescroller, because you can’t actually see the ground in them. I could also have done a diablo-style 2.5d isometric-type-thing, but I always find the movement a bit clunky and doesn’t lend itself well to a game that involves moving out of ground targeted things. My final option for 2d, then, was top-down. When you think about it, very few games are top down, and there is a reason for this. All you stare at for the entire game is your character’s head and shoulders. A top down game doesn’t get to show off any nice graphics because you’re stuck staring at the ground for the entire game, left with a birds eye view of everyone’s helmets.
Because of this, I had to decide on programming in 3d (which I’ve never touched before), and so begins my saga.
My goal for this game was to use C++, so I immediately began looking into how to make a game in 3d with C++. From researching this, I learned that 3d is much more complex than 2d, namely:
1. Physics is dealt with in a totally different way, with much more complex algorithms
2. 3d Graphics is an entirely separate branch of 3d programming, that’s how complex it is. Just looking at one discussion on shaders makes me afraid to venture there.
3. Creating art assets isn’t nearly as easy as it is for 2d. You’ve got to be good and know your way around maya/blender
With the above knowledge, I decided that there was no way I could program the game from the ground up, I’d need some sort of libraries/tools to help me.
My first attempt to get libraries led me to Ogre3d. Ogre3d is a 3d graphics library that would essentially remove the need to dive into OpenGL/Directx and leave me to program the game’s code around it. 3d collision detection is fairly well documented, so I wasn’t really worried about coding that (in fact I was looking forward to it, terrain mesh collision looked fun).
Unfortunately, I’ve found myself incredibly frustrated with the difficulty involved in setting up anything to do with C++. Even though I know this isn’t the case, it almost seems anti-newbie. Even just setting up MinGW, MSYS and Code::blocks was a solid hour endeavor. My job was then to get Ogre3d working, but the tutorial is totally outdated and needs _multiple_ edits to get it working with the latest version of Ogre3d (which, by the way, only works with visual studio as an editor, no other editor). I spent about 4 hours trying to get a basic Ogre3d screen working and ended up giving up out of frustration- if I can’t even get the bloody thing to work, how can I be expected to program a game with it?
going to the dark side
As I was setting this up, little mentions kept popping up of Unity3d. I knew about it, but wanted to stay away from it if I could. I’ve always been a “from scratch” kind of guy, up until 3 or 4 years ago I didn’t want to use any libraries and just programmed using notepad. Unfortunately, because of the difficulty involved in setting up anything more complex, at this point I think I’m going to have to use it.
So that’s my feelings at this point. I’m not terribly bummed about using Unity3d, as it seems to be a really good program (and well documented!). Hopefully I can finish a prototype of this game by the end of summer to get it off my chest. I think that with Unity becoming such an industry monster, it might actually be very helpful to have experience using it. I’ll be making periodic blog posts on my progress with Unity/the game (tentatively titled “Descent”… More in a bit ;P