How Rust Merges New and Old For Video Game Developers: A Q&A with Eric Smith

How Rust Merges New and Old For Video Game Developers: A Q&A with Eric Smith

Kyle Sparks
Kyle Sparks

July 12, 2022

Eric Smith was one of 8th Light’s first employees, joining our team from the Chicago suburbs in 2007. He has been one of 8th Light's elder statesmen, working on some of the most challenging and exotic challenges our partners face, while maintaining a humble and affable nature.

Despite spending the last 15+ years focused primarily on delivering code for the web, he has also earned two degrees in video game development and developed video games professionally and as a hobby.

Eric combines his experience working on the web and passions for video games in his new book, Game Development with Rust and WebAssembly, published by Packt. As Eric explains, modern web development tools have evolved to the point where video game developers and web developers can find common ground with Rust and WebAssembly.

Name: Eric Smith
Location: Chicago
Time at 8th Light: 15 years
Time in the industry: 20+ years

Q&A With Eric Smith

You have professional experience with classic video game development as well as Web 1, Web 2, and Web 3 … What is it about that intersection of video games and the web that inspired you to write a book?

I’ve been interested in HTML5 game development for a long time. In addition to my recent 8LU talk on how to build video games in Rust, I spoke about it, using JavaScript, a few years ago both at 8th Light and nearby user groups. The appeal is that a webpage is the easiest way to deploy a game. I’m not as interested in the kind of game development that requires a 10k gaming machine that hasn’t been invented yet. It’s technically interesting, but it’s not the kind of game I’m likely to make.

My favorite types of games are the kind I used to play when I was young, and a lot of those were made by very small teams, even one person. You’re not likely to make a solo game that shows up on Xbox (although it can happen), but almost anybody can make a small game and get it deployed to the web.

How has WebAssembly changed the way you think about game development and web development?

I can use Rust! JavaScript is a language with a lot of good features, and a lot of ways to shoot yourself in the foot. With WebAssembly, we can use some of our favorite languages on a great platform — the web.

What are some things about video game development that might surprise newcomers to the field?

Maybe that it’s not as hard to get started as you might think. Game development has a reputation as being really difficult, and as such it’s intimidating. This is true if you're making the latest $100 million game, but if you want to start making your own hobby project it’s probably never been easier.

The other thing that would probably surprise a web developer is how different the architecture tends to be. Web developers tend to be used to a request/response model and games do not work that way.

And for web development, what might surprise a game developer?

Probably that it’s not as easy as it looks? After the first company I worked at closed down, I was convinced that since I was taking a traditional job it would be a lot easier. I was extremely, and obviously, mistaken.

Let’s talk about Rust. What’s Rust’s appeal to game developers?

I quote this a lot, but Rust is the “most loved” language on StackOverflow for something like eight years running. So ignoring game developers for a moment, any developer is going to want to work on a language that’s loved. Rust has excellent tooling, a great type system, and is extremely fast. It’s just a pleasure to work with.

The appeal to a traditional game developer is going to be as an alternative to C/C++. I’m not going to go into too much detail about why I prefer Rust to C/C++ — it’s clickbait — but the gist is that you can get something that can work close to the metal like C without a lot of the headaches of C.

What kind of impact do you think Rust could have as far as accessibility or quality of life for indie game devs?

Well I could come back to the “most loved” language, but let me try to give a specific example. Rust’s type system is extremely powerful, and because of it, I can make entire classes of errors impossible in ways I just can’t in a language like C. As an indie dev, I don’t have time for debugging, so if I can make bugs impossible, I’m a happy man.

You’ve done a great presentation on this before, how do you build on that in the book?

The book itself is essentially a walkthrough of building and deploying an endless runner to the web written in Rust. You can actually find my version online, where I’m still working through the challenges at the end of the book. We cover everything from scratch, so I’m hoping you’ll use it as a starting point and then build your own games in it.

Learn more!