State of Java Gaming?

This was posted over at JavaLobby a couple weeks ago. What are your thoughts on it?

[quote]The Java gaming ecosystem is vast and impressive. We have libraries to do the simplest of operations on the smallest of devices, all the way to Java code that lets us manage clusters of game servers. Is our ecosystem simply too diverse?

Looking at this vast ecosystem, we find bindings to all sorts of Graphical, Physical, AI, Network, Sound, etc… libraries. And many other components that can satisfy virtually any game “infrastructural” need, loaders, GUI builders, Level Editors, and most of them Open Sourced. Unfortunately, all these excellent projects have different development philosophies, and do not mix well with each other. Coding a desktop Java game most of the time feels like an exercise in Glue coding and plumbing. There is a clear need for an integrated solution, that we can use and reuse as a foundation to our projects.

Sun however, never decided to create such an integrated solution, and looking at the panorama of the strong Java companies, IBM, BEA, etc… None of these is a likely candidate to create such a framework. This means that the Java Community is burdened with the task of creating a framework that can compete with XNA. As much sense as that makes, for anyone that follows the Java gaming movement, we are no wear near such a solution.

Why can’t the Java gaming community come together and create such a framework? Why do we have all the pieces of the puzzle and still can’t figure out the picture? Is this wishful thinking on my part, or does it make sense to anyone else?
[/quote]
A reply stated this. What do you think about the reply, and are there other examples to cite?

[quote]The Java community might spend it’s limited resources better by adopting the projects with momentum, like Lwjgl, jME, and Slick, and building your JXNA around them. MonkeyWorld3D and Stencyl are steps in that direction.
[/quote]
And then a reply to that came from the JavaLobby editor.

[quote]Lets do the math, it’s been over a year since a MonkeyWorld3D release, and we have yet to have a Stencyl release, and this is a project that i have been watching for a long time (cuz those screen shots really look cool). I love both projects, but how big is there communities? And how steep is the slope of their learning curves? Can we transition the skills developed with those projects to other projects? Or do we have to start from zero, every time we switch engines, learn a new set of APIs, basically learn a whole new “culture” to be productive in that environment. Why do we need to do this when so much of what our projects need are common or similar?
[/quote]
What are your opinions on the idea of starting to come up with some standards? For 2D, there seems to be some centralizing around Slick, and for 3D, jME appears to the the forerunner now. Are we starting to settle on a few projects that can serve most people’s needs perhaps?

You need to understand that the Java “ecosystem” is largely populated by devotees, hobbyists and part timers. As such the developers you’d be target often have “learning”, “fun”, “achievement” as their goals rather than any massive desire to complete or sell their works. If either of those things happen it’s a bonus. So, the people that would be needed to commit to these common standards quite often simply want to do it their “own way” so they understand what they’re doing and feel like they’ve created something (rather than complying with the spec).

That said, from the commercial point of view I so desperately want to be part of (:)) the idea of some common standards is great. I would first like to understand what XNA is offering over and above a set of APIs (I’ve tried it out, it’s a bunch of libraries with their own ideas and buy in). The only difference I can see is that the vendor is also the vendor of the operating system and hardware in the case of XBOX, giving them plenty of buy in from developers.

I think thats wrong anyway. The components with have at the moment are Audio/Video Rendering (JME, Xith, JOGL, LWJGL, Java 3D, Java2D, GTGE, Slick, etc), Physics (ODE, JOODE, JBox2D (soon), Phys2D), Networking (Java.IO, JGN, JNAG, Darkstar), Input (JDK, JInput, JXInput, LWJGL). The blend of a bit of each one of these together in an engine/game has been proven plenty of times. The successful projects generally follow the same coding style, mechanics and structure. Where’s the issue? Is it the fact you have to blend together yourself? If so, that’s generally called game coding and choice :slight_smile:

And this is actually what people have been aiming at for quite some time. Composite of features into the core glue that makes up your game. http://cosmic-game-engine.blogspot.com/2006/06/more-on-composite-vs-inherited-game.html.

What does XNA offer over the set of APIs that we have exactly?

Kev

Not much, from what I’ve seen. The core APIs are nice and simple to use, but they sacrifice flexibility in achieving that. The drag-and-drop game components you’ll see banded about in videos are even more simplified and dumbed down, making them a complete red herring. From a technical point of view XNA is not terribly advanced or fancy at all.

What XNA does provide is a single downlowd and installer containing compiler, runtime, IDE, libraries and docs. Throw in a bunch of tutorials and the marketing push of MS and you can see why it’s become popular with bedroom coders. And frankly I don’t think it’s going to be possible to compete with that without Sun doing something similar and actually advertising it. But unfortunately all the gaming people at Sun appear to be asleep at the wheel.

