Considering Java for game development, looking for brains to pick

After using Unity 3d for a year, C# for a few more, and C++ before that for small games - I think I want to try something new. Or, well, I’m starting a new project and XNA is dead - so I’m considering Java.

I’ve been programming for over a decade, but have always shunned Java - seeing it as bloated, slow, and a memory hog, however I’m starting to feel like I was wrong. So I’ve come here hoping you guys (And gals) can answer a few questions for me.

  • How does LibGDX compare to XNA? Performance, speed of development, etc… (For 2d games, of course)
  • I’ve noticed a lot of Java game related stuff seems to be focused on phone development… This worries me a bit, as it seems like PC Java development is being ignored. Am I wrong on this one?
  • What’s the job market like now’a’days? Will having Java on my resume help much? What about for freelance stuff?
  • What are my options for PHP-like Java options? I.e. Setting up a site through Java to run through Apache. What kinds of speeds and memory usage can I expect compared to PHP?
  • How many games, written primarily in Java, are on Steam? I know of Spiral Knights, but that’s about it.
  • Edit: Are there any engines built on top of LibGDX that are worth while? After years and years of programming, and having a serious case of NIH for most of that time, I’ve learned to use the most complete solution available to me. While there’s always Unity as an option, it doesn’t give me the control I want - so I’m looking for something in Java (Since XNA is dead). So far LibGDX seems to be the best for what I want (Quick 2d game with lots of control, and shaders) - but if there’s something “more complete”, I’d like to know now.

I’m sure this forum seems questions like this on a regular, however in the hour+ I’ve searched I haven’t seen answers to all of these answers, especially from someone like myself (Who has a decade of experience under his belt).

Thanks in advanced for the help.

here is an interesting though…

With the updates to OpenGL. Specifically the increased use of Shaders. The language you write you game in could be argued to be less a factor than it use to be. Java is equally fast as C / C++ with some exceptions in C/C++'s favour and some in Java’s. The decision for most of us to butt the C/C++ trend and use Java is either due to our familiarity with the language or our love of how clean the language is in comparison to the others.

j.

Java may be “bloated” in the sense that it has a pretty rich standard API, but it’s definitely not slow and usually the “memory hog” status is attributed to Swing or other Java GUI toolkits (most of which are pitiful).

LibGDX is an indie toolkit; while XNA is not. So don’t expect both to carry the same level of documentation. But LibGDX is really easy to get up and running; tons of open-source demos/docs/tutorials/etc, and it has some really powerful tools, extensions, and third-party libs that should make it a breeze. Especially if you’re already comfortable with the basics (like a sprite batch).

PC Java is there, sure. It’s a matter of preference, target audience, etc.

Jobs – depends. Java is really rich in terms of jobs, but most employers won’t care about Java game development (many will just laugh). But OpenGL, GLSL, audio programming, game mechanics, etc. are all good things if you’re looking to enter these fields.

LibGDX is already pretty complete; you probably won’t find many (mature) libraries that build on top of it. If you’re aiming more specifically for 3D, maybe a scene-graph like jME or Ardor3D would be more up your alley.

1: Libgdx is very fast, since it’s built off of modern opengl. It also includes spritebatching, scene2d, box2d, and many utility/helper classes. Basically, it’s a high level engine that does all the low level stuff for you and provides you with a nice interface.
2: Libgdx in particular is loved for android development because of it’s easy deployment. This shouldn’t worry you however, because by changing about 6 lines, you can deploy to desktop instead. As such, almost all tutorials you find on Libgdx will be applicable to you if you are developing for the desktop.
6: Libgdx itself is a high level engine, and it provides a lot of functionality right out of the box. Especially on the 2d front, where the interface has been worked on for a while. Also, with scene2d and box2d included, you get a ui and physics boost.

If you haven’t already, I’d suggest to take a look at the wiki. It can give you a taste of what you can expect from Libgdx. Also, Dermetfan’s tutorials are a nice resource and he goes into depth on many parts of Libgdx.

Java it right now one of the popular flavors of the month so it helps to know it for jobs.

In the few test I have done with unity, for 2D stuff libgdx blows it away performance wise.

If you really want to make games, stick to what you know. Unity is very nice and quick many games have already been made with it. I personally hate almost all games that use it but that is just a personal preference.

Java games on steam? One of our mods here is the (?) owner (or some important member) of PuppyGames, which has a couple fairly successful games on steam, and you can look around in the Featured section for a few of our more polished games.

I can’t believe I forgot these!

Daedalus is on steam green light currently, and Far Sky (I believe) is going to join soon! These are two very awesome games!

(Sorry, I am on a phone and it is difficult to do hyperlinks :stuck_out_tongue: Just search them in the search bar and they will be on of the first hits)

