What Languages do the experts use?
Hello,
I have been a casual programmer for a while and decided I would like to program some video games because they are fun. However I have spent some time now trying to determine where to focus, for both myself and what I would like and also what would give me the best shot to work for a major game developer.
So my questions is what languages do the game programming experts use? And I know there are lots of threads about C++ or whatnot, but are other languages used as well? Looking at some games they mention 2 or 3 different languages including scripting languages that can be used for all the different functions. Should I learn C++/DX and try to make entire games out of them (for learning sake)? Are there other scripting languages that would be worthwhile to learn as well?
Also, when created 3D models is there an industry standard?
I feel I am a decent programmer, just over my head right now on the game part of this business.
Thanks,
Mike
Quote:Original post by Conutmonky
So my questions is what languages do the game programming experts use?
At the current time C/C++ is the most common language. At least I think it still is, but that could change in the next few decades.
Quote:but are other languages used as well?
Absolutly, the big studios down to small indie devlopers have used just about every language.
Quote:Looking at some games they mention 2 or 3 different languages including scripting languages that can be used for all the different functions.
Scripting is very common so knowing more than one language is pretty much a requirement in the industry. You should not see that as a problem because these script languages are used because they are some much faster to develop and prototype with.
Quote:Should I learn C++/DX and try to make entire games out of them (for learning sake)? Are there other scripting languages that would be worthwhile to learn as well?
Before you can tackle everything you should start small. You should use a language you are familiar with but without knowing more about your current knowledge I would recommend C# maybe Microsoft's XNA. Avoiding C++ from the start would be a good idea. Not to say it would be too hard for you or anything but leaning DirectX and proper 3D rendering is difficult by itself so you would only make things more difficult trying to learn a language like C/C++ at the same time.
Even better you could look into some 3D engines to get an idea of how things are and have been done. The best thing to take away from this is that the language is not nearly as important as the general concepts required for creating games.
Quote:Also, when created 3D models is there an industry standard?
3DS Max, Maya and XSI are huge both in popularity and price tag. There are probably more but I really don't keep up on the latest 3D modeler packages. Unless you want be be an artist this part is not as big of a deal. There are a few free ones that might be good enough. A lot of programmers can't make very good art anyway, at least in my experience.
Most AAA titles are made in C or some subset of C++. Tools are more and more frequently being developed in C#, and a lot of games use scripting languages like lua or unrealscript.
If you want to be a professional, you should know these languages. That does not, however, mean you shouldn't know other languages, or should even necessarily work on personal projects in these languages. And I would certainly not recommend learning any of them as a first language (except maybe C#).
If you want to be a professional, you should know these languages. That does not, however, mean you shouldn't know other languages, or should even necessarily work on personal projects in these languages. And I would certainly not recommend learning any of them as a first language (except maybe C#).
Thank you very much for the replies. As a follow up question, which parts of the game are typically done with scripting languages, or are they mostly used for tools when developing the game and not in the final product itself?
Thanks again,
Mike
Thanks again,
Mike
When scripting languages are used, they are usually reserved for parts of the code that are not performance-intensive.
E.g. Things like physics or rendering require a lot of computation, so they will be done in C++.
But high-level game-play rules might not be so complex
e.g. A game design might need some code to "Spawn a monster when the player enters this area". The physics code (C++) figures out if a player is in the area or not, and if so, then a script will be executed. The script can then perform some simple game interactions, like close doors, spawn monsters etc...
Scripts are good for this game-play stuff, because a lot of the time it is actually possible to edit/tweak the script while the game is still running!
So generally --
Complex math / stuff that needs performance: Use C++ (or C, etc...)
Simple game rules / stuff that needs constant tweaking: Use a script
E.g. Things like physics or rendering require a lot of computation, so they will be done in C++.
But high-level game-play rules might not be so complex
e.g. A game design might need some code to "Spawn a monster when the player enters this area". The physics code (C++) figures out if a player is in the area or not, and if so, then a script will be executed. The script can then perform some simple game interactions, like close doors, spawn monsters etc...
Scripts are good for this game-play stuff, because a lot of the time it is actually possible to edit/tweak the script while the game is still running!
So generally --
Complex math / stuff that needs performance: Use C++ (or C, etc...)
Simple game rules / stuff that needs constant tweaking: Use a script
Are you wanting to know what languages are common in the industry because you want to prepare yourself to actually work in the industry? If so, then, as has been said, you should become proficient in C/C++.
However, if you merely want to work on your own personal projects and either don't plan on working professionally in the industry or do plan on working professionally but not for many years, then there's no reason to use C/C++ just because it's what the "experts" are using.
These days, there are supporting game development libraries for just about all the popular languages. Heck, there's even some stuff for Scheme.
So if your goal is strictly to make a game, you should pick a language as you would a tool. Choose a language that will facilitate the development of the project most effectively. There's immense support for and a fantastic, dedicated community surrounding XNA. XNA is also designed with C# in mind, which is a very clean language built on top of the rich and robust .NET framework with roots in Java and C++. Combined with the free Visual Studio Express Editions, I really can't think of a development environment more friendly to people wishing to get their feet wet in game development.
As clean and pragmatic as C# is, perhaps you want something a little more exotic. Ruby is a fascinating, absolutely purely object-oriented language. It also has quite a dedicated user-base (to the extent that some call themselves "Ruby programmers" rather than "programmers"--very telling language, if you ask me, but I digress). Here is a very well-written and somewhat humorous online book dissecting the Ruby language. Take note that it's written for programmers with a decent amount of experience. It doesn't teach programming but the syntax and peculiarities of Ruby only. To facilitate rapid and robust 2D game development in Ruby, you might like Gosu, which is a minimalist game library that provides the essential backbones needed in any game and not much more. What it does provide is provided cleanly through a well-designed interface.
For the record, Gosu also can be used with C++.
Ruby is an interpreted, dynamically-typed language. In general, it's a very dynamic language in all aspects. Its cousin in Python. How to Think Like a Computer Scientist is a neat introduction to programming using Python. In addition, the PyGame library is analogous to Gosu and provides the basic framework needed to put together a game in Python.
SDL.NET is a wonderfully clean wrapper around vanilla SDL for the .NET platform. It would work with any language that runs on .NET (such as C#).
If you really want to try something exotic, you could look at OCaml--a very high-level, type-inferred functional language with algebraic data types, an object system, and pattern matching--and OCamlSDL. Community support for OCaml is less than ideal, I'm not sure of the quality of OCamlSDL, and it's difficult to set up a decent OCaml development environment (the best I've found is an OCaml package for Emacs, and Emacs is not for everyone). So, despite my having a very high opinion of OCaml as a language, I really don't recommend this, but I thought I'd mention it as a possibility.
On the other hand, Microsoft Research offers F#, which is a native denizen of the .NET family of languages and derives from ML. In particular, the syntax is similar enough to that of OCaml that certain OCaml programs can be compiled by the F# compiler. Being a first-class citizen of the .NET world, F# has automatic interoperability with all .NET languages. It's also possible to use the previously mentioned SDL.NET with it or even SlimDX, a .NET wrapper for DirectX.
F# with .NET and SlimDX, XNA, or SDL.NET would be a very interesting and, I suspect, rewarding experience. It would probably be a far preferable choice to OCaml simply because F# is able to use the vast amount of .NET libraries out there already.
The point is that you really shouldn't choose C/C++ just because it's what the industry is using. There's a vast world out there; explore it a bit while you still can. [smile]
However, if you merely want to work on your own personal projects and either don't plan on working professionally in the industry or do plan on working professionally but not for many years, then there's no reason to use C/C++ just because it's what the "experts" are using.
These days, there are supporting game development libraries for just about all the popular languages. Heck, there's even some stuff for Scheme.
So if your goal is strictly to make a game, you should pick a language as you would a tool. Choose a language that will facilitate the development of the project most effectively. There's immense support for and a fantastic, dedicated community surrounding XNA. XNA is also designed with C# in mind, which is a very clean language built on top of the rich and robust .NET framework with roots in Java and C++. Combined with the free Visual Studio Express Editions, I really can't think of a development environment more friendly to people wishing to get their feet wet in game development.
As clean and pragmatic as C# is, perhaps you want something a little more exotic. Ruby is a fascinating, absolutely purely object-oriented language. It also has quite a dedicated user-base (to the extent that some call themselves "Ruby programmers" rather than "programmers"--very telling language, if you ask me, but I digress). Here is a very well-written and somewhat humorous online book dissecting the Ruby language. Take note that it's written for programmers with a decent amount of experience. It doesn't teach programming but the syntax and peculiarities of Ruby only. To facilitate rapid and robust 2D game development in Ruby, you might like Gosu, which is a minimalist game library that provides the essential backbones needed in any game and not much more. What it does provide is provided cleanly through a well-designed interface.
For the record, Gosu also can be used with C++.
Ruby is an interpreted, dynamically-typed language. In general, it's a very dynamic language in all aspects. Its cousin in Python. How to Think Like a Computer Scientist is a neat introduction to programming using Python. In addition, the PyGame library is analogous to Gosu and provides the basic framework needed to put together a game in Python.
SDL.NET is a wonderfully clean wrapper around vanilla SDL for the .NET platform. It would work with any language that runs on .NET (such as C#).
If you really want to try something exotic, you could look at OCaml--a very high-level, type-inferred functional language with algebraic data types, an object system, and pattern matching--and OCamlSDL. Community support for OCaml is less than ideal, I'm not sure of the quality of OCamlSDL, and it's difficult to set up a decent OCaml development environment (the best I've found is an OCaml package for Emacs, and Emacs is not for everyone). So, despite my having a very high opinion of OCaml as a language, I really don't recommend this, but I thought I'd mention it as a possibility.
On the other hand, Microsoft Research offers F#, which is a native denizen of the .NET family of languages and derives from ML. In particular, the syntax is similar enough to that of OCaml that certain OCaml programs can be compiled by the F# compiler. Being a first-class citizen of the .NET world, F# has automatic interoperability with all .NET languages. It's also possible to use the previously mentioned SDL.NET with it or even SlimDX, a .NET wrapper for DirectX.
F# with .NET and SlimDX, XNA, or SDL.NET would be a very interesting and, I suspect, rewarding experience. It would probably be a far preferable choice to OCaml simply because F# is able to use the vast amount of .NET libraries out there already.
The point is that you really shouldn't choose C/C++ just because it's what the industry is using. There's a vast world out there; explore it a bit while you still can. [smile]
The other people have made good points already so I'll just talk about what I've done personally and what's worked for me.
To be honest I personally believe is learning the hard stuff first because I want a challenge and because the more I have to do by code and the less a frame work does the more I understand how a program runs. I started off with scripting then I went on to basic back when Visual BASIC was being widely used for new comers. I didn't enjoy the lack of power for games so I went for C++ and was blown away from how much you had to write and all the memory you needed to manage, ect... I tried out C# when it was out and I found it really easy to use with XNA, but I wanted more control, so now I'm sitting here again still using C++. I don't use C++ because it's what "Experts" use, but it's because I want to be in the most amount of control with my code and how my program works.
Learn C++ and trust me, going onto C# or BASIC, ect... will be a breeze, you will just have to change some coding habits and understand that some languages will deal with the hard stuff for you.
Just my personal preference to learning.
To be honest I personally believe is learning the hard stuff first because I want a challenge and because the more I have to do by code and the less a frame work does the more I understand how a program runs. I started off with scripting then I went on to basic back when Visual BASIC was being widely used for new comers. I didn't enjoy the lack of power for games so I went for C++ and was blown away from how much you had to write and all the memory you needed to manage, ect... I tried out C# when it was out and I found it really easy to use with XNA, but I wanted more control, so now I'm sitting here again still using C++. I don't use C++ because it's what "Experts" use, but it's because I want to be in the most amount of control with my code and how my program works.
Learn C++ and trust me, going onto C# or BASIC, ect... will be a breeze, you will just have to change some coding habits and understand that some languages will deal with the hard stuff for you.
Just my personal preference to learning.
Quote:Original post by nilknOCaml has two sets of SDL bindings and two sets of OpenGL bindings. It has an emacs mode called Tuareg, which I tend to find perfect (but I can use emacs, which is not everyone's case) and an Eclipse plugin for the heathens.
If you really want to try something exotic, you could look at OCaml--a very high-level, type-inferred functional language with algebraic data types, an object system, and pattern matching--and OCamlSDL. Community support for OCaml is less than ideal, I'm not sure of the quality of OCamlSDL, and it's difficult to set up a decent OCaml development environment (the best I've found is an OCaml package for Emacs, and Emacs is not for everyone). So, despite my having a very high opinion of OCaml as a language, I really don't recommend this, but I thought I'd mention it as a possibility.
However, OCaml is first and foremost intended to be 1° a showcase for language ideas (it's used as a basis for many language extensions that benefit from its fundamental framework and high-performance garbage collector) and 2° as a language for writing compilers and static analysis tools. Some of the extensions handle exotic things, such as parallel computation and financial derivative evaluation, but none are aimed at video games.
So I would suggest not using OCaml for practical game development either. You could use C#, but my personal suggestion goes out to Flex + ActionScript 3 right now [smile]
Quote:Original post by MrCpawI sometimes float in that direction as well. But I've always found C++ to be too large to satisfy me. I mean, it provides you with variables, arrays, complex control constructs, functions, classes, access control, globals, pointers, templates, dynamic binding, multiple inheritance, RTTI, exception handling... none of which can be customized and, most of the time, explored in further detail without leaving the domain of the standard.
I don't use C++ because it's what "Experts" use, but it's because I want to be in the most amount of control with my code and how my program works.
So, I tend to use LISP and Forth. Both languages are extremely simple. LISP describes a syntax for defining lists and escaping lists, and builds several other constructs on top of that (but you can rebuild themselves if you want to). Forth describes a stack, and operations for pushing and popping elements from the stack.
Both languages are reasonably efficient. In fact, despite providing you more control than C++, LISP can be and has been used to achieve competitive technological advantages over firms who were using other things, and even had at one point in time hardware dedicated to running it!
So, I really don't understand how you can accept using a language like C++, which does so many things for you that you lose a huge amount of control over what your program really does.
Quote:Original post by Wolfdog
At the current time C/C++ is the most common language.
Which is quite unfortunate, because C/C++ code is usually neither valid C code nor idiomatic, elegant C++ code.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement