Job title: Gameplay Programer
Employer: Ubisoft Annecy
Year of graduation: 2018.
Supervisor: Vladimir Čeperić/Zoran Kalafatić
Study profile: Computer science
Hi! My name is Patrik and I’m currently working as a Gameplay Programmer at Ubisoft Annecy. In my free time I like to play football, eat french food and try to cultivate tomatoes on my balcony.
How did you find your first job after FER?
It took me several attempts to get my first job. In the summer between my 4th and 5th year of college I was scrolling through the list of available summer internships and stumbled upon CroTeam which at the time sounded interesting. I contacted them and did an interview. They were so amazed by my skills that they refused to hire me and forwarded me to Gamepires, a company they collaborated with on the game SCUM. They agreed with them and told me to “learn C++ and try again”.
Considering they already showed me the offices and introduced me to everyone it would have been awkward if I never returned so I decided to learn C++ and try again.
I spent the next year learning C++ and working on a small game to prove I have actually learned something. In the meantime, I graduated, spent my last free summer before counting paid leave days and came back for another interview. And that’s how I stayed in Gamepires for almost 4 years.
When and how did you decide that you wanted to work in the field you are currently working in?
When I enrolled in FER way back in 2013 I had absolutely no idea what I wanted to do in life. Programming and electrical engineering sounded equally interesting to me. After two semesters I decided I preferred computers over electricity and chose computer science. As the semesters went on I was more and more sure I wanted to be a programmer yet I still had no idea what I wanted to program. Most fields I encountered in college seemed boring until I found CroTeam and Gamepires. That’s when I realized game development is a perfectly plausible career option, even in Croatia.
After my two failed interviews I decided to give video games a chance. The more time I spent on my (never finished) first game the more I was amazed by how my code, which is basically just text, can produce something so visual and interactive like a video game. Every change in my code added a new feature to the game so my character went from just existing on the screen to jumping platforms, shooting a bow and destroying robots (very original, I know). When I finally landed my first job and began working on a real game, played by real people other than me or by my brother I have decided that game development is definitely the career path for me.
In my relatively short career I have met many people who loved games and wanted to make their own so they decided to learn programming, modeling or any other skill that would make that possible. I personally just loved programming while games were something I really like to program. And they also pay me to do it.
Are you a private gaming enthusiast? Has working in the gaming industry reduced your love for games when you know what is hidden behind them?
My whole life I’ve been playing games but I wouldn’t call myself a “gamer”. I think my career actually encouraged me to play more games, partially out of professional curiosity, and partly because working surrounded by people who love games you discover so many new games you’d like to play. The fact that Ubisoft employees can play all of their games for free also helps.
A potential downside of my career is the professional deformation where while I play games I also think about “how they did that” and so potentially make the game less magical. I also subconsciously look for bugs all the time.
What’s your typical working day like?
Game development is a highly dynamic work environment and varies between casual work when we have the time and utter chaos when we get closer to deadlines. It also depends on the type of game and how the company organizes work.
The first thing I usually do when I arrive at work is syncing – getting the last version of the code and assets (3d models, animations, audio, …) and running the build process. Fortunately I have a convenient script that does all the work for me in around 15 minutes, just enough time to make a coffee and eat a croissant.
In the meantime I scroll through some emails and my Teams chat, primarily to see if there’s something critical that has to be fixed. My mail serves as a central hub where I get notifications on more or less everything relevant including my tasks, various reports, critical bugs etc.
My average day pretty much consists of working on my tasks which is sometimes interrupted by meetings or play sessions where we play the latest version of the game. Since I am no manager my meetings are mostly weekly team meetings or talking to my colleagues in various Ubisoft studios across Europe.
What are some of the challenges you face in the workplace?
Video games are some fairly complicated software. A game has to run at 60 frames per second, often contains multiplayer elements which means programming the network layer and finally has to actually look good and be fun.
The hardest problem I solve every day is how to do my work without breaking the game. Modern games are full of interconnected systems which make a complex whole and have to be taken into account when developing. Observe this simple example – I have to make the character walk. First I have to make the character actually move and react to the player’s inputs. We also want the character to be nicely animated. It shouldn’t fall through the floor or walk through walls so we need some kind of physics simulation. If it is a multiplayer game we have to synchronize the position and movement to other players using the network, possibly the most complicated part of the game. Finally the walk has to actually look and feel good. All of these components have to be considered as early as possible to avoid realizing the architecture doesn’t work with the requirements after spending a month on developing it.
Developing a game requires various disciplines which along with programmers include 3D artists, concept artists, audio engineers, testers, project managers with whom I work with every day. It is important to understand that most of those people aren’t programmers so you need to adjust the communication so we all understand each other and finally make a good game. Also, working in a big multinational company involves working with colleagues of different nationalities and, more importantly, accents.
What skills and knowledge do you use in your work? What did you learn during your studies, and what did you learn independently or afterwards?
I have learnt most of the skills I find essential for my work outside the university. The most important thing FER gives its students are excellent foundations which we can build on when we decide what we want to do as a career. The whole IT industry progresses at a rapid rate and the skills we are learning today as “new” or “cutting-edge” can become outdated the very next year. That’s why it’s necessary to continuously work on your knowledge and adapt to your environment.
The two most important things I got from my studies is a broad enough knowledge to program whatever I want and enough time to decide what it is I want.
My career in the game development industry basically started by picking up the book “C++ demystified” and learning enough C++ so someone would hire me. No one taught me C++ nor how to program games but they did teach me some C, Java and Python, fundamentals of computer graphics and lots of mathematics and physics. I have also learned how to use the most important tool in a professional programmer’s arsenal – google.
Today, there are game engines readily available to everyone such as Unreal Engine or Unity with tons of useful tutorials and documentation on the internet. Everyone can try and make their own game for free and tackle the problems as they come.
What advice would you give to students who are considering a career in your field?
To try and not give up easily.
In my previous answers you have seen I needed several attempts to discover what I needed to learn to get my first job in the industry. I have also mentioned that video games are complex software which means there are a lot of different jobs a programmer can do. I am a gameplay programmer focusing on game systems which means I mostly work the game logic. In my company, however, we have programmers working on the engine or the graphics pipeline (includes a lot of low-level coding not necessarily related to the actual game itself), some work on the network layer of the engine and the game or some of the many tools we use to support the development such as editors, scripts etc. Even within gameplay programming you can specialize in areas such as artificial intelligence (not the scientific one but the one controlling characters in the game instead of a human player).
In short, if you are at least slightly interested in game development, download one of the available game engines and try to make a small game. I personally recommend Unity for complete beginners for it’s excellent tutorials and documentation and the fact that it uses C# which is a bit more user friendly than C++. If you are more familiar with C++, try Unreal Engine.
If you are interested in graphics or engines, try building your own simple engine from scratch and a small game using it (that was precisely my approach when learning C++).
When you believe you are ready, contact one of the game studios in Croatia. Even if you fail the interview, they will definitely tell you what you need to learn and work on to get the job. In my personal experience, Gamepires is a company where you will work a lot but learn extremely quickly from highly experienced game developers.