Java-Gaming at Minecon

Hey

At Minecon this year (i.e. in roughly 3 weeks), I will hold a presentation called “Getting Started with Game Development”. This presentation will mainly target really young newbies that have nearly no programming knowledge, and I will bring up several ways of getting started. Since it’s at Minecon, most listeners will be Minecraft fans and will be most interested in hearing about creating games in Java, and the key point I want to tell people is to learn how to find information (I can’t teach anyone programming in 60 minutes anyway).

So, I want to tell people about this forum. My question then is, is there any specific tips or guidelines you want me to share with the audience before I send them here? 8)

// jeb_

It’s great that you are going to give a presentation. Congrats. If they are absolute newbies, I think you can point some tutorials of LWJGL and LibGdx. But be sure to say, “if you want to just develop games, LibGdx suits you, but if you want to find the underlying mechanics and how everything is done, prefer LWJGL.”

Tja Jeb,

The spam protection already takes care of the ones coming here only to ask what eclipse is, but it would be nice to mention that they should be willing to try things out for themselves as we’re not here to spoonfeed people :slight_smile:

Mike

  • start with something easy, possibly text-only game while you learn language
  • experience comes with time - start with making simple text games, then simple graphical games like Pong or Pacman clone before you start working on something harder
  • make many experiments and small side-projects, not only directly related to games
  • TODO lists. These are very helpful - you have more motivation, always know what to do and avoid potential design flaws.
  • KryoNet library is very good both for networking and saving game state
  • don’t use Java2d for games

Wow this’ll be a great opportunity for people and for jgo. get ready for some more activity 8D

Re Mac70:

Can you explain why I shouldn’t tell them to use Java2D? Because that was what I had planned to do, and in that case maybe I shouldn’t send them here… don’t want to send them into forum fights the first thing I do :wink:

I mean, this is made with Java2D, http://www.youtube.com/watch?v=8Wstk32elv8 so to me it feels like a good way to begin.

@jeb_
I too thought the same way in the beginning, why not Java2D. But I soon found the answer when I tested a Java2D game on all the major platforms, it’s pretty much slow on mac and linux.

Ah ok, thanks. I’ll keep this in mind then.

For the very, very first game it is okay just to get a hang of things like methods and classes and so on (i.e. a square that moves when you press a key). But for anything more than that you should stay clear of it unless you have a really good reason as it is really slow on some platforms :slight_smile:

Mike

I just have to ask, are you the jeb_? :stuck_out_tongue:

Anyways, as you said, there isn’t much you could learn a bunch of people in 60 minutes (in relative to programming), so I’ll just bring up some places I went for guidance.

I started with TheCodingUniverse. He has a well done series and gets you going with the basics of LWJGL, OpenGL and simple game design. The thing I don’t completely like about his tutorials is the use of deprecated functionality, but he’ll get you started.

After getting on JGO and the #lwjgl IRC I got an advice to start on this online book. It’s very good for learning modern OpenGL and ra4king has ported the C++ code here. :slight_smile: After that book I finally started to manage to use OpenGL by myself and understand how things were put together. Later, I ran into these tutorials. They’re also really great and teaches how to build a 3D engine with the core profile from scratch. :slight_smile:

Those ways are more the hardcore way though. There is going to be for sure great differences (in relative to experience) in your audience and I would recommend these paths to people who want more control and want to learn the OpenGL API.

For people with no or little programming experience it’s really important to keep things simple and to get things up and running quick so that they don’t loose their interest. It’s also important to show that they can edit the code easily and play with it’s functionality. Therefore, something like LibGDX is great (On it’s documentation page it’s lots of info and a video to get you up and running with a project). It’s pretty straight forward and on the same line, really powerful.

And at last I would strongly recommend your audience to learn the language before the game making; Not the whole Java API, but at least the core language. In that way they’ll save so much time later. For that purpose I will recommend Derek Banas, he’s got some great tutorials and a very large library of them.

Good luck!

I don’t know if this necessarily fits, but I’ve noticed one of the most common reoccurring beginner questions I’ve seen here is:
“should I use LWJGL, LibGdx or JME”, which really isn’t an apples to apples comparison.

