Preparing for an internship or a job as a game programmer

Are you at the start of your career as a game programmer? Or do you want to prepare for a new chapter after graduation? In this article, we want to help you prepare for your career as a game programmer. You can use the information in this article to find an internship, to prepare for a job interview or for your self-development as a programmer.

In this article we answer the following questions:

  • At Grendel Games, how does a typical day of a game programmer look like?
  • What type of game programmers does Grendel Games have?
  • What makes a game programmer stand out?
  • How can you improve yourself as a game programmer?
  • What do employees expect in a game programmer’s application?

At Grendel Games, how does a typical day of a game programmer look like?

An internship or a job as a game programmer looks different at every company. In a large organisation you often have a very specific task. Grendel Games is a small organisation that currently employs 3 game programmers. That is why as a game programmer at Grendel Games you have a broader range of tasks.

As a game programmer, you work in one of the three development teams that consist of a designer, an artist, and a programmer. Each team oversees several projects carried out in two-week sprints.

Generally, the game programmer mostly busy with building new features. The game designer has an idea for a new functionality and asks the programmer to build it. Building a new feature consists of several steps:

  • Collecting requirements: the functional requirements are often provided by the game designer. Think of technical requirements such as “the game must run more smoothly on smartphones”. This can influence the solution direction you choose.
  • Design: as a programmer, before you start developing, you need to have a good idea of how you are going to implement a new feature. For complex features, you can document this design (in text or UML). You can then also discuss with other programmers whether this is the right approach.
  • Development: a large part of the work is the development of new features for serious game. You write codes for the new idea and ensure its implementation in the game.
  • Testing and improving: an important part of the work as a game programmer is detecting problems in the code and then solving them. Grendel Games considers it important that the programming work is well put together and reusable. Later in this article, we will tell you more about what this means.
  • Maintenance: the new feature is developed, tested, and improved. To ensure that the code continues to function properly, it needs to be maintained from time to time. It is possible that the code no longer works properly when implementing a new code.

In addition to working on new gameplay features, you are also involved in developing tools that the end-user does not see. These are tools that make the development of new features easier.

What type of game programmers does Grendel Games have?

There are dozens of game programmers. large organisations especially have different game programmers for various functions, such as A.I. programmers, graphic programmers, audio programmers, and much more. At Grendel Games, we keep it simple. We make a distinction between two types of game programmers: gameplay programmers and engine/system programmers:

  • Gameplay programmer: as a game programmer with a focus on gameplay features you are creating features that the end-user sees. You are involved in developing, testing, improving, and maintaining gameplay features. You also work a lot on improving interaction with users: make adjustments in the code to improve the game experience. An example of this is ‘Coyote time’ in platform games. This concept is explained here. As a gameplay programmer, you can move around the target group and know what tricks you can apply to make the game feel good.
  • Engine/systems programmer: this type of game programmer is more concerned with the work ‘under the bonnet’. You develop complex systems that make it easier to develop new gameplay features. You also make sure that games run smoothly and that the development of new functionalities goes faster. Grendel Games mainly uses the Unity game engine and this is sufficient for most of the games we develop. However, it often happens that the engine needs to be modified or expanded with a new gameplay feature. As a technical game programmer, you must investigate the requirements for the realisation of all the plans for a game. You are expected to be analytical, with organized and structured thought patterns. You know how to write neat code and build systems that are reusable for other applications.

These are the two types of game programmers that are most common within Grendel Games. Because we are a small company we are often looking for programmers who can handle both variants. In other words: you have basic knowledge in making gameplay features and complex systems and are specialised in one of the two.

What makes a programmer good?

If you read this article, there is a good chance that you are currently studying to become a game designer or a graduate looking for a job as a (game) programmer. You have gained a lot of theoretical knowledge and have probably already built several games. Super good! In this paragraph, we want to take you into the skills that, in our opinion, make a game programmer outstanding.

First of all, it is very important that your codes are not only good but also neatly written. A game can be incredibly cool, but that does not mean that the code is also well written. A neat code is maintainable, readable, and reusable. One principle we apply when writing code is DRY, which stands for ‘Don’t Repeat Yourself’. If this principle is applied correctly, the code can be reused without having to rewrite it.

A good programmer does not make things more complicated than they are. Two principles are important. The first is KISS: Keep It Stupid Simple. This means that it is wise to write code as simple as possible to avoid any problems. We also know YAGNI, which stands for ‘You Aren’t Gonna Need It’. Programmers are often perfectionists. Just write that extra piece of code to make a feature perfect! But is it really necessary? The YAGNI principle states that you should only create a new feature when it is really needed.

