I hear ya Cas. This is why I started my experiment a few months ago to try and move over to C++. I have to admit though, it’s been more difficult than I had originally supposed.
C++ was fine until I started using libraries (openGL, sound, input). Even when using an already built game engine (like Ogre), I was still running into major roadblocks for cross-platform compatibility. The libraries would only be available for one, maybe two platforms at most (usually just windows), and even when available, still required different code sets. I even ran into problems trying to use Eclipse on each platform (I wanted a single IDE), and had to start learning Microsoft’s Visual tools, Mac’s XCode, etc… I think this is why most C++ games are built with a single platform in mind.
As I moved into checking out the iPhone (or iPad) for development, I learned that to really develop for it meant I’d also need to learn Objective-C, and maintain yet another codebase.
To compile my code for each platform meant needing to have that platform available. This might be doable with some good VM software, but it was still a pain.
Furthermore, the lack of garbage collection just seemed archaic to me. Yes, it’s nice to have total control at times in order to keep the speed of the game at max, but even the AAA titles out there fall apart at the seams with memory leaks. I’ve heard that there’s some C++ libraries out there that implement GC, but yet again, there’s another library to find and compile for each platform. iPhone doesn’t even support the Objective-C GC btw.
In the end, I came back to Java. Running back to Java? No. With my shoulders hung a bit low? Yep. My advice is that if you want to move to C++, stick with Windows and learn the DirectX libraries. Maybe pick up one mobile device, like the iPhone, and stop at that. I’m excited about the Android platform, as it’s all Java. And I’m excited about Oracle’s unification plans for Java (although I’m skeptical).
I could probably write an entire dissertation on my experience, but I’ll spare you. C++ isn’t the greener grass on the other side though. Maybe in the future, something like Google’s Go might succeed, or Oracle will get a clue and build a Java-to-machine-code compiler option. C# and Mono look like an interesting possibility, but currently lack the game libraries that Java has (I REALLY appreciate LWJGL now). And now that Google and Motorola have decided to enable multitouch on their Android phones, I’m more interested in their mobile tech over the iPhone’s anyway.
I hope this helped in some way.