I want to teach game development to kids as part of a course (year-long) involving Ruby. Unfortunately it looks like the game development kits available in Ruby (even in the form of bindings) are pretty limited.

Is the best solution to go with JRuby and use jMonkeyEngine through the JVM? I'd love to have the kids play with creating very basic 3d games. Is there another better solution for Ruby or on the JVM through JRuby?

Average age of kids is probably 9 to 12, with some as young as 5 and as old as 18.

  • 2
    \$\begingroup\$ Why, in the name of all that is right and good, would you want to use Ruby to teach games? And that is an honest question, not just a jab (although it is partly a jab). I'd use something like Alice by Carnegie-Mellon University, that teaches Java in a visual environment. It provides an easy visually driven framework in which learners can grasp the elements of Java bit-by-bit. \$\endgroup\$ – Engineer Jan 25 '12 at 16:55
  • \$\begingroup\$ I'm teaching Ruby as a way to teach programming in general, not just for games. Having 3d graphics and game development in the curriculum is a bonus. I believe Ruby is better for this purpose than Alice or other visual programming environments for kids like Scratch. \$\endgroup\$ – at. Jan 25 '12 at 19:00
  • \$\begingroup\$ Even with Alice out of the picture (and it is a fantastic tool) I still wouldn't really recommend Ruby for games. What aspect in it do you favour, which you believe would benefit the learners over the choice of a more popular beginning language such as straight Java, ActionScript? \$\endgroup\$ – Engineer Jan 25 '12 at 19:10
  • 2
    \$\begingroup\$ How could a kid that doesn't even understand a Java(or C++ as java is based on it) syntax, understand multithreading, matrix math, 3D, networking, etc? I think that, if you use Java, it would be much much better than using ruby and "fixing" its problems with JRuby. If you want them to understand Java's things, teach Java to them. Or else, teach Ruby now, when they got ready, teach java and anything else you want to. \$\endgroup\$ – Gustavo Maciel Jan 26 '12 at 3:49
  • 1
    \$\begingroup\$ As it stands, this question really isn't fit for this site. There's a massive difference between what to use to teach a 5 year old programming and what to use to teach an 18 year old programming, and one year isn't at all enough time to even begin 3d programming starting from basic Ruby. Additionally, "which technology should I use" questions are off topic per the FAQ. You're welcome to join the chat and ask the question there, where can get a better idea of what you're actually doing. \$\endgroup\$ – thedaian Jan 26 '12 at 4:03

To answer your question, JRuby is probably going to be your most flexible option. An alternative is ruby-processing, but of course that's geared more toward constructing visualizations than efficient game systems.

Is 3D a requirement? A lot more options open up to you without it such as Rubygame, Chingu, Gosu, etc.

Now to play devil's advocate, why Ruby over another "beginner-friendly" language?

Python has pyglet. And Panda3D.

And how about Scala? It seems much more friendly to start with compared to Java. Hello World is just this:

object HelloWorld {
    def main(args: Array[String]) {
        println("Hello, world!")

Retains the structure and static typing of Java, but offers less verbose syntax and to option for more dynamic typing and, if you care to get into it, functional programming like you'd get with Ruby blocks. You obviously wouldn't want to throw lambdas around in your game loop, but shader programming has functional characteristics so the learning is still valuable and relevant.

And you can import Java libraries and thus use JMonkey, Slick2D, or whatever you need. It also has a REPL, which I think would be a hugely beneficial educational tool and reason to go with something like Python, Ruby, or Scala.

  • \$\begingroup\$ 3D is not a requirement, but a big plus. Unity3D also works with Python, so Python was definitely under consideration. But Python doesn't have an equivalent Rails framework (no Django isn't). And I personally like Ruby better. Finally, Ruby has JRuby to take advantage of Java libraries (maybe Python has something similar? But not as popular). \$\endgroup\$ – at. Jan 26 '12 at 0:49
  • \$\begingroup\$ Jython has been around for longer than JRuby, and matches up with CPython 2.5.2. And Django's a pretty good replacement for Rails if you're willing to relinquish clever block DSLs and lean only slightly more in the direction of configuration vs convention. There's also plenty of others to choose from: wiki.python.org/moin/WebFrameworks I like using Tornado ( tornadoweb.org ) as a Sinatra-like framework. The thing to remember about Unity, is that it's not actually Python--it's Boo, which was built before the DLR and so you find yourself coding more statically than proper Python. \$\endgroup\$ – michael.bartnett Jan 26 '12 at 1:16
  • \$\begingroup\$ @at. I also find Python to be more widely usable outside of web technology than Ruby. The number of Python bindings for C and C++ libraries is staggering. There's also NumPy/SciPy to consider if you ever want to take a dive into scientific computing. I like Ruby a lot. I love blocks and want to try to get a protoyping workflow going with Ruby. But it's hard to deny the diversity of Python libraries available. There's some benefit to that. \$\endgroup\$ – michael.bartnett Jan 26 '12 at 1:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.