At 6/2/12 02:22 PM, PrettyMuchBryce wrote:
SMB could not have been ported to the Xbox either if it was written in one of these languages.
Thats what Refenes said when I posted a follow up question insisting on an answer. And that's the only good reason why you might want to use C++. But that's still slightly subjective. I don't know if C++ runs on mobile platforms or not (I'll assume not) so in the case you want to simultaneously develop for PC/Mac/Linux, web *and* mobiles, flash could be useful here.
He's right in a sense. C++ is great. It's low-level. It's performant. It's cross-platform. I think it's safe to say that SMB in it's current form would be impossible to make with flash. The performance would be horrible. I realize theres a flash version, but it's not as fancy as the retail version.
But that's the thing. Sure, C++ will always be faster than flash. But you'll never really see that performance difference unless you're doing something really extreme. I think Super Meat Boy, in its current form, with the right optimization can be done in flash *without* even using Stage3D. But assuming you're using it and then there would be absolutely no problem.
In fact, unless you really know what you're doing, C++ could actually hinder your performance. When I was experimenting with it for a few months I was shocked to first see that my engine lagged when I tried to rotate something when I was rendering with SDL. The solution? Implement a giant 3D engine for rendering, that is openGL.
Okay, that's cool, so I implement openGL. And now I'm getting some really good performance, but I test the limits of the engine and apparently after 2000 moving objects it starts to lag. So what gives? I was apparently using something called "immediate mode" in openGL, and the solution was to implement various different different rendering techniques.
Now of course this was my fault for not actually spending time to learn openGL fully before diving in, but there's no shortage of "my game lags" threads on C++ forums. Other tools just tend to hold your hand more if you want to focus more on the actual game and not just the code.
The reason I decided it wasn't going to be a good idea to make a game in C++ was because it was going to take a *lot* of time and effort, and even when it was completed, I could look back and see that I could have done multitudes the amount of work in Flash.
Don't forget as well that Super Meat Boy isn't just a platformer. They had to deal with screen resolutions, online scoreboards, and things that aren't very easy with Flash
The fact that Flash doesn't give you much control on screen resolutions is another reason why you might not want to use Flash, but pick up Lua or something of that nature and you're good to go.
I'm not arguing against trying other things. I think if you have the right type of game, and it saves you time, then you should absolutely do it. Just be aware of your limitations. There is good reason why almost every successful game on consoles and smartphones is written in native code.
So that exactly sums it all up. As long as whatever you plan on doing will never go beyond those limitations, then using the easier tool will ultimately result in a much better game.