Also, Dysis, which as I saw on tumblr, is about to have it’s full public release. I think it’s either passed Greenlight, or is still waiting.

Java is higher level language than C++. Of course it will take more resources to run than C++ itself.

This is the same as writing programs either in byte code or some programming language. While writing in byte code you get 100% control, writing in programming language allows you to do stuff that pretty much impossible in byte code.

I’m not pretty sure what kind of performance/memory hog problems you’re talking about, but Runescape seemed pretty fine, and Minecraft doesn’t seem to be too problematic either. Since you’re making 2D game, there shouldn’t be any problems…

Libgdx is really fast. I don’t think LWJGL is worth using for 2D games at all, unless you can write something that works faster than Libxgdx.

I think this might be a result of the ‘smart phone’ age that we live in. Any man and his dog can get an Android app on the Play Store. Not to mention phone games are possibly attractive for small-time or amateur developers. Phone games tend to be somewhat ‘disposable’: users play them in quick bursts while they’re on their lunch break, on a train, in bed, etc. They’re not expected to be the big AAA blockbusters that you tend to find on PC or consoles, and hence development cost & effort can be less. (There are of course a shipload of exceptions to this).

I don’t think PC development is being ignored, but perhaps slightly overshadowed by smartphone development. This forum seems to be a good example; there seems to be more Java development for PC than for phones. And with each Java PC success story (MC, Puppygames’ collection, etc.), I think Java PC game development gains more momentum.

Perhaps you should have a look on a job-hunting website for your respective location. I’ve been job hunting recently too (albeit not programming), and out of pure interest I searched for ‘java’ which yielded 1,185 jobs nationally. They’re a mix-up of junior to senior level jobs, requiring all different kinds of experience (both time-in-job and experience with different libraries/api’s/tools). The odd game developer job pops every now and then too. Certainly seems there is no shortage of people looking for Java developers, especially if you have the skills, experience or qualifications to match (all of which I unfortunately lack :().

It’s not hard to write more optimised OpenGL code than LibGDX. LibGDX has a wide range of use cases while you can easily write focused code with LWJGL that will be more efficient.

EDIT: As for jobs:

http://readwrite.com/files/INFOGRAPHIC_DEVELOPERSKILLS_1200.jpg

You definitely need to get rid of that attitude (I did notice the ending of the sentence). If Your mind is made up negatively, even before You do anything, You will find lots and lots of hurdles and problems that just reinforce Your negative attitude. Not to mention, with a negative attitude You are in a hostile waters (on these boards) and it will be felt on every thread.
The most important thing You need, while trying new things, is an open mind, so try to have one and experience the “slowness” and “bloatness” and “memory hogging” Yourself.

One thing that hasn’t been mentioned yet, is that LibGDX cross-compiles onto different platforms. This means that quite a few games out there have been written in Java, but live their lives as HTML5 games.

Why do you want to use Java instead of PHP? If it’s for server communications, I find that PHP and Java can easily talk to eachother.

I find that it’s just easier and cheaper to find shared hosting with PHP, than Java.

I can’t tell you much about LibGDX because I don’t currently use it except that it’s got a bunch of useful stuff in it and a thin veneer on top of raw OpenGL, so it’s a good halfway between writing from scratch and using a fully blown off the shelf “game engine”. Many people swear by it and in professional circles it’s making people plenty of money.

The job market is still very buoyant but not in Java gaming. With 3 years solid Java on your CV you’re still a valuable asset to an investment bank.

Don’t know about PHP-like stuff. I suppose there’s still J2EE and its attendant technologies but I shy away from any of that web stuff. It is of course vastly faster than PHP. If you’re worried about memory usage on a server you’re not thinking straight.

There are quite a few games on Steam written in Java (All of ours for example) and there’s a few more in the pipeline that I know of (such as Halfway from Robotality, Project Zomboid, etc). At this stage all of these games are written on top of the raw LWJGL library and aren’t using any other frameworks. Steam and Java are a marriage made in heaven. You may or may not be aware that Linux is, in fact, the future, against all expectations, and Java is a particularly easy way of getting there without having to learn anything clever.

Just to perk your interest up we’ve grossed over a million bucks on Steam alone in the last few years.

Cas :slight_smile:

I’m working since 15 years as a Java developer, so my view is definitely biased. We work with several big companies, doing individual software development and customizations. In business applications, Java is going strong, at least on par witht he C/C++/C# worlds.

I think it will help if you can show both, C++ and Java skills on your resume.

At the moment our regional team are about 50 people, half of them freelancers. Java developers are being looked for as far I know.

We do server applications mostly, sometimes with a Java client, sometimes with HTML based client applications. For me Java on the desktop is still going strong, but not so much in the end user sector, more in business.