[quote]But unfortunately all the gaming people at Sun appear to be asleep at the wheel.
[/quote]
I have a feeling they’re just focussing on something Sun know how to do, i.e. large scale networking.

[quote]What XNA does provide is a single downlowd and installer containing compiler, runtime, IDE, libraries and docs.
[/quote]
Yeah, that was quite cute - but then it’s outside of Java culture. We want choice and flexibility in toolsets and APIs, maybe thats our “problem” :slight_smile:

Kev

I think it’s interesting that EA are after a common console format; can’t think of a better place to have J2SE and LWJGL really…

Other than that though the state of Java gaming is pretty much where it was in 2003.

Cas :slight_smile:

I concur, on both fronts. Been away for most of the summer (turns out ponies in the sunshine are more fun than programming, even if it is game programming) and came back to find things much as I left them…

I think part of the reason for that is that games are getting harder to make every generation. If I want to make a game that would have looked normal around 2001 I still have to make a whole lot of stuff before I get to any code, or find someone to make it for me. If we want things that will look modern and good we have to work ahead of ourselves towards where technology will be three or four years from now and as amateurs we don’t really have the resources to do that.

It’s not quite the same if you’re working in 2d but most people want to be creating 3d worlds now because it’s what we’re used to playing in. Even if we’re only representing 2d environments in a 3d way it is the look most gamers are expecting and the amount of artwork and modelling assets required are entirely non-trivial before we even get onto gameplay and getting environments that work.

that doesn’t mean you can’t help with pluming, you just don’t want it to be fixed pluming. We can still have standard interfaces and different implementations.

I don’t know since 2003 is 4 years which is a hell of a long time in this business isn’t it?

The path is clear:

  1. Perfect human cloning
  2. Vacuum blahblahblah’s keyboard for genetic material
  3. Set the resultant army of clones to work fixing all the JVM-breaking bugs that dogged JavaGamesFactory
  4. Profit

Hmm, that was me on JavaLobby :-[. I’m a long time lurker on these forums.

A Java gaming website should look like a gaming website, and not a technical website. We basically need better advocacy coz even though many people here are happy writing games in Java, most other game devs and other Java programmers are completely ignorant of the progress Java has made in this front in the past few years. See http://creators.xna.com/ for XNA’s community website and compare with the one above!

Couldn’t have said it better myself. Not only does the newbie game developer have to assemble the libraries, she needs to first decide which libraries to use, and then find some tools that work with those libraries. A standard stack with better integrated tools would definitely make it easier to dive in.

It’s obvious that Java gaming doesn’t have the resources of enterprise Java at Sun or in the Java community, so I’d like to thank all the devs responsible for all the fantastic Java gaming projects out there, especially Lwjgl, jME and Slick.

There was a bit of work to provide Eclipse with a LWJGL plugin of some sort… this could probably be expanded upon.

There are a bunch of tools that need to be sorted out too I think but they start to get very specific and fiddly depending on the actual APIs used etc. I mean, there’s font generation, and sprite packing, etc. The best animation stuff there is in SPGL but it’s rather complex to get into. Hm.

Cas :slight_smile:

Of course this whole topic just reminds me that I keep meaning to tidy SPGL up, add some proper documentation and release it as a proper usable library. Unfortunately I seem to be far too busy with my own games to find time to do that. :frowning:

Likewise. I think it needs a bit of a rewrite anyway - chuck out some of the old crud.

Cas :slight_smile:

I dont know how Tribal Trouble was made but it is a great little RTS 3D game with a nice GUI also Jake is great 3D FPS with a nice GUI. So good game can be made in java, so why there are not yet a lot more ? I think that is basically because Java was affraying a lot of people/developpers in the near past, as it was described as slow and complex, this was not totally false (for slowness) 10 years ago, but now with the abilty to use opengl and such, the improvment of the JVM,JIT, and Java API, I guess that in the futur it will be the standard to develop game and other, For now, I dont see any languages that can compete with Java in the futur, so Java game community stay ready!

[quote]What are your opinions on the idea of starting to come up with some standards? For 2D, there seems to be some centralizing around Slick, and for 3D, jME appears to the the forerunner now. Are we starting to settle on a few projects that can serve most people’s needs perhaps?
[/quote]
argh… standards? arggg… sry I am strangle myself, every body want to make the program that do everythings. it is also same things with file formats, I am conviced that it is an error. Every years there is a new 3D format that claim to be the futur standard and it is always more complicated and unusuable than the previous one. something strange is that was not true for 2D format (image file). It is sometime faster, less buggy and simpler to use a simple flat file than an XML file to exchange data. I am talking about files format because I think that is the same for developpment, I think it is better to have little parts (API) with well defined entry point as JOGL or other API and well defined goal, and so have Framework to do specific stuff and not all that it is possible to do. Standardisation cause dependancy.

[quote]You need to understand that the Java “ecosystem” is largely populated by devotees, hobbyists and part timers. As such the developers you’d be target often have “learning”, “fun”, “achievement” as their goals rather than any massive desire to complete or sell their works. If either of those things happen it’s a bonus. So, the people that would be needed to commit to these common standards quite often simply want to do it their “own way” so they understand what they’re doing and feel like they’ve created something (rather than complying with the spec).
[/quote]
Yep the above is really right, lot of game developper like to make game for themself rather than for money.

And then…

5 ) Evolve the human race beyond its tendency to start fights over everything.

