People throw around the Job thing alot but I have a feeling that a lot of the people that ask these kinds of questions are kids. When I was a kid I had an smith corona 100% IBM compatable and the only games where the ones I programmed. So I had no choice but to be patience and work hard if I wanted to play anything. Kids today have a lot of games at their disposal, so many won't work hard to get a sprite moving across the screen in Java. And I would rather those kids used Gamemaker so they at least learn something about programming. But for those few kids that already know they want to program then yeah use a language like pygame or any java game engine and not a rad. For adults, do what you want. Gamemaker if you don't need to program for a living like me and if you want to program for a living, learning java can only make you more marketable. And yes gamemaker is more limited but I lack the math and college and practical knowledge cultivated over decades of hard work so I can't write my own framework so the limitations are acceptable. Like Gamemaker doesn't have it's own music player so I'm using a dll, there are many annoyances like this but I live with them okay).
Well assuming we're talking about high school or younger, that would eliminate the "need to make a living" constraint. I think college students should pursue career minded objectives though. I'm not convinced that the set of kids who will dabble in programming but not actually learn it is very large. Let alone the ones who make it all the way to here to get advice. I don't believe the proto-programmers are cut from any kind of different cloth than you and I were. I had plenty of games available on my Atari 800 in 1981, so long as I was willing to spend my own money. It didn't keep me from programming, heck I bought the computer with 1/2 my own money because 1 year earlier I had learned PRINT loop programming on a friend's Apple II. I taught myself Atari Basic and Macro Assembly with no help aside from books and magazines. I put a lot of time into it. Considering how much time kids have on their hands for stuff like this, I wouldn't have any problem telling them to go learn Java if they want to. I'd aim 'em at Pygame rather than Java, but I don't have a big problem with Java in this scenario.
From what I have seen from those examples, it seems GM is much better for 2D Games and making simple but, addictive games while Java is more for the casual, cute games. It is true that you should blame the community not the tools. I can't even stand posting on the GM Forums for help because of the dumb answers I get. Also, I love how someone can post one sentence involving two different tools and you guys give 2 pages of answers. (I like that btw. Very informative. )
I don't think I'd use Java where I thought heavy duty number crunching was absolutely required, such as the core parts of a high performance 3d engine. Nor where a scripting language is appropriate. But that's still a large number of possible games.
>Nor where a scripting language is appropriate. Why? Using scripting in Java is as pain free as it gets (no glue code required). There are libraries for zillions of languages and even scripting in Java itself works great (with interpreters or super fast on-the-fly compilers). VM languages have a massive advantage there.
I'd need to see proof. I think we've had this debate already, and last I remember it, the benchmarks said Java isn't faster.
Overengineering again hm? I said it was fast enough. Even if it achieves 50% of the speed of C++ - which it easily achieved many years ago now - it's fast enough that no-one's going to really notice given the incredibly broad spread of hardware about in the desktop market and the fact that in reality the bottlenecks are still all likely to be in the graphics rendering. <edit> BTW, that link leads to an almost entirely useless set of microbenchmarks that really don't tell us anything about the problem domain here. Cas
He said "It's fast enough now." tho. Additionally the author basically agrees with him: "It seems that it's much, much easier to create a well performing program in Java." What's also bad about that benchmark... it's off topic. Games aren't command line programs, which exit after a few seconds. You have to take VM warm up into account for realistic figures. What he measured there is start up + warm up + execution time instead of execution time after warm up. As if that wouldn't be enough already... the Ackermann test is pretty silly. Simply writing it in a less "clever" way speeds it up by 25% on the client VM. And the strcat test uses the slower (synchronized) StringBuffer instead of StringBuilder. Pretty pointless, really.
This is bullshit, and it's tiring. There are some problem domains where the performance is needed. 15 FPS vs. 30 FPS is the difference between sucky and good in a game like BioShock. Don't pretend that scaling things back so you can use Java is the same thing as being able to accomplish everything in Java. If you don't know how to apply the relevance of a microbenchmark then you're not worth talking to about performance issues. Feel free to qualify what they can and can't tell you, but don't whine that microbenchmarks don't tell you anything.
That's pretty dishonest of you to put it that way. Why don't you quote his 1st and 2nd conclusions before quoting the 3rd? Fine, I'll find other benchmarks to beat on and start a new thread about them at some point. There are tons of 'em lying around.
>This is bullshit, and it's tiring. There are some problem domains where the >performance is needed. 15 FPS vs. 30 FPS is the difference between sucky >and good in a game like BioShock. His games run fine tho. On a 500mhz machine that is. (That CPU is 7 years old!) No matter how you look at it - it's fast enough™. >That's pretty dishonest of you to put it that way. How so? I didn't quote him out of context or anything. >Why don't you quote his 1st and 2nd conclusions before quoting the 3rd? What for? Everyone can tell that C++ won in that benchmark (otherwise there wouldn't have been a reason for you to reference it). >Fine, I'll find other benchmarks to beat on and start a new thread about >them at some point. Go ahead if you think it's worth the trouble.
His games run fine. BioShock wouldn't at all. It's one thing to say that the performance of any given component, such as Java, is acceptable for one's own needs and ambitions. It's fine to recommend such things to people with similar ambitions. It is not fine to pretend that such things are adequate for everyone's ambitions, that more demanding performance scenarios simply don't exist, or that Java can meet them in the absence of hard evidence. The hardest evidence I've seen is that nobody doing commercial 3d engines, 3d device drivers, or high end modeling / animation software is using Java. The author said it's easier to program in Java, and that Java performance won't suck. He didn't say Java could go as fast as C++.
FYI BioShock spends 60-80% of its time in kernel mode CPU on my system. Meaning at most 20-40% of it is in "game logic", and only a fraction of that is FPU processing. Which means in C++ you'd probably be able to double the speed of about 20% of the remaining 20-40%, ie. 4%-8% of the code would run about twice as fast. Giving us a massive 10% boost in frame rates. Or alternatively the game could be written in some other language, say Java or C#, and they'd target it at machines 10% faster than mine for the same result. However, in this forum, we're indie game developers, and no-one gives two shits about the performance requirements of Bioshock, because we cannot hope to produce that sort of game with our tiny budgets. So we tend to avoid pointless willy waving where appropriate and stick to what we know about. In my case, I'm one of the world's experts in Java programming, so I tend to tell people that in my informed opinion it's perfectly feasible. As I understand it you're a CMake expert who's never actually written a game yet, which would render your opinion on the matter somewhat irrelevant to almost everyone in this forum. I suspect I'm not the only one to hold this view. Please don't carry on with the flamebait and concentrate on writing some games instead and get a bit of credibility. </rant> Cas
Erm... guys, what's the point? And as for the topic - the answer was given few time already - both are good, use whatever you are comfortable with. Personally, I'm quite happy with GM and recommend it to anyone who wants to save some time and develop a 2d game. Of course it has its flaws, but the time saved is priceless... especially for half-time, one-man-team indies .