Who's this Klanger? An interview with Ulrich Kaminski, Game Engineer
August 25th, 2020
Ulrich has been working in the games industry for more than a decade. After developing a MMO for five years he created mobile games in a Berlin based games studio. At Klang he joined the DevX team and contributes to continuous integration, tools development and testing.
How are you doing Ulrich, in the current home office situation?
I am doing pretty good so far. Not commuting to work is a huge timesaver each day. That frees up some time I can spend with my son in the evening. Also it is great to work in board-shorts and tank-top during those super hot summer days ;) Fortunately, I have a nice setup at home. Two big screens and a height adjustable desk. It’s important for developers to have an ergonomic and comfy workspace. This enables me to be concentrated for a longer time without back or neck pain.
How do you normally introduce your role and responsibilities at Klang?
As a member of Team DevX I am responsible for everything related to improving the developer experience. That includes continuous integration, continuous deployment, automation and tools development. We try to automate tasks nobody likes to do over and over again.
Also a big part of our work includes automated testing. Beside integration tests and unit testing, which make sure the game features are working as expected, I am working on automated stress and load tests. This means that we have a set of constant game scenarios that are run every day. From those we get the performance of each game system like for example AI, production or house building. This enables us to react to every regression of performance, to provide players the best possible experience regarding performance.
How did you find your way to computational science and then the gaming industry in particular?
I started programming during elementary school in third grade. We had a small computer lab with a bunch of Commodore C64, the ones you connect to a TV and with tape drives. Just for fun I was doing little games out of ASCII art, like shooting space ships or a simple car racing game. Around 1997 I got my first own computer (Win95, 120MHz, 8MB of memory, you heard right kids). I spent pretty much every free minute I had on modding games like Duke Nukem 3D, Doom and later Quake and Unreal. Besides creating custom maps I also did full conversions adding new models, texture and sounds to the games.
Years later when OpenGL and DirectX were introduced to game development I got pretty much hooked on graphics programming, doing little demos with waving grass, cubemap reflections and realtime shadows. Also, I started developing a couple of my own 3D engines (I guess every developer did this back then before Unity and Unreal Engine were available). To support my ambitions I started studying “Computational Visualistics”, a mixture of computational sciences, human studies and engineering. They had a game development course, enabling me to focus even more on everything game development related. Once I finished my diploma I started working in a small game company, creating a MMO space game.
What caught your attention about SEED?
Definitely the technical challenges creating a MMO simulation game that runs 24/7 with or without the player being online.
What is your main focus for SEED at the moment?
The last couple of weeks I was working on a backend service that provides historical data of Seedlings. Let’s say you want to know how happy or hungry your Seedlings were over the last 10 days. The service provides that data, which can be displayed as a nice in game chart.
Another thing was adding automated load and stress test reports to our automation pipeline. This presents all the performance results as dynamic charts and tables on a webpage.
Right now, I am improving our in house developed game data editor. This enables our game designers to set up all the fundamental values, data and models needed to run and balance the simulation.
Can you give examples of any exciting technical implementations or planning recently?
We started using Blazor for frontends of our micro services. This makes it super easy and convenient to create a rich user experience for our game designers, QA, game masters or anybody else using our services. Things like dynamic tables, charts and diagrams can be added in a blink using C#. Really awesome framework.
What programs or other tools are you working with on a daily basis?
JetBrains Rider is my main IDE at the moment (love it), but I also use VS Code quite often for editing everything that is not Dotnet related. Terraform and Kubernetes are two other tools I use every day. Those use a declarative syntax to reliably provide the backend infrastructures and services needed by the game.
In what way do you and your close team have cross-team collaborations?
The outcome of our team influences the work of every other team. Automation removes the burden of recurring and boring tasks, speeding up development. Automated tests introduce reliability and certainty to the game. Tools can give developers an easy WYSIWYG (what you see is what you get) way of designing, creating and balancing and testing the game. We constantly exchange feedback with other teams to improve the development flow.
To what extent can SEED be challenging for you and your skills?
SEED is the most ambitious project I’ve ever worked on. Its target is nothing less than simulating the future of humanity and many of its aspects. Developing a simulation is complicated. You don’t know if the game is working or if it’s fun until most of the parts of the simulation come together. On top of that, creating a MMO simulation game is the hardest thing I can imagine. Developing a game with things in mind like tick rates, time synching, load balancing and sharding in a distributed environment is extra hard. I’ve never done something like that before and I have to learn new things almost every day. So yes, very challenging! :)
How do you improve your knowledge?
Mostly by reading books, watching talks on Youtube, or taking training sessions on platforms like Udemy. Also an awesome source of wisdom are my peers. We constantly exchange ideas, research results and new findings.
Where do you exchange work experience with others? What inspires you?
I regularly use platforms like Stack Overflow or the Unity forum. Both are a great source of knowledge. Gamasutra is another website offering awesome posts about all kinds of game development related topics. Recently I read a couple of books on clean code, clean coding and clean architecture by Robert C. Martin. Can highly recommend those.
Often three things inspire me. Seeing something or playing a game and asking myself “How have they done that”. Watching a talk or reading a post and thinking: “That sounds interesting, can I do that too?”. But, most of the time I get inspired by peers. Just seeing how smart some are from witnessing what they are capable of doing, makes me want to learn even harder to improve my skills and knowledge to become a better programmer.
Do you usually go to conferences, trainings or workshops?
I used to join Unite for a couple of years. Haven’t been last year though. I usually watch talks on Youtube or from educational sides like Udemy.
Do you work on any side-projects?
Not right now. But just for fun I used to develop small mobile puzzle games using Unity. I created games as Christmas presents for my family. Some time ago I started working on a collaborative text localization tool, still in a proof of concept phase. Hope to continue with it soon.
What games do you play?
Tough question. I used to play games a lot. But lately I haven’t had much time doing so. I mostly play open world, adventure and shooter games. Still haven’t finished Red Dead Redemption 2. My pile of shame is growing each month. I am going on parental leave soon, so I hope I’ll find some time to finally finish all the Uncharted games. And yeah, I almost forgot: Last of Us 2.
Are you interested in games as socio-political experiments or tools for education?
SEED is a highly collaborative game. Like in a real society you won’t get far if you do not cooperate with others. From gathering resources, producing goods and having a market it is all about players working in a team to create value. Much like in real societies. I am very curious how players will join forces and what type of collaboration will create the most successful group of players. I recently read a novel about capitalism, greed and selfishness in western civilisations. Just as a thought experiment the author showed how much we could profit from each other just by fairly sharing our wealth with each other. I would love to see some of those social experiments taking place in SEED.
Where would you see yourself on the planet Avesta?
I will build myself a small cosy hut and a workshop on top of a mountain close to the sea. So I always can enjoy the beautiful dusks and dawns in the game. Besides that I would concentrate on farming and crafting, selling my goods on the market. This is something I actually want to do later in my life. I love crafting with wood ;)