Maybe you could provide a general explanation about the the differences between bindings/OpenGL vs engines. This would hopefully refine their information search, depending on which direction they choose; and even if they choose a different language.
I get the distinct impression a lot of people get confused between the two and ultimately end up blindly selecting one of the options.

I have to disagree about Java2D. While it is by no means an optimal platform for any serious game develop, it is definitely adequate for learning development concepts. For example, considering it’s not a game library, that forces the user to writet their own game loop, which is important to learn. Besides that, Java2D is easy to use.

Again, it shouldn’t be used for serious big projects, but for learning it is pretty suitable. Many people on here use it, I’ve noticed, so there wouldn’t be too much flaming. Mainly the suggestion here and there that they should consider game libraries.

Welcome to JGO :slight_smile:

Java2D is great for basic games, just not for massive projects, obviously.
Noting a lot of us make games with retro graphics and don’t require a ton of high-fidelity stuff, it works perfectly fine.

It’s perfect if you do it right. Here’s a little physics demo I made a while back.

Best of luck!

  • Jev. (Similar name, eh?)

Just chiming in here. Libgdx is definitelynot for absolute beginners. Java2D is fine, a better option may be Slick2D (though that’s pretty much dead) or flixel-gdx, which is the Flash Flixel API on top of libgdx, super easy, possibly even more so than slick.

i think the hardest part will be recommending a development environment. Eclipse/IntelliJ/Netbeans are really daunting for beginners. I believe it’s a good idea to research the easiest way for newbies to jumpstart themselves in terms of setting up and working with the dev environment. a simple beginner friendly guide would be nice.

best of luck with your efforts. awesome that you guys want to bring more folks into the game dev circle!

How about starting them off with Java by helping them make simple Minecraft mods? :point:

That’s a great idea, though the Minecraft source code is obfuscated.

I’d probably make a demo project, maybe a really basic top-down game, and then at the panel you can teach them how to add the core functionality, like shooting, menus, etc.

@kpars: There’s Minecraft Coder Pack (MCP).

@jeb: The best thing you could teach them is to use Google first when trying to solve problems.

Yes, this will probably be the number one thing I will nag about :smiley:

Thanks for the input! It definitely makes sense to tell people to learn how to code first, and to do text-based apps, and so on. The problem is that it’s not what people want to hear. When I started out programming (some 22 years ago), I wasn’t interested in doing text adventures. What I did instead was to modify the QBASIC examples (Nibbles and Gorillas) to do weird stuff. Obviously I had no idea what I was doing, but I enjoyed it!

IMO the best way to learn is to toy around, which is (I assume) how everyone learns.

I still think the best way to go is to make a demo project beforehand and then explain all of its functions at the panel, and possibly add something or two so they can actually use what they’ve learned. The kiddies will really want something visual, which is hard to pull off if they are just starting out. Though this is in Java, and Java requires quite a bit of boilerplate code for a project like that, boilerplate code that will take some time to explain.

Though you could still pull off a text adventure well. I’ve not played that many, so I don’t know what you’d do about the gameplay.
I’m assuming you’ll be focusing on programming 95% of the time, so as long as you and the viewers have fun with it, everything should be perfectly cool :slight_smile:

For resources, I’d highly suggest telling people about the importance of Youtube, Google, and StackOverflow, and you’ll have to talk about libraries a bit, as well as some IDEs, though Eclipse will probably be the default for most people.

Will you be the only one at it, or will a few other people be helping out?

I’m glad you’re doing something like this. Here are my tips:

Maybe you should tell them that they will have to exercise patience quite a bit. Games don’t just spring up from the ground in a day or two. I think this was one of my biggest problems with game development.

Also, you should probably tell them that copying and pasting code doesn’t help you learn things. A lot of what you learn comes from translating a problem into code and understanding how that code works.

One last thing that is important to tell them. I expect they will all try/want to create a game like Minecraft. Tell them to start out small and be proud of little things. Slowly working your way into more complicated things will always bring better quality and quantity of games.

I hope that your words inspire many people, especially kids. They are the future of the gaming industry.

Best of luck,
Longarmx