Motor programmer interview - Bruno Marcel
How would you define the job of engine programmer at KT? Can you tell us more about your role at Kylotonn?
We create new tools, new features, new visual effects, we also work on existing features to improve some things… And it’s really a team effort! For example, for the dynamic weather, one person coded the clouds, another the sun, and I make the interface that allows our graphic designers to work.
We write far fewer lines of code than you might think. We write some, but we also delete some. We spend a lot of time looking for bugs, and trying to reproduce them.
I have a tool engine profile, so I mainly work on tools used by other KT teams. For example, the Level Designers use my work a lot since I work on Splines, roads, crossings, walls, white lines…
I am less involved in optimization, we have other profiles that work more on performance, optimization, etc. For example, right now one of the engine programmers is trying to save memory space. It’s a bit more of a “thankless” job because it’s an indispensable role, but less visible.
One of the great benefits of working on the tools is working for the people at Kylotonn. We see the users of our work, and it’s easy to find out what they like and don’t like.
Kylotonn’s engine programmers are kind of the foundation on which a lot of the work is built. Let’s just say that if we miss something, everything gets turned upside down!
How is the engine developed?
We create new tools, new features, new visual effects, we also work on existing features to improve some things… And it’s really a team effort! For example, for the dynamic weather, one person coded the clouds, another the sun, and I make the interface that allows our graphic designers to work.
We write far fewer lines of code than you might think. We write some, but we also delete some. We spend a lot of time looking for bugs, and trying to reproduce them.
At Kylotonn, we work in “continuous integration“, which means that when we create a feature, there is no validation phase. Users work directly with what we just produced. So you should never publish your code on the database without someone else having reviewed it. It’s always good to have an external eye to see what you don’t automatically see, so that you don’t send a feature to the database that will make all the users crash!
What do you like the most about your job?
The social side! As I said earlier, when we work on the tools, the “customers” are the people inside Kylotonn. And I really like the contact with the other jobs, to see the direct impact of my work. Some people like the technical challenge of the job more. I especially enjoy asking myself “What can I do to make life easier for the people who will use the tools I create?”.
Tell us about your typical day?
My day always starts with the update of my database : I download all the modifications made since the day before. And then…I start working! It’s quite difficult to give a “typical day”. I usually make progress on my current task. Sometimes I do some debugging, which means that, if someone has a problem with one of my tools, I try to correct the problem. And then I have a few meetings. Once a week, we get together with the 27 people on the engine team and present what we’ve done during the week.
We also help each other a lot between the people of the engine team, or other jobs.
In a nutshell, we adapt ourselves depending on the needs and the tasks that need to be done.
Can you tell us about your background?
I started programming at the age of 8, with LEGO programmable bricks. It's a very visual programming language. On it I made a lot of "basic" stuff, like a candy detector that sorts candies according to their colour with a small optical sensor. Or a small remote-controlled tank... but it only fired once because I made a hole in a wall while testing it! And then lots of other things, robots that follow lines, a sliding paper clip, I made my tank follow people with a motion detector... I printed out my code sheets and did it on paper.
Then I started using Excel. I didn't play many video games when I was a kid, but my father used Excel a lot and was interested in computers. So I got interested in what he was doing, and one thing led to another and I created several little games on this software: I started with a game of belote, where I coded the drawing of the cards with a mini artificial intelligence. And then I made other card games like yugi-ho by scanning the cards to integrate them.
Finally, my parents bought me my first software that allowed me to develop 3D games: 3D game creator. And that's what really got me into programming. I made a Quidditch game for example, you could play all the roles. But the goalkeeper position wasn't very fun because my AIs sucked (laugh).
When the wii came out I worked on the integration of the Wiimote and Nunchuk...
In the third grade I started to play a small online game, "Landes Eternelles". I was very interested in this game, I wanted to know how it was made, how I could join the team too. As I had some experience in graphics, I managed to join the team as a 3D designer. I wasn't very good at it but it allowed me to touch everything, it was very enriching.
Finally, I put all the knowledge I had gleaned over the years into practice with diplomas: I was at the International innovative pilot schoolthen I was in LEPITA for 2 years, and I finished at theUTC. In any case, I think my career path has helped me a lot in finding work!
What qualities do you consider essential for your job?
To be logical, above all! And be good at math and physics. Because code is about describing the world on paper in a logical way. Good interpersonal skills are important to communicate well with colleagues and other professions. Understanding the world is great, but you also have to understand the users.
What was your favorite project to work on?
I really liked working on the Livery editor of V-rally 4. Because it was done in a hurry, and we started from scratch. I had a lot of freedom on this project and I had to do a lot of things by myself: shaders, engine logic, gameplay implementation, user design, menu creation, save management…it was a very transversal subject that allowed me to work on many features.
Any anecdote that you want to share?
Since I worked on the Livery editor, I worked a lot with the Vehicle Artists. And if you turn the camera around and look at the radio player, you'll see a series of names come up: those of the Vehicle Artists... and mine!
I've got another one: I coded a pop-up that invited our teams to report bugs when they found them. And... I put hearts everywhere, because I wanted to show love to our artists. Our lead wasn't too keen but I did it anyway. Well, we've never had so many bugs popping up as thanks to this pop-up! Conclusion: Put some hearts, and love your artists.