View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Programing language for 3D games

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

23 replies to this topic

### #1rbcheck  Members

Posted 05 September 2014 - 12:22 AM

I can not say I am more of a logic person with interest in chess and the Boolean type  flow chart of a game over my love of graphics, art and animation. So I suppose my questions are more for the application of 3D, open world games that operate both 1st person and 3rd that utilize weapons and shooter along with puzzles in flow of the story line or RPG games.

I was wondering if someone could expand on the topic of programing language for a beginner.  I noticed a lot of web sites listed C++  but then others say that is a hard place to start and C# visual C might be better?  I had used a little VB but that was Pre ver 4 in the 90's. More specific why one is better in an area than the other from both the learning curve but also the point of what you can accomplish better in one than another?

I notices Some places mentioned Python as on this site I take it as a Script type program?  I downloaded the 3.4.1 but was wondering is someone could explain how it applies to game programing.

The PS4 and x-box one brought me to the question of the use of open BSD but I am unsure of what aspect of current platforms it is being used for?

While I get 1 person is not going to write the sound, visual effects, story line, game AI and the list of components, I was hopping to lean enough to get on board as part of a projects.  I get it, you play game games, you love them and you have this absurd idea of wanting to create them.  Like most other than Mods for Civilizations and Elder scrolls; I know there are a lot of different aspects and skill sets for many parts of an actual large scale Game.  This seems to be a small part of what the Book Game Coding complete 4th ed gets into.  Are there other resources or books that kind of break the game programing industry into the components and jobs?

No I will not be going to school on line or in person.  Being disabled for the 14 years comes with a whole set of problems but It not mean when permitted by health I can not try to find some line of interest to add some income.  Provided I do not get sucked into a hole playing Destiny.

Thanks

Ross

Always thinking outside of the box,  wondering what's inside.

### #2Truerror  Members

Posted 05 September 2014 - 10:13 AM

So in short, you're asking what language a beginner should learn between C++, C#, VB, and Python? If so, then there is no correct answer really. What you choose is up to your personal preference.

C++ is considered hard because of how it operates (it requires a lot of manual work and attention to details to make it work correctly) and its syntax (different notations for accessing methods, etc.) but it is also powerful and fast, thus it is the lingua franca of AAA game development.

Python is pretty much the opposite of C++. It is interpreted, not compiled, so it runs way slower than C++. It is also not as powerful. However, its syntax is often regarded as one of the simplest and easiest to learn. Sometimes, a Python program might even read like a natural English.

C# is somewhere in between. While definitely easier than C++, it is definitely not as easy as Python. And while it's faster than Python, it is not as fast as C++. However, it gives many people a good balance between speed and productivity, and thus is considered one of the powerhouses of indie game development.

VB has two incarnations: The classic VB and VB.Net. What you learned in the 90's was the classic VB. It's a compiled language, but wasn't designed to be an object-oriented language. The last version is VB6. VB.Net on the other hand, is a managed language under the .Net framework (like C#), and thus runs a bit slower than classic VB. However, it is an object-oriented language, and it has the support of the .Net standard library. In many cases. VB.Net can be used interchangeably with C#, but not always.

As for your question regarding OpenBSD, it is said that the OS used in PS4 is based on BSD, but that's about it. If you want to develop for PS4, then develop for PS4, not for BSD.

### #3ferrous  Members

Posted 05 September 2014 - 11:58 AM

There is a python game library, I think it's Pygame.  You might also try Lua, I think it has Love or Love2d?

Just about the only language I would disrecommend is VB, it's not meant for games, and you are going to find few, if any examples or tutorials on the web to help you do anything with it that is gaming related.

### #4Serapth  Members

Posted 05 September 2014 - 11:59 AM

C++ is considered hard because of how it operates (it requires a lot of manual work and attention to details to make it work correctly) and its syntax (different notations for accessing methods, etc.) but it is also powerful and fast, thus it is the lingua franca of AAA game development.

I really wish we would stop using this description, as it is not actually correct.

C++ is flexible and low level.  It is also complicated, not hard.

