As one following these fora more or less on the sidelines for some time, I have noticed a very common question phrased in many different ways: What language should I choose?
The result of asking this question will most likely be a lot of people giving the response that the language they use, is the right one. If you keep reading and you’re so lucky that no flame war Is started you can pick exactly the language you actually would have liked, but the chance is that you did not get any useful feedback.
So why do I write this text? Am I not just as biased? And here the answer is of course a big “Yes”. However, I dare to pretend that I at least have some knowledge based on my education and work as a software engineer.
So, to be up front with my own bias I will breafly talk about my own journey of languages. I started out in web development and back then It came down to either ASP or PHP. I did not like the PHP guys, so ASP it was. I know, very rational. From there it whent to Visual Basic .NET and later C# (C-Sharp) which I have held to for years with the sporadic look into languages such as F#, C, Go a bit of Python, and of course Java.
Now you know where I come from language wise, but before I start to describe why my pick is so much better than all the rest I will put up some points to keep in mind when you have to pick a language for your future game.
The first and most important point: Pick a language that you actually would like to use. If you e.g. pick C#, but hate it for whatever reason the chance is that you will never get very far.
Second, pick a language that is established and well used. By doing so you can get much more help and speed up development by using third party libraries. Developing everything on your own is not worth it and it is not fun to develop your own basic data structure before you can implement the next cool feature in your game.
Third, Audiogames.net is not your place to go when you need help with a specific problem not related to audio gaming. Go to Stackoverflow and google. They are your greatest resources and even though I have developed for years I use them daily. In short, learn to use google!
Fourth, If people starts talking about performance, ignore them. They probably do not know what they are talking about. Most languages can be used for game development unless it is a huge and complex game which you will not develop until you have years of experience anyway.
There is of course many points which could be added, but these are those I believe are the most important. So now, let’s get started with some of the languages.
Language: C# (C-Sharp)
Now, if you have read all the above you will not be surprised that I think this is the best pick. So, why is this so great? You can develop pretty much everything in this language to what ever platform you would like. There are lots of frameworks and libraries out there supporting everything from Data-mining, web development to hard core game development, e.g. take a look at Unity, which is a high level framework / platform or at Monogame, a framework that is a lot simpler to get started with and let you develop your own game engine. The language is widely used and is itself still highly developed on. All of this makes it easy and quick to get a new game going.
Why is this language here? Because it is great for those who just want to develop a small and simple game. There is no reason to pull down the heavy stuff from the shelf like C# and C++ if what you want to develop can be done with a few hundred lines of BGT. It is easy to learn and you can get great results with its very limited resources. However, if you want to develop a large game with networking and 3D sound BGT will hit a wall
This is a very versatile language and it is easy to get started with due to its dynamic typing. This means as a new developer you do not have to consider the type of your variables Just as often as with a strongly typed one such as C#, Java and C. However, this can also become a liability when your game starts to grow in complexity since it can be hard to find bugs.
A benefit of Pythons approachability is that a lot of people knows it and you can find many libraries out there, also, you do not have to learn about wird characters everywhere and put semicolons after most lines which can be very annoying and look somewhat irrational when you do not know the reasons behind it.
Language: C / C++
First, C++ is more or less build straight upon C, so I will talk about these two as one (Anyway, no one in their right mind would develop a game in just C). I will not recommend this to any new developer since the learning curve will be close to straight up. This is HARD. However, if you get the hang of this you can develop some great and very complex stuff. You can find support and libraries for pretty much everything, but I warn you, even as a professional, I would not develop anything in this unless I absolutely had to.
Just like BGT, Java- and Type-script can solve a lot of the challenges faced when developing a small game, just be aware that when the code base starts growing you might want to go look somewhere else, even though these two do not have the same limitations as BGT when it comes down to libraries.
Language: All the rest.
Remember that there is more than hundred languages out there, and mentioning everyone is impossible. One such as Java is very close to C# and the older Visual Basic languages is just fine, even for complex games, but I do not think that many new developers would pick this since the field of programming languages have moved a lot since back then.
A language like Go is still rather new even though it starts growing in the game development community, it is still very small. Also, it had some issues with garbage collection which made the game lag at times and I do not know if they have fixed this yet.
The language Rust is basicly a replacement for C and unless you are a professional with a very specific need you would not develop a game in it.
At the end I will recommend that you consider making your game or parts of it open source by uploading it to Github, by doing so other people can look and learn by your code and so can you with theirs. There is no reason to reinvent the wheel if someone already have done it. I am aware that this can be a hard decision and there can be a lot of good reasons, but at the end you make it easier for people to develop great things by doing so, including yourself.
I hope this can help some people out there and if you have feedback it is very welcome!