My Story
My name is Yuchen Mei. I’m a video game programmer.
How I Got Started
My undergraduate subject was management which I didn’t really like so I started teaching myself HTML, CSS, JavaScript and creating websites in my spare uni time. I picked web programming because there’s a competition and I wanted to create a website to share handwriting notes.
On my second uni year’s summer holiday I took some web programming lessons with two teachers in Beijing and they not only taught me web programming knowledge but also said to me that JavaScript is popular and useful but if you want to go further on this coding path, you need a solid foundation of programming. So after going back to uni, I started teaching myself C, Linux, Discrete math and some other topics that a CS student would learn in the classroom.
In my fourth year at uni (2014), I got a job in Beijing as a mobile game programmer. The guy who interviewed me called Zhantao and I am still in touch with him. The game project I worked on was originally written in a web framework whose performance was not enough to keep it running at even 30 FPS so they decided to rewrite the game in cocos2d-js which is a game engine with core functionalities written in C++ and game logic APIs callable by javascript. The game was called HeiBaiDao and it’s a card mobile game so it was very UI heavy.

I still recall today (4th of March 2024) that my first task was to create a strategy/framework so that we only need to set the UI elements’ locations in a standard resolution (720x1280) and they can be adjusted to the correct locations/sizes automatically in different mobile resolutions. This was crucial because mobile phones have a lot of different sizes/resolutions. The engineering leader even told me that if I can figure out something then I’ll be the person in charge of it. If not, they’ll hire someone with more experience to do it and let me led by them.
I was very struggled to propose a solution for this task and I even questioned myself whether I have what it takes to be a programmer. Why wouldn’t I just go and become a driver like my dad so I don’t have to worry about not being able to complete a task. Luckily I was able to come up with a way and I was the main programmer for all the game UI.
Because we were trying to make up for the time lost due to using the web framework, we were working from 10am to 10pm Monday to Saturday. That’s just too much for me so after a few months I said I didn’t want to continue anymore but the boss said it’s OK for me to take a few months off and come back to the project when I’m ready. By that time they should be back to 5 work days a week. So I went back to university to finish my dissertation. I didn’t hate this job at that point and I didn’t manage to find a better one so I ended up returning to the same project after graduation. They had moved to a new bigger office and they hired new art people and changed the art style of the game but unfortunately this game wasn’t a success in the end.
After the mobile card game, I was assigned as the lead programmer of a small team with one animation, one UI, one producer (Baozi), one design, one 3d environment and two programmers (including me and another guy I interviewed). We were using Unity engine to develop a 3d mobile parkour game featuring an unreleased Chinese anime called JingJuMao (BeijingOperaCats). I learned Unity from scratch and all the pipe line of making a 3d game. I enjoyed that time but I was quite helpless when it came to creating bespoke art style in game / writing shaders because I didn’t have much knowledge of rendering. Also I wasn’t very happy about the way our project was managed by the company so I decided to study further about video game programming aboard and see how those mature game studios work if possible.
Journey to the West
My original plan was to go to the States because I liked Warcraft III. However, after speaking to some overseas education agencies, they advised me to go to the UK because I didn’t have a strong computer science study background but I had real game industry experience which could make me stand out when applying for UK’s universities and the UK’s postgraduate only has one year. So I took their advise and came to Newcastle University to study computer game engineering in 2016.
In my one year postgraduate study, I learned C++, opengl, game physics which laid out a strong foundation for my future career in the game industry. I was also chosen by my classmates to be the leader of our 8 people mandarin speaking team. Jin helped me with all the paper work and reports so I could focus on coding and solving problems for other team members. In my third semester, I got an internship offer from a local video game company called Coconut Lizard. I was also in the 2nd round of applying for another company from Manchester but my teacher GU told me to join Coconut Lizard without hesitation and this decision completely changed my life in a good way.
During my intership, I was mentored by GM (one of the best programmers in the company) because I said I was interested in rendering. I remember clearly that he’s super knowledgeable, patient and could solve a bug I spent a whole afternoon debugging without a clue in 20 mins. My first project was improving the lightmap UV generation process in Unreal Engine 4.15. I implemented a 2d tree to pack light map UV charts as rectangles which dramatically improved the performance but reduced the density so this pull request wasn’t accepted by Epic (Looking back from now July 2024, Unreal Engine 5.3 has multiple lightmap UV generation strategies and 2d tree rect is one of them.) My second project was an Unreal Engine blueprint editor feature which hides nodes that are unrelated to the select ones. The idea of the feature was from LC the technical director and approved by our tech artist. I managed to implement a working version. When Lee reviewed my code, he said this may not be the best approach but he would need to have a think about it. The day after, he proposed a much better implementation using recursion. I didn’t think Epic would like this feature so I didn’t make a pull request for it until I was pushed by my boss in 4.23, it then became the fastest accepted pull request Coconut Lizard have ever had.
For the most part of my years at Coconut Lizard so far (roughly 4 years) I was lucky enough to work on Sea of Thieves alongside a group of super talented people. The most impressive experience has to be CG who remote controlled my PC and showed me how he digged up the voyage name from a crash dump. He’s also very humble when I said how amazing his skill was he said it’s just 10 years of opening crash dumps. Through working on Sea of Thieves, I was able to witness a fully established pipeline guarded by automated testing. More importantly, I met a perfect lead NT who is not only very smart that can always understand and solve your problems 10x faster than you but also humble that thumbs up your small achievements all the time, funny because he has a huge collection of emojis and friendly. I remember one time I estimated my task for 2 days and NT said just double it because you’ll need time to deal with things we can’t forsee now and don’t push yourself too hard. I went on paternity leave under Neil T’s watch as well. After I came back, he put me on a relatively light adventure to make sure I can still support my family if needed. I didn’t know it until my colleague at Coconut Lizard told me. Now I look back, working on Sea of Thieves was definitely a paradise for me.
After working in the industry for more than 7 years and experienced different projects I realized that the ability of building something on top of a huge mess and making the mess maintainable is a very valuable skill. We don’t always have the chance to build things from the scratch, it’s a bit like I can’t throw my hand-writing notes away because one page was wet. Another thing is we thrive to create code without any bug but bugs do happen sometimes because of a new feature or optimization added by someone else. Don’t aim for zero bugs as it may also mean that the project is not evolving. Welcome any changes or bugs and be able to deal with them happily is the real way to keep my passion in coding and enjoy being a professional programmer. It’s OK to leave bugs behind and move to a different project which means it’s also perfectly normal to fix bugs left by others. No one should be blamed because of the bugs they created.