×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Quake2 Ported to Java, Play Via the Web

Hemos posted more than 8 years ago | from the keepin-it-old-school dept.

Quake 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!"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

326 comments

internet shares info all over? (0, Troll)

CloudDrakken (582681) | more than 8 years ago | (#14127848)

why not just aggregate from digg.com already, this article is a day old :|

Re:internet shares info all over? (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#14127876)

Silent, troll. Jake2 is already a year old, so digg.com sucks as well.

Re:internet shares info all over? (-1, Flamebait)

Anonymous Coward | more than 8 years ago | (#14127905)

It runs with 2 fps. Not bad for a application written in a toy-language.

Re:internet shares info all over? (-1)

Anonymous Coward | more than 8 years ago | (#14127924)

It runs with 2 fps. Not bad for a application written in a toy-language.

I wonder how fast a PHP port of Quake will run... ;-)

Erm, link: (5, Informative)

medgooroo (884060) | more than 8 years ago | (#14127851)

http://www.bytonic.de/html/jake2.html [bytonic.de] just thought it might be, you know, handy?

Re:Erm, link: (0)

Anonymous Coward | more than 8 years ago | (#14127869)

I don't think I can trust these guys. The Java security certificate when using the Java's Webstart has expired.

Re:Erm, link: (3, Informative)

bpatinifurtado (934367) | more than 8 years ago | (#14127941)

It is awesome what they have did!

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: (3, Insightful)

bentcd (690786) | more than 8 years ago | (#14128006)

You cant tell thats a program being interpreted.
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: (0, Troll)

lseltzer (311306) | more than 8 years ago | (#14128117)

>>In some cases, this can result in more effecient code than a precompiled binary such as one created by a C compiler.

This is a bullshit argument that generally presumes a substandard optimization by the binary compiler.

Re:Erm, link: (5, Insightful)

MartinG (52587) | more than 8 years ago | (#14128160)

This is a bullshit argument that generally presumes a substandard optimization by the binary compiler.

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: (3, Interesting)

tedgyz (515156) | more than 8 years ago | (#14128461)

Right on, brother! The C/C++ bigots just can't accept that a Java program might run as fast as, or (gasp!) faster then a C/C++ program.

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.

Re:Erm, link: (1)

CastrTroy (595695) | more than 8 years ago | (#14128552)

If your project was Open source, then couldn't you include GCC with the project, as well as the code, and provide a means of JIT'ing the C/C++ code? It might make things run faster, and for things that are really speed sensitive, might provide a way of making things just that little bit more faster. If this was done for all of Linux, The OS and the application suite, could we get some major improvements in terms of performance?

Re:Erm, link: (1)

Beek (10414) | more than 8 years ago | (#14128880)

Ummm... I think that JIT depends just as much on the VM as it does on the compiler (probably more).

Re:Erm, link: (0)

Anonymous Coward | more than 8 years ago | (#14129023)

Very true.

Compiler Optimization = trip planning on paper map

JIT Optimization = trip planning with paper map, GPS and traffic info feed

Re:Erm, link: (2, Interesting)

TwistedSquare (650445) | more than 8 years ago | (#14128176)

>>In some cases, this can result in more effecient code than a precompiled binary such as one created by a C compiler. This is a bullshit argument that generally presumes a substandard optimization by the binary compiler. I believe the theory is that the compiler can optimise for, say, Athlon XP, but cannot assume that anything above a 386 (or a Pentium, depending on settings) is being used, so it can't use XP-only instructions/tricks. Whereas the JIT compiler can optimise for the exact processor it is running on - it doesn't need to be able to run the programm on any other machines. This is particularly the case in Windows, and for Linux binary packages (obviously gentoo can do what I described when installing packages). Whether this actually makes an appreciable difference is another matter.

Re:Erm, link: (1, Troll)

nick-less (307628) | more than 8 years ago | (#14128187)

>>>In some cases, this can result in more effecient code than a precompiled binary such as one created by a C compiler.

>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, .NET or a similar Framework/Language. C/C++ will only be used where bit-banging stuff is needed AND NO ONE will care about except a few grumpy old man...

Re:Erm, link: (5, Funny)

CowboyBob500 (580695) | more than 8 years ago | (#14128216)

Exactly. In real life I found that there are 3 types of people who perpetuate the myth that Java is slow:-

1) .NET developers
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

Re:Erm, link: (0)

Anonymous Coward | more than 8 years ago | (#14128511)

nah, vi is just the editor to get things done quickly. Emacs is the IDE.

The Slowness Of Java (4, Insightful)

Lagged2Death (31596) | more than 8 years ago | (#14128518)

Even with 512MB of RAM, Azureus (the hugely popular Java-based BitTorrent client) takes forever to start up, responds sluggishly to user input, and sucks down so much RAM that the Windows PC it's running on is nearly useless for any other task. This isn't simply the nature of BitTorrent - other clients run far more smoothly.

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 (4, Insightful)

FatherOfONe (515801) | more than 8 years ago | (#14128624)

"Rather than railing against the Java-haters, why not point out some useful, slick, fast Java-based applications? I'd love to see some."

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 (4, Insightful)

Anonymous Coward | more than 8 years ago | (#14128859)

A port of Quake 2 that is slower and uses more memory than the native client that was released seven years ago?

Re:The Slowness Of Java (0)

Anonymous Coward | more than 8 years ago | (#14128705)

Hey if you think Azureus is bad on Windows, wait until you enjoy the smoldering pile of ass that is SWT/Gtk+. Redraws are absurdly slow, dialogs that you cannot resize pop up broken and unable to render the text they contain the space provided, if you happen to use your mouse wheel for cycling through virtual desktops be ready for tooltips to cause what was you using your scroll wheel to scroll in the application fling you through your desktops, and that's just barely scratching the surface.

The only reason Azureus became popular was that the normal Python client didn't originally permit multiple downloads from one client, so downloading multiple torrents would suck up RAM, have no priority queue, and be an organizational mess. Now there are a lot of clients that have useful features that aren't Azureus, so move on already!

Don't worry, I'm sure some Java proponent will come by and mention RSSOwl or JEdit, or some other half-assed memory-wasting program that is less functional and performant than alternatives, or simply not all that useful to begin with.

Re:The Slowness Of Java (1, Insightful)

CowboyBob500 (580695) | more than 8 years ago | (#14128800)

Even with 512MB of RAM, Azureus (the hugely popular Java-based BitTorrent client) takes forever to start up, responds sluggishly to user input, and sucks down so much RAM that the Windows PC it's running on is nearly useless for any other task.

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 average: 0.18, 0.17, 0.51
Tasks: 116 total, 2 running, 114 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.7% us, 1.0% sy, 0.0% ni, 91.3% id, 4.0% wa, 0.7% hi, 0.3% si
Mem: 2076528k total, 1662764k used, 413764k free, 67972k buffers
Swap: 4088500k total, 463460k used, 3625040k free, 1072344k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8540 mparker -51 0 30176 15m 14m S 3.0 0.8 3:32.12 artsd
7774 mparker 16 0 38724 1032 512 S 0.3 0.0 0:00.92 ocssd.bin
14289 mparker 16 0 2056 992 752 R 0.3 0.0 0:00.04 top
1 root 16 0 680 60 36 S 0.0 0.0 0:01.00 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root 10 -5 0 0 0 S 0.0 0.0 0:00.18 events/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
19 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
142 root 10 -5 0 0 0 S 0.0 0.0 0:00.76 kblockd/0
185 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
184 root 15 0 0 0 0 S 0.0 0.0 0:07.55 kswapd0
778 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
1014 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
1020 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
1021 root 21 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
1248 root 10 -5 0 0 0 S 0.0 0.0 0:00.57 reiserfs/0

mparker 8616 7989 0 09:51 ? 00:00:00 /bin/sh /usr/local/netbeans36/bin/runide.sh
mparker 8635 8616 0 09:51 ? 00:01:31 /usr/local/jdk1.5.0_03/bin/java -Djdk.home=/usr/local/jdk1.5.0_03 -classpath /usr/local/netbeans36/lib/ext/boot.jar:/usr/local/ jdk1.5.0_03/lib/dt.jar:/usr/local/jdk1.5.0_03/lib/ htmlconverter.jar:/usr/local/jdk1.5.0_03/lib/jcons ole.jar:/usr/local/jdk1.5.0_03/lib/sa-jdi.jar:/usr /local/jdk1.5.0_03/lib/tools.jar -Dnetbeans.osenv=/tmp/nbenv.8616 -Dnetbeans.osenv.nullsep=true -Dnetbeans.home=/usr/local/netbeans36 -Djava.security.policy=/usr/local/netbeans36/bin/i de.policy -Xms24m -Xmx96m -Xverify:none org.netbeans.Main --userdir /home/mparker/.netbeans/3.6
mparker 11799 7989 0 12:44 ? 00:00:05 /usr/lib/vmware/bin/vmware
mparker 11810 11799 0 12:44 ? 00:01:16 /usr/lib/vmware/bin/vmware-vmx -@ pipe=/tmp/vmware-mparker/vmx4380c2c9c1cd53db;vm=43 80c2c9c1cd53db /home/mparker/VMWare/Windows XP Professional/Windows XP Professional.vmx
mparker 11868 7989 0 12:55 ? 00:00:00 /bin/bash /usr/local/azureus/azureus
mparker 11873 11868 1 12:55 ? 00:01:38 /usr/local/jdk1.5.0_03/bin/java -Xms16m -Xmx128m -cp /usr/local/azureus//Azureus2.jar:/usr/local/azureu s//swt.jar:/usr/local/azureus//swt-mozilla.jar:/us r/local/azureus//swt-pi.jar -Djava.library.path=/usr/local/azureus/ -Dazureus.install.path=/usr/local/azureus/ org.gudy.azureus2.ui.swt.Main
mparker 13824 10435 1 14:31 pts/2 00:00:19 java -jar oc4j.jar

ps output abridged to avoid lameness filter.

Re:Erm, link: (-1, Troll)

Anonymous Coward | more than 8 years ago | (#14128546)

4. People that program in Java for a living because it pays the bills, but realize that it's a mediocre language with a weak static compiler and a JIT compiler most of its proponents don't even understand more than superficially while rambling about its benefits.

Most Java programmers are defensive, poorly-educated web monkeys, who have personalities not unlike the quintessential Apple zealot. Despite that people repeatedly opt to not use .NET or Java programs on the desktop because of poor platform interoperability and memory requirements stemming from the limitations of the optimizer, stupid programmers that maintain references to objects well past their necessity, and JIT compilation necessary to obtain the performance-properties Java programmers take for granted, they will never fail to find microbenchmarks showing performance parity with C or C++ that do not even use idiomatic Java and always fail to use sensible optimization flags with the compilers, making them look like detached idiots to the great computing community. They defend stupid decisions in the language, limitations of Swing, and trivial optimizations not performed by the JVM that have been produced by the research community several years ago. Whenever they're backed into a corner about some failing of Java, they always suggest that the next release of Java will fix this and that all is well. Even if the improvement doesn't actually fix what they think it does because their knowledge is too superficial to recognize the difference, just wait for the benevolent hand of Sun to fix more of the limitations of their language/static compiler/vm/jit compiler/class library.

If I didn't make $125k/y putting up with Java I certainly wouldn't opt to use it. I wouldn't really want to write C++ code either, but at least I would have a better chance of seeing my work run somewhere it isn't forced upon employees or customers by corporate fiat.

Re:Erm, link: (2, Interesting)

LWATCDR (28044) | more than 8 years ago | (#14128731)

I have developed code in java for a few years now and you are over simplifying the case.
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 better.
I here all the time how Java can be as fast as c++ but I have to admit I have never seen it. I would put Java in the class of fast enough for most tasks.

I use Java because I like OOP and I really like how Swing is laid out. It fits my mind set a lot better than MFC which I hate with a passion or GTK which while object oriented is not in c++. You can use GTKmm but the number of dependencies is just over the top IMHO. Everyone is different so what I like may not be what someone else likes.

I don't do VB because I will not learn a programing language that only runs on one OS. I also have not bothered with c# yet because I see little benefit over Java unless you are going to stick to just Windows. I have to develop for Windows and Linux so that is not an option.

Re:Erm, link: (1)

zootm (850416) | more than 8 years ago | (#14128873)

I also have not bothered with c# yet because I see little benefit over Java unless you are going to stick to just Windows. I have to develop for Windows and Linux so that is not an option.

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 nice constructs that can help out a lot (delegates, in particular, come to mind).

I agree that the problem with Java's "performance" reputation is largely due to the bad performance of Swing in the past though. I myself (while writing Java) always found it slow, until I started playing with things not using a GUI, when I discovered it wasn't actually slow at all.

Re:Erm, link: (1)

laffer1 (701823) | more than 8 years ago | (#14128942)

Mono is cross platform? Ok.. it runs on linux and windows. it sort of works in mac os x, but not for web development. On a bsd forget it. Name another platform.. plus from my understanding there are lots of issues with porting the garbage collector to various architectures and operating systems. In contrast, java runs on my cell phone, mac, windows, freebsd, linux, etc.

Re:Erm, link: (1)

zootm (850416) | more than 8 years ago | (#14129051)

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 tool for the job — I don't think dismissing Mono, .NET, or C# out-of-hand is justified, really.

Benchmarks (1)

gr8_phk (621180) | more than 8 years ago | (#14128954)

You forgot:

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: (3, Insightful)

laffer1 (701823) | more than 8 years ago | (#14129061)

I fit category 1 and 3 above and I still think java runs very fast for server based code. Running a java servlet container is very fast. A few applications like jedit, intellij idea and limewire seem fast on the graphical front. Someone can write a slow .NET, C++, or objective c app too.

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 .NET gui app starting up. The advantage of Java and .NET is the massive amount of libraries that are guaranteed to be there. The STL in C++ is not implemented consistently across compilers or platforms. My big complaint with java isn't speed, but organization. I find the namespaces cluttered and confusing compared to .NET. Think about it. They have io and nio. Try to write XML code sometime! Oh god. Java is more portable than .NET though. The price is a consistant namespace layout. Maybe someday if Mono matured to a point it was portable and at least .NET 1.0 compatible we'd see a real shift in software development. I'd use c# in bsd for example. Its great for web development compared to the servlet api.

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: (1)

Lost+Found (844289) | more than 8 years ago | (#14129070)

You can keep calling it a myth all day long; unfortunately, that just doesn't take any of the truth out of it.

Re:Erm, link: (1)

DylanQuixote (538987) | more than 8 years ago | (#14128381)

I'd actually think that there is still a good future for native code.
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: (0)

Anonymous Coward | more than 8 years ago | (#14128397)

Try performing I/O in O'Caml and tell me that's type safe.

Re:Erm, link: (1)

andreyw (798182) | more than 8 years ago | (#14129029)

... and we will wind up with a whole generation of ``software engineers'' who stumble on stupid concepts like ``endianness'', ``alignment'', ``pointers'', ``memory management'', ''stack'' and other assorted mundaneness.

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 design our own datapath'' are pretty worthless here), while the students just don't know any better.

In fact, Microsoft itself (while a proponent of .NET) is lamenting that colleges are basically not teaching students the basics (that would be C, not VMd languages du jour).

Re:Erm, link: (2, Informative)

gcauthon (714964) | more than 8 years ago | (#14128839)

Java programs don't get interpreted on modern VMs, they get JITed

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).

Works pretty well (5, Informative)

Anonymous Coward | more than 8 years ago | (#14127865)

I saw it at swing sightings. I tried it with the original game files and didn't notice any difference in speed with the original binaries.
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 (1)

GMC-jimmy (243376) | more than 8 years ago | (#14128478)

I remember buying Quake 2 from the store and at the time the fastest thing I had to play on was a Pentium 233 MHz with 64RAM and a 3Dfx Voodoo 2 video pass-thru card.

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 the time was something between 300 and 500. This would've been the summer of 1996 I think. What was the average CPU speed back then during Quake 2's retail days ? I wasn't on the "bleeding edge" with my hardware at the time, but I wasn't far behind.

Excellent!! (0)

Anonymous Coward | more than 8 years ago | (#14127866)

Awesome, yet another distraction from work/school and everyday lives. Just what we need...

Jave = Awesome... (1)

jon855 (803537) | more than 8 years ago | (#14127868)

Now how will it respond to the time attack play mode? I love to time attack as many games as I could. Quake 2 being one of them. I for one welcome our Jake Overlords.

If I was Sun CEO... (5, Insightful)

should_be_linear (779431) | more than 8 years ago | (#14127901)

... I would give this guy research lab and resources to create java-based DirectX library. For game developers, it would be just great to write once and sell on Windows on Linux on Mac on Playstation (don't know about XBox). Even without Sun's support, it would be great fot 3rd party to sell such engine/framework.

Re:If I was Sun CEO... (1)

nick-less (307628) | more than 8 years ago | (#14127956)

... I would give this guy research lab and resources to create java-based DirectX library. For game developers, it would be just great to write once and sell on Windows on Linux on Mac on Playstation (don't know about XBox). Even without Sun's support, it would be great fot 3rd party to sell such engine/framework.

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 to many developer heads out there...

Re:If I was Sun CEO... (5, Insightful)

TheRaven64 (641858) | more than 8 years ago | (#14128047)

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. What Sun really needs to do is market Java better as a game development platform. Add some code for loading models as OpenGL display lists, and a few other convenience methods and start plugging the platform better. Oh, and relax the licensing so I can run Java on my FreeBSD box without jumping through hoops.

Re:If I was Sun CEO... (2, Informative)

realinvalidname (529939) | more than 8 years ago | (#14128150)

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... (1, Interesting)

Anonymous Coward | more than 8 years ago | (#14128584)

Their website [bytonic.de] shows the framerate going up by about a third by switching from jogl to fastjogl.

Re:If I was Sun CEO... (2, Interesting)

should_be_linear (779431) | more than 8 years ago | (#14128436)

Still, there are things that needs to be addressed:
- 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 games and previews on a single place (money generator)

Media Framework (1)

MrCopilot (871878) | more than 8 years ago | (#14129027)

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.

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?

Yes, but does in run (2, Interesting)

Kj0n (245572) | more than 8 years ago | (#14127932)

in Firefox [slashdot.org] ?

Re:Yes, but does in run (0)

Anonymous Coward | more than 8 years ago | (#14128471)

Given that this is an application and not an applet, no.

Re:Yes, but does in run (1)

timeOday (582209) | more than 8 years ago | (#14128853)

I don't konw about firefox, but it doesn't do anything in Mozilla (just asks what to do with the jnlp file). So I put in "java", which just crashed the browser instantly. So after a little web searching apparently there's a "javaws" program? But blackdown-jdk-1.4.1 doesn't have any such thing. Sigh.

Re:Yes, but does in run (0)

Anonymous Coward | more than 8 years ago | (#14129020)

why the hell is this modded to 4?

quidditch

Get ready for some low FPS! (-1, Flamebait)

BestNicksRTaken (582194) | more than 8 years ago | (#14128001)

JAVA?!

Nice proof-of-concept and all, but my God that must run slow! Especially on a mobile phone ;-)

Re:Get ready for some low FPS! (0)

Anonymous Coward | more than 8 years ago | (#14128079)

lol, you're a tool!

Re:Get ready for some low FPS! (3, Interesting)

Anonymous Coward | more than 8 years ago | (#14128192)

Actually, it runs pretty quickly, although not quite as quickly as the original. Something like 85-90%. That's mostly because of the overhead of calling into the OpenGL libraries from Java, and because Quake 2 was written at a time when 3D games were fillrate limited, not CPU limited. Back then, the extra overhead of sending models one vertex at a time was essentially zero, because you were still sending the data faster than the graphics card could render it. With modern graphics cards, Quake 2 becomes CPU limited. The extra overhead of all those unnecessary OpenGL calls is even greater in Java than it is in C, so it ends up running slower.

It'd probably be better if the game were designed as a Java program, rather than a C program. The Java code is a fairly close port of the original C, so it does quite a few things which aren't optimal for a Java program.

works on a mac (2, Informative)

Anonymous Coward | more than 8 years ago | (#14128026)

Runs great on my 1.2 GHz G4 with 640 MB of RAM in OS X 10.4.3. Running the web start version downloads a file which starts up as a separate java program.

This is the coolest use of Java I've ever seen.

Quake 2 seminal? (3, Insightful)

Malc (1751) | more than 8 years ago | (#14128040)

No, I don't think so. Perhaps if you were born after 1985. Wolf 3D and Doom were the seminal games, or perhaps even Ultima Underworld, although nobody seems to remember that one. There were many games in the genre making it appear tired and unoriginal long before Quake 2 came along with a bit more of the same.

I've played Quake 2 than all the rest put together, but that doesn't make it seminal.

Re:Quake 2 seminal? (5, Insightful)

Antonymous Flower (848759) | more than 8 years ago | (#14128116)

Quake 2 was the first game designed for and supporting 3d acceleration out of the box. In this way it is certainly seminal. So much so, in fact, that 3d acceleration is no longer a part of the collective consumer consciousness :)

Re:Quake 2 seminal? (1)

Malc (1751) | more than 8 years ago | (#14128465)

I think what you've described, and the features described by others in their replies are just part of the natural evolution of the same concept. I was bored and fed-up with FPS games before Q2 came along. It sucked me back in for many more years. But that didn't make it seminal as a game. It was more of the same, just with better graphics and more refined controls.

The advances made at ID Software in computer graphics are impressive. Unfortunately a lot of games are afflicted by an obsession with the graphics and special effects, often leading to a product that is either unoriginal, or just not a good game. I put hits like Halo or Splinter Cell in to that category - with those my thought processes and actions aren't much different to games I was playing a decade ago. But I digress...

Re:Quake 2 seminal? (2, Interesting)

Chrontius (654879) | more than 8 years ago | (#14128198)

If you consider Quake2 as the first game to really make it while introducing proper mouselook to the masses, yes it is. Duke3D had it, but it was wonkky enough to make me seasick so it never got used. Quake2 gave you the ability to do much more with it than anything prior, even Quake, where it was not really needed and played by the best gamers I know with pure keyboard.

Re:Quake 2 seminal? (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14128353)

If you consider Quake2 as the first game to really make it while introducing proper mouselook to the masses, yes it is

s/Quake2/Marathon

T,FTFY

Re:Quake 2 seminal? (0)

Anonymous Coward | more than 8 years ago | (#14128948)

Marathon was never released to the masses.

Re:Quake Keyboarding (1)

Zan Lynx (87672) | more than 8 years ago | (#14129044)

In Quake 1 multiplayer, players who tried to play with the keyboard were called "targets." They were ridiculously easy to circle strafe and they couldn't dodge and aim at the same time.

Re:Quake 2 seminal? (1)

NardofDoom (821951) | more than 8 years ago | (#14128338)

Wolfenstein 3D and Doom aren't seminal. Marathon was seminal. It was the first one that actually had a story and puzzles to figure out. Wolfenstein and Doom aren't even in Marathon's league when it comes to gameplay.

Re:Quake 2 seminal? (1)

Generic Guy (678542) | more than 8 years ago | (#14128349)

Perhaps he meant Quake 2 was seminal towards id's use of more than brown and green in the color palette.

yes seminal (1)

Stu Charlton (1311) | more than 8 years ago | (#14128615)

Born in 77.. Quake GL was arguably the first eye-opener to 3D gaming, but Quake 2 was the first full experience with 3D cards. It holds a special place in my heart with Wolf 3D and Doom.

Re:Quake 2 seminal? (0)

Anonymous Coward | more than 8 years ago | (#14128939)

Actually those were only 2D games (Psuedo 3D) If you looked you can see that paths and ledges never ran over each other and it was laid out. Quake2 I think was the first to have a true 3D enviroment where paths and ledges crossed over each other and allowed more vertical movement. That was what made Quake 2 revolutionary.

Re:Quake 2 seminal? (0)

Anonymous Coward | more than 8 years ago | (#14129078)

I seem to recall another pure 3d game called "Quake".

Gem installer link (0)

Anonymous Coward | more than 8 years ago | (#14128055)

gem install quake ;-)

"...performance is similar to original C version" (-1, Troll)

helix_r (134185) | more than 8 years ago | (#14128071)


Ha, yeah, similar to the C version when comparing a 200 MHz Pentium II machine running the C version versus what? the java port running on a dual core P4 with 1 GB of RAM?

Re:"...performance is similar to original C versio (5, Informative)

steevc (54110) | more than 8 years ago | (#14128110)

Check out the benchmarks [bytonic.de] . Similar frame rates to the C version on the same hardware.

I've not tried it myself yet. Might get in trouble at work.

Re:"...performance is similar to original C versio (1)

timeOday (582209) | more than 8 years ago | (#14129011)

Wow, the guy criticising Java performance got modded "troll" even though the benchmarks you linked to support his assertion that the port doesn't run well on the hardware quake2 was designed for. On the K6 2 350, the native version gets 56 fps, while the java port got 21 or 31 fps with the two different java packages. Even on modern hardware the java version is 25% slower in 2 of 3 cases. And yet the java contingent still flames anybody for re-asserting the "old myth" of a java runtime penalty. Wow.

Re:"...performance is similar to original C versio (2, Interesting)

sprins (717461) | more than 8 years ago | (#14128360)

Don't underestimate the execution-speed of Java in a decent JVM. For example: My Java-based HTTPD outruns Apache HTTPD for static file serving.

Performance myth. (2, Informative)

adolfojp (730818) | more than 8 years ago | (#14128188)

Jvm apps can be faster than their compiled counterparts, specially when compared to those made with non specialized compilers like GCC. The "virtual machine = slow" myth is no longer true.

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 (3, Informative)

Anonymous Coward | more than 8 years ago | (#14128919)

Mustang (Java 6) which is under Open development (not quite open source license) already has wider support for clear type than Microsoft... So you are right its a bit late but people have invested work into that.
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 real option.

And the best part is... (0)

Anonymous Coward | more than 8 years ago | (#14128239)

...since it is written in Java, it's almost as fast as C++ !!

similar performance? (-1, Troll)

ZhuLien (150593) | more than 8 years ago | (#14128262)

"performance is similar to original C version" likely? to compare performance of two programs they MUST be run on identical hardware.

Re:similar performance? (0)

Anonymous Coward | more than 8 years ago | (#14128354)

RTFA. The benchmarks on the website do exactly that.

Comparisons with the .NET version of Quake2? (2, Interesting)

Numen (244707) | more than 8 years ago | (#14128324)

Can we get a comparison of the Java and .NET ports of this?

The .NET port can be found at http://www.vertigosoftware.com/Quake2.htm [vertigosoftware.com]

Re:Comparisons with the .NET version of Quake2? (0)

Anonymous Coward | more than 8 years ago | (#14128569)

The .NET version has (the advantage of?) unmanaged C++ code as well as managed C++, do a direct comparison may not be fair.

Re:Comparisons with the .NET version of Quake2? (1)

sbrown123 (229895) | more than 8 years ago | (#14128876)

Use of unmanaged C++ code inside the the .NET Quake engine makes a comparison a bit slippery. Sure, you could reason that since thats a feature of .NET, that it should count. But then again, they use it so much (C++) that it can barely be called .NET but rather a mere wrapper around a C++ engine.

How about apples to apples comparison? (0, Offtopic)

Anonymous Coward | more than 8 years ago | (#14128332)

The C codebase their comparing with was optimized for the 100MHz Pentium or thereabouts whereas the Java version is obviously optimized for modern hardware.
I'd be very interested in seing what FPS people can achieve with the C version, given some effort to optimize it for modern hardware and cache architectures.
For examples, can Java use SSE?

Re:How about apples to apples comparison? (0)

Anonymous Coward | more than 8 years ago | (#14128906)

For examples, can Java use SSE?

Yes. If a sequence of instructions maps to an SSE instruction, a Java JIT compiler can detect it just as a C compiler can.

Sometimes even better: since a JIT compiler knows the exact hardware the program is being run on, it can look whether the CPU supports SSE, SSE2, or neither, and optimize accordingly. When you buy a game CD it is compiled assuming some lowest common denominator machine.

With some programs you get an SSE and a non-SSE executable. Those are a hassle, and with more than one feature you get an exponential explosion of the number of executables.

The Java Version uses accelerated 3D (2, Interesting)

Anonymous Coward | more than 8 years ago | (#14128334)

Most users that played Quake2 did not have hardware with builtin 3D acceleration. So the folks at idsoftware improved their already outstanding software rasterizer for Quake2, which provided almost identical rasterizing performance on then-highend machines compared to modern 3d cards at that time.
If the Java version would do the same, then I would take my java performance prejudices and dump them.

Re:The Java Version uses accelerated 3D (0)

Anonymous Coward | more than 8 years ago | (#14129067)

If the Java version would do the same, then I would take my java performance prejudices and dump them.

I find it a curious approach to rely on prejudice rather than measurement in issues of preformance in the first place.

With performance, instead of guessing or prejudice, I generally do three things: measure, measure, measure. I don't find the performance problems in Java that the prejudice-based seem to find constantly. "i++" compiles to the "inc" instruction whether in Java or C.

Nice to see a full port, not just the game logic (2, Insightful)

FerretFrottage (714136) | more than 8 years ago | (#14128536)

Q2Java [planetquake.com] was a port of the Q2 game logic and used JNI IIRC to interface with the game engine since 3D graphics support and serious sound support for Java was still nascent if existing at all. I wonder how hard it will be to port my "grapple the head mod" over to this version?

well dont just stand there (0)

Anonymous Coward | more than 8 years ago | (#14128827)

...someone put up a server of demo version .....comarn you know you want to.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...