Jump to content

  • Log In with Google      Sign In   
  • Create Account


#Actualjbadams

Posted 08 September 2012 - 08:12 PM

I'd like to have a go at addressing one of the points Shaquil has raised:

C++ is widely considered the "main" gaming language. It's what industry professionals use, it's what indie devs use, and it's what you'll probably have to learn eventually.


Yes, C++ is generally the go-to language for professional developers working on AAA projects, but it increasingly isn't what indie developers use, and there's absolutely no reason the OP will necessarily have to learn it eventually. Even in the industry, it's increasingly common the use C or C++ for lower-level performance critical code and a higher-level language (Lua, Python, UnrealScript, UnityScript, et al.) for the rest of the code.

The reasons professional developers often choose C++ are, for the most part, sensible and pragmatic, but many of them simply do not apply to someone who isn't coding in that environment with that level of experience:
  • AAA studios often employ large teams of developers, many of whom already have extensive experience with C++. The average beginner will be working alone or in very small teams for at least a couple of years, and by definition does not have any background experience.
  • Consoles often have limited compiler and library support, forcing professional to work with what is provided or spend a lot of time and resources working on their own new tool chains. Beginners are rarely (if ever) placed in this environment, and therefore need not be limited in this way.
  • AAA studios have large existing code-bases written in C or C++ and can often save time and effort by building upon that code. The average beginner does not have an existing code-base, and will either be starting from scratch or working with third-party code; as long as there are some good libraries available in their language of choice they should be fine.
  • Professional developers have the knowledge and experience to take advantages of the lower-level access that C++ can provide to write more optimal code, and often need to do this to meet their performance targets. Beginners do not have those difficult-to-achieve performance targets, and lack the experience to make the necessary optimizations anyway.
Indie developers are increasingly using languages other than C++, although it does remain a popular choice. C#, Lua, Flash-targeting languages (ActionScript, Flex, HaXe), JavaScript, and others are being used for their advantages in productivity, and are perfectly capable of providing a performant and professional-quality game play experience.


That being said, you're right that there are a lot of libraries and documentation available to C++ developers of any skill level, and that there is plenty of support available. These are real points in favour of the language -- but not necessarily an advantage given the same is true of many other options as well. I think C++ is a valuable language to learn, and I think it will continue to be a useful language for years to come; but I remain unconvinced that it's a good choice for the average beginner.

#1jbadams

Posted 08 September 2012 - 08:10 PM

I'd like to have a go at addressing one of the points Shaquil has raised:

C++ is widely considered the "main" gaming language. It's what industry professionals use, it's what indie devs use, and it's what you'll probably have to learn eventually.


Yes, C++ is generally the go-to language for professional developers working on AAA projects, but it increasingly isn't what indie developers use, and there's absolutely no reason the OP will necessarily have to learn it eventually. Even in the industry, it's increasingly common the use C or C++ for lower-level performance critical code and a higher-level language (Lua, Python, UnrealScript, UnityScript, et al.) for the rest of the code.

The reasons professional developers often choose C++ are, for the most part, sensible and pragmatic, but many of them simply do not apply to someone who isn't coding in that environment with that level of experience:
  • AAA studios often employ large teams of developers, many of whom already have extensive experience with C++. The average beginner will be working alone or in very small teams for at least a couple of years, and by definition does not have any background experience.
  • Consoles often have limited compiler and library support, forcing professional to work with what is provided or spend a lot of time and resources working on their own new tool chains. Beginners are rarely (if ever) placed in this environment, and therefore need not be limited in this way.
  • AAA studios have large existing code-bases written in C or C++ and can often save time and effort by building upon that code. The average beginner does not have an existing code-base, and will either be starting from scratch or working with third-party code; as long as there are some good libraries available in their language of choice they should be fine.
  • Professional developers have the knowledge and experience to take advantages of the lower-level access that C++ can provide to write more optimal code, and often need to do this to meet their performance targets. Beginners do not have those difficult-to-achieve performance targets, and lack the experience to make the necessary optimizations anyway.
Indie developers are increasingly using languages other than C++, although it does remain a popular choice. C#, Lua, Flash-targeting languages (ActionScript, Flex, HaXe), JavaScript, and others are being used for their advantages in productivity, and are perfectly capable of providing a performant and professional-quality game play experience.


That being said, you're right that there are a lot of libraries and documentation available to C++ developers of any skill level, and that there is plenty of support available. These are real points in favour of the language -- but not necessarily an advantage given the same is true of many other options as well.

PARTNERS