LWJGL or Unity, UDK, Cryengine

So I want to begin with 3D soon to expand my horizons in game dev. I was wondering what would be more worth my time. Should I use a do everything engine like unity or dedicate myself to LWJGL for a few years to learn ultra awesome 3D skillz?

What would be the most beneficial to my career and sanity :stuck_out_tongue: ?

unity for a start,

lwjgl once you got annoyed enough,

udk if your head explodes when you try to code unreal features.

No point in asking this question to people on the internet.
All you will get is useless opinions, and if you’re unlucky enough, a flame war.

Whatever path you take you’re going to go through a lot of frustration at someones code, whether it’s yours or someone elses.

You want my opinion? If you have to ask the question you should stick with 2D. :point:

I also think 2D is the way to go for now. When you get into 3d, everything becomes exponentially more difficult. You need to create and render 3d models, it’s harder to create the user’s point of view, there are camera rotations, collision requires more calculation, etc.

CopyableCougar4

perhaps I’ll just learn LWJGL to make really pretty 2D games, and then when I feel confident I could swap to 3D.

Hi

Do you really plan to become a professional game programmer?

You can have a look at JogAmp’s Ardor3D Continuation but maybe you should get a lot more experience with 2D before starting to learn 3D. Actually, I agree with HeroesGraveDev’s conclusion.

Why does everyone think they need to ā€˜upgrade’ to 3D? There are more than many pro game developers who only develop 2D games.

The other thing is this belief that 3D is exponentially more difficult than 2D. Technology wise most of this stuff is done for you now - the hard bit is game design and expectation management. That’s exactly the same in 3D and 2D.

Cheers,

Kev

And one could argue that it’s easier to create OK looking 3D content than 2D. 2D is actually quite difficult to do well.

In my case, it’s a matter of taste, I don’t mind what professional game developers do. I have already lost any hope to make a leaving from games.

Actually, I should have been more accurate. I assume that when a developer is already able to make a complete game in 2D, he already has some knowledge of inputs, images, windowing, some maths, … Then, learning to create 3D games is easier in this case than when you don’t know those notions, the maths are a bit harder, culling might be more important, I still find it more difficult to create decent 3D models than 2D sprites. 3D is exponentially more difficult than 2D when you know 2D very superficially.

As this question closely matches our recent professional experiences I thought I’d add my 2p…

We started with LWJGL (well, obviously…) and there weren’t any other libraries about, at all, so we were forced to do our own things, and it was at around that point we realised that 2D was much much easier to ā€œdoā€ than 3D for all sorts of reasons.

Most of those reasons are actually still valid in Java, and that’s why for our first foray into 3D we went with Unity. Unity makes some of the things that we traditionally have a problem with much easier. Those things are what games developers elististically call the ā€œcontent pipelineā€ (which to you and me means getting the things artists make to appear in the game), the issue of deployment to consoles, and of course the whole 3D engine thing which is a ton of work to do yourself.

What it hasn’t made any easier is making a game. In fact making a game is kinda harder in Unity. Firstly because it’s C# which despite everyone wanting to sound reasonable and unbiased and level headed and not at all fanboyish… is not nearly so well thought out as Java in so many little ways. Secondly because although the 3D engine and asset pipeline is largely sorted for you, you have to do about 10x more work to actually fill it with anything worthwhile. So you’ve simply traded a bunch of problems in one area, and got a whole bunch of new problems in another area. But it’s worse than that… it genuinely does take 3x as long to do anything in 3D as 2D. You can’t just make a coffee table in an office. No, you need to have maybe a randomly placed mug on the table. And a mug isn’t just an 8x8 pixel sprite any more, it’s a whole 3D model. The whole move towards further realism within the brain that 3D brings means you need exponentially more detail in order not to break the illusion. Then you discover that stuff such as textures which look OK in 2D suddenly need rather a lot more detail in 3D for when they get viewed closer up. And probably normal maps as well. Oh and bog standard Unity is great for making bog standard graphics and effects but as soon as you wander from the beaten path it gets just as hairy as any other crazy programming stuff. You need to learn Unity’s shader language. It goes on.

So that’s my counter-argument to Kev there :slight_smile: It’s not a belief, it’s the reality! It really does take much, much longer to make proper 3D games than 2D games.

That said… 2D is hard too. You need to get quite clever with style to make it visually appealing. But at least you don’t have to rely quite so massively on the generation of content.

Cas :slight_smile:

We could argue how you believe using LWJGL directly leads to prettier games, but maybe thats offtopic…

@Cas

This thread isn’t really the place for it, but at some point I would like to hear your opinions on how/where C# is less thought out than Java, as in my experience the general consensus is the opposite. And now that the .NET core is being open sourced, C# is looking better than ever, so I’m curious as to what ā€œthe catchā€ might be.

@BurntPizza: You have to manually install the Ask! Toolbar.

Actually maybe it is somewhat on topic because if you’re going to use anything other than Java you probably want to know what you’re getting in to, right? :slight_smile:

I’m not really sure I am qualified to really take apart the design of C# and its class libraries compared to Java but there were a whole bunch of things that irritated me right from the start that some people probably think are awesome features. There were a few rather nice things in C# which I thought were worthy of pinching and putting in Java but Java does move at a glacial pace and this is perhaps no bad thing… because my mind moves at a glacial pace.

The thing that bothered me the most was the general feeling of incompleteness of design or implementation in the class libraries (eg. collections). The Java collections libraries are really quite brilliant bits of design and implementation by some genuinely clever computer scientists. The C# stuff is a little… ā€œyeah! Well we can have Maps too! Except we’re gonna call them Dictionary!ā€ and then forgetting to really think about some of the requirements. Mostly where it really falls down though, surprisingly, is documentation.

Apparently C#/Mono still isn’t a patch on Java for raw speed either but in the context of this discussion it’s probably not relevant.

Cas :slight_smile:

Most of the client-side API won’t be open sourced as far as I know.

You can install OpenJDK even under Windows, there is no crappy tool bar bundled with it. I use some unofficial builds until some JogAmp maintainers provide them.

I agree with princec about Mono and it’s still a bit like a Swiss cheese with tons of holes compared to the (still proprietary) Microsoft .NET implementation.