Fast is up to the programmer, as is powerful ( although I suppose you could argue that low level and flexible is power ).  In most cases, especially important for beginners, the lower level a beginner goes, the worse the performance will be.  It takes years of experience to make C++ fast, while it takes only minutes to make it dangerous.  Hard is subjective too, as some people just have a brain for complex systems/rules.  C++ however is one of the most complex languages in popular use.  For *most* people, more complexity translates into a longer learning curve and less productivity, at least initially.

I know I am sounding pedantic here, but we are constantly giving beginners the impression that their game will perform better if written in C++.  That simply will not be true for a very very long time.

So please, if you can, no longer use the words "fast" "powerful" or "hard" to describe C++, as one is subjective, one is wrong and the other is too vague to be useful.

Edited by Serapth, 05 September 2014 - 12:04 PM.

### #5SeanMiddleditch  Members

Posted 05 September 2014 - 12:11 PM

There is a python game library, I think it's Pygame.

Assuming Python is the choice the OP wants to go with and noting that he explicitly asked for 3D it might be worth to note Panda3D rather than PyGame.

Unity3D also supports both a JavaScript variant and a Python variant (called Boo).

Game Developer, C++ Geek, Dragon Slayer - http://seanmiddleditch.com

C++ SG14 "Games & Low Latency" - Co-chair - public forums

Wargaming Seattle - Lead Server Engineer - We're hiring!

### #6Serapth  Members

Posted 05 September 2014 - 12:22 PM

There is a python game library, I think it's Pygame.

Assuming Python is the choice the OP wants to go with and noting that he explicitly asked for 3D it might be worth to note Panda3D rather than PyGame.

Unity3D also supports both a JavaScript variant and a Python variant (called Boo).

Frankly from everything I've read, as I understand it, Unity is pretty much the no-brainer recommendation here, especially " can not say I am more of a logic person with interest in chess and the Boolean type  flow chart of a game ".  In this case Unity + a higher level scripting langauge like Boo or JavaScript, or Unreal using blueprints ( granted... uber flow charts basically ), is probably the way to go, especially for 3D.

### #7Ravyne  Members

Posted 05 September 2014 - 12:32 PM

I really wish we would stop using this description, as it is not actually correct.

C++ is flexibly and low level.

I agree entirely with the thrust of your post -- in particular that we do newcomers a disservice by giving them the impression that C++ is simply the logical choice while white-washing its difficulties and learning curve.

But--and perhaps you and I are playing semantics between 'powerful' and 'flexible'--I think its apt to describe C++ as being powerful -- almost uniquely powerful. Really, the only languages that can compete in that arena are C++ and its kin C, D, or Rust, but the first of those three offers less in the way of abstraction and library-building, and the latter two, both of which I find imminently interesting, are effectively babes-in-arms -- too new, still evolving. Practically speaking, this makes C++ uniquely powerful (and also uniquely tempting, and uniquely dangerous); as a single language it can touch hardware on the very lowest levels and also build fantastic, high-level, generic libraries.

Of course, the trouble is that many people read about the potential benefits of C++, and its widespread use in the games industry, and parrot the story to newbies to the point where its become something of a cargo-cult: Everyone *knows* that C++ gives you the best performance, but rather few know how to get it, and fewer still know how to get it without creating a horrible mess for themselves. Worse, some in this cult continue to spread active misinformation to newer generations -- giving them the impression that coding 'to the metal' is what makes C++ performant without a care for who the audience is. For an experienced programmer, "the metal" is a sort of dangerous place where she knows she can go to find performance, but which she knows well enough not to stick around more than she has to; to the inexperienced programmer, he's told "the metal" is a magical playground where sun-ripened performance grows on every tree, bush, and park bench -- he looks forward to going there, and no good sense of when he should leave. That's the myth the cult sells.

I love C++, but I'm cautious of its mythology and I try not to pass it down to new generations without qualifying it. There usually are far better uses of your time -- indeed, better optimizations that can be understood from a higher level -- than simply worshiping at the alter of "the metal".

