There's tons of lists of 3D graphics engines out there, but my needs are a little restrictive and I can't decide on one by myself.
I'm about to start working on a fairly simple (C++) game that simulates realistically the motion of a spacecraft in the solar system. As you might guess, the graphics needed are very basic:
- The planets are just spheres with textures;
- The spacecraft have few or no moving parts (rotation and translation only);
- I might need a few lighting/animation effects to make it pretty.
Celestia is aesthetically very close to what I'm thinking about.
Now, the problem is that until now I've only used C++ for scientific simulations, and I have no experience whatsoever in graphical interfaces and games in general. Also, I don't want to spend months learning how to use a complex engine.
My question is: which engine is easy to learn and use, while still producing nice-looking graphics? I'm looking for the best balance.
As far as I can tell, the 3 most suggested OSS engines are Ogre3D, Irrlicht and Crystal Space 3D. By comparing a few youtube videos, Crystal Space's graphics look the best, but it's apparently a bit messy to use. They say that Irrlicht is easier, but to me it also looks inferior in terms of graphical results. Ogre3D looks good but I don't know how much beginner-friendly it is.
I would really appreciate suggestions on this!
I like Panda3D for this kind of quick rendering of simple scenes. It has both a C++ and Python API, and provides a lot of useful utility types (animations, simple collision detection, etc) which should make the task of writing your game easier.
The aesthetic appeal of the graphics rendered will largely be a factor of your own art quality; the engine is only displaying what you're giving to it and the feature lists (shaders, scene management, etc) are similar between the various open-source engines. I don't think YouTube videos are a good way to compare.
You should make the decision on what you personally like working with, as the time you spend making a more complex/difficult engine do what you want is likely better spent improving the game.
Kerrek is correct in that none of them are truly easy to use.
Unity 3D has gotten extremely popular in the last couple of years, and is by far the easiest to use engine I know of.
I generally don't trust "game engines" much, because they're nearly always badly written, hard to use, and impossible to extend. It's just not a very good metaphor for "all the stuff you need when writing a game".
But from what I've seen, Unity actually pulls it off. I guess that's why it's so popular.
However, its API is designed to use through Mono, so while you get all the languages supported there (I believe Unity recommends using Javascript, but C# is a fairly popular choice too), I don't think it supports C++ directly.
The question is then, do you really need your game to be written in C++?
But whichever route you go, make sure that the graphics engine you pick has actually been used in real games. Basically, the litmus test for any engine (and one that I'm not at all sure either of the ones you listed lives up to) is that it can be used to make a reasonable game. That's why advice such as this exists. When writing an "engine", it is extremely easy to get sidetracked, into writing engine code for its own sake, ending up with a huge framework of miscellaneous functionality which has actually never been used in a game, and so, when someone tries to do that, it falls apart, performs terribly, or is hard to use and lacks important functionality.
So scratch any engine which doesn't have an actual complete game built on it. Not a graphics demo, but a game. Whether a big commercial AAA game, or an indie game or some hobby project someone made to get familiar with the engine, the important thing is that someone has made a game with it, and that the game looks convincing to you as a showcase for the engine.
精彩评论