Tuesday, January 31, 2012

Auralboros and Global Game Jam 2012

On January 27–29, six of my seminar students and I participated in Global Game Jam 2012. For those who don't know about the annual event, it is a 48-hour period during which people from around the world collaborate to make digital or analog games. All of the artifacts from the jam are made available under a Creative Commons BY-NC-SA-3.0 license. The closest location to us was in Indianapolis, but we decided to make the trip to Columbus. This was partially to avoid the congestion due to the start of the pre-SuperBowl parties but also to give us some geographical change: putting ourselves in a completely new place allowed us to treat the whole event as a kind of retreat.

After a fun pre-recorded keynote and some comments from game designer, author, and GGJ organizer Ian Schreiber, the theme was announced:
The GGJ2012 Theme
I love the fact that the theme is a picture with deep symbolic and historical meaning. This is, of course, an ouroboros, a word which I only know as a player of Betrayal at House on the Hill.

After everyone had a chance to think for a bit, people began pitching their game ideas. Some were closely tied to literal interpretations of the theme and others to the symbolic meaning of the theme. Many discussions began with the theme but then wandered away. I found the creative challenge to be in capturing the spirit of the theme in a game, especially with respect to the combination of endlessness across generations. Based on this, I pitched an idea for a game with rich audio experience. For the next 42 hours, I worked with Ryan Thompson on what would become known as Auralboros.

Auralboros Logo by Rebecca Austin
You can play the game on the Web, or you can go there indirectly through its GGJ entry. Note that it requires Unity Web Player, which is only available for Windows and Mac OS X, unfortunately. I encourage you to play the game before you read on, lest I give away some of its secrets. There are not many secrets, so you can understand why I'd want to keep them safe.

We decided to use Unity very early in the project. We knew that this would let us easily produce a game that could be hosted on the Web. We also figured that it would be easy to add pizzazz once the core mechanics were done. We invested several hours into the core gameplay sans audio, and it wasn't until midday on Saturday that we realized that Unity's audio API is practically non-existent. To be clear, you can very easily play back audio—including 3D audio—within Unity, but it does not support synthesis. In the end, after painful struggles with my laptop to try to get full-duplex audio to work, we ended up using MuseScore to drop notes onto the staff and then export WAV files. I had hoped to test the game with both chromatic and pentatonic scales, but we never got that far.

I had been looking for an excuse to practice some of the tips in Clean Code, but the truth is that I don't program anywhere near as much as I would like to. Working with Ryan provided a great opportunity. This was also my first time pair-programming. I've been having my students pair-programming for years, but I've always been forced into a "mentor" role rather than a "peer" role. For Auralboros, Ryan and I were simply working together as a team, and I'm happy with the results. He caught a few of my errors, and I caught a few of his. I definitely took the lead on some of the more abstract software design ideas, but none of them were so wild as to be outside of his understanding once we had them down.

We had the core game experience working by early Sunday, and so we turned our attention to beautification. I knew from early in the design that I wanted to have feedback based on a player's matching their own sounds. That is, Auralboros does not force you to do anything specific with it, but if you make yourself a rhythm game, then you get positive feedback. Our first attempt involved counting right and wrong notes, but after this failed, I realized that what we needed was a physics simulation. We created a "gravity" value as a constant downward acceleration. Each time you get a note right (i.e. you hit that key again when its cube is at the top of the screen), you get a boost to upward acceleration. This affects a velocity, which in turn affects a point. We map the point first through a series of greyscale values for the background, and then for increasing opacity on the two feedback orbs. After capping acceleration and velocity, this worked like a charm. Along the way, Rebecca Austin joined our efforts, designing our logo and textures on the two feedback orbs.
The Auralboros Team
For the most part, we kept to the headphones as we developed the game. It was always fun when someone would ask to see the latest build, leading to strange sounds and usually laughter filling the room, though I don't blame anyone for being a bit miffed at the distraction...
Josh's reaction to Auralboros during GGJ, as captured by Rebecca Austin
A few hours into development, Ryan and I started using Trello to manage our tasks. I had read about this tool and recommended it to others, although I had never quite found a use for it myself. This was a perfect application, and it helped that sharing between two Google Accounts was seamless. We had three sections to our board: defects, for those things that were broken; to do, for features we wanted to add but could live without; and paulish for ideas that would make the player experience more glossy. There was only one to do item that we didn't have time to add, and that was having the cube halos fade in and out based on distance to the apex. We finished our game about an hour before the deadline, so we may have been able to squeeze this in, but it would have meant re-exporting and uploading, and that was just not worth it. The GGJ servers were getting hit pretty hard.