throw table_exception("(ノ ゜Д゜)ノ ︵ ┻━┻");

### #8Serapth  Members

Posted 05 September 2014 - 12:43 PM

as a single language it can touch hardware on the very lowest levels and also build fantastic, high-level, generic libraries.

... that sounds like flexibility to me. ;)

I think we are playing a semantics game though as you suggested.  Fundamentally, I think we have the same opinion, especially in regards to this particular forum.

While we are off playing the semantics game... as a single language is an ironic choice of words.  Perhaps the biggest source of C++'s complexity comes from the fact it's actually about 4 languages mashed ( somewhat successfully ) together.  Well, that and it's 1970's build system that is.

### #9Truerror  Members

Posted 05 September 2014 - 05:14 PM

C++ is considered hard because of how it operates (it requires a lot of manual work and attention to details to make it work correctly) and its syntax (different notations for accessing methods, etc.) but it is also powerful and fast, thus it is the lingua franca of AAA game development.

I really wish we would stop using this description, as it is not actually correct.

C++ is flexible and low level.  It is also complicated, not hard.

Fast is up to the programmer, as is powerful ( although I suppose you could argue that low level and flexible is power ).  In most cases, especially important for beginners, the lower level a beginner goes, the worse the performance will be.  It takes years of experience to make C++ fast, while it takes only minutes to make it dangerous.  Hard is subjective too, as some people just have a brain for complex systems/rules.  C++ however is one of the most complex languages in popular use.  For *most* people, more complexity translates into a longer learning curve and less productivity, at least initially.

I know I am sounding pedantic here, but we are constantly giving beginners the impression that their game will perform better if written in C++.  That simply will not be true for a very very long time.

So please, if you can, no longer use the words "fast" "powerful" or "hard" to describe C++, as one is subjective, one is wrong and the other is too vague to be useful.

Quite true. I apologize, I meant 'hard' as in hard to learn, not hard to use. But yes, I would argue that low-level and flexibility is power. While it is dangerous for beginners, at least the power is there to tap into.

and the latter two, both of which I find imminently interesting, are effectively babes-in-arms -- too new, still evolving

So the software industry has sunk to a new low and now uses babies? That's worse than those terrorists!

Sorry, I can't help it, I just had to comment

### #10Cynnir  Members

Posted 05 September 2014 - 06:07 PM

In reading this forum as an absolute beginner, and also from looking at experience requirements at job postings for software companies I would like to work for C++ seems to be the industry standard for AAA games.

I also am picking up on the message that C++ is not necessarily the best place for someone who is just starting with programming (like me). For this reason I think I have settled on learning C# for my entrance into the programming world.

My question is how much of what I learn in C# is going to translate to C++ when I begin to learn that language? As I mentioned it seems like C++ is going to be required if I want to compete for a position at a premier game developer (please correct me if I'm wrong). Looking forward to your responses.

### #11Serapth  Members

Posted 05 September 2014 - 07:07 PM

In reading this forum as an absolute beginner, and also from looking at experience requirements at job postings for software companies I would like to work for C++ seems to be the industry standard for AAA games.
I also am picking up on the message that C++ is not necessarily the best place for someone who is just starting with programming (like me). For this reason I think I have settled on learning C# for my entrance into the programming world.
My question is how much of what I learn in C# is going to translate to C++ when I begin to learn that language? As I mentioned it seems like C++ is going to be required if I want to compete for a position at a premier game developer (please correct me if I'm wrong). Looking forward to your responses.

Let me out it this way, from zero experience you have a choice of:

Learn to program using a higher level language in 3 months, then C++ in six.
Learn to program using C++ in twelve months?

Which would you pick?

The numbers above are made up, the result however, is not.

### #12rbcheck  Members

Posted 05 September 2014 - 09:20 PM

thanks to all, I'm a little overwhelmed with information to the point of rereading the whole thread.  Is there a C++ book or site that does not start off with Hello world or this approach?  It just seems backwards.

Forgive me if I miss step this but in Chess you learn all the pieces how they move, then how they worked together, then the pawn structure and setting up out post for the other pieces.

