[Final Decision] LWJGL or LIBGDX

Hahaha! ;D

All the nonsense above about stopping the discussion: Hi, welcome to Internet forums where things are discussed. If you don’t like the discussion, then don’t read or don’t post. Telling others not to post is rude.

@cylab: I agree with all your points there. I realise that I am lucky to start so young where I have plenty of free time and no need to make money while I learn. The tools you use should be relevant to your time and resources.

I did do lots of ‘frameworks’ to test and develop my skills between my publicly displayed projects. Lately however as I have less to learn, the amount of these games has dropped, and instead I have more time to work on bigger projects.

The funny thing is, my skill at making actual games has increased as my skill at graphics programming. It means that the graphics fits the game. Therefore I don’t have some game with overused cheap disgusting ‘high-tech’ effects and terrible gameplay.

The main thing that makes me want to know this:

Someone had to make LibGDX in the first place, and they knew how to program GFX with just LWJGL.
There has to be someone to write engines if/when LibGDX/OpenGL/Java is gone/useless.
If not me, then I can at least teach people who will be around when that happens.

Second reason:

Convert tutorials from C++ to Java+LWJGL.

@Nate: I don’t mind discussion. It’s the endless argument across many threads that I want to end. The discussion is good.

HeroesGraveDev - I was in your shoes not too long ago, as a firm user of “pure LWJGL” for over a year. Then I tried LibGDX, and realized how foolish I’ve been all this time. :slight_smile:

Using LWJGL doesn’t make you a better “tinkerer” or “graphics programmer.” In fact, I would argue the opposite. You are wasting your time with boilerplate and unnecessary debugging; and at the end of the day, your product won’t run on Android, iOS, or WebGL.

[quote]There has to be someone to write engines if/when LibGDX/OpenGL/Java is gone/useless.
If not me, then I can at least teach people who will be around when that happens.
[/quote]
I have learned more about writing large, scalable engines since I started working with LibGDX. This is because I am like you; I do not want to just use the tools at hand to make a game. I am more interested in graphics programming and engine/middleware development. So when I use LibGDX, I also inspect its source code. It becomes a great reference for programming with OpenGL (using proper standards and fixing small bugs per-platform) and also a good reference for building a large 3D and 2D game framework.

Hmmm, this is quite an interesting discussion.

As far as I’m concerned, LibGDX is built on top of LWJGL, so you should have access to all the boilerplate code. But, to see it devolve into OpenGL infighting…

I have to admit, from my experiences, LWJGL/Slick2D is a bit easier to set up than LibGDX. It took a bit more effort to set up LibGDX because it has a bit more requirements to gain access to the Android and WebGL platform. So, I have to say that it is a little bit tougher to set up, and to cut the newbies some slack in that regard.

As for which platform to use…

I think what needs to be realized is that there is no perfect platform for gaming. Just like we can’t argue why we are still programming in Java when C/C++ is a lot more powerful. Discussion about why LibGDX beats out LWJGL and Java2D is all useless. There are many comparisons out there to what is happening really, and all of these things cause very passionate discussion. Some examples are film cameras vs. digital cameras. Drawing art on the computer vs. drawing art by hand. Old video games vs. new video games. etc…

To be honest, everyone is going to have their opinion on the matter. The other point is, everyone is correct in their judgement.

So, here is the deal, all you new (and veteran) people out there.

It doesn’t matter.

You code for yourself. You create for yourself. You need to be able to enjoy whatever platform you are coding in. If you are having a hard time creating something in a platform (whether it be Java2D, LWJGL, JOGL, LibGDX, C, Python, C++)… do yourself a favor and work with something you will understand. Involving yourself in a holy war for the platform king is cute, but ultimately, it’s a huge waste of time. Let’s face the facts, it doesn’t get any gaming projects done if you aren’t having fun creating it.

Let people say what they want. Ultimately, YOU are the one making the gaming project, so YOU have to decide how best to do it. If you are struggling with some aspect in a platform so much that it gets frustrating, it is probably a good time to switch. But if you are learning new things about the platform you are in, that is really the only thing you’ll need to make yourself a better programmer, and hopefully a better game designer as well.

Games build with Lwjgl
Games build with LibGdx

i don’t want to be childish (even if i am ::slight_smile: ) but, let’s be honest here, for a newbie game developers, seeing what people has achived with the current language,engines,framework,library or any development tools, will give him a big push up and huge motivation to keep working with that tool, and just like what most of you said (except libGdx extremist fans :point: )
a noob developer should just stick with what ever he saw “easy” to work with, i don’t regret starting this topic cause i really was scared that i will spend months learning lwjgl without being able to finish ANY project, even a little one, so i wanted to ask, and now am sure that i will keep learning lwjgl for 2 simple reason :
1- i like the way i pronounce “lwjgl” ::slight_smile:
2- it has a very good wiki to start with

one last thing,
@libGdx team,
setting up libGdx is not the only problem (i didn’t get any error with the Desktop version),but the thing is that there isn’t enough resources to learn from, even the forum is not very active.
so my suggestion to one of you (or all of you) why you don’t make a better tutorials for noobs, ignore the Android and WebGl, just a getting started tutorial for desktop developing and finish it with a simple game example, NOT PONG !!, anyone who learn how to draw, and use input will know how to create a pong, ithink a SpaceInvader is the most educative example for a game development.

You linked unofficial wiki that have been updated (Apr 19, 2012 by) and you are comparing mobile to pc games. Fair comparision IMO.

Actually, LibGDX has several backends and one of them is based on LWJGL.

oh…
i thought that’s the official, i didn’t mean any cheating here,
is this the official one ??

My personal biggest hassle with LibGDX(The second biggest reason I wont be using it, at least for now), is that it assumes that I’ll be developing to multiple platforms at once.

I don’t give a shit about mobile platforms(If I did, I’d learn to code in their native language, e.g. Objective-C for iPhone/iPad(Yes, I know, Android uses Java, but I don’t use Android and don’t care much for their broken market and fractured platforms)) and I don’t care about WebGL either, so I rather dislike that the default setup of LibGDX forces me to have several projects in Eclipse, just to make a simple desktop game.

I managed to set up LWJGL, with javadoc/source code attached, far far faster than I figured out how to setup a LibGDX project.

But like I said, I’ll eventually try out LibGDX, but until then I’ll be “wasting” my own time.

Personally I think the best answer to this question is to just link to the sites, and let the person asking the question do some reading, instead of trying to bias them towards something. And when they’ve reached a decision, help them with their questions about whatever platform they chose, instead of saying “omg omg, x is so much better than y!!one11! lyk serisly!”

Repeating what’ve been said already: Choose whatever you find the most easy, and move on when/if it becomes necessary. :slight_smile:

LibGDX doesn’t force you to do anything… It is dead simple to set up a project for desktop only.

  1. Download LibGDX (stable or nightly, doesn’t matter)
  2. Open Eclipse
  3. Create a Java Project
  4. Add libs: gdx.jar, gdx-natives.jar, gdx-backend-lwjgl.jar, gdx-backend-lwjgl-natives.jar … attach the sources if you want.
  5. Code

Well, couldn’t find that anywhere when I tried to set it up. I ended up using the GUI tool to set up my projects, and that creates at least 2 projects.

But hey, like I said, I’ll give LibGDX another swirl some time, and there’s a far bigger chance that I’ll do it, now that I know that I’m not forced to have multiple projects for 1 game. :slight_smile:

Like I said before, people focused on LWJGL may not even know of other libraries like libgdx, so we should inform them of those other options and the benefits of them. Maybe they do want something more high-level so they switch to libgdx, which they didn’t even know about before. If they still want low-level, than fine, go ahead with lwjgl.

Also…libgdx is even easier to setup than you guys mentioned…just use the gdx-setup-ui.jar. Graphical interface, can update libgdx, can include tweenengine or the physics body editor loader thingie (I forget what the official name is).

@Regenuluz
You are forced to have multiple projects, sorry :stuck_out_tongue:
At least the “game” and “game-desktop” I think. idk if the android project is required.

thought the jogl one was deprecated? Are there ones other than lwjgl and jogl?

Nope. As nexsoftware pointed out, doing a desktop only project is just a normal java project with the gdx jars in the classpath. The ui and separated game project stuff is just if you target multiple platforms…

Oh, so you just put both the lwjgl desktop launcher and the code in the same project, huh. Stupid me.

The backend based on JOGL 1 is deprecated, the backend based on JOGL 2.0 works quite well.

Yes. Be sure to also see the 640+ libgdx games on the showcase forum.

Here is runnable code for drawing with SpriteBatch. See how the main method is in the same class? You can put this code in a single project that depends on the LWJGL backend and run it.

For the desktop there are LWJGL, JOGL, GLFW, and GWT backends.

Using GDX with maven is simple too: https://gist.github.com/chuckadams/5518074

With this POM, there’s no need to set java.library.path while developing, the natives plugin takes care of it. As for your final product, the appassembler plugin used in that pom will get you a launcher script but you’d probably want to switch to something like launch4j for a real release.

@alaslipknot We power about 3.5% of all installed Android apps. 2% of the top apps. http://www.appbrain.com/stats/libraries/details/libgdx/libgdx We are on par with Unity on that platform. Even Google uses libgdx for their augmented reality game Ingress. We also have a few games on steam, and had strong usage in the last ludum dare. For a Java game dev library, that’s pretty neat, and much more than i ever expected.

On the topic: i’m of the opinion that you should know what you do. There’s nothing wrong with learning OpenGL. Whether you do that with LWJGL, JOGL, libgdx (You can accesss OpenGL ES 1/2 in a cross-platform manner) doesn’t matter. davedes has a very nice lightweight lib for LWJGL that you can use if libgdx is to much of a hassle to setup. You’ll be limited to the desktop, and will miss more advanced features, but that’s enough to play around with rendering techniques.

Concerning the setup hassles: i hear you. That’s what you get if you try to deploy to more than just the desktop. I personally do not thing that the burden is that big, order of installation is JDK, Eclipse, Android SDK/ADT, GWT, and optionally Xamarin.iOS. Not a lot we can do about that. For those who want to only develop for the desktop, that’s easy as well. Don’t use the setup ui, create a new project and link to gdx.jar, gdx-natives.jar, gdx-backend-lwjgl.jar and gdx-backend-lwjgl.jar. Add a second source folder that contains your assets and off you go.

TL;DR: learning low-level stuff is awesome and will make you a better person. What tech you chose does not matter a single bit.

@badlogicgames
i didn’t mean any offense when i linked the projects build using lwjgl and others using libGdx, that was just the 1st result i found which also give me the 1st impression, however, am sorry if i offended you or decreased libGdx’s value .