Does really game development on Java suck? Why are we still here?

I was actually think about starting a generalized rant thread…just to see where it goes.

Derailing a thread here? What’s the percentage of threads not derailed I wonder?

Mahna mahna, mahna mahnaaa nana niinii.

pedantic kiss-ass: I consider you one of the heroes of Java for having managed to get a Java based game on Steam. My hat off to you sir.

There are actually quite a few Java games on Steam. But wisely, no-one advertises the fact :slight_smile: Says something doesn’t it? But then again nobody goes on and on about how their game is made in C++ either.

Cas :slight_smile:

Well Carmack did go on about how he preferred C to C++ (or Java) for a very long time. Borderline case though.

You got me curious, I’ll have to research which other games are Java based. You can still keep the accolade since you’re the only one on JGO I know that managed it :wink:

Well, there’s 2 of mine (soon 4), Blocks that Matter from Swing Swing Submarine, Spiral Knights from ThreeRings… er that’s the only ones I can think of right now. Minecraft would have been on Steam but Markus turned them down.

Cas :slight_smile:

Theres Altitude, Bumbledore, Project Zomboid (will be there soon), Starfarer (will probably be there too).

Other quality games include Wakfu, Transformers Universe, etc. There are quiet a few these days.

Having read trough this thread, it is a good description of state of Java gaming in 2012. Problems seem to be still the same as years before.

I started learning D. It has some less elegant naming conventions than Java, and has its own fetishes, but it has all the features i missed in Java so much. Reading trough the languages book and reading about a feature i remember how much i wanted to have that feature in Java. And when the author details why some feature was added, and that reason is exactly the reason i wanted that feature in Java too, well, those are the details that sell me the language. I see that there will be problems with D too, the user base is much less than for Java, and there is currently only one IDE that has the quality and features (D plugin for Visual Studio).

Some example features:
Static is per thread static, not for the whole application. No fiddling with ThreadLocal, no messing up data of other threads, and no per-object overheads as a last resort.
Bound checks can be disabled on a per-module basis.
GC for objects, but structs can be constructed on stack or wherever needed. Also true arrays of structs, thus optimizing for the CPU cache.
Initialization can be deferred to the constructor, or completely disabled, thus reducing object initialization overhead. There was (probably its like that even now) a situation in Java, where allocating and GC-ing an object was cheap, but the initialization was expensive. That has defeated much of the proposed patterns for having immutable objects, etc. D lets you control the object initialization.

The nice thing is that much of all safety guards of Java are available in D too, but you can manually disable it on specific places.

Then there are the features inherited from C++, of which you are not required to use the unsafe ones if you don’t want them. Pointers are a marginal feature in D, you can use iterators and references instead.

I really want to like D, it has some great ideas in it, but holy cow is the whole ecosystem around it a fantastic mess. You’ve got the Tango/Phobos mess, and it’s not so much just “choose one for your project” as “don’t even dream of getting DSSS working with both”. And the windows toolchain is beyond horrific, using an obsolete object format that even Microsoft found to be too complex, baroque, and brittle.

I think the Tango/Phobos exclusiveness was for D v1. Everyone is using D v2, which has Phobos as the system library and Tango is optional (built on top of Phobos), so you can use both at the same time. But i’m not planning on touching Tango, i would prefer a minimalist JDK-like library (for the sake of already knowing what is where), even if i have to write (collect) parts of it myself.

The Visual Studio plugin is quite nice. I had previously tried and dismissed D multiple times because of the lack of an IDE, but this one is working out for me so far.

The object symbol file is converted to MS format, so now integrated IDE debugging is working. This was another deal breaker previously.

I think a lot of people are waiting for D to be included into GCC core (which is in preparation, tho going slowly). When that happens, D will have all the benefit of GCC guaranteed, and the issue of developer tools will go away. The D plugin for Visual Studio has just started supporting the GCC D, and not everything is working. But there may be an LLVM D too. I don’t see the multiple compilers issue as a mess. This language is constantly evolving, and there will be a time when D v2 stabilizes to one implementation. Just as more than a decade ago for Java there were a lot of JVM’s, but we ended up today with practically one. As long as the SDL/OpenGL bindings are up to date, which seems to be, i don’t care for the rest.

At the scale an indy game developer works it is it really even possible for language to become a more limiting factor, than say time invested on raw optimization?

I can’t really see it being a factor.

