Posts

  • The Blogging Gauntlet: May 22 - Super Meat Boy's Instructive Design

    This is part of The Blogging Gauntlet of May 2016, where I try to write 500 words every day. See the May 1st post for full details.

    I play a lot of video games. They’re fun!

    I’ve learned a bit of video game design, and it’s really interesting. Much like cinematography, there’s so much you don’t consciously recognize until someone points it out to you. Good design is invisible, and it’s much easier to notice its absence than its presence. That can make design infuriatingly difficult to understand, so today I decided to explain what I’ve learned so far.

    Before I get into the meat of things, I should cite my sources. I’m cribbing from the Sequelitis video on Mega Man (warning: lots of swearing) and the TVTropes page for Instructive Level Design.

    ***

    As I’ve said before, video games take place in a constructed world. The first thing any video game does is teach you those rules. If you don’t know the mechanics, how are you supposed to play the game?

    What makes video games unique is that they can teach you the rules while you’re playing the game, without ever explaining them to you outright. This is what makes well-crafted video games so fun to me. It feels like I’m genuinely learning something. I get guided through simple challenges, which are then composed into larger ones. When done properly, playing a game feels like solving a puzzle where your subconscious already has part of the solution. Everything flows.

    Let’s talk about Super Meat Boy. It’s a really, really well designed platformer. It’s also hard as balls, but only in the later levels. The first world is easy, because it focuses on teaching the core mechanics.

    Here’s the first level, 1-1.

    1-1

    Easy enough. To beat this level, you have to jump to the raised terrain on the right side, then jump left to the middle platform. You can’t jump directly to the middle platform, and failing to do so teaches you how high your jump is.

    You touch Bandage Girl (the pink square) because there’s nothing else in the level, and after a few loading screens you move to 1-2.

    1-2

    Wow, Bandage Girl is really high and there’s no platforms to reach her! You might get curious and try jumping to the terrain on the left. If you do, you’ll learn you die if you go outside the level.

    Once that happens, the only thing left is to jump towards the wall. You try pressing buttons, and learn you can walljump to cover vertical space. Walljumping up the corridor takes you to 1-3.

    Also, note the decorative buzzsaw. It’ll come up later.

    1-3

    This gap is too big to cross unless you hold the run button before jumping. Also, more decorative buzzsaws.

    1-4

    So many buzzsaws! This level takes the walljump you learned in 1-2 and makes sure you know how to do it. So, you start jumping, and then you notice something - the screen scrolls.

    1-4-2

    This tells you that levels in Super Meat Boy may be bigger than one screen. Note we’re never worried about going out of bounds - by the time we reach the edge of the initial screen, we’ve seen the screen scroll. This primes the player to continue jumping to the top, even if they died by going out of bounds on 1-2.

    1-5

    The natural inclination is to go up. Why not left? Well, if you went left on 1-2, you died, but if you didn’t, note this part I’ve circled in red.

    1-5-2

    It’s incomplete. There must be more to the level off the top of the screen. We know the screen scrolls, so let’s go up. The only way to go up is to do walljumps off a single wall, so now you know how to do that too.

    So to recap, here’s the game mechanics learned so far.

    • You can jump.
    • The goal is to get to Bandage Girl.
    • You can walljump between two walls, or off the same wall.
    • You die if you go out of bounds.
    • You can run, and that gives you a larger jump.
    • Some levels are larger than one screen, and the game will scroll if they are.

    This is all taught in the first minute of gameplay, with no environmental hazards. This all builds into 1-6.

    1-6

    This is the first level where you can die by something other than going out of bounds. By this point, decorative sawblades have appeared in the past few levels, so seeing them as a stage hazard is no surprise.

    At this point, the player will jump and walljump their way to Bandage Girl. They’ve been taught everything they need, even if they don’t recognize it, and if they hit a sawblade, it’ll be their fault.

    Comments
  • The Blogging Gauntlet: May 21 - Fearful Symmetry

    This is part of The Blogging Gauntlet of May 2016, where I try to write 500 words every day. See the May 1st post for full details.

    I was hesitant to write on this topic, because I care about it a lot and didn’t want to mess it up. Eventually I decided it was worth writing a beta post.

    Last month, Anca Dragan gave a presentation on her work in human-robot interaction. Anca is one of those terrifyingly smart people that make you feel slightly ashamed about yourself. She did a PhD at CMU, was nominated for several best paper awards at top robotics conferences, and was hired straight out of her PhD to a assistant professorship at Berkeley.

    The event was hosted by FEM Tech, a new student organization that, quote,

    promotes gender diversity and inspires women from all majors to excel in technology careers. Through organized seminars, mentorship programs, training workshops, and networking events, FEM Tech will provide a supportive community for all majors to create meaningful connections with like-minded women. We hope to excite new interest in tech and provide support for women already in STEM majors.

    (FEM Tech website)

    The event was billed as open to everyone, but I didn’t go. I was very busy that week, and the event description sounded like it wouldn’t go into enough depth to be interesting to me. Or rather, that is the excuse I gave myself.

    In truth, I walked towards the event, and saw almost everyone there was female. I wasn’t comfortable with that, so I turned around and went back to the library.

    I only grasped the full implications when I was at the library doors. I wasn’t comfortable with an all-female room, at a time when many women in tech have to deal with an all-male room. Oh, so that’s what that feels like. Did deciding not to enter that room make me part of the problem?

    ***

    Several of my friends are worried about the reasonable chance Trump has at becoming president. Of course, the majority of my friend group is planning to back the Democratic nominee. (What, you were expecting me to know a Berkeley CS student who would vote for a Republican? Tell me if you find one of those, because that’s a rare breed.)

    Some have semi-jokingly talked about finding ways to live in Europe next year. Many are seriously worried about the damage a Trump presidency could cause.

    Meanwhile, I’m thinking about the 2008 general election, and the voters who gave their all to stop an Obama presidency. I’ve seen interviews from volunteers for the McCain campaign - some were truly frightened about how an Obama presidency would erode American values, destroy the economy, and send the US into a death spiral.

    I listen to the conversation with a blank face. So now we understand what it feels like, to see a candidate we truly fear. A candidate who we believe will rip the nation asunder. That fear is nothing new. It existed before, exists now, and will always exist. This year, we get to see it with our own eyes.

    ***

    It doesn’t feel like I’ve had a tough life.

    Yes, I went to a challenging high school, and a tough college. I’ve definitely had struggles. But, it doesn’t feel like I’ve had to work as hard as other people. I’ve never had to worry about failing a class. While students vent about a final’s difficulty, I walk out feeling like I solved every problem.

    That has to mess with my empathy. How am I supposed to effectively cheer up a student for the class I’m TAing, if I got an A+ while they find mod math inscrutable? How am I supposed to understand implicit prejudice, when I’m a male Asian in Silicon Valley? How do I justify avoiding crazy working hours, when those in poverty have to deal with them out of necessity?

    I view suffering as input-independent. It doesn’t matter if someone is crying because their salary is below $100,000, or if they’re crying because they didn’t have enough to eat. The inputs don’t entitle us to write off the suffering of a privileged person. Suffering is symmetrical, no matter the cause. Fixing those causes may have wildly varying costs, but we should still strive to empathize with that suffering.

    We should try, and yet it feels like I don’t. I can walk to an artisan tea shop every day and ignore the homeless on the streets. I don’t understand what it feels like to view the police with fear, or my bank account with dread, and I never want to. I’m in a position where I can avoid these issues, and quite reasonably decide I don’t want to add pain into my life for the sake of having pain in my life. Suffering is symmetrical, and I choose to avoid it.

    Tyger, tyger, burning bright
    In the forests of the night,
    What immortal hand or eye
    Could frame thy fearful symmetry?

    (William Blake, The Tyger)

    ***

    Yesterday, I lost. I didn’t finish my post in time. I have to donate $20 to some effective charity, and it feels like I lost. It’s going to help people, and it feels like I lost.

    I don’t know how to reconcile that, and some part of me doesn’t want to.

    On days like these, I have to wonder. Which is worse - always living with wool worn over your own eyes, or taking the wool off and pulling it back on by your own accord? And in the end, which will I choose?

    Comments
  • The Blogging Gauntlet: May 20 - Confessions of a Procrastinating Workaholic

    This is part of The Blogging Gauntlet of May 2016, where I try to write 500 words every day. See the May 1st post for full details.

    This post was put online at 12:00:07 AM. As per the rules, the post was not completed before midnight, and I must donate $20 to charity.

    This post was further edited on May 21.

    Now that my NIPS submission is done, I have time to write a bit about my feelings towards the student lifestyle.

    The thing about academia is that workloads are incredibly variable. The week before a deadline is hell on earth, while the weeks after it can be incredibly relaxing. When you’re a student, work blends into your life. The time you can do your work is very flexible, which makes it easy to put off until you have to pull an all-nighter.

    For the last two weeks of classes this semester, I had two final projects to finish, and it was a nightmare. At some point, I was waking up, going into lab, and not leaving until midnight, every single day. Some point in this destructive cycle, I noticed it was 1 AM, and did some mental calculation. “Hm, so I got up at 9 AM. I’ve been working for 16 hours. But, I went to lecture, and also got meals, so really I’ve only been working for 12 hours! That’s not…so…bad…”

    And then the penny dropped. Working until midnight every day was my new standard. Working at least 12 hours every day was my new standard. Mind you, this is including weekends - I’m pretty sure the only day I took off was Sunday, when I convinced myself I absolutely had to not work today.

    I understood this was incredibly unhealthy for me, but I couldn’t stop. My project was due Thursday, meaning I needed the poster done by Wednesday, meaning I needed to finish my experiment code by Tuesday because it had to run overnight. The timeline of my work shunted everything else out of my life, and I didn’t see any way to push free time back in.

    At Berkeley, I’ve never been able to get my life into a schedule. I’ll add things to my calendar, then not do them. Right now, I have a recurring event to write a post from 2 PM - 4 PM every day. I’ve never actually written a post in that block. It’s a glorified daily notification.

    When I have the freedom to arrange work however I like, it all gets done at night, or right before meals. It’s too easy for me to push it down the line.

    I know some people who argue this isn’t a bug, it’s a feature. Procrastination happens when you don’t have the motivation to get your work done. Thus, if you accept procrastination, you’ll work exactly when you’re motivated to.

    That’s true, but if I had the choice, I’d much rather average my misery over my entire life, instead of having it all pile up right before a deadline.

    What annoys me the most is that I could have that choice, if I learned to use proper scheduling. But, I haven’t done so. Every time I try to use a productivity hack, I only keep it for a week at most. Then, I drop it, because vaguely organized chaos is a lot easier to manage than structure. Somehow, I need to hack it to make doing productivity hacks fun. I haven’t figured out to do that yet.

    So until then, here I am. A procrastinating workaholic.

    Comments