Well, it's holiday time. I'm off this week and next and it's filled up with a family union my wife and I are hosting, but I am stealing away some time now and then and my hobby time going forward with one of my dreams, building a game engine.
Of course, it's impossible to build a game engine yourself. So instead I am putting together a number of open source pieces and integrating them. The amount of code I need to write should be pretty small but should be significant enough to help me get some real world experience using CDT. The best way to get into the mind of some one who uses your tools and understand their needs is to actually be one for a while.
The key part of the CDT angle is multi-target development. The plug-in nature of Eclipse and CDT's support for tool chains allows it to be used to write applications for multiple platforms. In this case I'm going to do a mix of desktop and mobile featuring Windows and Linux on the desktop side and Android and eventually MeeGo on the mobile side. Android and MeeGo are particularly interesting in that I firmly believe these platforms could eventually find their way onto desktops one day. So writing a game that targets them and Windows and regular Linux desktop isn't really that much of a stretch. (BTW, yes, I'm purposely leaving out Apple for fear of getting trapped in the "walled garden").
For the engine components, I'm using the OGRE 3D rendering engine that is currently being ported to Android already (very cool to see). It uses freetype for fonts for displaying text and freeimage for loading images. I'll use bullet physics for the physics engine. There doesn't seem to be a common audio package so this may be custom per target with my own API over top. The same may be true for input, although the OGRE samples use OIS but that would need to be ported to Android.
The final piece of the puzzle will be the blender 3d editor which is going through a re-architecture right now and is extensible using python. Create your content using blender, export it with the help of python scripts and load it up into the game engine on all four platforms. Sounds like a dream that only the pros can pull off.
We'll see how far I get. But I benefit from it in two ways - living that dream, and getting some real life experience using Eclipse for serious application development that should lead to some ideas on making it better and maybe I'll come up with ideas for new tools. Sounds like a win-win.
OpenAL is probably the best choice for a sound API, although I'm not sure there are many mobile ports of it.
ReplyDeleteOpenAL is supported in the iOS and probably is the right choice. I'll have some time taking a deeper look.
ReplyDeleteHave a look to OgreOggSound, it is a nice OpenAL wrapper for Ogre.
ReplyDeletehttp://www.ogre3d.org/addonforums/viewforum.php?f=19&sid=d092b0958e84489772ee10e98ef651c2
Cool. Will do. I also want to make sure everything I do here is non GPL/LGPL. That was a strike against the Creative's software OpenAL.
ReplyDeleteHi Doug, I'm a professional game developer. I wish to remain anonymous, but I once wrote an Eclipse/CDT plugin for the official Nintendo Wii compiler so that we wouldn't have to use their IDE, and I was rather fond of the idea of Eclipse.
ReplyDeleteGetting it going was actually really simple. It wasn't long before I was able to compile and run our game through Eclipse. Debugging was impossible through Eclipse, but I had the basic project setup within a week, and it was able to compile our game.
However, that's also when the creaks started to emerge. Our compile times increased by over 50% when using Eclipse (this was AFTER I added PCH support), and Eclipse's build system required frequent rebuilds, as our project had about 8 dependent libraries (most of the game logic was in a library).
Today, I consider that project a failure. Eclipse/CDT was and still is not ready to build a large C++ project. I still use it at home since my projects are quite small (they use the libraries you mentioned above). But for a larger project, I think I would use CMake if I still had any say over things like that.
I beg of you to please put priority on fixing this meta-bug for the next CDT version:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=309769
Eclipse/CDT will eternally be unready for primetime until it's fixed. It's really a shame, since the editor and plugin architecture is so good. But the fact is, the build system does not scale well, and is prone to building files that have already been built.
Congrats on pursuing your dream! Coding is a zen-like activity to me, and I hope you find your game development as fascinating as I find mine. A game engine is a complex thing. Would love to contribute.
ReplyDeleteI was looking for something like this, and lastly got it here in your site. This is really amazing, and I am going to be a coming back guest to your site. Just keep it updated with such fresh and innovative concepts.
ReplyDelete2D Game Development