 My name is Matthub, and I'm really excited to be here at BangBangCon, that's my first BangBangCon. And actually, I'm really enjoying it, it's really fun, but it has kind of an unfortunate name, because, so I'm Canadian, I'm from Canada, thank you, yes. And so I had to, you know, take a plane here across the border, so I was in the airport waiting at Customs, and usually it's kind of, you know, scary going through U.S. Customs, I'm Middle Eastern, so it kind of compounds on the scariness. And so I'm waiting in line with my husband for the next available Customs agent, and he turns to me and says, are you gonna say the name of the conference to the Customs agent? And it occurred to me, I'm an Iranian trying to cross the U.S. border going to BangBangCon. And I'm not sure I'm allowed saying the word bang in an airport, so I just prayed that they wouldn't ask me to elaborate when I said my reason for visit was personal. Anyway, so this is my talk, it's called Push the Button, and I'm gonna be talking about a game that we made at a hackathon a few months ago, where the only input is a big red button. Let me share this quotation with you all. The more constraints one imposes, the more one frees oneself. Hold on, I'm just gonna make this full screen. So first of all, this is good life advice, it's kind of deep, right? But also it's good software design advice, and that's what I'm gonna be talking about in this presentation. So in 2016, I went to a hackathon, it was a charity hackathon, and we met with one of the charities was a local children's hospital, and they do physical rehabilitation with children who lack fine motor control or who have limited mobility, and basically their goal is to do physical rehabilitation to help them regain motor control. And so one of the things they do is they give kids this big red button and they put it in front of them, and they put the kid in front of a computer, they hook the button up to the computer, and the button is used as an input to play games. And so they challenged us at this hackathon to build a game where this is the only input to play the game, and the goal of the game is physical rehabilitation, and also eventually to help kids learn how to navigate menu items in order to promote independence, self-confidence. The problem is, it's really difficult building a fun and engaging game that'll keep kids' attention for any amount of time with just one button, right? And we wanted our game to be fun because if it's fun then they'll spend more time playing it and spend more time on the rehabilitation. So let's think about the kinds of games that kids are playing these days and how many inputs those games have. So here's, this is Kraft, it's an open source Minecraft clone, and Minecraft is really popular and fun, right? But let's think of the inputs. You have a mouse so you can look around. You have buttons that move you forward or backwards, left, right? Want to brick breaks or collect bricks or kill monsters. So that's a lot of inputs. How can our poor single big red button compete with that? How are we supposed to make a fun and engaging game with such a big constraint? The hackathon was only a weekend, so we weren't trying to build a AAA game that could compete with Minecraft or anything like that. We were all first-time game developers, and we had this grand vision of what our game might look like, but it was only a weekend so it was more like this probably. And actually that game is really fun, eh? That's only one button, just the space bar. Sometimes I look forward to the network going down so I have a justifiable reason to play that game. So we looked to other games for inspiration because, for example, mobile games, sometimes it's just a tap, right? And that's the only input. So like this old classic, Flappy Bird. Flappy Bird, I don't want to share my score of zero. No, you don't have to give me that option. So how do your favorite games work? What makes a game fun and engaging? Usually the game starts off really easy with a tutorial level and it walks you through and it introduces just one game mechanic at a time. And then it gets harder and harder and the hard levels build on the easier levels. And good games don't explicitly tell the player what to do. They're designed in such a way that the player can figure out what they're supposed to do next. So we started with a design sprint. And for those of you who don't know, a design sprint is basically just a structured brainstorming session where the team can think about the design and the users they're designing for, prototyping, testing ideas. So all of our team members got out some pen and paper, the old fashioned way, and independently thought of different levels that could be played with just a single input. And we came up with a bunch of really cool ideas actually. And then we thought about what order we want to put these in. So start easy and get harder. So I'm going to show a demo of the game. This is what we ended up building. Where'd you go? Anyway, the game is open source. So if you want to play it, you can. And look at the code. And we made it with Unity. So here's level one. It's a big red button. And just like the big red button that's sitting in front of them. So you push the button and I'm going to push my big red button, which is the space bar on my computer. So here's my robot. This is level two. So in level one, the kid who's playing the game learns that pushing the button does something. Now they realize sometimes you have to push the button more than once. So I'm pushing my big red button. And I get to push my inch line. Well, three inches is the cause of the timing. So I push the big red button and the flower grows. But now my little blue bar has gotten smaller. And so I have to wait until the water drop gets over the blue bar. And I can push the big red button as much as I want outside of the blue bar and nothing happens. So it signals that sometimes you have to wait to push the button. You can't just push it whenever you want. Now at the next level, you have to high five this seal. And failure is okay. So I hit it over here and I just hit the hand and that's all right. We don't want it to be the only big deal. And actually, I can hit it in the face. This is my favorite part. I'm vegan. Now we use the plus of the menu selection, which is one of our goals, right? So we see the options circling around and they're highlighted and we pick one. Another example of menu selection. A little boy is missing his shoes. We have to figure out what option we're at. This is the kids game. So again, we can pick the wrong option and it gives us a little prompt. Oops, no, that's not the right answer. And because it's a one button, we can't switch the menu items ourselves, right? We have to wait for the game to switch the menu item for us. So this is one way menus can work. And then another one. Yeah, okay, I'm sorry. Who doesn't belong in this sequence? Football. Oh, okay. Football. This is a different shape than the other one. But any talk is clearly more different than football. This last one, she has to collect all the stars. This is a really tough level. And that's kind of like proof of concept for what a fun game can be, right? So I don't really want to do this. This is kind of a tough level. Okay, so to sum up, constraints. Use them to spur creativity. You know, you don't have to feel like you are, you don't, you can't come up with great ideas just because you have constraints. Use a design sprint, a brainstorming session to really, to think through ways, creative ways to use constraints. Use them to spur creativity and force your focus. It can feel overwhelming to have too much choice, right? If you were just told to build a game and you had no direction, it would be overwhelming. Game levels should progress logically. So start easy, get harder. And the harder levels should build on what you learned and the easier levels. And before you even start implementing, think of the different kinds of game mechanics you want to implement, and then think about what order you want to introduce them in. And accessibility. I learned a lot about that during this hackathon. And, you know, to be honest, it's not something I think about as a developer in my day-to-day job. I should. And a lot of these, like these kids don't have a lot of games designed specifically for them, right? There are a lot of websites that bring mainstream games like Minecraft, for example, to people with different abilities. And there's different tools where you can do that. But how many games are actually designed with these users in mind, right? And I think it's kind of cool. Maybe a future project could be, you know, how do you design a game where the only input tracks your eye movement or the only input is based on the frequency of your voice or something. I think that's really cool. And you are free to use those ideas. And if you do, send me a tweet or something. I'd be interested in seeing that. Shout-out to my hackathon team, Erin, Mandip, Naina, Pandit, and Kevin. And it's really cool is, like, actually got a job from this hackathon. Capital One was organizing this, and they saw the game, and they were like, that's pretty cool. Do you want a job? And I was like, yeah, thanks. And what's the best part about this is this game is actually being played at this children's hospital. So that's, yeah, thank you. Thanks to these people for the cool slide theme. And feel free to reach out to me if you have any questions. My name is Matab. Thank you.