6 ) Set up a community Java Games Development site with professional artwork (a few spaceships, some cute anthropomorphic animals, that sort of thing) so that it looks like it’s got the backing of a big corporation that’s interested in games development.

7 ) On the front page of the site, in big letters:

  • Advice 1: For 2D games, use Slick.
  • Advice 2: For 3D games, use LWJGL.
  • Advice 3: For a 3D engine, use jME.

And in smaller letters:

  • Footnote: Okay, so there are lots of other libraries that you could use for games, and many are just as good as the ones above, and for that matter you could avoid external libraries altogether and just use Java2D – but the suggestions above are a good place to start.

Obviously Step 5 would need to be complete in order for us to get here. :wink:

8 ) Link to a new, improved, clone-developed JavaGamesFactory, which by this point would have its content clearly divided into:

  • Professional-quality games
  • Decent hobbyist games that might appeal to casual (non-programmer) visitors.
  • All those incomplete or newbie projects that currently make JGF such a hit-and-miss experience.

Just my humble opinions. ;D
Simon

I think there’s an over-arching problem with most of the games libraries- no D3D for graphics. And Java3D (with its D3D pipeline) for some reason is not popular here. However great all of the OGL bindings and layers are, they don’t work on many video cards/drivers :(. How many problems do you see when people post their LWJGL/JOGL game?? It seems like a lucky-dip when the app works :stuck_out_tongue:

I’m reluctant to learn any OGL library because of this. So would anyone with a commercial bent.

3D aside, the biggest headache for 2D games is deployment I think. Maybe that will be solved with the new Consumer JRE :smiley: 8)

I think it’s probably a better move to separate development and distribution entirely. Have a site dedicated to applets, Webstartable and otherwise Java-made games and make money from upsell and advertising a la Arcadetown; and another site dedicated to development. Which is kinda what JGO is supposed to be.

Cas :slight_smile:

A few real world observations might temper those statements a little:

  1. We’re halfway through getting D3D in LWJGL but we need a developer to carry it on. Volunteers please line up :slight_smile:

  2. The OGL bindings are very stable and generally work if you know what you’re doing. D3D is actually even more difficult to get working correctly being as it is a lower level of abstraction. As a point in case - my games work for just about everyone without any trouble at all. I have had endless horrors with D3D indie games. YMMV. But there’s no lucky dip - just coding correctly. It should be nearly always possible to fail gracefully. So don’t go giving up; and don’t forget there’s an awful lot of Macs out there and a surprisingly vocal Linux minority.

  3. Deployment hasn’t really been a problem for the last year or two now broadband penetration is so pervasive and the consumer JRE will slowly start to make it even nicer. Good news on that front finally.

Cas :slight_smile:

Last time I finished a game (Rescue Squad) I got zero complaints from OpenGL issues[1]. This is IMHO because it uses the same core init code that I’ve been tweeking over the last few games. Most GL issues are perfectly solvable, it’s just hard to find them out in advance if you’ve only got your own pc to test on.

[1] There was an instance of someone not being able to run on Vista, but I never got a proper error report so it could have been all kinds of issues. My guess is on directory permissions and/or USER_HOME oddness.

Fair enough guys, yes your games do work well.

But that ‘feel’ which you’ve developed by trial and error doesn’t sound fun to try and pick up from a learner’s persepective.

And by D3D, I’m ofcourse talking about 3D. Both of your games are 2D, (which I think is awesome by the way, I only try to make 2D too).

There are gazillions of random 3D Flash stuff showing daggy little ads or company logos which run on all computers and load in less than 1 seconds. And they do advanced stuff like shadows too.

To do that in Java for an ad, let alone a game is not possible - big initial download of some library and likely OGL-driver problems.