Move on from C++? Learn something else? Opinions?

Started by
9 comments, last by Wil Turner 12 years, 3 months ago
As you may notice I am new to GameDev.net. I have been working for around a year with C++ and SDL, and I'm fairly decent (at small small simple projects). I am continuously beginning a new project, with more complexity, learning more about C++'s abilities, learning more about SDL's abilities.

The problem is, recently I tried looking into something OTHER than C++, specifically Java. I even glanced at using OpenGL with SDL and C++, and, honestly, I just wasn't comfortable stepping in these unfamiliar directions.

So, what do I do? Currently, I'm just a hobbyist developer, not even in college yet. I just want to code and develop games, I have a passion for it. Should I stick with C++? Surely I need to expand my knowledge base?

I appreciate any advice from the community. Thanks!
- Wil
Advertisement
C++ is always a good option, its solid, fast and you have 100% control about what happens. One year C++ is a good start, but you probably didn't realized the immense power of the C++ language yet. Keep learning, keep reading and the better you get in C++, the more you will love it.

Anyway it will really help you to know many programming languages, try to learn the basics of as many as possible so you know whats best for which situation - in the end you will clearly know your favorite one. Asking in forums will get you several different answers about which one is the best. That its the best for a certain person still doesn't mean that its the best for you, so it won't really help you to follow their advice.

If its more about making games than about making game engines, then you should probably take a look at already completed game engines. For example if you like to code as less as possible then Unity3D is a good choice. If you still want to code but without worrying about graphics then Ogre might be worth a try(its in C++).

the_visualist

As you may notice I am new to GameDev.net. I have been working for around a year with C++ and SDL, and I'm fairly decent (at small small simple projects). I am continuously beginning a new project, with more complexity, learning more about C++'s abilities, learning more about SDL's abilities.

Welcome to the world of programming, where most projects don't even make it to the alpha stage :)


The problem is, recently I tried looking into something OTHER than C++, specifically Java. I even glanced at using OpenGL with SDL and C++, and, honestly, I just wasn't comfortable stepping in these unfamiliar directions.

To be honest, it is possible to use Java to make games (i.e. Minecraft), but personally I've found it to be awkward to do so. There's a lot more gaming libraries for C++ than there are for Java, so maybe that's one reason I've enjoyed programming games in C++ more than I have in Java. Either way, it's just another language, and moving into new territory is usually a little uncomfortable at first.


So, what do I do? Currently, I'm just a hobbyist developer, not even in college yet. I just want to code and develop games, I have a passion for it. Should I stick with C++? Surely I need to expand my knowledge base?

If you're looking for a solution to your short attention span, switching to Java won't fix it. I say stick with C++ since you've already started. Switching to Java would just give your curious mind another world to explore, and then you'd be exploring mixing Java and C++ through JNI, and so on and so forth until you realize that whatever language you're using, you're going to get distracted from your current project with an awesome new idea at some point or another. What you need is to learn how to set goals and stick to them (even if you do think of a cooler goal). You need to learn how to finish something you start (now, you don't have to finish everything you start, but you should finish something).
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
Which is more important to you -- do you a) want to expand your knowledge and learn other languages and technologies, or b) continue to write games?

Both options have merit, and most (perhaps all) good programmers eventually learn more than one language, but if you're currently comfortable with your progress in C++ and want to focus on creating games that is probably what you should do.


It's up to you, and neither option is objectively better than the other -- figure out your priorities, and decide based on that. If you're having trouble deciding you might consider drawing up a decision grid to help you.


Hope that helps! cool.png

- Jason Astle-Adams

How long until you get into college?

If you're going in the fall, then stick with C++ until then; ~9 months of more advanced topics will be more useful than expanded horizons (which college should provide).
If you're not, then I'd recommend diversifying away from C++ to get a head start on learning new and weird things.
If you're not going to college at all... It doesn't matter too much what you do, since you're likely to simply program recreationally. Do what is most enjoyable to you.
@the_visualist thanks for the advice, I'm interested in not only the game mechanics and design, but the underlying technical stuff (of which I know very little about currently) :)

@cornstalks I'm not looking to fix my attention span :D I'm just super exploratory, and I was just wondering if that was healthy for my programming hobby or not :) thanks!

@jbadams thank you for the advice! The problem is (probably), like I told the visualist, It all interests me! But I do believe I will continue working with C++ for now, and maybe after a while look into programming with other libraries instead of SDL. It's great, and, for me, its been a perfect system to work with while learning more and more about C++ and game development. And, like I'm about to tell Telastyn:

@Telastyn: I'm going to college this Fall! For engineering, most likely ending up majoring in computer science or computer software engineering...I really don't know :o Thanks for the advice!
Maple/Mathematica, that kind of stuff, is what you want to learn. Basically, if you want to seriously work on game developing/computer graphics, you will want to get behind all the math that is involved. Professional-grade mathematical tools make visualization of a lot of graphical features very simple - Be it computational geometry, physics or computing of lighting and energy. Once you verified that your concept works you can start investing all the time it takes to convert a few lines for visualization inside a math tool into hundreds or thousands of lines of C++ code.
Eventually, you will have familiarized yourself with one or two languages up to a level that you can easily use it as a tool to implement your algorithms. At that point, latest, you will realize that the algorithms actually are what carries weight when trying to produce some really decent (and good-looking) results.

Alternatively, look for interesting open source projects, look through their code, toy around with them and start changing little things to learn from what others did and to improve your understanding of coding, framework architecture and algorithms.
I use 2 languages for 2 different types of game:

2D - Java using the in built swing/awt api
3D C++ using OpenGl

There is not much 3D support for java but there is LWJGL (light weight java game library) which uses openGl but it does not include glut (as far as I know).
I would recommend Java for 2D game programming just because the API is generally easy to understand along with Applets for online games.
But if it means learning another language I would stick with C++ but it is always good to expand your knowledge and anyway Java and C++ are very similar languages and it wont take long to copy what you know already in c++ to java.
I honestly don't believe I've ever seen maple/mathematica/matlab outside of an academic setting, and question the value of those programs for someone with high school level math knowledge.

And that's assuming you pay the big bucks to get them.

Stick to C++, but maybe change the framework you are using, SFML 2 is a great framework for games, its more advanced than SDL and is updated on a regular basis. It's also really easy to incorporate OpenGL within SFML, what ever you do, stick to C++. But if you really want to adventure out into a new world, try C# and XNA (Depreciated IMHO) If you're going for C# then you should check out Unity3D, both are brilliant, and C# will be easy for you to code in since you are already used to the C++ environment. Just my $0.02 ^^

Freelance Programmer (C#, C++)

This topic is closed to new replies.

Advertisement