I think it was good for all of us Ball State folks to have a classic R1 campus experience as well. We were at two different buildings for the event. On Friday, Parking was hard to find, and we walked around the building once due to poor signage. It happened to be a teaching building, and it was cluttered and musty. The classroom in which we met had grimy walls and inadequate blackboards. We did appreciate that we could lean back in the chair-desks, which would make it easier to rest during boring lectures. The next day, we were in the OSU Union—not a teaching space, but a place for events, meetings, and chats with alumni and benefactors. It was absolutely gorgeous, my favorite part being the totally gratuitous projector-that-descends-from-the-ceiling in our meeting room.

Special thanks goes out to Brian Orchosky, the site coordinator: if you see him, buy him a drink. 
Site coordinator Brian Orchosky
Global Game Jam 2012 was the largest game jam ever, and it was great to be a part of it. You can check out all 2000+ games at the GGJ Web site. Note that you can search by site, so you might want to take a look at the other games created in Columbus or in a city near you.

The Ball State University contingent in Columbus at the end of GGJ 2012
It was a great event, and we all enjoyed the weekend together. Thanks to Phil and Kristen for stopping in to see us, even if you couldn't participate in the whole jam. The only real downer was that when I got directions to the Jeni's Splendid Ice Cream on our route home, it turned out to be the one in the North Market, which was closed by the time we got there. I suppose we'll just have to go back sometime.

Monday, January 30, 2012

135 Hours

Last Friday marked three weeks at the Virginia B. Ball Center for Creative Inquiry. The students and I have been working together in roughly an 8–4 schedule. In the first week, I ran a workshop on games and learning, and the next two weeks were run as a Scrum-style sprint. At the end of these three weeks, the students have produced some good prototypes, sufficient for us to have chosen three to carry forward; more importantly for the learning process, they produced many, many more prototypes that are not being carried forward.

The students worked roughly nine hours a day for fifteen days. Given that a fifteen-week, three-credit course should involve nine effort-hours per week, the students' effort has been equivalent to a complete conventional three-credit course. Unlike a conventional course, my students have had practically limitless space, budget, and mentor availability. The only structural benefit that a longer class would have is more calendar days to consider the concepts, but I posit that the number of distractions that occur in a longer period far outweigh the benefits. Therefore, the result of my students' effort on Friday in terms of both understanding and artifact production can be considered the best one could possibly hope for in a three credit-hour course. Yet, we still feel like we have barely scratched the surface of the conceptual space: the prototypes we created are still very rough and will require significant iteration prior to engaging in final production.

This should not come as a surprise to anyone who understands game design and learning: it's only been three weeks! One would never expect that after a three-week intensive study, a novice would transform into a great painter, or be able to work as an architectural consultant, or to commercially compete in any creative design field. Three weeks of intensive study just gets you to the point where you can start to understand how far down the rabbit hole goes, how much there is to understand and how much practice you will need to advance.

This stands in stark contrast to the pressures of immersive learning, in which we faculty are asked to guide students through a process to create useful products for or with community partners. Keep in mind that I am an advocate of immersive learning, having written several papers and a book chapter on its benefits to Computer Science and interdisciplinary education. However, I also know that if we had taken any of these prototypes and started production halfway into our three weeks together, it would have been painfully premature. It's true that we could have made something by switching all our resources to production rather than understanding, but it certainly would not have resulted in anything academically substantial. We know that we can make a Bejewelled clone and slap a quiz on it, and many people will applaud this as "educational game design," but we're trying to do something much more significant.

