In my earlier post Is Crossplatform Development just a Myth? I mentioned the difficulty of creating truly cross-platform games. (And when we’re talking just Apple and Windows here, one could argue to what degree is that cross-platform anyway?) And I just covered a few api’s and programming languages. What I didn’t mention was game engines. There are definately cross-platform game engines out there, SDL, PTK, Irrlicht and Torque to name what appear to be the most popular engines avalible. Each one comes baggaged with it’s own pro’s and cons, and may or may not suit your particular needs as an indie game developer.
As I am looking into doing 2D games, but wanting to take advantage of 3D hardware acceleration PTK has recently struck my interest. I’ve yet to have a play with it myself, it’s probably going to be a couple of weeks before I get some free time to really assess it’s featureset. But it does come with a long list of finished indie titles that have used the engine. And in my opinion there is no better litmus test for a game engine than real shipped products.
While I’m at it, I’d like to point out that each of those engines have OpenGL/DirectX rendering support, which I’m now sure is a requirement if you want to have games that behave nicely on both PCs and Macs.

2 responses so far ↓
1 Nathan Moore // Jul 29, 2007 at 6:21 pm
I noted that you created your Staircars game using Visual Basic. This would be a major problem when talking about cross-platform compatibility. Actually, I would call it a major problem under most circumstances — mostly because I really do not like Basic (though, I admit, that was my starting point.)
For serious games learning C++ is a must. C++, however, can have a steep learning curve. If you do consider learning C++ I will give you a few hints that will make your life a lot easier. Use the Standard Template Library and Boost (http://www.boost.org/) whenever possible. Even though strings can be expressed as char arrays, it is not a good idea to do use them — std::string is a lot easier and more powerful. Also learn about the container classes — std::vector, std::list, std::deque, std::map, etc. Boost’s pointer container classes have been very useful for me, because of polymorphic game objects — boost::ptr_vector, boost::ptr_list, boost::ptr_deque, boost::ptr_map, boost::ptr_multimap, etc.
You you prefer a simpler programming language than C++, I very much recommend Python (http://www.python.org/). Though Python is an interpreted language instead of a compiling language, stand alone applications can be made for the major operating systems. For 2D games PyGame (http://www.pygame.org/) would be adequate. PyGame does not have any hardware accelerated 2D, but it does provides basic OpenGL for 3D support. Python-Ogre (http://www.python-ogre.org/) may be good for 3D game development. Python is pretty good, but it is still only a scripting language. I still recommend learning C++ for heavy duty game development.
There are actually some good cross-platform C++ programming libraries if you look into what Open Source has made available. For example, for 3D graphics I highly recommend Ogre (http://www.ogre3d.org). Ogre can easily and seamlessly render graphics in either Direct3D or OpenGL — which makes it great for cross-platform development.
I looked a little at your old post, and I think you may have exaggerated the problem with OpenGL support a little. Even with DirectX you still need the appropriate drivers. The extensions issue isn’t really one the end user really needs to be too concerned with, but it does make the programmer’s job a little trickier — unless he’s using something like Ogre, which handles all the hard stuff for you.
This is a little bit of an aside note, but recently I have been playing around with the Bullet physics engine, and it seems quite easy to use — though the documentation is nearly non-existent, which makes it a little difficult to begin learning. However, using Ogre with an available physics engine makes it simple to create impressive cross-platform games with little effort.
As far as a 2D engine goes, I’m not entirely certain what programming library provides simple 3D hardware accelerated graphics rendering.
2 admin // Jul 31, 2007 at 5:47 am
Hi Nathan, thanks for the lengthy reply.
Yes, C++ is much better for game development. I started making starcars many moons ago, before I even knew what a linked list was
I currently use C++ and C# for most of my work. Although I’m now entertaining the idea of using Java for a browser based game… more on that in a later post.
I’ve not taken a look at Boost, but hear many good things about it so may do so in the near future.
Thanks for the tips..
Leave a Comment