So, 2018 is here and I decided to start this blog writing a really quick overview of how was my professional life in 2017. :)
What went well
I graduated :)
Yeah, I think it is definitely the biggest achievement of the year, after five long years I am a new graduate of the Computer Information Systems program of the University of São Paulo. During those years I learned the fundamentals of Computer Science (and some business stuff that I am not really interested) and more importantly learned how to approach and learn new things. I often see people arguing about the value of a formal education for a career on game development, but in my case, I am pretty sure that my degree was fundamental to quick-start my career.
Began to work on my toy game engine
As I had to write a thesis to graduate, I decided to use this opportunity to force myself to dive into graphics programming and learn more about game engine implementations. My thesis goal was to analyze the benefits of using an explicit graphics API (like Vulkan and DirectX 12) for multithreaded rendering applications, so I decided to implement two different rendering backends, one using DirectX 11 and the another DirectX 12, and compare their execution metrics while rendering 3D scenes (e.g. Sponza). The main challenge with this project was to properly learn DirectX 12 and its “closer to the metal philosophy”, I had some experience with DirectX 12 when I was an intern at Activision, but had no time to see the big picture and fully understand how to build an application from scratch, so I decided to use this project as a practical learning experience. I implemented that benchmark application as the first steps to build a simple game engine and used the opportunity to try some popular concepts and techniques in the game engine world: All the application is structured around an ECS architecture, I am using dearImgui for Debug UI’s and the renderer implementation uses a simple job-system to parallelize render commands submission to GPU. Implementing an efficient DirectX 12 renderer was a big challenge, as expected, but I learned a lot during the process and I am really happy with the outcome after all. Right now, I am cleaning up the code to publish it on GitHub and I intend to write more about what I am learning with it here.
Another great achievement of this year, the first game project that I worked from beginning to end was released :) Starside is a Match3 game, with a side-loop of city building and narrative elements. That was the first Unity3D based project from Tapps Games, so besides the game itself our team was also responsible for defining all the new workflows, implement our new libraries and core systems, set up build systems, implement new content creation tools, etc. Personally, I was responsible for some of our core gameplay systems and mechanics and also implemented some of our internal libraries that will be used for other future games, as an intern that experience was really great and I learned a lot with our technical achievements (and mistakes, of course).
I am not “just an intern” anymore
With my graduation, that moment of searching for a full-time job arrived, happily, I decided to accept an offer from Tapps Games and I am now working as a generalist game developer there.
What was not as planned
I overplanned my personal projects
To be honest, I was expecting to do a lot more on personal projects, but I quickly realized that I would not be able to achieve most of the plan. The main reason is basically lack of free time, I spend 3~4 hours daily on commuting to my job, I usually use that time to read technical articles and books, but at night I can not really be productive, then most of my time working on personal projects is on weekends.
I postponed this blog
I have been planning to start a dev blog for a few years, in 2017 I was expecting to finally begin to write something, in special talking about my learning experiences with my thesis, but I ended up postponing it and here I am writing my first post on the first week of 2018.
What comes next? :)
Here comes the best part, what are my plans to 2018?
- (Finally) write on this blog, at least a monthly post.
- Keep working on my toy game engine, turn its source public and write about it.
- Be more realistic about my personal projects, achieve a better work-life balance.