I am eager to see how the team advances through this next sprint, as our focus narrows and we collaborate on three design. The goal is that two weeks from now, one of these will have risen to the top, and we can move into production, with executable releases every two weeks thereafter.

Monday, January 16, 2012

Moving in

The week before the semester started, I moved into my temporary office in the Kitselman Center. I found a department systems administrator so that I could borrow a cart to haul my workstation, books, plants, and miscellany from the fourth floor down to my wife, waiting by the loading dock with our van. I took the cart from the third floor up the elevator to the fourth and loaded it up, and when I returned to the elevator, I found this.

Here's the whole scene.
Unsure of what to do, I walked downstairs to tell my wife we would be indefinitely delayed. On the ground floor, the elevator doors were open, and there was a technician standing atop the elevator car, tinkering with the system. He told me it would be quite some time before he was done, but he offered to help me if my need was urgent. In about fifteen minutes, he was able to bring the elevator up to four and back down for me. I've never had any interaction with Murphy Elevator Company technicians before, but this gentleman was helpful and polite, and we had a nice chat about elevator maintenance on the way down.

My wife helped me load the van, and we drove the ~2.5 miles to the Kitselman Center to unload. Here's a glimpse of my office for this semester.

Not too shabby. To the right is a gas fireplace. Yes, that's right. On Friday, I walked to work in the snow, and when I got there, took off my boots and set them by the fireplace. In my office.

Sunday, January 8, 2012

Anticipating tomorrow

This Spring semester, I am a fellow with the Virginia B. Ball Center for Creative Inquiry. Yesterday I made public a blog that my students and I will use to write about the experience, and my post there explains the context. In a draft of that post, I had two paragraphs about how I got here, but this topic seemed more appropriate for this blog. The VBC blog is for the project; this one is for me to reflect. So, without further ado, here's a reflection of how I got to this point as a Computer Science professor at Ball State.

My first Summer here, I led a graduate seminar on game engine programming. I have always been one to tinker with game development ideas, though at that point, I had not finished and published any game-related projects. I was and am still interested in object-oriented design, especially design patterns, and so I used the Summer to investigate the relationship between classic software design patterns and game development. Looking back, this was my first experience with pure project-based learning, although I would not have known to call it social constructivism at the time; my intuition told me that if I got a bunch of interested grad students together for a few weeks with an interesting topic, we would all learn something. And we did. In fact, it was this Summer that I developed the essential components of EEClone, my case study for design patterns in games.

I continued this line of inquiry with a group of undergraduates and my colleague, Fu-Shing Sun. Each of the students developed their own game based on the design patterns that I introduced. I am still proud of the systems that these students created. Although the game designs were primitive, the software architectures were beautiful. Of course, software architecture was the focus of the course, so this is to be expected.

The Honors College was supportive of our desire to investigate multidisciplinary game design and development.  For two semesters, Fu-Shing and I team-taught a pair of courses, one on game design and one on game programming. The first semester, we were assisted by graduate student Ben Dean, and so we were able to create three small multidisciplinary teams, each mentored by one of us. The three games created out of this experiment were quite good, capable of being polished and released although none of the students were interested in continuing with them past the end of the semester. The other semester of this experiment, we created one larger team working in two parallel units: design and programming. This allowed us to focus each unit's attention on mastering their side, but the results were predictable in retrospect. Because the groups were working separately, there were several communication problems, and no amount of content expertise can overcome the challenges of bad communication patterns. It was a good learning experience for all involved, but the quality of the end result did not scale up with the number of people on the team.

