Quake2 Ported to Java, Play Via the Web 326
casemon writes "Quake2 fans unite! Thanks to German software developer ByTonic software, you can now play Quake2 via the web with Jake2 a java port of ID Softwares seminal Quake2. ByTonic claims performance is similar to original C version. From the Jake2 website;
"Jake2 is a Java 3D game engine. It is a port of the GPL'd Quake2 game engine from idSoftware. To use the Jake2 engine you need either the data files from the original game or from the demo version available for download from ftp://ftp.idsoftware.com."
You actually don't need to get the data files, they've set it up to automatically download the 38Mb demo assets using WebStart. Just click the Play Now button and away you go. Most features supported, even multiplayer server!"
Erm, link: (Score:5, Informative)
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:4, Informative)
Re:Erm, link: (Score:3, Informative)
I have a real good computer (memory, processor and video card) but I must tell you, the game runs really fast, you dont have the feeling of running a java application with all those 3 dimensional objects flying around you. You cant tell thats a program being interpreted.
Great job folks! The Java community has only to earn with this proof of concepts works
I have been there [livejournal.com]
Re:Erm, link: (Score:3, Insightful)
Java programs don't get interpreted on modern VMs, they get JITed. In some cases, this can result in more effecient code than a precompiled binary such as one created by a C compiler.
Re:Erm, link: (Score:2, Informative)
Question, how does the Java program get "JITed" without getting intepreted first? Does the VM use ESP to read the mind of whoever wrote the program?
This argument is so old and ridiculous. The only benefit of JIT is that it prevents having to reinterpret the same piece of code over and over if it's executing a loop or procedure multiple times. JIT just makes Java an efficient intepreter rather than a crappy one (which it used to be).
Re:Erm, link: (Score:3, Funny)
Bob
Re:Erm, link: (Score:5, Insightful)
No it assumes that the compiler cannot know the most common runtime code paths (which is true). A JIT engine can of course.
Even with compilers that read seperately collected profiler data (such as recent gcc which can take gprof output) can only work on that one profiler measurement. Lots of software is highly dependent on usage patterns and so different paths will be run depending on how the user uses the software. Only runtime optimisation can take this into account.
Re:Erm, link: (Score:4, Interesting)
I worked in a compiler group for 10+ years. Profiling was definitely the best way to optimize a program. The challenge was that the compile-profile-compile loop was cumbersome and was hard to account for all use cases. JIT profiling deals with YOUR use case. If it's really good, it will even adapt and re-profile as your use pattern changes.
How is it bigotry? (Score:3, Insightful)
This is really the conflation of two orth
Re:How is it bigotry? (Score:2)
If I wanted to jump on the C/C++ side of the argument, I would point out that a lot of the runtime libraries are written in C/C++. Thus, one could argue that
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:2)
Why is it important that the JVM be written in Java?
The whole intent of the Java language was to build a platform for applications so that the application writers didn't have to worry so much about the platform underneath. Hence, the JVM's very purpose is to encapsulate the nuances of each platform, while adhering to the multi-platform APIs, etc.
I don't know that any Java application writer really cares what language the JVM is written in.
If y
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:3, Interesting)
Re:Erm, link: (Score:2, Troll)
>This is a bullshit argument that generally presumes a substandard optimization by the binary compiler.
Like it or not, in 10+ years from now most (if not all) applications will be written in either Java,
Re:Erm, link: (Score:5, Funny)
1)
2) People who's last experience of Java was rollover applets in 1996 and who have refused to install a JVM since
3) Crusty old Unix hackers with beards and rainbow jumpers for whom Window Managers are eye candy and whose idea of a IDE is vi
Bob
The Slowness Of Java (Score:4, Insightful)
Maybe there are reasons for this that aren't directly related to Java. Maybe Azureus just isn't very well-written, or maybe it's just feature-bloated. Maybe the Windows JVM just stinks.
But in any case, the common perception of Java applications as being slow and ponderous is one that Java applications have earned - there are actual reasons, based on real-world experiences, that cause people to feel this way. That has nothing to do with some pig-headed resistance to change.
Rather than railing against the Java-haters, why not point out some useful, slick, fast Java-based applications? I'd love to see some. Every one that I've tried so far has been a disaster in one way or another. I honestly want to like Java. I like the language, I love the concept - it's the real-world experience with it that I have a problem with.
Re:The Slowness Of Java (Score:5, Insightful)
Um, you did see what the article is about didn't you? Perhaps you should try it out.
I have used quite a few Java programs and most perform well.
Re:The Slowness Of Java (Score:4, Insightful)
Re:The Slowness Of Java (Score:2)
It is amazing that it was even done at all.
Re:The Slowness Of Java (Score:3, Informative)
Re:The Slowness Of Java (Score:3, Insightful)
John Carmack is not the greatest programmer, but he is a damn fine programmer. He has shipped tons of games, and shipping games is an incredibly difficult thing. You also have to keep in mind that until quake2 included, he handled almost all major programming tasks (rendering, networking, architecture). Doom is one of the first games I've seen to cleverly use the same client/server architecture whether you
Re:The Slowness Of Java (Score:2, Troll)
Name them.
Re:The Slowness Of Java (Score:2, Insightful)
One word. Bollocks. I have Azureus running right now. As well as NetBeans, OC4J, VMWare and whole host of other things. Either you don't know one end of a computer from another or you're deliberately spreading FUD.
Bob
top - 14:51:58 up 5:33, 6 users, load a
Re:The Slowness Of Java (Score:2, Insightful)
Or he might be a normal non-evangelical java junkie that runs it out of the box. Like me. It runs like shit on my sytems too, and everyone else I know that runs it.. runs like shit. Of course they're not going to tweak the VM, the applications or run around in a handful of config files or whatever else you've done to manage to get it to perform reasonably. Fact of the matter is that it works file for you, and d
Re:The Slowness Of Java (Score:2)
And me, I'm running a vanilla Java 5 VM with no tweaking.
It runs like shit on my sytems too, and everyone else I know that runs it.. runs like shit. Of course they're not going to tweak the VM, the applications or run around in a handful of config files or whatever else you've done to manage to get it to perform reasonably.
I've done no tweaking whatsoever. Just installed the applications and then run them.
no
Re:The Slowness Of Java (Score:2)
Re:The Slowness Of Java (Score:2)
Bob
Re:The Slowness Of Java (Score:2)
Maybe there are reasons for this that aren't directly related to Java. Maybe Azureus just isn't very well-written, or maybe it's just feature-bloated. Maybe the Windows JVM just stinks.
I
Re:The Slowness Of Java (Score:2, Informative)
In theory, the JIT should be able to produce code that runs as fast or faster than C/C++. Th
Re:The Slowness Of Java (Score:2)
Re:The Slowness Of Java (Score:3, Informative)
I've had a pretty good experience with jEdit [jedit.org], a Java-based programmer's editor on both Linux and OS X. It's mostly replaced emacs for me now. Although I've only tinkered with Eclipse so far, it's been pretty responsive for everything I've tried. On the Mac, NeoOffice/J (the OS X port of OpenOffice.org, which relies on Java for access to the Cocoa API) seesm to run pretty well. Granted, these ar
Re:Erm, link: (Score:3, Interesting)
Where Java has been or still is slow.
1. Start up. It takes a good bit of time to start a java program because it takes a good amount of time to load the JVM. Not an issue on a sever where the JVM is probably in use all the time but a pain on the desktop. It also makes small utilities a pain in java. The latest version of java seems to start quicker.
2. Swing. Swing has been slow. The latest version of java seems much bett
Re:Erm, link: (Score:2)
The GTK classes (I know you said you didn't like GTK, but your major criticism is that it wasn't in C++, which isn't relevant here :)) provided by Mono for C# are cross-platform, maybe you should give that a go? I have to say I really like C# as a language — it's extremely similar to Java (of course) but has a few
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:2)
Fair point — it only really runs on BSD, Linux, OSX, and Windows. Swing is better for OSX in particular because it's an abstraction, as opposed to GTK which can't really adapt all that much. I thought that Mono used the (proven cross-platform) Boehm GC though (I have to say, I only have BSD, Linux and Windows to test it on!).
.NET (the Microsoft one) does run on BSD, PDAs, and mobiles (well, those Windows ones, anyway, using the cut-down-but-still-neat Compact Framework). And obviously you choose the
Re:Erm, link: (Score:2)
By that token, you can write C code to run on almost anything, you just have to run it with "gcc" instead of "java". (Yes I know it isn't the same thing, etc, etc.)
Anyway, you can run Mono on most places that you would likely run J2SE.
Actually I like GTK (Score:2)
My Java programs predate mono and they work so I see no reason it porting them right now.
I am not going t
Re:Actually I like GTK (Score:2)
Fair enough reasons. :)
Benchmarks (Score:2)
4) People who actually run benchmarks
5) People who write lower level libraries
You may argue all day long because most people don't care about a 10 or even 50 percent performance difference. As long as the GUI responds in a time that approximates "instantly" people are generally happy.
Does this JAVA version of Q2 run so well on a Pentium?
Re:Erm, link: (Score:4, Insightful)
Java's benefit is its age and portability. Its fairly mature and very fast when running under the server vm for some time. Quick command line apps are best served with C code. Compile C code with g++ instead of gcc sometime. Not only will your code run slower, but it will be larger as well. Likewise time a Visual C++ app vs a
If your vision of java is applets think again. No one uses java for applets anymore. If you do, you missed DHTML and its recent variants. Client side code is ignorant anyway. Browsers aren't standarized enough for that yet. Java is good for server side code and if written properly, desktop gui applications.
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:2)
P.S.: It *is* slow! And every Java app looks like a "SunOS" Application from 1985.
Re:Erm, link: (Score:2)
4 - Users that have to run Java apps.
honestly poorly written Java apps cause this as we llas network latency causing the image of java = slow.
Many java apps that are downloaded and installed on the loca lmachine are nice and fast.
unfortunately most peoples exposure to java is poorly written web apps.
Put up or shut up. (Score:2)
Just take a look at some benchmarks [dada.perl.it]. There is only 1 test out of 26 where Java beats C (compiled with either gcc or vc). One!!!
The original Quake2 had a software rendering
Re:Put up or shut up. (Score:2)
No. And I'll tell you why. I just don't care. If an app works in the way I require it's a good app. If it doesn't, it's not.
I'm actually trying to argue against this idea that one language is better than another. If something takes 1 second longer to start when written in one language than another, or 5 seconds longer when doing some processing I don't give a shit. The only people who'd notice the dif
Re:Erm, link: (Score:5, Funny)
Don't you mean that there are 11 types of people?
Re:Erm, link: (Score:2)
There are other annoyances, like the default 128MB RAM limit. There is that you still have to load the C libraries fo
Re:Erm, link: (Score:2)
Rubbish. It starts in 5 seconds on my Thinkpad with a 1.5Ghz processor. That's not that high end nowadays.
Anyway, who in the hell cares about start up time? What does it matter if OOo starts up slower than Word? It preforms perfectly OK when it's running. Do the people who complain about this sort of thing have some kind of ADD where they forget what their doing if an app isn't in front of them in microseconds?
Bob
Re:Erm, link: (Score:2)
However, not C or C++. But perhaps something like ocaml, which can compile to bytecode or native code, but has all the niceties of garbage collection and so on. This would be nice, as ocaml is actually type safe (Java's type system has holes in it, but at least it has generics now...)
Re:Erm, link: (Score:2)
Yeah, that'll be really swell. For a look at corporate tomorrow, look at college today. The curriculum sucks (aimed at Java hence none of the computer basics are taught, and students come out with NO knowledge of what happens at OS level/ CPU level - and no, ivory tower classes like ``let's d
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:2)
Re:Erm, link: (Score:2)
Perhaps. It isn't clear to me why one would necessarily want to write a "traditional" application (i.e. desktop style application) in a "managed" language. I've been a big Java fan, mainly from the standpoint of someone who came from C++ and could see that Java was much more productive. I even wanted to write high-performance code (and games) in Java. However, the numbe
Re:Erm, link: (Score:2)
I heard this same shit something like 10 years ago(or whenever it was java first came out).
Works pretty well (Score:5, Informative)
And this with a not so fast computer: PIII 800, TNT 2, 384 MB RAM.
Anyway if you wanna see benchmarks with older computers look at their web.
Re:Works pretty well (Score:2)
Performance wasn't exactly on par with what everyone else was bragging about on the popular review sites at the time, but fair and good enough to play, which for me was around 20-30fps at 640x480.
I think an 800 MHz CPU would've been 2 to 3 times faster than what the game was originally made for.
If I recall, the fastest CPU on the market then at
If I was Sun CEO... (Score:5, Insightful)
Re:If I was Sun CEO... (Score:2)
You'd have to give it away for free to make *anyone* throw away their well-tested-and-working C++ engines for a Java Version. No matter how fast it is, the java=slow paradigm is burned to deep into
Re:If I was Sun CEO... (Score:5, Insightful)
Re:If I was Sun CEO... (Score:2, Informative)
Java already has an OpenGL interface (presumably what this is using). I don't know what this guy is using for sound (although the Java Media Framework might work), or input, but presumably all of the pieces are already there.
Yes, probably JOGL [java.net] for the OpenGL. For sound, core Java can handle raw PCM, and JOAL [java.net] (Java Bindings for OpenAL) can sit on top of that. Java Media Framework is useless and effectively dead. Input can be handled by JInput [java.net].
Re:If I was Sun CEO... (Score:2, Interesting)
- Multiplayer should allow voice and webcam communication.
- There should be Servers and bandwidth available for Multiplayer games.
- All parts of this library must be able to run on Windows/Linux/Mac/Playstation (including JRE and SPU support on PS3)
- There should be new graphic instructions in Java JRE (based on OpenGL API) that directly maps to OpenGL driver and don't need RMI layer.
- There could be "iTunes for games" service that provides all game
Media Framework (Score:2)
https://joal.dev.java.net/ [java.net]joal for Sound according to his site.
https://jogl.dev.java.net/ [java.net]jogl for OpenGL
http://www.lwjgl.org/ [lwjgl.org] Light Wieght Java Game Library
Man this guy is good, he won't even let you copy paste his web text.
Seriously, good work, Are you aware Q3 has been liberated?
Re:Media Framework (Score:2)
I suspect that's a Firefox incompatibility (or if you prefer, the result of coding to IE's broken renderer), as it works fine in IE.
Re:If I was Sun CEO... (Score:2)
Since almost everyone already has a good OpenGL library, including Java, why not just write for that and deploy on everything that supports it, and give people a research lab and resources to maint
Yes, but does in run (Score:2, Interesting)
Re:Yes, but does in run (Score:2)
works on a mac (Score:2, Informative)
This is the coolest use of Java I've ever seen.
Well of course it runs great (Score:4, Funny)
Quake 2 seminal? (Score:3, Insightful)
I've played Quake 2 than all the rest put together, but that doesn't make it seminal.
Re:Quake 2 seminal? (Score:5, Insightful)
Re:Quake 2 seminal? (Score:2)
The advances made at ID Software in computer graphics are impressive. Unfortunately a lot of games are afflicted by an obsession with the gr
Re:Quake 2 seminal? (Score:3, Interesting)
Re:Quake 2 seminal? (Score:2)
Good Quake1 Capture The Flag players did not use "keyboard only" because all of the volume of a map was available for players to use via the grapple.
Those who did not use a mouse couldn't keep up with and track the mouse users. They were left in the dust.
Re:Quake 2 seminal? (Score:2)
Re:Quake 2 seminal? (Score:2)
yes seminal (Score:2)
dupe (Score:2, Informative)
Performance myth. (Score:3, Informative)
The real issue is startup time and initial memory consumption. Java is not suitable for applets that run in the background because your basic app will require about 20 megs of RAM minimum to start. Another issue is swing. You can disagree with me, but please wake me up when it gets clear type fonts on windows.
Cheers,
Adolfo
Good morning, Already there in Mustang (Score:3, Informative)
Swing is not slow or bloated, it just can't be compared to the native OS size since it duplicates its functionality so its memory usage seems high in the task manager. Startup time and cold start is improving with every release and building serious client side Java applications is becoming a very re
Comparisons with the .NET version of Quake2? (Score:3, Interesting)
The
Re:Comparisons with the .NET version of Quake2? (Score:2)
Re:Comparisons with the .NET version of Quake2? (Score:2)
There is a managed version as well, apparently, that's probably the one that should be used for fair comparison. The language feature argument should, as you say, be discounted, since JNI is likewise a feature of Java — it doesn't mean it's fair game to just call native code because of this, though.
Re:Comparisons with the .NET version of Quake2? (Score:2)
I did not scroll down far enough to see they had a managed version. Yes, I could see if Jake2 called C++ code using JNI outside just calling the OpenGL/OpenAL bindings to get performance than that would discount the comparison too. I will have to investigate this "fastjogl".
The managed
Re:Comparisons with the .NET version of Quake2? (Score:2)
The Java Version uses accelerated 3D (Score:2, Interesting)
If the Java version would do the same, then I would take my java performance prejudices and dump them.
Nice to see a full port, not just the game logic (Score:3, Insightful)
screenshots (Score:3, Informative)
C and profile feedback optimization. (Score:5, Interesting)
I have two points.
Comparing a static C binary, with a JIT is sort of silly. Logically comparing a JIT with a C binary compiled with profile based feedback optimization is probably more legitimate.
Secondly, the released Quake engine had a couple of assembly routines. Proving that C wasn't always the best choice, even back then. My understanding is that the versions of quake with assembly loops are roughtly 30% faster than the C only version they are comparing this with.
In the end these sound like good results, I'm continually amazed at how fast java has gotten. The fundamental arch is pretty much broken for generating fast binaries, and it speaks volumes about the quality of the coders writing the JIT engines that they can make a stack based compilation target run fast on modern processors.
Oh, one final thing, did anyone see what C compiler they used for those numbers? I'm currious if it was the same compiler ID originally used, or one of the more modern intel compilers?
Brightness?? (Score:2)
Unplayable on my monitor. Brightness???
Re:"...performance is similar to original C versio (Score:4, Informative)
I've not tried it myself yet. Might get in trouble at work.
Re:"...performance is similar to original C versio (Score:2)
Re:"...performance is similar to original C versio (Score:2)
I admit that I was being harsh...
They actually did nice work. It is refreshing to see something in Java that is not a bore-me-to-tears enterprise J2EE framework.
Re:"...performance is similar to original C versio (Score:2)
The benchmark does not show how much memory is used - likely, they installed an ungodly amount of RAM on all machines so it's overkill for the C version and adequate for the Java version.
I'd like to see the benchmark on the minimal hardware requirements.
Re:"...performance is similar to original C versio (Score:2, Interesting)
Re:"...performance is similar to original C versio (Score:2)
Re:Get ready for some low FPS! (Score:3, Interesting)
Re:How fair is this Java vs C comparison? (Score:3, Interesting)
Yes, Java came out with Native I/O API (NIO).
All benchmarks that I have looked into that show that Java runs faster then C/C++ are extremly heavily biased towards making Java look good.
I've read similar reports of
Correct me if I am wro
and the worse is... (Score:2, Interesting)