C++ Game Programmer Internship At
Behaviour Rotterdam

Summary

Overall, I am very satisfied with the way my internship went. I was able to gain a lot of experience in a lot of different fields. Next to the obvious gain of skills, I was also able to get to know a lot of new very talented people that share the same passion when it comes to game development.

What have I learned?

Next to the big amount of experience I have gained concerning the different platforms and tools, I was also introduced to much bigger and complexer code-bases than I had previously worked with. Getting familiar with a code base of this size is a bit of a lengthy process, and it is also quite important to know how the game itself works. Therefore, Behaviour Interactive advises people to play the game for a bit before actually getting started in the development process.

Project Scopes

This section is something that I obviously already knew, however, there is still something to be said about this. During my internship, I had a lot of times where I felt like I needed to “prove” myself. In some cases this caused me to spend a little bit too much time on a specific task, as to where if I would simply ask this to a team member who has much more experience in that field than I do, I would still gain the same knowledge, whilst the task could be cleared more quickly. This is something that I have definitely learned from these experiences.

Teamwork makes the dream work

Perhaps one of the most valuable things I was able to experience during my internship is being able to work on different projects. Especially since each project is different, resulting in different ways of handling their workflow, planning, communication etc.

Now, one thing we have in common for all projects is that we mainly use Slack as our communication channel. But if we have a look at the version control systems this is where some variety is coming up. For example, we have some projects that are using Perforce, whilst others are using Github. Tightly coupled to the version control system is the review system. For the projects that are using Perforce, we are usually using Swarm as our review channel. Whilst for our projects that are using Github, we make separate branches on which we request a merge request via Github itself to put it up for review.

If we then have a look at project planning there are 2 big players there as well. I noticed that the bigger projects usually use Jira, whilst the smaller projects usually stick with Gitlab. Overall, this was a great learning experience, especially considering that I had not worked with some of these tools before.

Different approaches

Something else I noticed was really appreciated in the company was the ability to work independently, if you have a problem, you are able to look for the solution yourself. This is of course taking the fact that you must not be afraid to ask for help into consideration as well. On top of this, something the company was really happy to see was my ability to adapt quickly. During my internship I was relocated on different projects a few times, where this skill really proved useful.

Independency and Adaptability

During my internship I was able to learn a lot of different things, this being on almost every aspect you could imagine. Obviously, my technical skills have evolved by quite a bit, especially taking into account the fact that I was able to develop on a lot of different platforms. This way I was able to discover a lot about the working of Android, Nintendo Switch, Xbox One and even Playstation 4. Each platform also comes with its own set of tools that you can use for specific use cases. For example, when it comes to profiling, each platform handles this differently, and it was super interesting to be able to experiment with these different tools.

Platform Development

Next to this, one major change for me was the fact that most of the projects I’ve worked on are not strictly object-oriented, but rather data-oriented. This was something I had no experience with at all, and took quite some time to get used to as well. However, after a few different tasks, in different settings of the codebases, I was able to follow the principles of data-oriented programming.

Data-Oriented Programming

So this is a bit of a weird topic to mention here, but in past experiences, besides using engine- or library-specific documentation to get a little bit more information about a specific function and/or class, I would mostly use Google for other questions. However, bearing in mind that I was working on a lot of different platform-specific features, Google usually isn’t the best place to start looking. This being because almost all of these platforms’ information is hidden behind NDA walls. This forced me to look at the documentation and platform-specific forums more.

Documentation vs Google

Another part of game development I was involved with is the marketing aspect. During my internship one of the projects released a demo of the game. Just before, and following up, the release of this demo, we started to spend some time and thought into marketing the game. From then on, we had several marketing meetings to discuss what content we would post, and to plan these posts beforehand. On top of that, we also used these meetings as a moment of reflection. In other words, we had a look back at the previous period to see what went well, and what went less well. For me this part of game development was something I had no experience with whatsoever, but is still something that I am very interested in. Especially considering the fact that I am interested in potentially starting my own studio somewhere in the future.

Marketing