Suggestions needed for 3D Game Programming

I’ve been toying with the idea of creating a 3D fighting game in my spare time. I want to make a simulation game only. That is, the user will choose fighters and determine their abilities and the fight rules and all that, then just watch the fight play out. It’s all CPU vs. CPU during the actual fight.

I just have no idea where to start. I have a background in computer programming. I have about nine years of FoxPro under my belt and I’ve also done some ASP, JavaScript, Flash and Visual Basic here and there. I can work my way around Paint Shop Pro well enough.

I’ve spent the past couple of days looking into some products, but I was hoping to get some input from you all as well. I’ve poked around a little in Torque, Blender, DAZ 3D Studio, Blitz 3D and Google SketchUp. I’m not afraid of diving in and learning a piece of software, but I’d like to narrow down the list a bit.

Whichever I choose (and it may be a combination), it’ll have to have good scripting to it. The characters will have all sorts of stats and unique movesets, so there will be a lot of calculating of what goes on during a fight. I’ll have to maintain a list of moves, each one with a series of counters, a list of fighters and their stats, stuff like that so database functions are likely needed.

The users should also be able to create their own fighters, arenas and the like. I know in MDickie’s wrestling games, you can add your own JPEGs as textures to his 3D models. I like that idea a lot.

So, where do I start? What should I use?

Moving thread from IMHO to The Game Room.

It sounds like the most unique part of your game is going to be the fighting system and the AI involved in that. That’s good, because that means you won’t be wasting time re-inventing the 3D wheel. Aside from Torque, ever considered making a mod for an existing game engine? Half-Life 2 / Source comes to mind, as do the various ID Software games (Quake). Source would be my suggestion due to its popularity – which means both more potential players and more potential fellow modder support. On the other hand, the older Quake engines are now open-source and you MAY be able to turn them into commercial enterprises if profit is a motive.

I’ve been doing some freelance work lately using an open source graphics engine called Ogre3D, which IMO is surprisingly good (and really quite well documented for open source stuff). While it’s C++, there are community projects extending the API to python and .Net; I have no personal experience with either, but I’d suspect that if you’re picking up both a programming language and a graphics library at the same time, Python might be the best bet. Crucially, the Ogre forums are full of helpful people, which is a massive boon when you get stuck. It’s really been quite nice working in it (not that I have any experience of its competitors).

Blender is, in my brief experience, very powerful but with a Matterhorn-esque learning curve; of course, it’s also free. If you do have a look at Ogre, there are importers and exporters available for Blender that allow you to directly save in Ogre’s model format. Sketchup I’ve only really played with, and found that its vrml output took significant cleaning up before being usable in anything else. I’ve not used any of the other products.

As far as scripting goes, I’m talking completely out my butt here, but Lua seems to be the industry standard, and integrates with, well, more or less anything.

All that said, I do tend to agree that attempting a mod using the Source engine may well be a good place to start. Even if it’s not what you end up using for your final product, it’s a place to jump in and start thinking about how your game will work, without having to spend loads of time working on graphics etc. that might get binned when you make a huge design change later on. As Reply says, the AI back-end is the interesting bit of what you’re doing, and as it’s a hands-off simulation, you’ll be able to write it almost entirely separately from your graphics engine (good MVC practice ;)). You could even do it as a text-based thing before sticking a front-end on it…

Ooh, this Source thing sounds fun. I’ll definitely explore that.

I’ve been reading from a few sources that C++ is probably the best language to learn to get started, so I’ll have to add that to my quest as well.

Depends whether you mean best language as in “most valuable to know,” or best language as in “good for starting out.” The former is certainly arguable, the latter I’d say is simply untrue. If you really do want to learn C++ for its own sake, I say go for it, but be aware that it’ll add a whole bunch of time to your project; if your real priority is actually finishing something soonish, I would probably consider looking elsewhere (at least to begin with).

This isn’t meant to sound patronising, incidentally; it’s just that in none of the languages you mention having used will you have had to deal with memory management, and probably not pointers either, both of which bring their own charming array of potential pitfalls. Obviously you’ve got the background to pick all this up without too many problems, but it’ll certainly slow you down in getting something working.

I went ahead and downloaded Ogre3D, Python and PythonOgre today. I’m not having much luck getting anything out of PythonOgre. Seems like the install is half-assed, with references to stuff that isn’t there and broken references to stuff that is. I’ve been through a few problems already, found the fixes for them, and am still hitting a brick wall with some module it can’t find to even run a demo.

I tried to register at the Python Ogre forum for help, but never got the email confirmation. Even that doesn’t work.


Surely I can convince a major game developer to make what I want, at no charge, and have it ready tomorrow…

Lua pretty much is the game industry standard right now, but either way I’d go with Lua for this. Lua started off as a language for managing/loading etc configurations, and since this game is mostly configuration based it’s good in that degree. It also runs faster and is ridiculously easy to multithread with (which I’d assume one would want to do for even a moderately impressive AI-run game).

Python’s main advantage over Lua right now (as far as making games goes, I’m not referring to straight number crunching and complicated yet more mundane app development, at which Python still tends to excel) is that it has a gigantic library so you need to type less, but unless you’re meeting a very strict deadline I doubt it matters.

Hmm - where did you get the download from? I might’ve led you astray earlier, it seems the pyOgre guys have their own site now (, which links to sourceforge for downloads; the first page I linked to says it’s outdated.

Anyway, downloading the latest stable pyOgre package from sourceforge, plus the Python 2.5.4 x86 installer (has to be the 32-bit version) worked for me. If the pyOgre installation didn’t detect python, you’ll have to add the python install dir to your path, and in the pyOgre directory, run the command “python install”. This is what imports all the Ogre-related packages into your python directory, so without this step nothing much is going to work.