These two semesters provided me with a great experience, and we took the opportunity to write a few papers about our experiences. My future direction for this line of inquiry was unclear, but I knew I wanted to be more involved in both the design and development sides of the class. It was around this time that I met History Professor Ronald Morris, who convinced me that there were ample opportunities in history education game development for elementary school students. This led to the Morgan's Raid project, which I have blogged about extensively; the postmortem is a good starting place if you're new here. As I've mentioned before, the Spring semester of Morgan's Raid—during which I led a team of ten students in a studio learning experience of finishing the game design and development—was the most rewarding activity of my professional career.

That's my reflective summary of how I got here.  Many semesters, proposals, and research papers later, I feel as ready as I can be to mentor my team this Spring. I feel like all of these previous experiences have led me to the VBC, a dramatic next step for my teaching and my scholarship. My mild nervousness about an untested team is tempered by the fact that I know half of them quite well, and the rest have shown themselves to be bright, polite, and motivated students. I have planned a workshop on games, fun, and learning for the first week of the semester, and I am eager to see how the team engages with the readings, discussions, and activities. On Tuesday, we meet with our community partner, the Indianapolis Children's Museum, to sort out the details of the project with respect to schedules, expectations, and capabilities. This will help direct the discussions through the rest of the week, and after that, I switch from teacher to coach, handing the reins to the team of students.

Thursday, January 5, 2012

Board games with young kids

I was discussing board games for kids with a colleague yesterday, and I sent her a list of recommendations. It struck me that this may be useful to others as well, so I've decided to provide the list here, with some extra details.

To give some context, these are played with my wife and nearly-five-year-old son, Alex. We have been playing some of these games since Christmas 2011, when he was in his late 3's. I have provided links to Board Game Geek, where you can find good summaries, discussions, reviews, and images of the games. Rather than repeat that information here, I've provided some tips on how we have modified the game to make it more fun for our family.

This is a kid-friendly version of Killer Bunnies and the Quest for the Magic Carrot. It comes with two decks, blue being the basic one and yellow adding a bit more complexity. This helped scaffold my son's learning, as he was able to get comfortable with the blue before getting into the yellow. He does not really read them; he knows the cards by their pictures.
We did make one significant change to the rules. The game contains Safety Hazard cards, analogous to weapons in Killer Bunnies. Each has a numeric value, ranging from 1 to 10, and the severity of the hazard clearly scales with this number. The rulebook recommends that to overcome a Safety Hazard, one should roll the five 10-sided dice and try to match the number. This means that all the Safety Hazards are mechanically equivalent, which is rather dull. We imported the mechanics from Killer Bunnies instead, rolling a 12-sided die and considering the hazard overcome if the roll exceeds the hazard's value. This is much more fun, though you will have to supply your own 12-sided die.

This is a great game all around, and I was a little surprised at how well and quickly Alex learned the rules. His strategies are rather simple, and he frequently makes moves just to entertain himself rather than for points—but the point is to have fun, so it's no big deal. We also have the Princess and Dragon expansion, which he tends to like to use because it has an awesome red wooden dragon. However, we have noticed that with these added bits, he has a harder time focusing on the rules: I think it's more complexity than he has patience for. Still, he does love to eat meeples with that dragon, and can you blame him?

We have fun with this one, although my son sometimes has trouble picking out moves. There is still a good balance, however, as we let him use the "kids" rule (all six treasure cards face-up) while my wife and I use the "adult" rule (only one treasure face-up at a time).

We've been able to enjoy this game for some time, but I feel like more recently the strategies have become more apparent to Alex. As I wrote before, we put it away for a few months, but now he has no trouble counting the dogs as two points and the cats as one. Perhaps most importantly, you can use a plastic dog from this game when you play Betrayal at House on the Hill, and the cats too if it's the right haunt.

This is a game from my wife's youth, and we have the 1982 printing. I have not played the 2011 re-release, but looking over the pics on Board Game Geek, it looks like the same game. When we play with Alex, we ignore the point values on the bottom of the guys and focus on getting them off the island. That is, we treat each person as one point. We have never actually tried to play the "full" game with him, but I suspect this would be frustrating.

