I sat down with Michael Clayton and Jared Sprague to talk about Command Line Heroes: The Game. Michael and Jared work for Red Hat on the team that supports the award-winning Red Hat Customer Portal. In their “spare time,” they moonlight as open source game developers. That said, I don’t want to spoil too much… so without further ado, here’s the interview.

Quick note - if you’re ready to jump straight into the code or to find out how to contribute to “Command Line Heroes: The Game” visit our GitHub repository.

In the beginning

Dan: Thank you guys for joining me today. As you both know, the Command Line Heroes team has spent the last year traveling around the world speaking with people about how they got started with technology, what they’re up to today, and where they’re headed [in the future]. In the spirit of those interviews, let’s start at the very beginning. Michael, how did you start with technology back in the day?

Michael: For me, it began in 1988 when my dad brought home an Amiga 1000 as a gift for my mom. She never touched it, but my dad and I spent the next decade playing video games, creating art, doing 3D rendering on a series of Amigas. That’s what really got me hooked on computers and video games specifically. It didn’t turn into an interest in programming until much later, but I was completely hooked on the immersion of video games.

Dan: Funny—I’d say more than half of the people we speak with started with video games in some way or another. You might say this inspired us to start season two of Command Line Heroes as we did. Michael, do you remember any of the specific games you used to play?

Michael: Yeah, some of the biggest ones for me were Zool and Crystal Hammer, plus cross-platform classics like Monkey Island, Lemmings, Worms, and SimCity. Cannon Fodder was another really excellent game, which had an unusually human portrayal of war. Aside from games, I had a blast with Racter, a chat AI from the mid 1980s that could carry on a conversation. It was sometimes coherent and sometimes very silly, but it was the synthesized speech that really captivated me. The last program I’ll mention is Deluxe Paint, it was one of my favorite applications for drawing stuff and creating cool mosaics and pieces of art.

Dan: Super cool. I can relate to a lot of that. Jared, how about you? How did you get your start with technology?

Jared: Yeah, for me it started pretty much through my dad. He worked for a company called Control Data. They owned this product called PLATO, which was an early precursor to the internet. Because of his job, he’d always bring home terminals and computers and would let us play with them from a young age. The earliest memory I have is him bringing home a Zenith terminal with a modem that we could dial up to the PLATO mainframe. It was very similar to what War Games was like. It was almost the exact time period, too. You would just dial up and have a text terminal and pick what program you wanted to run. I remember the one I really enjoyed was called Moria. It was a Tolkien-based dungeon crawler. It was very addictive. In the third grade, I remember on the bus riding home from school thinking, “Man, I can’t wait to get home and dial up to the PLATO mainframe and play Moria, increase my levels, and get lots of treasure!”

Dan: Nowadays, kids are probably on the bus playing games!

Jared: After that, he kept bringing home new technology my entire childhood. The modems kept getting faster. Eventually, PLATO died off and we started telnetting, in the mid 90s, in to play MUDs. That was pretty much how it started, through my dad bringing home his work and letting us play with all the computers he brought home.

Moving into industry

Dan: Also funny you mention MUDs. Fellow Red Hatter Ross Turk also got his start both playing and designing levels and adventures for MUDs (multi-user dungeons). Jared, let’s stick with you for a moment. Where did it evolve from there? You started off dialing into the mainframe, the internet came out, you’re telnetting into servers to play MUDs, but eventually you landed in technology. How did you get from those early days of the internet and gaming to working in the tech sector today?

Jared: It kind of started in college. I was looking for a major, and I had never really thought I could get into computer science because I wasn’t great—at least didn’t feel I was strong at math. So I looked at other things like photography, but that just didn’t seem to work out. After my first year of college, I’m like, “I know I might not succeed at it, but I really want to learn how to program, write software, and I’m going to try.” That was how it started. I went into computer science and then into the industry.

Dan: Very cool. Michael, how about yourself? Again, from the early days of the Amiga what made you stick around and stick with technology, computers, and software from there on?

Michael: For a long time, it was video games that kept me on computers. At some point, I was browsing the web and I was looking around the web browser and saw a button called View Source. I thought “what’s that?” and clicked on it and my screen became filled with what I later found out to be HTML. I got interested in this weird indecipherable text that was just behind every web page.

I started learning more about it. This was in 1996, and I just started learning the terminology. I went to a site called WebMonkey all the time to learn about HTML. JavaScript (JS) was brand new and not many people took it seriously (yet), so I absorbed the attitude that JS sucked and wasn’t worth any attention at all. I don’t know what I would have thought if you had told me 15 years later I would be a professional and devoted JS developer. It was that immediate access to the code behind every web page that captivated me and put me in more of a maker role than just a consumer of games and other media.

Present day: Days jobs & moonlighting

Dan: Fast forward to today. You both work at Red Hat. I’m interested in what your day job is like, what you’re primarily focused on, and how you got into open source game development. Jared, let’s flip back to you.

Jared: I’m the program lead for the Customer Portal DevOps operations group, mostly working on stuff like site reliability and operational deployments—lots of stuff but it’s all DevOps-related. In terms of game development, it all started with SPARKcon, maybe four years ago. Michael was building this Kimotion platform and looking for contributors to add mods to it. I decided I wanted to try that out, so I built a game for it. I called it The Fish Game where you could use the Kinect to catch fish with your hand as the controller. I had a ton of fun with it.

That was the first game I created and was what got me into game development. After that, Michael and I started collaborating on games. We made Zorbio, and then we started doing game jams, like Ludum Dare. Since then, we’ve done several and then we started Open Jam.

Dan: Michael, what is your day to day like in terms of what you do at Red Hat, and how did you get your start with open source game development?

Michael: Day to day is lots and lots of JavaScript. I’m on the Customer Portal front-end development team and that language, JS, which I was on the hater bandwagon for so long; I now love it.

In terms of game development for me, for a long time I had no had interest in working on games even though I love playing them, because of the perception that game developers are underpaid and overworked and unappreciated. [Editor’s note: For more on this, check Command Line Heroes’ S2E1’s easter egg.] I wanted to go into more traditional software, but I always had this interest in interactions of various kinds, and the web is such a great place to experiment with that because it’s so easy to share things out. You don’t have to ask much of the person you’re sending your stuff to, they just click the link and there it is. There’s no download, no install, no drivers to worry about, no redistributable third-party libraries you have to install first.

So I’d been interested in that, and at SPARKcon 2014 the organizer that year who we’ve both worked with, Ian Hands, he came to me and asked me if I wanted to create an interactive display. I’ve always wanted to work on stuff like that, so I got a book about WebGL shaders and I put together a particle gravity simulation where the participants would pick up a colored light-up wand and wave it around, and as they waved, it would move the center of gravity on the screen and the particles would drift towards it and orbit around it and spin in these cool patterns. It was called Digital Motion: Particles and there is a live mouse-based version to play around with. And there are some videos from that year.

It was such a cool learning experience, just bit-by-bit figuring out how WebGL worked and how particle systems work. It was a lot of work, though, and for SPARKcon 2015 I wanted to make it easier for myself and others to create new interactive displays. That’s where Kimotion was born. It’s a framework for building interactive web-based displays, and it handles most of the tedious stuff like reading input devices, smoothing input data, and setting up a blank canvas. That way, the creator can focus on their display, not on the technical details of I/O and boilerplate setup. You can see a video album of Kimotion displays. I know Jared said Kimotion got him into gaming, but it was really Jared who got me into it. I didn’t consider Kimotion a game engine, really, I just intended it to create displays where you walk by, wave your hands around, think “that was cool” and then go on your way. Jared took that to another level by building a game with an objective and with points. It was a hit at SPARKcon. It was so cool seeing a line of kids out the door waiting to play it. Jared saw that we had really complementary skill sets, with both of us being coders, but him being more technical and back-end, and me being a bit more graphical.

Dan: Super cool. If I’m just paraphrasing back, you both started your early years with the Amiga, with the mainframe on your end, Jared, and you evolved over time, and with a bit of serendipity you landed in the same place with complementary skill sets and a passion, whether you knew it or not, for developing games. Open source game development came together for you guys in tandem. So then, and maybe this dovetails nicely, tell me a little bit about Open Jam. How did Open Jam come to be?

Jared: Having participated in Ludum Dare and other jams, there were a lot of people who weren’t aware of the open source game development tools out there. A lot of people use the same closed source tools, so we wanted to bring some awareness to the open source tools. We decided to make a game jam focused on open source.

The other side is that a lot of the people we know through Red Hat and DevOps communities, there’s a lot of engineers who have never tried game development. So on the one side the indie gamedev community doesn’t have a lot of experience with open source tools, and then in the corporate engineering communities a lot of people have never tried game development. Open Jam tries to bring those two worlds together. We thought opensource.com, supported by Red Hat, would be the perfect home for it. They have a gaming section on their blog with lots of posts about games, so we partnered with opensource.com and they helped promote it, and we worked closely with their team. They even helped us get a presence at All Things Open in 2017.

Dan: How many years has Open Jam run, and I understand you intend to do it again this year, right?

Michael: That’s right. Last year, 2017, was the inaugural Open Jam, and we’re in the process of planning Open Jam 2… actually, I’m not sure what we’re going to call it.

Jared: Open Jam 2018, let’s just put the year.

Michael: Sounds good.

Dan: I love it—we’re making decisions in real time. So for Open Jam 2018, when does it all start? If somebody wanted to get involved, is there a place they should go? Is there somewhere they should pay attention to?

Michael: The website is openjam.io, which has all the information you’ll need to participate. It begins in early October every year before All Things Open.

Command Line Heroes: The game

Dan: That nearly brings me to how we all ended up here today. I’ve heard that you guys are also working on Command Line Heroes: The Game. My understanding is that over the next couple of months you guys are going to be working to demonstrate how an open source game comes together. How did this start? What’s in store? How can people participate?

Michael: How did it start, Dan? Let’s flip this around.

Dan: Oh no, you guys have to answer the questions.

Michael: My recollection is that you came across several of the games we’ve made during game jams where we shared them on a Red Hat mailing list… how did that first meeting start?

Dan: I can fill in the blanks. Given that the first episode of season 2 has to do with the origins of video games, we were looking to speak to some subject matter experts on open source gaming. You almost hit the nail on the head as myself being on the gaming list. In the back of my mind, I remember seeing you guys talking about Ludum Dare and I thought to reach back out to the gaming list. That’s where I landed on you guys, but it was you who presented me with the idea that maybe Command Line Heroes could be a game.

I’d love to learn more in your mind about your thought at that time. When I reached out, what were you thinking?

Michael: I remember the very first thing I thought was that the name Command Line Heroes was just begging to be a game. I could see it all: the title screen, “Command Line Heroes,” PRESS START flashing below it.

Dan: Tell me a little bit about the game. That was several weeks ago now, and here we are today. Episode 1 is released. Where are you guys with the game today? And where do you see it heading over the next several weeks and months?

Jared: The game is an adventure game with a story arc—a beginning and end. Throughout the season, we’ll be adding new levels and rooms and releasing the game in a serial fashion until we have the entire story released. Hopefully with the community’s help, we’ll be able to do that.

Dan: Michael, jumping off from there, as an open source game, how can people contribute to the game? How can they get involved? Are you going to provide bits of insight or guidance through documentation of any sort? What are your thoughts there?

Michael: One of the main ways that people can contribute, especially anyone who doesn’t have programming experience, is that we’ll have a guide for how to use the Tiled level editor to create levels and tag any objects they had to those levels with behaviors that will come to life in the game. Things like when you click on a door, it should open. Or if there’s a bucket sitting on top of a door, when you click on the door it should open and the bucket should fall. We’ll have a simple way to define behaviors like that so that people can live entirely in the map editor and not have to write custom code for things they want to script.

Other ways to contribute would be through creating sound effects, creating sprites or spritesheets for objects and characters in the game, creating background images to serve as the environment for a given room. As always, improving the documentation that I’m currently talking about, that’s another way to contribute. I’d also like to make some videos on how to use the level editor. A lot of people consume tutorial content through videos instead of through text, and I’d like to create a few of those to get people started.

Dan: Where do you guys go, out of curiosity, when you’re trying to learn a new concept as you’re developing games?

Jared: Most of the time if I’m stuck working on a game, I usually try to find examples that are close to what I’m trying to do and then modify them. A really good example is in Zorbio. There are bots in the game, AI spheres that fly around. Originally they would just fly in a straight line, then stop, turn, and go in another straight line. I wanted to figure out how to make them fly in a more natural curving path so they looked very natural. The way I figured that out is I found an example in three.js of someone using curves and it was close enough that I could take the example and modify it to do what I wanted. A lot of the stuff that we do when working on games is exactly that, borrowing off of examples that are close to what I want to do and then customizing and building on top of that.

Dan: Which reminds me a lot of, and we talk about this a little bit in Episode 1, how open source comes together in general. People learning from each other, right? Things are open and available and if there are examples out there that are similar to what you’re trying to do, you don’t have to start from scratch. And again back to episode 1, there’s a lot of proprietary game development that happens out there in the world, where if people aren’t sharing between different studios and environments, they might be trying to solve the same problem and architecting from scratch to try and arrive at the same solution. So there’s some efficiency to what you’re talking about Jared, if you have a problem and somebody’s already solved it, there’s a huge bit of efficiency to be able to start there and build on top of it.

Jared: Yeah, exactly.

Dan: Well, this has been an awesome opportunity to catch up. Thank you both for taking the time to share some insight on your backgrounds and where you are today. I invite everybody to stay tuned as Command Line Heroes season 2 drops new episodes every two weeks between now and December 18. In addition, while Michael and Jared will be keeping us up to date on how Command Line Heroes: The Game is coming together—the code is out there—so don’t hesitate to dive in and get involved!

Useful Links