Analytical thinking helps programmers to work faster and achieve better results. Suppose you wrote a code for a new level last month and it works properly. In the past four weeks, the game has been expanded with new features – including new code – and suddenly last month’s code no longer works. A good programmer knows how to identify a problem quickly by drawing up an action plan and solving the problem.

If as a game programmer you have a good knowledge of mathematics, you have a head start on the rest. Especially knowledge of vector mathematics comes in handy as a game programmer. When programming games, situations often occur in which there is a 2D or 3D space and the player has a limited field of vision. It is then necessary to calculate whether, for example, an enemy is in the field of vision and the player is able to shoot at the enemy. In short: maths knowledge = bonus points!

Some things only become good with experience. If you are still studying or have just finished your studies, you probably don’t have a lot of experience yet. That is not a bad thing. We have to start somewhere! Still, we notice that a game programmer with experience not only detects and solves problems quickly but also knows how to prevent them by designing and structuring code properly. In the next paragraph, we will explain how to expand your portfolio and get more experience as a game programmer.

How can you improve yourself as a game programmer?

You now know what type of game programmers there are within Grendel Games and what makes a game programmer good. But of course you also want to know how you can improve yourself. In the next section, we will answer that question. In short, there are two things you usually have to do: try and learn (from others)!

Challenge yourself with complex projects

As described, experience is important as a game programmer. The more games you have made, the more problems you have encountered (and solved), and the better you become! What also helps is that you have experience with complex games that require more programming. An endless-runner game (such as the dino-game from Google) is a game mode that requires little programming. There are few events in the game. The speed in the game is constant and there is one level. One button is needed that allows the dino to make just a movement to advance in the game, namely: jumping.

We advise you to really challenge yourself. Try to program a game where several consecutive events have to be programmed. A game like Tetris is already quite a step forward because the code for this game is a lot more complex. In Tetris, blocks can be combined, blocks can to disappear, then the original block may have to fall further down and a complete row may have to disappear. All influences as a result of one push of a button by the player.

Another example of a game mode that is more complex to create is RTS games. Think of Age of empires or Command and Conquer. Here too, you will find more movement possibilities and objects – such as buildings, trees and resources – that make it more difficult to program. So we advise you to try making such games. If you start with these, it doesn’t even have to be perfect graphically. It is best to use free assets or develop a game with 90% grey cubes. In addition, you do not have to build a complete game. You can also make a part of it in the form of a demo, as long as the code behind it is correct.

Learn from others: read and talk about programming games

You don’t have to reinvent the wheel! The programmers at Grendel Games have learned an awful lot by sharing experiences and engaging in discussion. So share your work with others and ask what they think of it. You will find that you will come up with new ideas and write advanced code.

Another way to gain knowledge is to study articles and videos. There is an awful lot available on the internet. To give you a start we have put together a list of our favourite articles/videos. The following topics are very instructive:

  1. Separation of Concerns (practically explained in a video)
  2. Seperation of Concerns (a good, more in-depth explanation in addition to the video)
  3. Don’t repeat yourself
  4. Series of 13 videos on different topics

What do employees expect in a game programmer’s application?

Are you looking for a job as a game programmer or are you about to apply? Then take a good look at what is asked for in the vacancy. Grendel Games sometimes has vacancies for game programmers. This also applies to internships. Take a look at our vacancy page for more information.

At Grendel Games we ask for the following items in your portfolio:

 

  • CV + motivation letter. Please also let us know who you are, what your passions are and what your speciality is. Remember paragraph two: what type of game designer are you or do you want to become?
  • A representative portfolio. This means that the projects you mention are equivalent to your current skills and level of experience. Did you write a code for a game for a school project 4 years ago and do you think you can write the same code much better today? Then don’t include it in your portfolio. Show your best work.
  • Show code! Don’t only explain the game or what you made, but also show what code you wrote.
  • Preconditions: was it a group or individual project? How much time did you have for the project? What was your responsibility?

Finally, we want to make sure that everyone codes differently. The standards for code (such as the list of articles in the previous paragraph) are simply the opinions of specialists. Do you disobey these standards and write codes differently? Then explain why you do it that way and what the advantage is.

tim-laning

We hope that this article has helped you on your way to a job or an internship as a game programmer. Do you have any questions? Feel free to contact us!

Share this post on:
TwitterLinkedInFacebook