• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
zjr568

Java or learn c++

28 posts in this topic

I'd say learn to make a game in Java first so you get the hang of programming, and then consider switching. C++ is not a beginner friendly language to learn. It's like someone tried to make an octopus by nailing 4 legs onto a greyhound ;)

0

Share this post


Link to post
Share on other sites

c++ is much better for making games than java

 

People argue that java is a little slower than C++, which may be true in numbers, but honestly it doesn't hinder its ability to make great games.

C++ is more difficult and complex than java and since you have already been learning java, you will prevent many headaches by sticking with java.

 

I won't tell you to not learn C++, it will certainly prove to be an excellent tool, but don't leave java behind just because someone said c++ was better.

 

Edit: I take back what I said about slapping in the face, but honestly people that think this are stuck in the days when java wasn't what it is today.

Edited by minibutmany
2

Share this post


Link to post
Share on other sites

Thanks for all the answers everyone. Also I see what you mean Cornstalks. I am not doing anything complex enough right now for the language to affect it. My main thought was why learn java if it is obsolete to something else I could learn. Almost like why waste my time with it but like you said I will use java for other things in life so I might as well stay with it. Thanks again for everyone's input. Oh and one last thing. It seems like c++ is more widely used in game development than java. If this is true wouldn't there be more a lot more information online about creating games with it.

0

Share this post


Link to post
Share on other sites

complete control over your code,

 

Just curious, but what exactly in real world terms, do you mean by this.

 

At the tier of skill we are talking about at the beginner level, this expression comes up so often, but I cant imagine beginners really find they don't have the level of control over Java/C#/JavaScript/Lua/VB/etc... that they do over C++.  In 99% of my coding experiences, even though I've been at this professionally for almost 15 years, I rarely run into situations where I don't have complete control over my code.  I have on a few occasions thought I ran into such a situation, but generally it was my ignorance of how the language I was working in actually worked. The few examples I can think of are time of the time of garbage collection, byte ordering, implicit memory allocation and direct hardware access... and again, none of those things are something a beginner ( or often intermediate ) programmer ever runs into.

2

Share this post


Link to post
Share on other sites

complete control over your code,

 

Just curious, but what exactly in real world terms, do you mean by this.

 

At the tier of skill we are talking about at the beginner level, this expression comes up so often, but I cant imagine beginners really find they don't have the level of control over Java/C#/JavaScript/Lua/VB/etc... that they do over C++.  In 99% of my coding experiences, even though I've been at this professionally for almost 15 years, I rarely run into situations where I don't have complete control over my code.  I have on a few occasions thought I ran into such a situation, but generally it was my ignorance of how the language I was working in actually worked. The few examples I can think of are time of the time of garbage collection, byte ordering, implicit memory allocation and direct hardware access... and again, none of those things are something a beginner ( or often intermediate ) programmer ever runs into.

I know I'm not the original poster, but you would have more control over the hardware with things like inline assembly, right? I'm fairly new to java, and correct me if I'm wrong, but you certainly wouldn't write an OS in Java, would you? But this thread is on Java or C++ for games so I won't pull the conversation that way.

 

I think both are great languages. I think since you're new and have already started with Java, stick with Java. I started with C++ and it took a few years for it to completely click (granted I was 10 when I started), Java has a kinder learning curve.

0

Share this post


Link to post
Share on other sites

A lot of concepts of making a game are the same across all languages. So I imagine if you are a beginner all that really matters is your skills going up :).

 

Right now I am prototyping some things in C++ and I find that it really is not quite as rapid as in Java or C#. So it has its disadvantages.

1

Share this post


Link to post
Share on other sites

I'm 99.9% sure you can do function overloading in Java... you can't do operator overloading though and lack of unsigned types might be a bit of a chore if dealing with hardware directly.

0

Share this post


Link to post
Share on other sites

I'm 99.9% sure you can do function overloading in Java... you can't do operator overloading though and lack of unsigned types might be a bit of a chore if dealing with hardware directly.

 

Ah yeah, just checked that. Long time ago when I was working on android project it didn't work for whatever reason =\

 

Anyway in 3D realm C++ blows anything.

Edited by GuardianX
0

Share this post


Link to post
Share on other sites

 

complete control over your code,

 

Just curious, but what exactly in real world terms, do you mean by this.

 

At the tier of skill we are talking about at the beginner level, this expression comes up so often, but I cant imagine beginners really find they don't have the level of control over Java/C#/JavaScript/Lua/VB/etc... that they do over C++.  In 99% of my coding experiences, even though I've been at this professionally for almost 15 years, I rarely run into situations where I don't have complete control over my code.  I have on a few occasions thought I ran into such a situation, but generally it was my ignorance of how the language I was working in actually worked. The few examples I can think of are time of the time of garbage collection, byte ordering, implicit memory allocation and direct hardware access... and again, none of those things are something a beginner ( or often intermediate ) programmer ever runs into.

