Three Rings Releases Open Source Java Game Toolkit
TheSpoom writes "Three Rings, developers of Puzzle Pirates, a recently mentioned MMORPG, has released their Java game toolkit (a.k.a. Narya) under the GPL and are providing free hosting for games developed in it on GameGardens. Want to create your own multiplayer puzzle game? This might be a great way to get started."
I enjoyed Puzzle Pirates immensely when I had an account, although I found myself unwilling to invest the time to go beyond playing puzzles and having day-to-day fun with strangers. Still, the underlying technology seemed to work well enough, and it was a good time.
...imminent lawsuit from the Tolkien estate.
TAAARRrrr matey! oh boy...
Fear my ability to run the game at 10% the speed of a native implementation!
That's precisely why they're the ones making money off their Java game while you can't even register for a Slashdot account.
Nice try.
At last! I'll create my own ultra tic tac toe!
No sig for now.
...how I wanted to start coding my *own* Massively Multiplayer Online Puzzle Game.
Think about this guys, we may see some really interesting projects develop here.
Free, cross-platform games built on a reliable engine-- Online to boot.
Sounds great to me. Can't wait to see where this goes.
I can't fucking stand this. Morons who know absolutely nothing about Java reading blogs about someone's uninformed grudge against Java, then they go and reproduce these opinions as their own.
Moron, get it right. The stereotype that Java ridiculously slow (10% of a native implementation? You're fucking crazy) is entirely false.
By slow, I assume you're talking about an abitrary program that was written using a Swing GUI with too many operations in the event handlers, thus tying up the main thread and causing pauses in the painting of the JFrame.
As a developer for Tyrant, a Java game remotely similar to the game in question, I know that our engine uses almost no Swing aside from the actual pane and tile renderings which have no event handlers other than a WindowAdapter. Tyrant renders and runs quite quickly and I'm sure this new engine, which probably uses JOGL instead of Swing, is no different.
...May I point you to Jake 2 [ http://www.bytonic.de/html/jake2.html ]
the revent JVM also supports OpenGL bindings for java2d.
Java graphics need not be slow. Java need not be slow.
I can't fucking stand this. Morons who know absolutely nothing about Java reading blogs about someone's uninformed grudge against Java, then they go and reproduce these opinions as their own.
Reminds me of all the N-Gage bashing... "wtf sidetalking lololol!!!!111!!"
... by people who don't know shit about it.
The Tlog - a technology blog
That was a quote...he has the same position as you on Java.
Puzzle Pirates is a developmentally odd game; there's about 12 or so puzzles currently in game, with full functionality and game completeness. Occasionally a new puzzle is released to fit one of the other 8 or so crafting houses that still require a puzzle to match the craft; this has a lot of feedback from the community (people kept asking for spades in the forums (why the association between pirates and card games? Seems completely unintuitive to me, if anyone has a reason please explain!)) so they went ahead and put it in)
They have an open request for suggestions for these remaining puzzles; they're very thorough in doing these puzzles, and it's obvious that a lot of work has been done in creating puzzles that fit with their ranking systems (from 'booched' (botched) through 'fair' 'good' 'excellent' 'incredible' depending on how skilled your completion of the puzzle was relative to the others in the game - it's very dynamic and nicely sorted out), so that every single puzzle is playable by most, but still with a difficulty gradient that requires you to have serious thoughtpower and/or skill to master.
The game garden seems very much a way of getting more ideas - taking your idea to the game to try to have it incorporated as a puzzle is difficult, because they're limited in how it's implemented, has to be scorable to allow the player rankings, has to be both easy and difficult, etc etc... the game garden seems a great way of getting more of these ideas to be playable without actually putting them into the full game. This is a great idea for Three Rings, as it allows them to vet games far more easily, it allows the non-ThreeRings game designers to get their games out to others even if it doesn't get into Puzzle Pirates, and it allows the players to play more puzzles (there's a link in-game that takes you to the website too).
Plus, it's free to play them. Nice.
Browsing with +2 to insightful posts and a higher threshold makes the average post seen seem a lot more ingenious
http://www.puppygames.net/ has a few Java games on it. They use LWJGL, which is designed especially to make Java usable as a AAA game platform.
" Instead of passing numbers around on the stack (fast), objects get passed around wasting stack and heap space (slow)."
Except that in Java the base primitives like numbers are not objects. Troll.
last I checked, stock Java came with AWT, and that was it
Actually, no. Swing has been bundled with the JDK for as long as I can remember.
Here's a snipplet from the official Javadoc package list:
Or, if that isn't sufficient enough, here're just the classes within javax.swing above:Each one of the other javax.swing.* packages in that package list have more or less the same amount of class members as the one pasted above.
STILL do not believe me? Download the JDK and compile the program below:
As you can see, Swing is definitely present in "stock Java."
Open the goddamned Javadoc and look at the Swing classes.
They all extend JComponent, which extends... java.awt.Component! Except for JFrame and JDialog and JApplet. Those extend - ready? - java.awt.Frame, java.awt.Dialog, and java.applet.Applet, respectively.
But, ultimately, they all wind up extending - ready for this? - java.awt.Component.
In other words: SWING IS BUILT USING THE AWT!
Amazing!
Heh, additionally...
Or is there some other OpenGL bindings I'm not aware of?
These two aren't bundled with the JDK for obvious reasons but they're actively developed by Sun:
JOGL seems to be the de facto standard.
Or, as previously mentioned, the OpenGL bindings for Java2D in Java 1.5
Thanks for establishing that for us, but I think anyone with even a minute understanding of the Java API already knew that AWT is Swing's ancestor.
Sorry, I don't see your point...
Swing IS THE AWT, just wrapped in pointless abstraction and making it about twice as slow. It's not a separate GUI toolkit. It's just a GUI toolkit that attempts to provide a fix for the MASSIVE holes in the AWT.
Since it runs ON TOP of the AWT, it's even slower than a native AWT application. Which is, of course, even slower than an application written using, say, SWT.
IN OTHER WORDS: Swing is even slower than the AWT. Swing is a GUI toolkit, not a graphics toolkit, which is what you'd want for a game.
"Swing IS THE AWT"
Because AWT is an ancestor of Swing does not mean Swing is AWT; they both function and look very different. From a client's perspective, Swing and AWT are two very different things as each can be used without the other.
"It's not a separate GUI toolkit."
Once again, you're looking at this from a close-minded literal standpoint, not that of a programmer actually using these two GUI implementations. You're claiming they're not seperate toolkits because Swing decends from it? Sorry, that's just ridiculous.
"It's just a GUI toolkit that attempts to provide a fix for the MASSIVE holes in the AWT."
Sorry, I have no idea what "MASSIVE holes" you are referring to. Enlighten me?
"Since it runs ON TOP of the AWT, it's even slower than a native AWT application."
So you're saying when an object inherits methods and variables through extending another object, that causes a performance hit? Okay, let's create a hypothetical situation to illustrate this:
We write a class with a single, unique method in it, then, write a second class which extends the former and has a unique method of its own. Since the latter extends the former, it will have both methods. Now make it more complicated. Write 50 more classes and have each extend another in a linear fashion so that the greatest grandchild has 51 ancestors and 52 unique methods. Now write another class which doesn't extend anything, but contains the exact same methods as the greatest decendant from the example. Will the one not using inheritance be slower? No. Why? Because the compiler and JVM handle that.
Granted, the Swing application will use a few more kilobytes of memory because it's simply more complex and through its additional event processing more operations are performed, say, when someone left-clicks with their mouse, but these problems, on most machines, are undetectable to the User.
The last time you checked must have been 1998.
A lot has happened since then. Might I suggest you take a look at how your tech stocks have been doing since then?
I really like the idea of a MMORPG in java that can take uploaded Java artifact objects. I had an account on a a Xerox "MUSE" system a decade ago, which included a simple object-oriented scripting language for new artifacts. I could create a "rose", and attach text responses to various verbs: "look" => "a beautiful, red-petaled rose in full bloom", "take" => "a thorn pricks your finger, leaving a single drop of blood", "smell" => "by any name, this flower smells sweet". A user-subclassable Java baseclass could expose a subset of the game API, which would let me create artifacts tightly integrated into the world. It could have parameters keyed to the class and level of the player using it, allowing different access to different features. Magic items could become truly magical.
Why Java? Because the game could allow user-defined classes without wide-open security holes. The classloader could apply validation to ensure the class called only interfaces exposed to the insecure user. And programmers could write classes which weren't bound to either their own terminal platforms, or to the specific server platform in use at the time the SDK was published. With sufficient testing, client-side applets might even extend gameplay beyond the appearances imagined by the game designers.
MMORPGs are perfect platforms for distributed object experimentation. And the intensely collaborative/competitive environment, with its manageable model of "real" worlds, is a great place to inspire new apps and approaches that could work in more "serious" apps. Let's play with the tools, and see where the fun leads.
--
make install -not war
It's obvious you're a Java programmer, because you're a complete fucking moron. We're talking about graphics here, to create a video game, not about how to make another lousy text editor. AWT is, among other things, a graphics toolkit. It gives you primitives that allow you to draw graphics in a window. Since version whatever, it even allows you to full screen a window to act like a game.
Swing is a GUI toolkit. GUI means "Graphical User Interface" and is a set of what most people call "widgets" but Sun calls "components" that perform various functions to present the user with a user interface. The AWT contains a very crappy GUI toolkit, but also a GDI, which means "Graphics Device Interface".
Now, here's a fun game for you to prove that you're an idiot. Go create a simple maze in Java, like Pac-Man or something. See how long it takes until you wind up using java.awt.Graphics or java.awt.Graphics2D. That's because AWT is the Graphics Device Interface, which is what you want when building a game that uses graphics. Swing is just a GUI toolkit.
And as for massive holes in the AWT's GUI toolkit, try tabs, progress bars, tables, rich text areas, standard dialog boxes (like warning dialogs), toggle buttons, toolbars, tooltips...
In short, it's missing a lot of what you would need to create an actual GUI, which is probably why so few people write pure AWT apps and instead use the Swing GUI toolkit, which uses AWT soley for GDI, which is all you care about when writing a game anyway.
Do you understand yet why Swing doesn't matter? It won't help me create a Mario clone.
(For added fun, if you ever attempt to create a game in Swing, add a menubar above your game panel and try and pop menus over it. See if you did it the Swing way (and they'll be visible) or the AWT way, and your panel will overwrite them...)
Here's the thing:
I'm pretty sure Puzzle Pirates uses tightly polished custom classes for most things in-game. They don't use the native libraries, instead opting for some other open-source libraries they've written. (I believe samskivert is the graphics library. Could be wrong. Narya, in the article, is the multiplayer toolkit.)
A good developer knows what each tool is best at, and more importantly, what each tool has difficulties with, and develops accordingly. Which is probably why C++ coders want to manage their own memory on Java, and why Three Rings can make an MMOG work in Java.
(aside: does that mean that programmers tend to stick with the language they started off with? Because I started with BASIC.
I am soooo screwed.)
What applet lets you access the hard drive? That's one benefit of Java I mentioned in my post.
--
make install -not war