Programing language for 3D games

Started by
22 comments, last by sphere89 9 years, 7 months ago

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.

Advertisement

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.

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.


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.

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).

Sean Middleditch – Game Systems Engineer – Join my team!

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.


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("(? ???)? ? ???");


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.


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 biggrin.png

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.

This topic is closed to new replies.

Advertisement