Directions, LWJGL, JOGL, Signal and Noise

Hey Guys,

I understand there’s a specific “why didnt you just adopt LWJGL you bums” thread out there but I can’t find it so let me address a few things here.

(1) On Directions and Roadmaps
The good news is that the Game Technology Group is here, its funded and we can finally start doing thing for you guys with the support of Sun management. Thats a HUGE step forward. This company which still fundementally thinks of itself as a server hardware company has finally recognized some of the importance of you guys to its future.

The bad news. As you know, times are tight everywhere and even this showing of support isn’t the easiest thing to get in a world of competing resource requests. We aren’t a big group. Furthermore for exactly the reasons you guys laid out, that Sun’s primary vision and only revenue source in all this is on the server side, means ever justifying a big client-tech group is going to be
very difficult.

Thats why we did it this way and why we need you. If we all pull together this train is going uphill. If not, it won’t.

Finally we purposefully have NOT laid out a very detailed roadmap yet because we need to be smart and address the needs of our developers not some roadmap made in a vaccuum. There were a handful of technologies we knew were basic and needed. We did our best to deliver those in JOAL/JOGL/JInput. Beyond that we need the help of the game industry, which includes all of you, to understand where we can best focus next.

Again as one of you pointed out we are small and have to make up in nimbleness what we don’t have in brute force.

Given that, as we make plans, we’ll do our best to keep you as informed and invovled as we can.

(2) On JOGL and LWJGL

First off, let me tell you that LWJGL has been extremely important. The fact that you guys went out and did something yourselves was proof of a need that management couldn’t dismiss or ignore. You did some far ranging and critical stuff in LWJGL that served as proof of concepts and helps us illustrated why some heretical ideas are nontheless vitally good ones. (ex. breaking the hard tie btw AWT and the 3D render library.)

Secondly, I’d like you to know that the decision to use JOGL wasn’t taken lightly nor did we set out to develop in direct competition to LWJGL at Sun. Like LWJGL, JOGL began as someoens pet off-time project. When we realized we woudl have the resources to back a solution for OGL bindings, we considered all our available options carefully. In the end JOGL won because of two primary reasons:

(1) JOGL is actually auto-generated for the msot part from the C bindings for OGL using a tool that JOGL’s original authors wrote.
As such it was the most up to date and complete binding we could find today and is likely to b e the easiest for us to keep up to date as OGL continues to evolve. This was a critical issue for a small group with limited engineering resources and a lot to do.

(2) LWJGL chose simplicity over security in a few key areas. A piece of unknown code calling LWJGL can get access to memory pointers and thus malicously attack or infect the host machine. This isn’t an issue for closed games, particularly if they use sealed packages, but it was an issue for the larger set of applications we hope to enable, some of whom might dynamically load code from updates or even users.

These are the same reasons (along with general naming similarity with JOGL) why, in the end, we chose to use the same tools to generate JOAL.

Trust me when I say none of us in the Game Technology Group want to do any more work then we have to on this stuff, but we ALSO wanted to deliver the best technologies we could without prejudice or emtional attachment. Thats been our goal, I hope we attain it. In the end, while we appreciate your input tremendously it leads directly to decisions we have to make and live with.

LWJGL stil leads the way in some important places, such as the aforementioned non-AWT dependance. If you guys continue to build on it and illustrate other great ideas like that, you can only help us. Similarly if you want to build ontop of JOGL we can use that help too.

<< soap box on >>
But this isn’t “Sun v. LWJGL” and I refuse to see it that way. Its us in the GTG just trying to do our best to support the whole game industry as best we can. We spent all E3 talking to commercial developers and getting their input, too. We will continue to plumb them and you for your advice and help. You may not like all of our decisions, it woudl be unreasonable to expect that you would, but in the end I hope we will be a real community that can succeed together in changing the game industry. Neither of us can do it alone.

<>

P.S. FWIW it probably helps us if you keep up the noise about Java3D support, too. I personally agree with those who say the industry wants higher level solutions. I remember when I strated this every developer I talked to said “screw that scene graph stuff, just give us OGL bindings.” Its ironic that support for J3D has come into question just when its approach is finally becoming an accepted way of doing things in the industry. But if you can communciate that fact to Sun management as effectively as you have the need for OGL bindings then there is a lot that could be done to address it.

