An era ends ... *sigh*

Hello everybody.
As most of you know (but i say it to make it clear for everybody) : english is not my native tongue and i don’t have internet at home, during the day (only during the evening, for some hours).

But it’s not the reason of this topic. It’s something a bit more sad that i discovered today : firefox will drop (forever) te npapi support in firefox 53 (released march 2017).

So … it’s over ? It seems.
Java applet was amazing, one of the best thing with java : developing a game, and let user play it in the browser directly.

It’s over, and what do we have as a replacement ? html5 and that horrible, terrible, coming from hell javascript.

Javascript, the human readable language that nobody read nor write today, and, for this reason, taking no advantage of the readability aspect and all disadvantages of an interpreted language it used to be.
Bytecode was so much better, so much clever.

But it’s over. What our children will think about it ? “Ages ago, people was able to make applications in applications. But we didn’t fight for it, and now you have to use proprietary solutions for this”.
Yes, firefox drops npapi for java, but it will keep it for flash. Only for flash, actually, silverlight will not work.

I have not been wandering on the internet for quite a long time and, now … internet will never be the same. We lost that war, and chrome won.

I have a metal taste in the mouth and a deep sadness, like if somebody told me that a friend i have seen for a long time died in some distant place.

This, plus the stab that was the no swing support on android, plus the copycat-poprietary named c#, it seems that Java is dying.

Goodbye my friend. Will miss you.


Applets were dead for a long time tbh…


Yeah, applets have been dead for sure since shortly after Oracle bought Sun… they were dying before then, too, though.

It’s to the point that in 2011 or so when I started using JME (again) that I was kind of surprised to see that it was even a deployment option, to be honest.


I have recommended people disable applets webstart for a very long time. The idea of a sandbox is nice. However in practice it just doesn’t work. Java never needed applets and is worse of for them.

Maybe my personal experience is unique but the language that has come from my mouth directed at and directly caused by Firefox should never be repeated. Java’s doing fine though, far from dying. Isn’t it still like the 1st or 2nd most popular language? No interest in playing something in my browser personally. If it was Firefox it probably would have crashed anyway :innocent:

1 Like

Well…to me it’s more a good new really. Applets were a freaking nightmare since java7/8.
webgl is very very far from opengl in terms of things you can do, it’s closer to opengl ES. Using javascript is not that bad… I do this as a day job now, and it’s ok. Also javascript is really evolving to something closer to java, so I have some hope.

Though… why do you want to distribute your game in a web page.? Are playstation games or steam games distributed in a web page? No.
IMO this was a lame idea from the beginning.
If you really which to do this… you still have web start (jnlp files) to start the app from a browser… but this also tend to be a certificate nightmare so I wouldn’t recommend it neither.


^ This. Javascript is great and it deserves some love.

Usually it’s not interpreted anymore. Javascript is just the language, every implementation can run it in a different way, for example V8 engine is a JIT compiler, nashorn uses the JVM

I don’t see the loss of applets as a big issue. Sure, they were very nifty and had their uses, but to use them for something like a full featured game seems to me to be quite a bit like the new HTML5/JS game engines - a technical possibility but a bit of an abuse of the technology. Good games belong on the desktop where they are first class citizens, not embedded in a webpage where the user has to open their web browser to get to the game and basic things like saving games can’t be done easily (if at all).

I beg to differ. Back in the JDK1.0 days they were awesome, and made glorious web pages. The alternative was… uh… animated gifs. But not the cool type of the last few years… only the horrendous type.

1 Like

Well, the most “cool type” gifs from today aren’t even gifs, but small mp4 that are “tagged” as gifs.

applet was one reason why i choosed jme when i started to do 3D games (the other being the physic engine). Actually i pretty much arrived at the end of my experience with jme (this is an unofficial announcement) and i will likely move to a personnal solution or something commercial. There is a doc on my computer named “wishlist” that “extend” an other doc named “why jme is wrong” and … well i never found the motivation to post them. There are things wrong with jme, but so deeply wrong that even a full rebuild would not remove them. The topic “in the era of AAA games, are we still relevant” should be renamed “have we ever been relevant ?”. But i start to be acid, once again, and i don’t want that, and it’s why i delayed my message so long, and why i will delay it one more time.

Because when you have a website for your game, there will be a barrier for the user : he will have to download it, he will fear that the game will require a lot of space to run, that it will be hard to install, that it will not work at all and will cost him a lot of time, effort and energy for nothing. You know, it’s like tips “you have to grab attention in less than X seconds”, “users stay XX seconds on a web page etc”.
If you have a “play me” button on the website and the game (or at least a simplified version of it) start directly in the brower, the user will be able to see that it works, will enjoy it and will more likely donwload it after that.

It’s why i said “it used to be”. My english is poor, so maybe it was not clear. I know it’s not an interpreted language anymore. Hell, even PHP start to have some compiler (last time i checked, developed by facebook).
The poblem is : it was an interpreted language.
So, when you download a page with javascript, you download a fat pack of code. And here you have two choice :
the code is readable (commented, indented etc) and it will make the page heavier for nothing (i think that <1% of people will read it) or it’s a “monolined-without comment-single letter variables names-vomited by some framework” which will still need to be parsed to execute. And, in this last case, you could as well have just byte code and it will work as well.

Oh. Ok, i misread this part.

Well… yes… you have a point here… but i doubt it’s a commons situation nowadays to have a page slowed by the size of it’s javascript, also because, if everything is configured correctly, you should download it only once and then it should be served from the cache.

I’d like to read this doc, because while i kinda agree that jme has some not optimal design choices, in my experience i’ve never felt the engine was imposing any limitation to what i was doing.

It doesn’t. You know, Java doesn’t impose any limitation. And assembly language doesn’t either.
And a man with bricks and cement can build New York. Or not.

I am not sure that you want to read the document. I am very acid in it.
But here is a unofficial link to it :slight_smile:

  1. The issues with model loading have already been fixed with the xbuf format, to which i contributed, and also with my (still undocument) fork f3b that uses some different approaches.

  2. InstancedNode

  3. It’s super easy to make a game specific character control and super hard to make a generic purpose one. The devs of UT4 had some of the issues we have w/ BetterCharacterControl while tweaking theirs.

  4. Some of the issues here are related to the broken bullet, that has already been fixed and updated, now it works fine. JME now has PBR. The transparency issue is not jme fault it’s how opengl works you can use screendoor transparency to have a fast order independent transparency that also works with deferred shading.

My final conclusion is: Nothing of this requires a new engine.

And you missed the point, which is sad.

  1. i will maybe need to check the loading. In 3.0 it’s broken, for sure.
    But it’s not the point. You want to do animation ? Well, there is no stock animation.
    You want to make dialogs ? There is no dialog tree.
    You want to make an open area with npc wandering ? Performances will decrease to an extreme level.
    You want to do anything other than a technical presentation of a technical aspect that nobody in the world care about ? Well, you can’t.
    Aren’t you surprise that in almost all “a bit big” game you have humans and, in jme, you don’t ? There is a reason for that.
    Take call of duty, replace every human by a solid color parallelepiped and nobody will want to play it, even if you have stuning shaders on your water. Take the very old deus ex, or even older game, lara croft etc : you have a low poly character with a face made of 2 rectangle and they was still awesome.
    We are humans, we need to have concern in the game we are playing. We need faces, eyes, soul. A silent dialog box is 100x more important that a full dolby surround digitals of … a falling rock.

  2. Instance is pointless if you made 100 different items. You need texture batching, culling (smart culling, like portal culling) light baking etc. You are not gonna solve light problems with instances.

  3. BetterCharacterControl have way more problems than the charactercontrol. And, again, it’s not the point. Once you’ll have done your game around the cc or the bcc, you’ll find that they don’t work. And you’ll have to redo everything. At the very end, you’ll spend more time redoing everything than if you did them in the first place. Everything in jme is almost good but not good and, for this reason, lure you in the wrong direction and make you lose time finding it and redoing it.

  4. re-read that point, i am not talking about bullet here. This

    Actually I am a bit surprised that the renderer part is not UberMonsterFromSpace renderer, with a scenetree from the library TreesAndPoneysForTheWin and assets handled by AkalaPlayUkulele or some other fancy name. It adds colors to have core stuff handled by external libraries. Yippee.

is the key point. It may make sense to you to read “jme use lwjgl and, through it, opengl, to [blablabla]”. It’s doesn’t make any fucking sense for anybody that did not spent month in this environnement (and more). And when you add to this tonegod, nifty, lemur, spidermonkey, bullet … it just blows your head.

THIS is a spidermonkey

As you can see, it’s not related to the network in any way.
And you have the same problems with a lot of comments. I read a method javadoc today. The name of the method was something like setIXCpbv (don’t remember the exact name).
The comment ? “set the IXCpbv”.
No.Shit.Sherlock. I thought it was planting apples.
And now what the fuck is an IXCpbv ? I’ll never know.

And it’s why i am talking about duke tape and frankestein. I see people complaining about the non uniform aspect of php function’s name, but here you have the same thing ^100. Note that it’s pretty general to open source world : try to see the log of linux when it starts, you’ll crawl in x11, apt and other name that don’t make sense. They are brand, people who made it are very proud to see their little fetishist word and the rest of the world just have to endure it.
A physic engine called “physic”, a network engine called “network” and a gui engine called “gui”, would be too easy. So, let’s call the render engine “ILikeUnihorn” and the input manager “BananasAndApples”. Things are not hard enough to understand with quaternion, uv mappings, shaders, matrix etc.

But, anyway, all of this is already in the document.

Wah wah wah… the shit you give me free and I never contribute to isn’t any good…wah wah…

The community will be a much better place without you. Please hurry your exit.


xbuf and f3b are not in the core. In jme asset loaders are “plugins”

Stock animations that work automagically with every asset?

Well… yes… until someone needs dialogs and decides to make a libary.

Humans aren’t in the engine…

Usually you never have 100 different items in the vieweport at the same time.

True. JME doesn’t have any mature implementation of deferred shading (that has it’s own downsides btw) but now there is single pass lighting that in most cases is good enough.

They are different controls that solve the same problem in different ways. Character control is just an implementation of bullet’s native character.

Cuz it’s common practice to have no idea of what you are doing when you write a game…

Yes, let’s call everything with a very generic name. It’s a good idea.

And btw, yes i’m missing the point. What is so wrong that even with a full rebuild would not be fixed?

1 Like

Heheh… “Why do they call it mecanim? Why didn’t they just call it ‘animation’?”

It’s called branding. Duh. Has to be the dumbest line of argument in this whole thread.

“Why is my car called Yugo? Why can’t it just be called ‘car’? So confusing. I never know where to open the door.”


About playing game on browser, I have an opinion. The question is how big is the market? How big is people potentally playing game on browser. Not everybody who wants to play game is core gamer. Some of people who wnts play game probably don’t want to install a game to computer. probably they want entertainment between time of their work but have no time to install a game or not allowed by company? Or something else. For short if there is a market for this kind of game, why not? If the macjine prints money, why not mkae one? It doesn’t matter how to do it. i mean it doesn’t matter with javascript or java.

Yes, there is definitely still a place for games in the browser. I play them all the time… but even now flash is too heavy. Java is a humongous beast and the 3D games take too long to download.

For browser games, javascript and html5 are pretty much the only viable way for the target market.