+-------------+

A Conversation with Robert Nystrom

Published: 2024-07-28

Semi coherent notes from a discussion I was fortunate to have with Robert Nystrom, author of Game Programming Patterns, and Crafting Interpreters

Games are just UX.

Games provide no real world value. Users are willing to trudge through your awful banking appā€™s ux because they need to get to their money. People donā€™t have any tangible motivation to get through your game if itā€™s not a good experience. Games are especially demanding as they need to be responsive experiences that render to the screen 60 times per second. If your spreadsheet app lags a bit itā€™s not a big deal, if your game does then it could be experience ruining.

Gameā€™s used to not have engines at all. they were just software like anything else.

There was no abstraction, there were no game engines to deliberate over and select. You had to build everything yourself simply because there was nothing already built, based on whatever books on programming you could find. The understanding of complex systems he acquired was simply a result of having to learn and apply these things in his own work.

The biggest advice he gives about learning things is to make things and learn from them. Theoretical understanding is important but nothing can replace having your codebase fall apart due to bad code and having to learn from that directly.

Modern programming is a lot more complicated then it used to be.

Most modern programming work uses abstracted apis and libraries and engines to be able to focus less on how it works and more on what weā€™re doing. High level tools like Godot or Unity do like 80% of the things his book goes over for you. Digging down and understanding things deeply is optional these days.

He views programming very differently then newer programmers because of how it was different in his time. He values understanding things more than them appearing to work as intended.

Not trying to be a old man yelling at clouds, abstracted high level tools It does make us productive quickly and are ergonomic. Thereā€™s a reason theyā€™re widely adopted. We see learning design patterns as an option but when he was starting it was a necessity.

Writing helps to distill information in the most easy to communicate way.

Heā€™d spend a lot of time in his early years answering questions on reddit. He also blogs and makes lots of notes/journal entries to himself. It also helps you understand your ideas better, and puts abstract concepts into concrete words that can be shared with others.

The book ā€œDesign Patternsā€ was an inspiration

Very inspired by the book ā€œDesign Patternsā€ written by the Gang of Four.

Game Programming Patterns was written to Escape EA

He was burnt out and looking for a new job at a different studio. He wrote the book as he thought it would pad out his resume, but got hired while writing it.

design patters are important but shipping the game is always the goal

Donā€™t use writing clean code to procrastinate or add extra un-needed complexity. You want to learn and apply good programming patterns because you want your codebase to be maintainable to make an entire game, the goal is ALWAYS to get the game out the door. You donā€™t want your code to die a death of a thousands ā€œlittle hacksā€, but you canā€™t loose sight of the goal of actually finishing the game. He gave the example of the input handling code from Celeste being a mess, but the game was still able to release.

Game programming patternsā€™ information isnā€™t specific to games actually.

There isnā€™t really anything in the book that non game programmers canā€™t benefit from as well. games programmers felt separate to other kinds of programmers, more elitist considering the demands of game programming were generally higher than other games. putting the information in the perspective of games programmers was kinda a marketing thing ig, considering his time as an EA software engineer. Having such a low level understanding of programming in general helps you see that there isnā€™t much of a difference between making games and making any other software applications.

ā€œWhat question do you wish someone would ask you?ā€

(Question idea from my friend Tigran!) But wanted to talk about his new knitting hobby and how he thinks it has a lot of qualities that make it a good hobby for programmers. Things like itā€™s portability, tactile feedback, uses hand dexterity, and itā€™s relaxing while still offering a good difficulty progression. Lots of good qualities too offset things programming lacks but are still valuable to the human experience.