I can’t believe some people still claim Visual Studio is any good. Unless VS for .Net is so much better, my experience so far has been miserable. I am working on some C stuff (not C++, remember, they are distinct languages) and it is horrible:

  • Eclipses closes blocks automatically. Microsoft seems to think that if you use { or ( you might not want to close it. ::);
  • Eclipse formats the comments automatically;
  • Eclipse has many templates for generating code, like for, foreach, sysout, etc. I can’t remember the last time I had to manually write a for loop;
  • References are marked in a different color when the cursor is on top of it;
  • When there’s an error or warning the editor marks the line so you don’t have to go looking for it or use the “go to the line”;
  • Most importantly Eclipse gives suggestions for corrections with Ctrl-1, like using an alternative method (like Google “Did you mean?”) or creating the code for you;
  • Although Visual Studio lets you browse through the code definitions just like Eclipse, in Eclipse I can visualize the definition of a method without having to open the file, by showing it in a box;
  • Eclipse gives variable names automatically.

And that’s just the beginning. Eclipse helps you alot more with suggestions, templates, code generation, refactoring, etc.

VS doesn’t implement the C99 standard, even though it is more than 10 years old. It means that VS doesn’t allow you to declare variables in a any part of the code, just at the beginning of the block.

That’s the problem Visual Studio is TOO F***ING DUMB. It just stands there and doesn’t even let you know that something this stupid is wrong:

if (i = 0) {
}

I mean, WTF! I spent half an hour to find that shit! Seriously, VS sucks HARD.

Besides, why the hell is everything in VS 2 or 3 clicks away!? You know why? Because the UI is horrible. Eclipse has different perspectives so you don’t clutter your screen with 1000 options.

In VS if you want to see the stacktrace and the variables you have to click 2 times and keep clicking between them.

Visual Studio is too “clicky”. In Eclipse everything seems to be right in front of your face.

People who like VS should be exposed. If I knew VS was this f**king bad I wouldn’t even have bothered.

Hehe I’m not as passionate about it but I agree with longino ;D

I find Visual Studio 2008 for C#.NET to be way too “dummy-proof”, right away when you press “a” it drops a list of everything that exists in the project that you may write that starts with “a”. Most of the time it tells you the right thing, usually you tipe 2 or 3 characters of what you want to write and it’s right there, just press enter and it auto-completes.
For the “{” and “(” works pretty good, and the automatic indexation works fine.
There are plenty of things that could be better, but all in all, even if I hate to say it, VS 2008 for C#.NET is pretty good.
But I’d just stick with eclipse + java, beacuse I like them more. I just use VS for fast, small, windows-only apps and for a class at the University.

Eclipse <3 :slight_smile:

I use Eclipse for Java and VC2010 or sometimes 2008 depending on which one it decides to launch (who knows why) and seriously, VS is 10 years behind Eclipse. In fact it’s further behind - I was using Eclipse 10 years ago and it beat VC hands down even back then. Eclipse has strangely not really progressed a lot from its initial brilliance but then it did set itself rather a high bar. Not that the new features it has gained haven’t been awesome (like realtime onscreen refactoring and such).

I tried using Eclipse for C/C++ a couple of years ago and it was a bit of a mixed bag. Much of the issue is just how crappily impossible C/C++ is to parse because of the preprocessor monkeying everything about.

Cas :slight_smile:

That will be a big part of the problem why VS 2010 still has not nearly the assistance features that any Java based IDE has. There is only so far you can go supporting C++ development on the fly and still keep a pleasant working experience.

Perhaps I should rephrase what I said earlier. IF I had to do C++ development, there would be no other tool I’d use than Visual Studio to do that job. For C++ dev its great (compared to other C++ dev tools).

Visual Studio is better than XCode, FYI. There’s some good stuff in XCode but it’s got way too much bloat and is riddled with productivity-ruining bugs. I agree Eclipse is far better than both.

IMO, using Eclipse CDT isn’t working as well too. Eclipse itself for programming Java is IDEAL. Theres nothing better than eclipse, but the CDT plugin is crap… I haven’t tried MS VS, since I’m using linux. For anyone, who wants to program C++ on linux, these really have to try out Qt Creator. It’s the best C++ IDE IMO, even better than Code::Blocks…

So out of curiosity, any opinions on how Eclipse CDT compares to C++ in Visual Studio? That’s more of an apples-to-apples comparison. I’d guess that MS has an edge since they control all of the C runtime, the compiler, and the IDE, and thus can provide a more robust, integrated solution.

Netbeans :stuck_out_tongue:

IDEA. Gosh I bet someone will win the argument this time. ::slight_smile: