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|
|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?
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?
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.