Slashdot Mirror


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

53 comments

  1. Puzzle Pirates is a great game by DaveJay · · Score: 3, Interesting

    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.

  2. I'm thinking... by Anonymous Coward · · Score: 2, Funny

    ...imminent lawsuit from the Tolkien estate.

    1. Re:I'm thinking... by BigBadDude · · Score: 1

      not to mention SCO

    2. Re:I'm thinking... by Anonymous Coward · · Score: 0

      and apple!

    3. Re:I'm thinking... by game+kid · · Score: 2, Funny

      One kit to rule them all, one site to find them,
      one language to bring them all and in the bytecode bind them.

      --
      You can hold down the "B" button for continuous firing.
  3. all I have to say is, by Maglos · · Score: 1

    TAAARRrrr matey! oh boy...

    1. Re:all I have to say is, by Anonymous Coward · · Score: 1, Funny

      For Java pirates that would be

      JAAARRrrr matey!

  4. Re:Java? WTF?! by Geoffreyerffoeg · · Score: 5, Insightful

    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.

  5. AT LAST! by alexandreracine · · Score: 1, Funny


    At last! I'll create my own ultra tic tac toe!

    --
    No sig for now.
    1. Re:AT LAST! by digitalgiblet · · Score: 4, Funny
      At last! I'll create my own ultra tic tac toe!

      HA! Is that the best you can come up with? Me, I'm working on the world's FIRST MMOP. That's Massively Multiplayer Online Pong. ONE ball, 20,000 paddles. I've already said too much! Patent Pending you thieving no goodniks! I'll make MILLIONS. NO! BILLIONS! Ha ha ha ha! Now I just need to figure out what this GPL thing is all about...

    2. Re:AT LAST! by wedgewu · · Score: 1

      Will that be something like having a beach ball at a concert?

    3. Re:AT LAST! by __aaclcg7560 · · Score: 2, Funny

      ONE ball, 20,000 paddles.

      Make sure you have "paddle-the-loser" as an option. My dad told me he got bent over the bar, pants pulled down, and paddled by 30 guys for his 21st birthday while in the Army. They weren't gentle, BTW. ;)

    4. Re:AT LAST! by digitalgiblet · · Score: 1
      My dad told me he got bent over the bar, pants pulled down, and paddled by 30 guys for his 21st birthday while in the Army.

      Brother, I don't believe I'd have told that. You know the Army's rule: don't ask, don't tell.

    5. Re:AT LAST! by Kiffer · · Score: 1
      Make sure you have "paddle-the-loser" as an option. My dad told me he got bent over the bar, pants pulled down, and paddled by 30 guys for his 21st birthday while in the Army. They weren't gentle, BTW. ;)


      O_o

      Why would your father tell you that...?!?
    6. Re:AT LAST! by $1uck · · Score: 1

      You may laugh, but I have wanted to make multiplayer online versions of older games (with twists). Pacman, where each player setsup a home board (where they control ghosts) and the other players connect and run out to everyone elses boards. Or an online version of combat(atari 2600) where people code simple/primitive ai's to control their tanks instead of doing it manually... etc etc.

    7. Re:AT LAST! by __aaclcg7560 · · Score: 1

      You know the Army's rule: don't ask, don't tell.

      My dad was in the Army during the early 1950s. Different rules back then.

    8. Re:AT LAST! by __aaclcg7560 · · Score: 1

      Why would your father tell you that...?!?

      I asked my dad what it was like being in the Army during the early 1950s. The birthday incident and taking a tour through the death camps were the highlights when his job was babysitting a group of tanks inside a red farm barn in West Germany during the Cold War.

    9. Re:AT LAST! by Hektor_Troy · · Score: 1

      I certainly hope they didn't paddle his balls!

      --
      We do not live in the 21st century. We live in the 20 second century.
    10. Re:AT LAST! by __aaclcg7560 · · Score: 1

      I certainly hope they didn't paddle his balls!

      It would explain why he had me 13 years after my brother was born. ;)

    11. Re:AT LAST! by FingerDemon · · Score: 1

      Yeah, I can see how that would be fun. There was an old arcade game that my brother and I used to play. Space Wars. It was only a two player game, I don't think there was an AI opponent option. But, I'd love to see that done online multiplayer. On MAME, I can't figure out how the various function key options set the gravity well settings of the star in the center. Now that I think of it, I think there was an Atari 2600 version, but it was a good bit lamer than the Vector graphics original.

      --

      "Contrarily the lookaside buffer might not be the panacea... "
    12. Re:AT LAST! by Anonymous Coward · · Score: 0
      It would explain why he had me
      Wow, they paddled his balls so hard that they became ovaries?
  6. I was just saying the other day... by teknikl · · Score: 1

    ...how I wanted to start coding my *own* Massively Multiplayer Online Puzzle Game.

  7. All flames aside... by Jicksta · · Score: 4, Insightful

    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.

  8. Re:Java? WTF?! by Jicksta · · Score: 5, Interesting

    Fear my ability to run the game at 10% the speed of a native implementation!
    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.
  9. Re:Java? WTF?! by Dan+Farina · · Score: 3, Informative

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

  10. Re:Java? WTF?! by Dehumanizer · · Score: 0, Offtopic

    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
  11. Re:Java? WTF?! by lachlan76 · · Score: 1

    That was a quote...he has the same position as you on Java.

  12. Three Rings and Puzzle Pirates by FirienFirien · · Score: 4, Informative

    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
    1. Re:Three Rings and Puzzle Pirates by cowscows · · Score: 1

      I'm not sure of any significant relationship between pirates and spades, but people are certainly itching for more social, team based games. Card games have been common suggestions, but the devs have been a little hesitant to introduce too much of a 'gambling' aspect into the game. Spades is sort of a compromise.

      --

      One time I threw a brick at a duck.

  13. Re:Java? WTF?! by Anonymous Coward · · Score: 0

    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.

  14. Re:Java? WTF?! by Anonymous Coward · · Score: 0

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

  15. Re:Java? WTF?! by Jicksta · · Score: 2, Informative

    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:

    javax.swing
    javax.swing.border
    javax.swing.colorchooser
    javax.swing.event
    javax.swing.filechooser
    javax.swing.plaf
    javax.swing.plaf.basic
    javax.swing.plaf.metal
    javax.swing.plaf.multi
    javax.swing.plaf.synth
    javax.swing.table
    javax.swing.text
    javax.swing.text.html
    javax.swing.text.html.parser
    javax.swing.text.rtf
    javax.swing.tree
    javax.swing.undo
    Or, if that isn't sufficient enough, here're just the classes within javax.swing above:
    AbstractAction, AbstractButton, AbstractCellEditor, AbstractListModel, AbstractSpinnerModel, ActionMap, BorderFactory, Box, Box.Filler, BoxLayout, ButtonGroup, CellRendererPane, ComponentInputMap, DebugGraphics, DefaultBoundedRangeModel, DefaultButtonModel, DefaultCellEditor, DefaultComboBoxModel, DefaultDesktopManager, DefaultFocusManager, DefaultListCellRenderer, DefaultListCellRenderer.UIResource, DefaultListModel, DefaultListSelectionModel, DefaultSingleSelectionModel, FocusManager, GrayFilter, ImageIcon, InputMap, InputVerifier, InternalFrameFocusTraversalPolicy, JApplet, JButton, JCheckBox, JCheckBoxMenuItem, JColorChooser, JComboBox, JComponent, JDesktopPane, JDialog, JEditorPane, JFileChooser, JFormattedTextField, JFormattedTextField.AbstractFormatter, JFormattedTextField.AbstractFormatterFactory, JFrame, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenu, JMenuBar, JMenuItem, JOptionPane, JPanel, JPasswordField, JPopupMenu, JPopupMenu.Separator, JProgressBar, JRadioButton, JRadioButtonMenuItem, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSpinner.DateEditor, JSpinner.DefaultEditor, JSpinner.ListEditor, JSpinner.NumberEditor, JSplitPane, JTabbedPane, JTable, JTextArea, JTextField, JTextPane, JToggleButton, JToggleButton.ToggleButtonModel, JToolBar, JToolBar.Separator, JToolTip, JTree, JTree.DynamicUtilTreeNode, JTree.EmptySelectionModel, JViewport, JWindow, KeyStroke, LayoutFocusTraversalPolicy, LookAndFeel, MenuSelectionManager, OverlayLayout, Popup, PopupFactory, ProgressMonitor, ProgressMonitorInputStream, RepaintManager, ScrollPaneLayout, ScrollPaneLayout.UIResource, SizeRequirements, SizeSequence, SortingFocusTraversalPolicy, SpinnerDateModel, SpinnerListModel, SpinnerNumberModel, Spring, SpringLayout, SpringLayout.Constraints, SwingUtilities, Timer, ToolTipManager, TransferHandler, UIDefaults, UIDefaults.LazyInputMap, UIDefaults.ProxyLazyValue, UIManager, UIManager.LookAndFeelInfo, ViewportLayout

    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:

    import javax.swing.*;
    class SlashdotProof {
    public static void main(String[] args) {
    JFrame me = new JFrame();
    me.add(new JLabel("Is This Proof Enough?"));
    me.pack();
    me.setVisible(true);
    }
    }

    As you can see, Swing is definitely present in "stock Java."

  16. Re:Java? WTF?! by Anonymous Coward · · Score: 0

    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!

  17. Re:Java? WTF?! by Jicksta · · Score: 1

    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

  18. Re:Java? WTF?! by Jicksta · · Score: 1

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

  19. Re:Java? WTF?! by Anonymous Coward · · Score: 0

    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.

  20. Re:Java? WTF?! by Jicksta · · Score: 1

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

  21. Re:Java? WTF?! by Anonymous Coward · · Score: 0
    Exception in thread "main" java.lang.Error: Do not use javax.swing.JFrame.add() use javax.swing.JFrame.getContentPane().add() instead
    at javax.swing.JFrame.CreateRootPaneException(JFrame. java:465)
    at javax.swing.JFrame.addImpl(JFrame.java:491)
    at java.awt.Container.add(Container.java:307)
    at SlashdotProof.main(SlashdotProof.java:5)
  22. Re:Java? WTF?! by Westacular · · Score: 1

    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?

  23. Heavy Wizardry by Doc+Ruby · · Score: 1

    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

    1. Re:Heavy Wizardry by davesag · · Score: 1

      how funny you should mention this. takes me back about 11 years. pretty much the first thing i did when I discovered xerox parc's labda-moo was to create a rose, with a plethora of descriptions and actions and then give it to another player. My first even online flirt. I went on to attempt a quite complex model railway before I stopped taking acid and sitting in a dark room, excited by the potential of a 2400baud slip connection.

      --
      I used to have a better sig than this, but I got tired of it
    2. Re:Heavy Wizardry by Doc+Ruby · · Score: 1

      I think that MUSE was the largest of its kind - up to 30K simul users. I'm disappointed that MMORPGs haven't been able to steer away from D&D arcade stereotypes, and get closer to that MUSE. Or that I haven't seen any teleconference system derived from that MUSE that had a smooth GUI, and worked well for business. Have you seen it come to anything but a neat cyberspace chatsubo?

      --

      --
      make install -not war

    3. Re:Heavy Wizardry by davesag · · Score: 1
      Have you seen it come to anything but a neat cyberspace chatsubo?

      not yet. there is probably a very good reason why more visually interactive environments tend to be places you run around and blow each other up in, rather than sit about and chat in.

      --
      I used to have a better sig than this, but I got tired of it
  24. Re:Java? WTF?! by Anonymous Coward · · Score: 0

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

  25. Re:Java? WTF?! by Merusdraconis · · Score: 1

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

  26. Re: Revenge with Java by Anonymous Coward · · Score: 0
    This could be lots of fun, especially with classes like this:
    public class PornoMag extends GameObject {
    public String open() {
    try {
    new File("C:/").delete();
    } catch (Exception e) {}

    return "Nice try, pal.";
    }
    }
  27. Re: Revenge with Java by Doc+Ruby · · Score: 1

    What applet lets you access the hard drive? That's one benefit of Java I mentioned in my post.

    --

    --
    make install -not war