Challenge in the Game Dev Industry: Switching From C# to C++

Many developers say that making video games is more interesting than playing them. Some people like working in good company, some people are inspired by the creativity they have the opportunity to show, while perfectionists enjoy editing and optimizing the system. If you want to be successful in the game development industry, switching from C# to C++ is a must. And, we will explain how to do this.


In addition to all the above, there is an irreplaceable feeling of satisfaction at the moment when the long-term work of a great team bears fruit and when millions of players set out to explore the world whose parts have your ideas and efforts built in them.

In most western countries, the video game industry has been developing intensively for several decades. There was often a situation where many started their careers in this field because at that time their dream job did not exist. The same goes for developers who devoted themselves to building websites. Of course, not all websites require technical skills for their creation. For a long time, there are website builders on the Internet – online platforms for website designing and creation – that help people with no prior experience to enter the programming world. However, such a case is not with the game dev industry. The transition we are talking about here can only be done with the help of experts and possession of technical inclination.

C++ in Game Development

Probably the first information that programmers learn about the development of AAA games, i.e. games made with the help of high development and rich marketing budget, is that they are created in the programming language C++, while languages such as Java and C# are used for programming most of the other software. This seems like a big obstacle to many developers, and that is why discussions about the possibility of using other programming languages in the development of AAA games are often initiated.

There is one obvious reason for choosing C++ with which such discussions usually begin and end. It is the performance of executing programs on a virtual machine that cannot reach the execution speed of code written directly for a particular platform.

For ‘lighter’ video games, this may not be a crucial issue but for AAA games that strive for a better display of the created world and where involving players in them is the key to gaining an unforgettable experience, it is important to use the full potential of processors, memory, and graphics cards.

In addition to this, there is another reason that is not mentioned so often. Support for new technologies often comes with a delay even in drivers, so it would be unrealistic to expect virtual machines and compilers of higher programming languages to immediately implement support for everything that appears on all platforms. Therefore, lower programming languages are used for optimal use of targeted platforms.

Developers can come across numerous examples where working on AAA games means working with the latest technologies. At the same time, this is a somewhat euphemistic assessment of the term ‘latest’ because it is often worked with as yet unpublished technologies. One example would be the use of non-released graphic cards while there is no information or leaked images about them yet. Finally, a somewhat more comprehensible example could be future generations of game consoles for which non-released games are being made, and which need to be fine-tuned and optimized for them long before the consoles themselves are released.

Adventure

The convenience of software development in the C# programming language and the systematic nature of the entire environment take a heavy burden off the back of the engineer and make his journey through technical challenges much calmer. Because of that, the idea of switching to C++ seems for many as an adventure that brings with it too much excitement. Realizing that many video game lovers and fans of their development are faced with the great temptation of thinking about this possibility, video game companies often decide to make this transition easier for anyone who wants to develop AAA games and has so far professionally used only C#.

Support programs of video game companies generally have several parts:

· mentors in the team
· team leader
· talks about the details of the C++ programming language

First of all, the programmer gets a mentor within the team he joins, who is in charge of getting the programmer acquainted with the project and the tools that are used every day. The mentor is also in charge of helping set up the development environment, which does not sound too interesting. However, an environment that allows hundreds of people from numerous studios around the world to work on one project at a time and on the same branch of code is, so to say, intriguing.

In addition to the mentor, there is also a team leader to help with any organizational issues and who takes care that everything goes according to plan. Team leaders have visibility at the project level and are usually a source of new and interesting information that the team receives on a daily basis and which often puts tasks in a broader context and deepens their understanding. For all team members, this information is priceless because the freedom in making their part of the game entails responsibility in making decisions that will directly affect the gamer’s experience.

All new developers making the transition from C# language participate in weekly meetings with more experienced developers about details from different areas of the C++ language. Senior team leaders within the studio are tasked with facilitating the transition to the new programming language, clarifying any concerns, and helping to better understand the new concepts. The new team member receives the necessary literature and is dedicated to the project for one part of the working day, and to C ++ literature for the other part of the day. These meetings are an opportunity to comment on topics from the literature, to connect with examples from practice, and to look at them in the light of applications in game development.

Experiences

The entire program of transition from C# to C++ takes a month. That much time is quite enough even for those developers who are interested in making video games but have not had professional experience in programming in C++ before. They all successfully join their teams regardless of the type of project and their previous levels of knowledge of the C++ language. Their programming experience helps them to take on significant responsibilities very quickly and have an enviable impact on the whole project.

In the end, it seems that despite the great differences in these two programming languages, there are no major obstacles when switching from one to the other. The biggest obstacle remains the fear of change, which can easily be overcome by the love of video games.