Maybe I am looking at the wrong books but I had hoped to see the list of commands, how they are structured and the syntax, and then how to use those commands and its result along with leading how to combine them in structure to obtain larger objectives.

second any thoughts on best method of learning C#

As far as engines, I'm pretty much sold on Havok and related tools just seems to relate more of the type game that interest me.

Always thinking outside of the box,  wondering what's inside.

### #13Cynnir  Members

Posted 05 September 2014 - 10:12 PM

second any thoughts on best method of learning C#

I have found a couple resources that you might look into. One is available for free on Microsoft Virtual Academy and is C# from the very beginning. You can just search once you are on MSVA to find it.

The other is on Coursera and it is a live class that starts Sept. 16 which is essentially supposed to be the same curriculum as if you paid the $1500 or so to attend the course at Colorado University. Here's a link to check it out: https://www.coursera.org/course/gameprogramming I just started the MSVA one and have never tried Coursera but I plan to attend the upcoming course. Hopefully that information helps you, and as I am just as much (if not, more so) of a beginner as you I can't speak to the best method of learning. If anyone else has other suggestions I would be happy to hear them as well. ### #14rbcheck Members Posted 05 September 2014 - 10:24 PM Are there other resources or books that kind of break the game programing industry into the components and jobs? Sorry It is my fault for such a large range of inquiry although related. I was interested in finding something that breaks down the teams in a large production game such as Skyrim, Destiny, uncharted or Assassins Creed and how programing and modeling relate to those jobs and the tools used or made for them. Always thinking outside of the box, wondering what's inside. ### #15rbcheck Members Posted 06 September 2014 - 03:07 AM The other is on Coursera and it is a live class that starts Sept. 16 which is essentially supposed to be the same curriculum as if you paid the$1500 or so to attend the course at Colorado University. Here's a link to check it out: https://www.coursera.org/course/gameprogramming

Thanks the course is open, start anytime.  I downloaded book and started class since it is C# specifically for game programing.  Between that and Havoc engine I should be overwhelmed.

Always thinking outside of the box,  wondering what's inside.

### #16HScottH  Members

Posted 06 September 2014 - 10:48 PM

If you are wanting to learn to program OpenGL for 3D graphics, and you want the best return for your learing investment in terms of "what I can do" / "how long it takes me," I strongly recommend Java.  Java is slower than C++, but the difference is largely in the noise where most games are concerned, unless your game is very atypical.

If you want to write "A" grade games, C++ is your best bet, but the hill is far steeper, and most of what you need to learn in order to do that has little to do with the language and everything to do with how you interact with the GPU anyway.

Minecraft is written in Java, and although most noobs say it's slow because of Java, this is in error. Minecraft is slow because of the way it is programmed and the fact that it uses older OpenGL APIs.

If your goal is to use a game engine such as Unity (as opposed to writing your own), then C# is a great choice.  It's faster than Java (just a tad), but just about as easy.  The disadvantage with C# is it is harder to port to other platforms (outside of an engine like Unity).

I am writing a game and accompanying engine.  It is a voxel game (blocks), and I started in Java.  I eventually ported to C++ (because I found out it's easier to port C++ across platforms than it was last time I checked--I'm old :-), and found the following:
* My world-generation code was about 10x faster (though neither Java or C++ code was optimized)
* My memory usage went way down
* Even though I am rendering many times as much geometry as Minecraft, my FPS did not change at all (for, as I said, this is about your understanding of the GPU, and not the language you choose)

Statistically, most game projects fail because they aren't completed, and most programmers don't complete games because of the large workload they entail.  Hence, I recommend the language where productivity is highest; that's Java.  If you finish a game, you would do well to learn C++ and see what you can do with that.

Edited by HScottH, 06 September 2014 - 10:49 PM.

### #17Washu  Senior Moderators

Posted 07 September 2014 - 02:14 AM

C++ is considered hard because of how it operates (it requires a lot of manual work and attention to details to make it work correctly) and its syntax (different notations for accessing methods, etc.) but it is also powerful and fast, thus it is the lingua franca of AAA game development.

I really wish we would stop using this description, as it is not actually correct.

C++ is flexible and low level.  It is also complicated, not hard.

Fast is up to the programmer, as is powerful ( although I suppose you could argue that low level and flexible is power ).  In most cases, especially important for beginners, the lower level a beginner goes, the worse the performance will be.  It takes years of experience to make C++ fast, while it takes only minutes to make it dangerous.  Hard is subjective too, as some people just have a brain for complex systems/rules.  C++ however is one of the most complex languages in popular use.  For *most* people, more complexity translates into a longer learning curve and less productivity, at least initially.

I know I am sounding pedantic here, but we are constantly giving beginners the impression that their game will perform better if written in C++.  That simply will not be true for a very very long time.

So please, if you can, no longer use the words "fast" "powerful" or "hard" to describe C++, as one is subjective, one is wrong and the other is too vague to be useful.

It's also not the reason C++ is used in AAA. It is used there because it happens to be one of the few languages that actually works on ALL of the target platforms. It is not a productive use of time to port or write a compiler for another language when you can use one that already has vendor support. Furthermore, with the large amount of working legacy code out there, why would you want to spend money having someone rewrite those artifacts in another language? You wouldn't. So AAA sticks with C++ because it works on the platforms they want to target, all the libraries, containers, algorithms and other code artifacts that they've produced over the years also happen to be mostly reusable.

In fact, the only game I can think of where they wrote their own compiler was Jax and Dexter and their use of GOAL.

Edited by Washu, 07 September 2014 - 02:18 AM.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.
ScapeCode - Blog | SlimDX

### #18TheChubu  Members

Posted 07 September 2014 - 04:21 AM

If you are wanting to learn to program OpenGL for 3D graphics, and you want the best return for your learing investment in terms of "what I can do" / "how long it takes me," I strongly recommend Java.
I agree with this. I actually started to learn OpenGL with C++, but Java's OpenGL bindings libraries (LWJGL and JOGL) iron out lots of tiny issues you have just to get OpenGL functions to work on a C++ project.

Creating a 'core' context is as hard as instancing an object with 'core' set to true, on all platforms supported (Windows, Linux, OSX, and others). Using an extension is as hard as calling the function you want to use (in LWJGL you'd import the package with the extension's name first but thats all).

Those things alone make OpenGL just much nicer to use in general.

Bad part is actually passing data to OpenGL. Obtaining a little endian array of floats is way harder than it should be in Java. So if you really don't want to deal with that stuff, C# and OpenTK might be a better choice.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

### #19Truerror  Members

Posted 09 September 2014 - 03:30 AM

The other is on Coursera and it is a live class that starts Sept. 16 which is essentially supposed to be the same curriculum as if you paid the \$1500 or so to attend the course at Colorado University. Here's a link to check it out: https://www.coursera.org/course/gameprogramming

Thanks the course is open, start anytime.  I downloaded book and started class since it is C# specifically for game programing.  Between that and Havoc engine I should be overwhelmed.

You're a beginner, so you're studying the concepts of computer programming from the basics. You took a course in C# which just so happens use game as a medium. All well and good.

But you also study Havok, which is a C++ physics engine, with no known C# binding. That means, you'd have to learn C++, because if not, you won't be able to use Havok (unless you write your own bindings, but to do that you alsp need to know C++).

In short, you're trying to learn two languages at the same time (both of which aren't known for being beginner-friendly) while also learning how to use an advanced physics engine. Yes, you'll be overwhelmed. Riiiiight.

More like being pounded, kicked in the balls, and thrown off into oblivion.

@Serapth: I am truly sorry. Now I can really see the damaging effect of such glorification

### #20Cynnir  Members

Posted 09 September 2014 - 06:23 AM

I don't completely understand this statement yet, but I think I know what your getting at. I have heard a lot about Unity, and it seems like something I might look into at some point. Is Unity related to C#, kind of like Havok is related to C++? I thought I had seen it referenced somewhere that it was.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.