What Computer Science classes (electives) to take for Undergrad if I want to go into Video Game Design?

tldr: What makes you a good 'general' software dev makes you a good game dev. Building large systems! Take the OOP class. Take a database class, an OS class, a networking class. The only thing particularly game dev specific is graphics, mostly for the purposes of understanding the graphics pipeline, so take that. But the major takeaway is that game dev is mostly about designing a fat chunk of software that doesn't collapse under its own weight.

Really depends on the class contents. But my first instinct would be to take the object oriented class (OOP), and things that have to do with networking (maybe) and graphics. Then, anything that involves building a large system. eg your OS class if you do Pintos.

The real answer is that the biggest part of game programming is building a large system with lots of moving parts. The best way to learn this is with practice. Classes with big programming projects are good, esp if they focus on good design principles. That's why the OOP class seems like the best thing on the list, even if you want to use a strict ECS for game dev.

Graphics is useful at the very least for knowing why games run slow or fast, and for making things less 'black box'y. I was interested in graphics before game dev, but I can imagine that game dev would feel a lot more opaque if I didn't understand the typical graphics pipeline at least.

Networking is useful if you want to make an online game. Also good to know in general for life I think.

Most niche classes won't be that helpful, except maybe an intro AI class (but you can probably get all you need to know from online courses). Many of them will have a lot of math related to the field and not a lot of programming (or just matlab). While possibly interesting, they won't be widely applicable to game dev.

So aside for the OOP and graphics classes, take what might be considered your schools CS core curriculum. Databases are good, networking is good. Things that make you a good software engineer in general will also make you a good game developer. Read class descriptions. eg Parallel computing might not actually be helpful for you.

/r/gamedev Thread