Skip main navigation

My career path: Game programming with Moo Yu

Game developer Moo Yu talks through his career in gaming and the skills he has learnt to make games come to life.
Hi. I’m Moo Yu, and I am a programmer in the games industry.
So I went to UCLA out in California and studied computer science, electrical engineering, philosophy, and cognitive science. So I was a very busy student with a lot of interests. But I sort of lucked into an internship for my programming classes, which was a graphics programming class that had a student that was working in the games industry who was taking that course. He saw one of the demos that I put together as one of the class projects and offered me an internship, and that was my step into the games industry.
Then I got a full-time job after I graduated at Insomniac Games, where it was for about four years, then Media Molecule for another two years, and I’ve been doing it for another probably five or six years since.
So my specialisation is gameplay programming, which tends to have a heavy overlap between programming and game design. So I work very closely with game designers and make sure that I understand the way that they think so that either I can implement the ideas that they have in the game very faithfully to what they had in mind or I can build tools that let them do it themselves I think I’m always prototyping new projects and trying out new technology. The project that we were working on, Knights and Bikes, was really just me wanting to see what this Unity thing was about that everyone was talking about.
So I think it’s important to stay connected with professional networks, see what people are talking about, what people are excited about on the programming front, and just make sure to try it all out and just see what does suit what you’re trying to do.
I think, there is no particular one, but I think the free ones are great to get started with- so anything from Unity, to GameMaker, to Godot, to Unreal Engine, trying to find what matches the way that you want to think about programming, what matches the technical specifications and goals that you have for the project, but also what matches what you want to be doing. I think each of them provides something very different, but I think what’s important is to get something free and get going.
I think, historically, the two languages that have always been on trend are C++ and C#, but I think, much more than understanding one language in particular, is understanding the core concepts of programming- and on top of that, the core ideas of systems design. I think there’s a lot of programmers that know how to write an isolated thing, but don’t know how to structure a code base for an entire game, to write systems that will interact with one another. I think one of the other big pitfalls is people that fall too much in love with design patterns.
I think, if you do like certain styles of programming, you need to know where certain design patterns fit and where they don’t, and be flexible with how you use those kinds of patterns and how you design your systems to work together.
Yeah, I think the biggest one that I saw was definitely Minecraft. I was working at a children’s games company at the time, and when we saw the children coming in that had played Minecraft, for them to have experienced something that was creative and social was just really a game-changer for them. Seeing a whole generation that understands games as a way to interact with other people, but also to create content, rather than to just consume content, I think is really important. And I’m really interested to see what happens when that generation reaches the age of making games.
I think independent games- the great thing about them is that they don’t have to go through all the filters that a big-budget game does, so they don’t get all the corners shaved off. So you can appeal to a particular- a smaller group of people in a much deeper way. I think one example of that that really worked well for me was the game Florence. As someone who’s of a Chinese-American background, having a game that has an Asian protagonist that was in the Western world and presenting the balance between those two cultures was something that I don’t think you could find a big enough market to make a $50 or $100 million game right now.
But I think those are the opportunities of indie developers is that you could make something for a smaller budget that reaches a smaller group of people, but in a much deeper way. I think the other interesting aspect of game development and culture is educational games. I think there’s a great game designer- programmer and designer- named Nicky Case who uses the systematic nature of games to teach how small decisions that make perfect sense lead to systematic problems, like gerrymandering, or factionalization, or that kind of stuff.
I think games, because they are inherently rule sets and display systems, I think they’re a great way to make someone implicitly experience a system and understand that there are individual pieces that, as a system, collective, have implications.
Obviously, as I said, I’m waiting for the Minecraft generation, but one of the things- I’ve been involved in a lot of the BAFTA Young Game Designers programme, and seeing the games that are coming out of 13, or 14, or 15-year-olds is absolutely incredible. So I think, with the tools being readily available and so many people accessing making games, I’m just really excited about how different the kinds of games that we’ll have are. I think the industry has sort of stabilised on a particular market for a long period of time, and I think seeing all the other types of games for all the other different markets develop is going to be really exciting.
I guess one of the first things I would say, especially from programming- a programming perspective, is that a lot of programmers undervalue communication skills. I think there’s a lot of programmers that think that having extremely strong technical skills is going to get them all the way through, when, on development teams, 90% of the time, the task is actually trying to understand what someone is trying to convey to you and implement that in the way that they intended it. Or if something’s impossible from a programming perspective, how do you convey that to them, and how do you get their mental model in your head to help them reach a design that is achievable technically?
I think there’s a lot of programmers that underestimate how important it is to have really good people skills, just to be nice, and to think about what the other people that are making the game with you are thinking from their perspective. There’s a lot of times where something will be technically impossible, but if you explain to them, this memory management system doesn’t support- it doesn’t mean anything to them, so trying to understand everyone else on the team and how to communicate with them, what the limitations are of what you can deliver to them goes a very long way.

In this interview, Moo discusses his coding background and also his thoughts on how programmers can occupy a facilitative role within a development team.

Think about how Moo’s previous role as a Gameplay Programmer has allowed him to gain a wide-ranging understanding of both code and design. Is there a similar discipline you could explore which would allow you to engage multiple interests simultaneously?

Once you have some experience, it’s wise to try out different game engines or coding environments to find something that suits you and your current project.

With code specifically, it is important to consider both more tactical programming situations and overall systems design. This kind of thinking should apply to any discipline however: learning to solve specific problems is vital, but your work must form part of a coherent whole.

Take some time to consider Moo’s point about how games allow individuals to experience a system and understand how isolated choices within it create knock-on effects. Is this idea something you could use to create your own game concept?

Communication skills are vital in any team, particularly for technical team members. Learning to articulate ideas externally and engage in productive discussion is critical. Teaching others, or making content to explain technical concepts to laypeople, can be great ways of practicing these skills.

This article is from the free online

Introduction to Indie Games

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education