Settlers of Catan
This one is the most recently added, a bit of a risk as we were looking through the cabinet for something Alex might enjoy. He requires a bit of coaching on effective road placement and initial settlement placement, but he really enjoys it, especially building new things. Since he is not a strong reader, we also have to help with development cards. We orient all of the number discs to face him, and this provides good practice at number recognition; he's known his numbers for some time but still gets confused between '6' and '9', as well as '11' and '12'. When Alex rolls the dice, he has to count all the pips to find the total, and I'm hoping that with repeated play he will start to see the patterns more easily. Despite the extra effort it takes us to help him play, we all tend to enjoy it.

Happy gaming!

La Fin du CS222: An Assessment in Three Acts

In December 2010, I wrote about an experimental approach for assessing a course's effectiveness, using convergent and divergent exercises and mind maps as a replacement for traditional written exams. Since then I have used this approach a few times, with only minor alterations.

For last Fall's CS222: Advanced Programming final, I was inspired by a recent purchase to present the assessment to my students as La Fin du CS222: An Assessment in Three Acts.

Act I, Scene I
Each student constructed a mind map on the topic of programming. They had done the same exercise on the very first day of the semester.

Act I, Scene II
In this scene, I distributed to the students their original mind maps back to them. The main source of conflict in this scene was that it was the final assessment of how well I had learned their names.

Act I, Scene III
Each student wrote an essay comparing and contrasting the two mind maps.

The essays were generally well-written and insightful, especially those where there was not much change. One student commented, "Now I know that this random assignment we did at the beginning of the year was not so much for you but for us." This is great evidence of metacognition, that the student has learned to think about the value of reflection to himself rather than to some arbitrary authority.

Act II, Scene I
I hung my giant, flip-chart-sized sticky notes and told the students that we were going to list, in twenty minutes, all of the things we learned this semester that were somehow connected to the course. I briefly explained that this was a divergent thinking exercise, meaning that anything could be listed and there would be no debate or criticism at this stage. We ended up with 119 items, which may be a new record.

Act II, Scene II
I asked the students whether there were any items on the list that should be consolidated. Many suggestions were made, though not all were chosen by the majority. After this process, we were left with 113 items.

Act II, Scene III
Each student was given four stickers, and they were asked to place these by the four items that they found most significant. It was made explicitly clear that significance was subjective.

Act II, Scene IV
We identified at the top elements by vote, which are given in the table below. I have provided clarifying links for the curious.

Object-oriented design19
Coding conventions14
Agile Manifesto14
Effective Java11
Test-Driven Development7
Stack Overflow7
User Stories6

Act II, Scene V
The students were challenged to write an essay about what they actually did to learn these items that the community had chosen as the most significant.

I believe that it is important to help students understand the connection between what they personally do and what they have learned. Last year, the first time I did an exercise like this, we did another round of divergence and convergence to determine what actions helped learning. I was not very happy with the results because they became too generic: I was hoping for more specifics than "the project," for example. Unfortunately, most of the essays were written in generalities rather than specifics. In part, I think this is human nature: if we write in specifics, we make statements for which we are accountable and that may be shown to be false. Writing in established generalities, such as "I learned a lot by working on a team," is certainly easier than identifying specific times, places, and situations with the team that led to learning about a particular topic. I realize now that, if I want the students to write about specifics, I need to provide more explicit guidance to this end. I also need to narrow the focus: taking the top ~10% of items is too many: even though students were told they could pick from among the eight listed above, many wrote vague statements about all eight or a majority of them, as if they would get points for coverage rather than quality.

Some of the essays did contain interesting insights. My favorite comment was on the hassles of merging in Mercurial. We had previously discussed in class how tool-supported merging could be frustrating, but that it was a necessary evil—and actually not evil at all compared to the manual, ad hoc alteratives. This student identified how the frustrations of merging made him focus on learning encapsulation, because he realized that the better encapsulated and more modular his team's system was, the fewer times they would have to merge. Excellent!

Act III, Scene I
Cinnamon Rolls, courtesy of my lovely wife.