Language Comparison

Started by
10 comments, last by Ripiz 11 years, 11 months ago
Hey everyone I am new here, and I have begun the wonderful journey of being a game programmer.

first a little background, I am currently a college student studying Computer Science. I love programming, and more recently I love game programming. Unfortunately my school doesn't teach game programming as part of the core Computer Science Major so I have been tasked with learning this art on my own. What I have learned so far is the basic idea of Game loops, Movement, Collision etc.. just basic things you pick up from online tutorials. My languages so far have been Java, and C# with the XNA game library, I know the basics of both but when it comes to game programming I use C# because XNA takes care of the Visual aspect of it.

Well any way on to the main point of this topic, I know that every language has it's benefits and disadvantages, and I am looking for the ones that I would like to work with. So if you guys would be so kind as to pick some languages and give me the pros and cons of using it to make games, that would be great.

Also if there are any basic concepts of game programming I need to learn, please let me know.

Thanks a ton

-Someguy127
Advertisement
Don't worry about languages, just use C# and XNA (C# is a great language), only switch if you have to (The main reason to switch language these days is for platform considerations (Many platforms have 1 "official" language for their SDK that is alot easier to work with than the rest, (For Android its Java, for WP7 its C# and for iOS its Objective-C for example, while you can use other languages aswell on those platforms it isn't necessarily as easy).

As for game programming concepts just try to make some simple games and go from there.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
C++: Allows you full control. But with great responsibility comes…many chance to shoot yourself in the foot? You can do anything you can imagine needing to be done with this language, but that also means the potential to create every kind of bug you can imagine, since you are also responsible for your own messes. The only way to allow you full control is to not clean up after your mistakes.
Some say it is not a good language for starting out, but it certainly does build a level of discipline into its users.
Of important note is that starting with C++ is harder than starting with Java or C# and then moving to C++ later. Breaking free of old habits, such as dropping pointers for the virtual environment to clean up for you, are harder than just forming good habits from the start.
The other benefit is that it it is the defacto language for game programming, and not knowing it will never net you a good job in the industry. By not knowing it, you are absolutely putting a cap on your career potential.

C#: Good for fast results in all kinds of areas, and with XNA it is a good start in game programming; the kind of start that keeps you motivated to move forward. But don’t focus on it alone for too long; As mentioned above, getting too used to any garbage-collecting system will only hinder your growth as a full-fledged game programmer in the future. A very reasonable strategy is to use XNA alone for your first game, then start making your second game in C# but try to learn C++ at the same time on the side. Your goal should be to understand pointers mainly and to understand very clearly how your XNA practices cause memory leaks in C#. As long as you develop these 2 side-by-side, you should be set to go in the future.
Learning them side-by-side is quite recommendable because you will fail your first few C++ projects, but since you still have C# with you you can still feel motivation to keep moving forward.

Objective-C: Fairly useless in the gaming industry. Instead, this gives points to C++, because iOS development supports C/C++, but not C#. Working with iOS is another good way to get a handle on game development since the platform is so small that only one person is needed to make any given game, which means you can make and release to your heart’s content. But you will be doing so in C++, not C# nor Objective-C.

Java: There are no benefits unless you know no languages at all and have for some strange reason decided to learn programming on an Android platform. Java is not required on Android so knowing C/C++ again can get you by on Android devices, and knowing Java alone is fairly close to knowing C#, so there would be little motivation to just make little Android games (which requires more than just knowing the language, since you have so many different types of devices with different resolutions and capabilities) instead of decent-looking XNA games (which are by comparison much easier to make, given the lack of diversity between hardware specifications).


These are currently the only relevant languages in game development so I will stop there. While it is true that almost every language fills a gap, when it comes to game programming many languages are simply irrelevant. Here, it is mainly a shootout between C++ and C#, but in the end you are definitely going to need C++, so the real question is, “What is the best way to shift into a C++ environment.”
Using XNA or iOS development with C++ on the side is a reasonable strategy, and in any case you can take it at your own pace.
If you already know C#, why not start something on the side with C++?


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Another possibility is to use Unity 3D. You still need to program the logic of your game (and you can in C#) but not the engine. This has another advantage you can see how a good engine is structured.

If you want to learn about engine development then XNA + C# is IMO the best combo to start. But what is it the part of game development that you love the most? If it is graphics then I can give some tips.

[size=1]Project page: [size=1]<

[size=1] XNA FINAL Engine[size=1] [size=1]>
If I were to start a new game tomorrow, these would be my selections in order:

- Coffeescript (or plain old Javascript) with WebGL, using Three.js
- Actionscript3 on Stage3D (to AIR for mobile, Flash for web), using Away3D
- Unity
- Some Python game framework
- C++/DirectX


Writing solo games should be fun - the bits of C++ that people say are hard (memory management, pointers) really aren't that bad, it's the lack of cohesion and incessant focus on trivia that makes it a boring language - see the trivia quizzes that everyone fails.

You'll learn more by making things in any language.
Read this, it basically "answers" your question, as much as it can be answered.

This is a difficult subject, as much of it is subjective and it's highly incendiary.
It's really a shame that Universities nowadays do not even teach any systems programming languages anymore. Not even C++.

I've seen people graduate from their 5-year CS program without ever having programmed a single line in any language, but the norm is that people who graduate are at least capable of writing maybe a Hello-World Java program. That's the most you can expect though.

Our OS class focused entirely on writing user-level 20-line Java programs, because the students just didn't know any C.
CS should not be teaching people how to use C++, it should be teaching them how to manipulate information.

CS should not be teaching people how to use C++, it should be teaching them how to manipulate information.


Don't get me wrong, they're doing that, but in the belief that for that exact reason it doesn't matter if all they teach students is how to churn out enterprise Java crap.

It doesn't matter how much theory you know if you have no clue how to apply it (except if you want to become an academics researcher).
My intro computer programming class used C++. With Code::Blocks. The next level class used visual basic though. I am pretty sure my community college has systems programming.

This topic is closed to new replies.

Advertisement