I know I'm not the original poster, but you would have more control over the hardware with things like inline assembly, right? I'm fairly new to java, and correct me if I'm wrong, but you certainly wouldn't write an OS in Java, would you? But this thread is on Java or C++ for games so I won't pull the conversation that way.

 

I think both are great languages. I think since you're new and have already started with Java, stick with Java. I started with C++ and it took a few years for it to completely click (granted I was 10 when I started), Java has a kinder learning curve.

 

In theory, yes, in reality no.

 

We are long long long gone from the day we poked directly at the hardware.  In the days of 16bit DOS and slightly less ( and this is when abstractions started taking over ) 32 bit DOS extenders, yes, we fiddled directly with hardware.  Now, unless you are writing drivers, not so much.

 

It's one of those things we talk about as a language feature, but unless you are hacking on an OS kernel or writing a device driver, you don't actually do in practice.  Especially not at the level of the OP.

1

Share this post


Link to post
Share on other sites

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

1

Share this post


Link to post
Share on other sites

That doesn't mean it's a bad language for beginners though

 

 

Actually, that's pretty much exactly what it means.

 

 

 

Coincidentally, this comes up again and again and again in threads like this.  That the thing that makes C++ hard to use is memory management.  This is patently wrong.

 

This is what makes C++ fragile, there is a much different thing.

 

What makes C++ bad for beginners is a myriad of things.  The convoluted inheritance system, the fact its 4 languages mashed together, the horrible build process, the completely lacking standard libraries, the 20 years of legacy cruft.  These are the things that make C++ bad for beginners.

 

Memory management... not even close to the boogieman it's made out to be.  Don't get me wrong, it can blow up in your face, but its really no different then leaking an unmanaged resource in C# for example.

Edited by Serapth
2

Share this post


Link to post
Share on other sites

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

 

Yes, things like DirectX make C++ stand out of the crowd.

-2

Share this post


Link to post
Share on other sites

 

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

 

Yes, things like DirectX make C++ stand out of the crowd.

 

DirectX is just a library.  You can generate bindings in a variety of languages, in many of them with very little overhead.  A prominent poster on this sight for example created SlimDX, a DX wrapper for .NET languages.

1

Share this post


Link to post
Share on other sites

Java is easier to handle, has a pretty big library, its very well documented (yay for javadoc!) and in my limited experience, I see its lack of complex features as a positive trait. Though learning a good ol' compiled language with manual memory management can make easier to understand many general quirks about programming (it might teach you a thing or two about why some things are like they are in a managed language) and shape up your coding habits (avoiding creating 8823824 objects in a 3 line method for example, Java makes it very easy to get these performance/memory hogs up and running like they're the best code ever if you don't know what is going on).

 

I think the longer you linger with a managed language before learning a non-managed one, the steeper the learning curve will be when you do so. You're going to deal with memory management, like it or not, managed language or non-managed language.

0

Share this post


Link to post
Share on other sites

I have been learning java for the past 4 or 5 months. I started dabbling in making games about a month ago in java following some tutorials on YouTube and have found that I enjoy it quite a bit. I have been reading some of what people say around the internet and they say that c++ is much better for making games than java. I was wondering if I should switch to c++ and start learning it instead of continuing java. I haven't been able to decide and I hoped that you guys here would have more incite on this than anyone else on the internet. Thanks

 

IMO, Java is just as good for making games as C++. So if you want to make games and you find it enjoyable, use Java.

0

Share this post


Link to post
Share on other sites

 

 

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

 

Yes, things like DirectX make C++ stand out of the crowd.

 

DirectX is just a library.  You can generate bindings in a variety of languages, in many of them with very little overhead.  A prominent poster on this sight for example created SlimDX, a DX wrapper for .NET languages.

 

I'm fully aware that there is a number of wrappers for DirectX for different languages. But still they will perform slightly less efficient than original one. This is another one reason as to why we don't see any AAA-titles on Java. The only advantage Java gives you is unmanaged memory (just like thousands of other languages out there). In C++ you can work both with OpenGL and DirectX natively, dont need any JVM environment, and one can learn everything he needs about different programming paradigms and how computer actually works. Heck, you can ever write low-level code with it. You are right that beginner dont need all of it, but he can choose the simple OOP approach and forget about others for now. But if he needs them - they are here, unlike in Java.

1

Share this post


Link to post
Share on other sites

"This is another one reason as to why we don't see any AAA-titles on Java"

 

Minecraft is written in Java, Minecraft is not a "AAA" title. But I suspect that doesn't bother the now-multimillionaire author.

 

 

Java is plenty fast enough to write all sorts of games. Someone who's been playing with languages for a couple of months isn't writing a AAA title anyway. They're writing Tetris. And Java is a good choice to learn to write Tetris in.

 

I miss the days of Basic. When you could just turn the machine on and Basic was waiting for you. Didn't have all this crap about what languages and frameworks to use, everyone just used the Basic on their machine and moved onto using bits of machine-code when they were ready. And so people learned how to write game-loops and how to manage state and how to do collision detection and how to make a game actually fun without having a long debate on the internet about what tool to use because there was only one to hand.

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0