Exactly. Besides, a JVM like that on the desktop would hurt the java brand because of the “java=slow” stigma, which would immediately become true again in a field where raw performance is especially important.
The fact that this discussion comes up so frequently and is the same old problem over and over and has been for, ooh, four or five years now, is indicative that either something needs to happen, or that Sun are somehow once again watching another grand business opportunity fly past.
If you use an OpenGL binding it’s OpenGL that does all the rendering work so a JIT is not very important unless you have to render a big amount of 3d objects and use lots of textures. Something that easly increases the size of a small game. If you keep the complexity of your game graphics to a small game most users won’t notice anything and thats what i said above “most games”. Read all the words. It doesn’t mater from a statistical point of view. Of course that for users who have a 16k modem and still run java on a Pentium1 200Mhz and 14’’ mono monitors this may be a problem.
You can believe in anything you want if that makes you happy.
That is quite a different thing but you still don’t see the problem. Why do you think they would allow everyone to just use any parts they choose of their technology for free ? You must admit that asking them to allow everyone to disassemble their tech and use parts of it for free is not very reasonable or economicaly feasable. You can use the JRE and the JME for free because you have to use it under certain restrictions. We don’t own the JRE. We are allowed to download it and use it under their conditions and thats it.
Thats understandable no ? If they allowed for that it would be easy to ignore the license terms.
Really ? Companies like Sun prefer “milk cow” like investements. They are just like Microsoft but a little more prophessional and a lot less crocks.
It’s a casual game, but it still has pathing, collision detection, and a heck of alot of math. It’s playable on a 500Mhz machine, with the JIT, without it you would need 3-4Ghz to make it playable.
Then the question is - what does Sun want from Java? If they want it to be used for gaming, it must be competitive with other solutions. I don’t remember getting into any licensing issues when I was doing C or C++. The whole reason Java is free in the first place is for market penetration.
I would gladly pay to be able to use a stripped down JRE that’s embedded within my installation and unaccessible to other programs. Heck, I would pay to use some of the API’s. Sun has lots of ways they could be making more money on Java, but they want to get it as widely used and accepted as C/C++… well, that’s all we are talking about now isn’t it - the acceptance of Java as a viable language (remember, it is supposed to be a programming language and technology, not a software package) for making games. Despite what you think, Indy games can have a huge install base - well into the hundreds of thousands (for a single game) and it is one of the fastest growing business segments for software development.
That is exactly why it’s in Sun’s interest to make Java as big a brand as Windows is. You need a field for the cows. The more penetration Java gets in all forms of software development, the more Sun benefits from brand recognition. Some day they may get enough traction to really do the Java processor and actually make money from it.
You know what though? Let’s be honest, Sun doesn’t get out of Java what it should. Sun originally pushed Java because it would promote their hardware and other services/solutions that integrated with Java. Now, has that happened? Hardly. We and Sun would probably all be better off if Sun just open-sourced Java.
Where did you read “games are just graphics” above ? Read the words “statistical point of view” in the context i use them.
How many games with less than 5MB are complex enough to have performance problems without a JIT? Maybe a chess game. But hey i have played chess games on the Amiga running a 25Mhz. For the most part a normal vm sufices for the kind of small games im talking about where game size may be important.
Your game is a nice example but it is aprox. 14 megabytes. I think someone who can download a 16MB game can also download and run a 26 MB game no ? I don’t see why you can’t just bundle the JRE inside it.
It uses shadows and textures with 3d graphics. It doesn’t look like it needs much AI and unless you are using java ode it there i don’t see no reason for vector calculations to be so expensive. So it would probably still playbale in that 500Mhz computer because most of the work would be done by opengl if you do things right. Like using display lists and other tricks.
Thats for them to decide. We can only guess.
The word free with Java has a slightly different meaning like i said above. You are free to use it under certain conditions. You are not free to do everything you want with it like a truly free program.
You only have to ask them. But would it be worth the trouble ? An indie game sells around 5$ and 20$.
Sure we can allways speculate on what would be good for Sun. They don’t know how indie the market will evolve and it may be a suprise to everyone . Nothing stops you from trying to convince them to get a smaller java runtime. However i still think that asking for a JIT to JME is a much more realistic aproach than asking for changing the JRE license for embeding on applications. You are still ignoring the fact that people would exploit this easly to avoid Sun license and get a customized jvm for free and Sun would not be able to control this.
There is more than graphics. And even simple games can be pretty cpu taxing. All you need are lots of collision checks or some physics… or say… ragdoll stickmen.
Without jit your minimum system requirements go straight through the roof.
And your “statistical pov” is based on what? Valve’s stats? Oh please… For casual games its good to target 5-6 years old hardware. Which each year less you lose a piece of the pie. (Hardware is build to last about 6 years.)
I know what I’m talking about. This machine has 500mhz (5.75 years old) and without jit you cant do much… except of course… puzzle games… duh.
Go to www.realarcade.com and check out the top 10 list of games there. These are not the low end, low tech kind of things you seem to think they are. They are high performance, high production value games built to run fast even on low end machines. You seem to be confusing hobby games with portal market casual indy games. They really aren’t the same anymore and no JIT means no go.
My game is only an alpha with a menu and one level. It’s 14 megs with a somewhat stripped down VM inside it. It would be much smaller with more stripping, well under 10MB. However, it would be 26 MB with a full JRE and if I add more sound, music, graphics, models, etc. to finish the game the size will probably grow by another 5MB at least bringing it to around 31 MB. 31 MB compared to similar games that would be less then half that. It’s already going to be large, now it’s going to be bloated as well.
I didn’t mention the shadows, the algorithms for that are so expensive I ignored it as obvious - even with a JIT only high end PC’s and graphics cards can run with them. There is very little AI, but collision detection is very expensive and it has it in spades. The vector calculations are expensive because they are necessary for the physics, bounding boxes and collision detection. There is no ODE, it’s an all Java game engine. And trust me, the engine is definetly doing things right - it gets higher vertex throughput then Q3 and It’s doing alot more tricks then just display lists. Without a JIT through (I have tried, it can be turned off), it runs like crap on my 2.6Ghz machine.
It would definelty be worth it A top ten indy game on the portals can be pushing 10-100K copies a month - do the math
If people exploit it they would simply be breaking the license right? Is that ANY different then what they could do now? No. Thus there is no more risk - and since it’s a planned potential, it infact minimizes the risk and removes temptation for abuse from others that now have a viable option.
Sure indie games are getting more and more professional each day.
The ones on the front page.
Granny in Paradise - 18MB - a platform game similar to chucky egg but with better graphis
Bricks of Atlantis - 8.91MB - a bricks like game, played these on the Amiga with better graphics than this one in particular
Ancient SuDoKu - 11.71MB - a puzzle game
Gem Shop - 12.91MB - another puzzle game
Aloha TriPeaks - 12.31MB - a cards game, played lot of these on the Amiga
Fortune Tiles - 14.81 MB - a tiles game
Gem Shop see above
Bricks of Atlantis see above
Granny in Paradise see above
Ancient Sudoku see above
Ahoa Tripeacks
Ahoa solitaire
TriJinx
Readers Digest Super Word Power
I played games much more complex than this on my 25MHz Amiga.
Thanks for proving my point and raising my game size reference above 5MB to 10MB.
So your game without a javavm would be something like 15MB. You said by adding a jvm it would raise from 10MB to 26MB and then you have to add +5MB. It may be a little bigger than the usal but it’s Java. Not that it make lots of difference LOL. OK you get a small point in there but thas because you are using the JRE.
Strange. Considering that quake with a software rendering engine was quite runnable on my PC with less than 200Mhz at the time. If you had access to opengl in the JME that would not be a problem at all. The difference in speed running a Java program without JIT in your case would be around 10x slower with 2Hhz/200MHz. This happens only in worst case situations. The difference is usually around 5x. This is also strange because you would have to run the game in software mode without a JIT to get such a low performance.
Unless you do a perfomance test to your and tell me whats the part of your code that is wasting more time is not possible to take any conclusions from this.
You can get away with it if you do it right. With JET (or whatever the name is) and an obfuscator. Otherwise you would get their lawers in your track very kickly.
Then you should see what they use for the frame rate in xbox games. You would be suprised. I have read they fix it around 20-30 fps in a gamasutra article. Making the framerate fixed at a certain size will let you have more time for game cycles and less for rendering cycles and your game will animate better without framerate speed changes.
Considering that quake with a software rendering engine was quite runnable on my PC with less than 200Mhz at the time.
Oh yea. 320x200x8 at like 12-15fps… that was really great :
Then you should see what they use for the frame rate in xbox games
Usually its 30 or 60 for ntsc and 25 or 50 for pal.
Can we now go back to topic please? You could start your own “I need no jit” topic. Well, you already know my opinion about that. Java without jit would really suck.
Zingbat, you’re clearly vehemently opposed to a change in the Java licence. Unfortunately, in the hurly-burly of all these long quote-ridden posts, I’ve quite lost track of precisely what your objections are. Is there any chance you could provide a succinct list?
Im not personaly against anything. I have listened the arguments and answered them. But It seams like a few people get easly bothered when someone discuss their arguments and try to show them alternatives.
I think my reasons are very clear for people who know something about how a profit oriented company like Sun works. The JRE license is very important for Sun and they won’t take any risks with it.
You have much better chances if you ask them to improve the JME instead. Thats my opinion. Another alternative: there are plenty javavms besides Suns that work with gnu-classpath and have a JIT. These are not top quality one like Suns but are free.
There are quite a few speedy free software runtimes, actually, like JikesRVM.
If you are targeting Windows, and can expect .net framework to be installed, you can deploy your application using IKVM (translates the bytecode to CIL), while writing it in the Java programming language. Or you can ship a stripped down Mono, if you have to ship a CLR. Information on IKVM is available at http://weblog.ikvm.net/ .
Your other options are using gcj[1] to translate the bytecode to native code, and ship that. Or use JCVM to compile your bytecode to C, and ship the resulting binary.
In terms of traditional VMs, you can ship Kaffe, Cacao, SableVM or JamVM.
JamVM in particular is interesting as it packs a full-featured 1.5-ish vm with a state-of-the-art interpreter engine into ~100k. I don’t know yet how well that would work on windows, and whether it can be built using mingw32. I know that people have done that with Kaffe, and Kaffe can be equally well stripped down to ~500k including a quick jitter.
All of the runtimes above use GNU Classpath, which you can customize to your heart’s content, since it’s open source. Just like the runtimes are. So you are free to use, distribute, modify, and redistribute your modifications.
That’s possible because they are not using Sun’s proprietary source code. Instead, they are re-implementations from scratch.
That has two side-effects: they are not tested for compatibility with Sun’s TCK, so there may be areas where they and Sun’s implementation of some detail in the spec differ. In general, those things are bugs, and tend to be fixed quite quickly by the respective developers, in particular if the bug reports submit a patch, too ;).
The other important side effect is that since they are independant implementations, they are not Java, so one should take care not to abuse Sun’s brands in connection with them. Branding them with Sun’s logos, for example, will most likely get you into trouble with Sun.
Thanks robilad that is a great exposition. See people things are getting better and better with the opensource jvms. Some people here advocated for Sun javavm to be opensource now heres your change to contribute to an opensource jvm we can all use in our games without any commercial restrictions.
Zing, you have no idea what hotspot does if you genuinely believe this.
I think you mean “cash cow”. Actually, any company that focusses on those … dies. Cash-cows are products that you don’t need to do any more work on, and just leave running on their own. Java is very much NOT a cash-cow. Things like what is proposed in this thread would turn it into a cash-cow.
So, in essence, the conclusion from your point above is “sun should do this”.
Actually, I used to play quake1 on a 486DX4-100 (that’s 100Mhz). It ran OK enough to play the game, but not competitively - it was 12 fps max, usually 3-4 fps.
But the point that zing totally misses because he/she has absolutely no ideas what they are talking about is that modern games are written on lower budgets in less time by not jumping through all the optimization hoops that quake etc were. Quake took a team of a dozen or so (varied a lot during dev IIRC) professional games developers SEVEN YEARS!!!
Yeah if you google the net you will see that a Pentium 200 at least was required to play the game and the specs you mentioned are barely the minimun requirements.
This thread was going on in an educated way without much personal jabings. Let’s try to keep it this way.
No blahblahblah that was not the point i was discussion with Vorax in an educated way. The point was in Vorax post that i answered with an example.
Anyway to answer your new point you are trying to pretend it was Vorax point someone who wants to do a game needs know how to program, how to use a tool like perfanal to detect performance problems, how to use a debugger and do unit tests to make his game rock solid and to do clever optimizations. If not then the competition will, and sell their games instead. So even if someone is an indie gamer he has to be competitive if he has any real monetary interests.
I have an interest in java games the same way as you and anyother person in here. So if im disagreeing with some points in this discussion that doesn’t mean im against anyone in particular. If you want to write a letter or do a request for Sun to change their JRE license then take my opinion for what is worth to you and do it. It would be better than doing nothing.