P.P.S. BTW We would be honored to host LWJGL at games.dev.java.net too. It won’t be in “core” because “core” is a special distinction for stuff the GTG is supporting directly but it certainly could be hosted in one of the other areas assuming the community wants it there.

Although there’s a fair old amount of overlap between the LWJGL and the new core games technologies we’re pretty confident that the LWJGL remains a distinct solution to a distinct set of problems, and the problems we’re addressing are slightly different to the ones the NCGTs are are addressing.

I for one am very happy that J2SE is getting some proper support from Sun on the gaming from via the new core technologies. I’m sure a lot of other people are too.

Just to clarify where our position is so you know why it’s different to the Sun technologies: our roadmap with the LWJGL is going something like this :-

  1. We’ve addressed the security issue; all access is via bytebuffers.

  2. We’ve changed the method naming, for ill or good we don’t care - one of the beauties of being a small team is we can ignore everyone else and do what the hell we feel like :slight_smile: What we are left with, when static import makes it into the language, is code that more or less cuts and pastes from C apart from pointers. This is great for getting tutorials together from the huge library of existing GL code.

  3. We’re pretty much specifically insisting on being a total replacement for AWT and even SWT. That’s our key differentiation. This makes our LWJGL incredibly well suited to J2ME and Jet. That’s where we’re basically headed; we’re plugging Jet, because it’s great, and we want a proper J2ME game vm - so that’s our agenda on that front, and that’s where we’re going to lobby, I think, from now on.

  4. We will, when we’re given it, have OpenGL ES in there too. And OpenGL2.0.

  5. We will be adding a 2D bltting API which will give us simple hardware assisted blitting (or not, depending), which will give us the ability to port LWJGL to, say, Windows CE and the CrEme JVM.

  6. We’re committed to providing convenience: we’re keeping it simple in every way we can. We’re not adding stuff that isn’t necessary and we’re providing everything in a simple, tiny package, without any of this clever autogen stuff. It’s no big deal adding stuff, so we do it manually.

Brian or Elias may want to chime in here.

Cas :slight_smile:

I stand corrected on the security issue. ;D

At the time we were making decisions though we understood it to be a design decision on your team’s part. And in any event as you say, the goals are slightly different. You are aiming for a tight game-oriented sub-set whereas we felt, given our larger audiance, that we needed to think in terms of total and current OGl API compliance :slight_smile: The more people that can use the stuff at Sun, the more likely we are to have the continued resources to progress it and build ontop of it.

Hi, Jeff.
I’m somewhat disapointed, as many about the knd of abandon of java3d, and some running projects will suffer a lot from this.
forgive me as i take that a bit personaly , but this let me in a weird situation. the company i zork for actually, and hopefully for a long time, was impressed by the work i did on J3D, and as they zere looking for solutions to replace Inventor in their train simulators, they got interested. Now that j3d sent a mayday, this solution is now a nonsense, and they will have to stay c++ and use a native scenegraph api. Exit java and j3d, goodbue darling.
But, i don’t see it all black. JOGL and other new APIs that you delivered are a right basis for a new implementation. Now, if the j3d 1.4 guys could release their draft and sources of 1.3.1, i’m certain that there would be people to implement.
As there were discussions to buy sources, or implement from scratch, that could be a nice move from sun to support their users. ;D

Maybe I missed Jeff’s point here, but I think what he’s saying (in the case of Java3D) is that telling him about it isn’t going to help much, since he already agrees that Java3D is a good idea.

So, how can we hassle the SUN management to get it back on the right track?

Kev

Kevin asks:

[quote] So, how can we hassle the SUN management to get it back on the right track?
[/quote]
(regarding Java3D)

If you consider Jeffs statement:

[quote] First off, let me tell you that LWJGL has been extremely important. The fact that you guys went out and did something yourselves was proof of a need that management couldn’t dismiss or ignore.
[/quote]
it should be obvious. Just start a Java3D API compatible open source project.

Thats kinda the point tho, starting a Java 3D API open source project would waste of lot of effort thats already gone into the project…

What I’d like is for one of two things:

  1. Work to continue on 1.4 and supporting 1.3.1
  2. Release the source and then start a project based on it.

Kev

Were I in charge of this bit of Sun, I’d have them feverishly beavering away to refactor the existing Java3D codebase on top of JOGL for the next release and ditch the D3D renderer finally. I’d also be refactoring JavaSound to move to JOAL as its renderer where possible. It’s the only sensible option - but as Jeff hints elsewhere, no-one’s currently managing the situation.

Cas :slight_smile:

[quote]Thats kinda the point tho, starting a Java 3D API open source project would waste of lot of effort thats already gone into the project…

What I’d like is for one of two things:

  1. Work to continue on 1.4 and supporting 1.3.1
  2. Release the source and then start a project based on it.

Kev
[/quote]
That’s what i meant. Open source project to implement 1.3.1 is of no use.
One to implement 1.4 is an other thing. All the engineering work that was (supposedly) done for 1.4 must not be lost. 1.4 is getting late, and redoing the engineering zill make it even later. Sun should release zhat they have so it is not lost money, and let an open source project continue. it could be based on java.net, of course.
The problem is not to have an implementation. the problem is to have a spec. If Sun does not want to spend money to implement, well… there is nothing i can say about that. Can’t really blame someone that wants to survive… but they should at least not block the process, and let at least the specs come out. (and let an open source project start with 1.3.1 sources, to the benefit of everyone)

[quote]I’d have them feverishly beavering away to refactor the existing Java3D codebase on top of JOGL for the next release and ditch the D3D renderer finally.
[/quote]
Personally I think they should uncouple the scenegraph from the rendering, possibly by using an interface that can be implemented using JOGL, DirectX or even mobile platform APIs. They don’t need to support the DirectX renderer though.

To decouple the rendering from the rest of the code is also a common among developers working on titles for both PCs and consoles.

[quote]Thats why we did it this way and why we need you. If we all pull together this train is going uphill. If not, it won’t.
[/quote]
Slightly OT, but I just wanted to point out to Jeff et al that frequent postings like this one are an invaluable part of this… despite the frustrations and pains that many have felt with the sometimes glacial pace of things (although I’m sure everyone eventually appreciates the realities of the situation), everything can be accepted (and mistakes forgiven) as long as you keep us informed.

My perspective as a developer is that everytime the GTG guys go silent on a topic for a long while, I get that sinking feeling all over again. I know you’re all busy, but it’s possibly one of the most important things you can do to ensure that postings like this one happen fairly frequently - I’ve been in a similar situation to the one you’re in now (in a different industry) in the past, and I remember that it often seemed to us (the organizers) that things were “ticking along nicely” and we didn’t want to interfere with things, wanted to let the community keep growing and evolving without being restricted by us. We’d pop up now and again, but tried hard not to exert undue influence, and accidentally end up with everyone doing what we thought was right, without them ever thinking up their own alternatives.

Fortunately, we had some close contacts in the community who came up to us and said “what the hell are you doing? why aren’t you involved any more? everyone’s wondering if you’re about to close this down, since recently everything you’ve said has been vague or uninteresting; are you giving up?”. After we’d learnt to be much much more talkative, we quickly saw that far from stifling debate, the more involved we got in the discussions, the more people offered differing opinions. It seems lots of people’s creativity is stimulated more by something they see as “wrong” than it is by silence :).

Shrug. It’d be nice to think you already know this very well. However, I’m not sure how I’m going to feel if you ever put us through another 6 months of “wait and see, something exciting’s going to happen” [note: I do understand the political need for long silence before the recent launch, but it’s undeniable that the months of silence caused damage too].

[quote]despite the frustrations and pains that many have felt with the sometimes glacial pace of things
[/quote]
That’s actually an interesting analogy. Glaciers may be slow, but when they hit land they carve out massive valleys, rivers, and lakes. Sort of like how Sun does things. ;D

[quote]Hi, Jeff.
I’m somewhat disapointed, as many about the knd of abandon of java3d, and some running projects will suffer a lot from this.
[/quote]
Well, all I can tell you is that JOGL, and the success of JOGL, actually strengthen the case for J3D in Sun.

To explain why would take me into Sun internal politics I can’t discuss but I’m gonna ask you to trust me here that for J3D users this is, in the long run, actually a good development.

Well don’t give up on J3D as totally dead yet, but you should tell this story to any Sun folks (me included) you can as again it can only help J3D to knwow e are losing developers to C++ because of its apparent morbundity.

In the meantime I unfortunately agree that, if you have to make a business decision today, the pains J3D are going through make it a pretty risky gamble :frowning:

Again, say this loudly where Sun can hear. And if you actually had a list of people seriosuly signed up to work on it that might impress Sun even more :wink:

JK

[quote]Maybe I missed Jeff’s point here, but I think what he’s saying (in the case of Java3D) is that telling him about it isn’t going to help much, since he already agrees that Java3D is a good idea.

So, how can we hassle the SUN management to get it back on the right track?

Kev
[/quote]
Hmm. making noise and telling your stories (such as the one Pepe just told about his company moving off Java) always helps.

If the community were to “spontaneously” organize a serious group that wanted to work on J3D if it were open sourced that certainly might help to push Sun that direction.

Doug might have some words of wisdom when he gets back from break that I haven’t thought of.

Oh yeah I agree. And I have to apologize for Sun for my absence for awhile. It had to do with internal nonsense and my getting put in the wrong seat for a bit from which I couldn’t involve myself in JGO without jeapordizing the whole thing.

Luckily, that time is past :slight_smile: As the song goes “these are the good old days.” :slight_smile: If things don’t get any better then this (and I really think they will) those of us who care about this market and understand it are at least in a position to make the most important things happen.

JK

Now the trick is STEERING a glacier. Trust me, its a whole lot of work :wink:

[quote] Well, all I can tell you is that JOGL, and the success of JOGL, actually strengthen the case for J3D in Sun.
[/quote]
I believe this also. Java needs standardized low and high level 3d APIs. Gaming industry is important, but it is a domain that is still not adopting APIs for long time, and are changing quite often (if not for each game), contrarly to industry and research. Gaming industry is looking for short term benefit API, while industry and research is looking for long term SPECS and implementation. Why has opengl been there for so long? gaming? Actually, and i have to add ‘unfortunatly’, what happened to J3D might have also frightened all the people using it, as it did in my company. Unless Sun moves very fast to ensure it will run for long (by releasing 1.4 specs and opensourcing 1.3.1, or actively continuing the development)

[quote] Well don’t give up on J3D as totally dead yet, but you should tell this story to any Sun folks (me included) you can as again it can only help J3D to knwow e are losing developers to C++ because of its apparent morbundity.
[/quote]
You should (if you do not already do it) read and forward reactions of people of the java3d mailing list ti sun internals. Lots of people from big companies were working hard on j3d and invested a lot. Now, discussions are going to my excellent friends of Mind2MAchine (salut les gars…), and are reffered as an interesting alternative to j3d, now. To be true, i’m also thinking about switching…
See, we’ve been facing many some deprecation and end-of-continuation these last years, and people know better how to decode an end of life ‘politically correct’ announce. While it’s always bad to lost money on a project, it’s better to switch before you’ve invested too much. I expect the switch from J3d to something else to be fast for lots of people if the situation had to continue as actually.

[quote] Again, say this loudly where Sun can hear. And if you actually had a list of people seriosuly signed up to work on it that might impress Sun even more
[/quote]
There might already be people discussing this. I can’t say anything for the company i work for, but if things were moving as i think would be better for everyone (1.4 specs released and 1.3.1 opensourced), i’d make everything so the company would be an active actor to the continuation.
the ball is on your side.

[quote] If the community were to “spontaneously” organize a serious group that wanted to work on J3D if it were open sourced that certainly might help to push Sun that direction.
[/quote]
That would be something i’d love to do as part of my day job, by the way. Unfortunatly, this is not something i’d be able to do intensively on my small spare time, but i’d participate anyway, so let’s start the thing.

As I understand it, Microsoft is moving towards a more free form 3D-accelerated graphical interface. I think Java clients will need to support this to some degree to remain relevant on Windows, and I think Java3D would provide a great basis. You could have your rich animated interfaces described via XML, then generate the scene graph from this; so the learning curve wouldn’t be too steep for your average Swing programmers.

IMO XML is not a universal hammer.

Thats about all I have to say on it.

I think you despise XML nearly as much as me…

Cas :slight_smile: