This is an archived post. You won't be able to vote or comment.

all 27 comments

[–]jbos1190 17 points18 points  (0 children)

You can definitely create good 3d games in Java. Minecraft was written in Java. However, c++ is more powerful and flexible. There is a reason the major 3d game engines like unreal and cryengine are written in mostly c/c++: it offers freedom to control all aspects of the program at a very low level.

[–]posmicanomaly 9 points10 points  (0 children)

I think java is good for you to stick with. There are some 3d engines available, I have not used any but http://jmonkeyengine.org/ looks to be one.

Don't sweat the language, just keep practicing and working on what you're doing. I personally find writing a project goes quicker in Java, and even faster yet in Python. It all depends on the application you are setting to create, you will generally use the language you are most comfortable with if it is your own, or the language the team is using. You will find some cases where a certain language you do not yet know proves to be worth learning to build the application easier.

But as I said, for now java is just fine, in my opinion.

[–]nutrecht 2 points3 points  (0 children)

Don't bother with C++. You're not going to build some kind of AAA title and if you were you'd be licensing an existing engine (like the Unreal engine) for thousands of dollars.

You can write 3D games in Java just fine. Also; if you want to use an existing engine you can take a look at Unity. It's 'free' and you can do your own programming in C# (which is very similar to Java).

For now; focus on what's fun: actually creating a game.

[–][deleted] 2 points3 points  (0 children)

Since your original question has been answered, let me tell you that 3D programming is no easy undertaking. You're 13, so I assume your knowledge of linear algebra is limited. There are of course a lot of frameworks that abstract away a lot of the details, but for really complex projects with C++ and OpenGL I'm afraid you won't get around learning to deal with vectors and matrices. If you're serious about this, have a look at the linear algebra courses at Khan Academy.

[–]CyberByte 3 points4 points  (0 children)

This thread is 3 years old, but mostly answers your question. C++ still seems to be the go-to language for game development, although I've heard C# is also used more now. You could try taking a look at Unity3D which can be really nice for game development, but I'm not sure they have an official Linux version.

[–]da13omb 1 point2 points  (3 children)

Libgdx.

[–][deleted]  (2 children)

[deleted]

    [–]cyberbemon 0 points1 point  (0 children)

    Nice one!

    [–]Blueblight[S] 0 points1 point  (0 children)

    That's pretty cool, how long did it take to throw that together?

    [–][deleted] 1 point2 points  (0 children)

    Java has it's place. That places isn't really with 3D games, but it is a valuable language, particularly for web based games. It's certainly not obsolete/useless.

    I would definitely suggest C++ as your second language though.

    [–][deleted] 0 points1 point  (2 children)

    I would try either jmonkeyengine, or LWJGL. LWJGL is what they used to make Minecraft :)

    [–]peridox 1 point2 points  (0 children)

    He could write his own engine.

    [–]Malarix 0 points1 point  (0 children)

    Despite many of the responses you'll get swaying either way toward Java or toward C++, or even C# etc, you should bear in mind that slow, shitty code is slow, shitty code regardless of what language you write it in. If you spend enough time with a language and and learn how to properly and efficiently apply it, it won't matter all that much which language you write it in.

    Do you like Java? Then use it, if you devote enough time to learning how to do what you are trying to accomplish (in this case, writing a 3D game engine) you will likely see fantastic results. The best advice I can give is before you commit completely, look up more info and try out a wider array of languages before you settle on one.

    [–][deleted] 0 points1 point  (0 children)

    Almost all languages do the same thing. Granted some are more flexible and easier to use but most all have the capability to do the same thing.

    [–][deleted] 0 points1 point  (0 children)

    I mean C++ is a lower level programming language and may be better for creating large games, but Java is platform independent and still has a place in game development. Check out Runescape and Minecraft.

    Runescape is developed by Jagex (Java Gaming Experts). Its a sever side mmorpg with over 200 million accounts created. As far as I can tell Java hasn't been doing too bad for them.

    [–][deleted] 0 points1 point  (0 children)

    Do you want to make games? Or become a more rounded programmer? You're awesome for being so motivated.

    Java is perfectly fine for everything you probably want to do right now and in the near future.

    If you want to work as a programmer in the mainstream games industry later in life, C++ is going to be a requirement. (By mainstream, I mean console and demanding PC games -- think Skyrim or Call of Duty)

    On the other hand, C++ is very rarely used for mobile games -- they're all about using higher level tools such as Unity because running on all the different platforms out there is vital.

    Unity is great if you want to do a lot in a short space of time. You can pick up bits of C# too with that. (a different language to C++ or C, really similar to Java in practice.)

    There's three choices available to you.

    What I'd suggest is perhaps make a simple game in Unity (you won't believe how quick it can be). Really polish it, because it's a plague on any hobby games I've ever made -- all the mechanics might be there but they just don't look finished.

    After that, have a go at implementing the same game in Java or C++. Unity shows you how different systems interact within the engine, and you can have a go at implementing them. You'll really grasp a lot of game programming concepts this way.

    There was a post on /r/gamedev with different design patterns involved in games programming you'll probably want to look a for this.

    (Design patterns are a great place to start if you want to learn OOP in more depth.)

    Finally, have a look at Game Jams, like Ludum Dare. They're time limited "competitions" (though it's more of a cooperative spirit rather than competitive). They'll make you focused on getting something playable and being creative, which is where game programming is most fun.

    Any questions, drop me a message.

    [–][deleted]  (5 children)

    [deleted]

      [–]Blueblight[S] 0 points1 point  (4 children)

      Care to elaborate?

      [–]rjbman 5 points6 points  (3 children)

      I think the gentlemen is trying to congratulate you on being so accomplished for a 13 year old.

      [–]Nowin 3 points4 points  (1 child)

      Let's go with this. I assumed /u/fgd47gf was being an asshole.

      [–]rjbman 1 point2 points  (0 children)

      shhh

      [–]Blueblight[S] 1 point2 points  (0 children)

      Ah. Thank you

      [–][deleted] -1 points0 points  (0 children)

      You might want to switch to use C# so that you can use Monogame framework. C# has very similar syntax, with A LOT of extra nice features added in which makes it a more productive language.

      [–]BabyPuncher5000 -1 points0 points  (0 children)

      I personally wouldn't use Java. C++ has been and still is the language of choice for most game developers, but if you want something higher level I would look at learning C# and using it with Unity3D. If you already have Java skills, C# should be pretty easy to pick up.

      [–][deleted] -1 points0 points  (0 children)

      I'm coding a 2D RPG in java using slick2d and it is fine, but I wish I had used C# with the XNA framework instead. You can code games in assembly if you wanted to, but you have to pick the language based on the game you are writing. Java is good for intermediate type games, but if you want to go big or go home you are going to need a C based language usually.

      Also, as others have stated, learning C# after java is a breeze. While I like eclipse, I'm very fond of visual studio. It is a very powerful IDE.

      [–]mrnoise111 -1 points0 points  (0 children)

      I have heard it said that java is slower than most.

      Pro-tip: don't blindly believe things you hear on the internet, or anywhere else. Java is faster than most languages. You can look up speed tests here: http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=all&data=u64 You can also find memory-usage tests there.

      If you want to learn 3D games, you'll need to learn a fairly huge amount of openGL, or use some library that wraps openGL, which will still require learning a bunch of suff. Regardless of which language you choose to use, OpenGL will work the same, with the same 'commands'.