Watching videos — WWDC, Swift, POP, and grid-based games

This week has been all about learning, and specifically about watching videos to learn. Mostly because this week is Apple’s big WWDC conference. The list of developer-specific stuff they’ve announced this week is perhaps slightly larger than usual (including a new programming language called Swift — more on that later), and I have been watching a ton of talks pouring out of San Francisco in video form. (Special thanks to Apple for releasing them so expediently!)

Normally I am fairly un-enthusiastic about watching videos to learn. I’m much more of a do-er than a view-er. I’ve got to be working with the code in order to absorb a new programming language, so the Swift videos in particular have been somewhat frustrating. I did spend most of Tuesday with the OSX 10.10 and Xcode 6 betas, and Swift specifically, but after spending a lot of unnecessary time tripping over syntax, grammar, (and copious crashes) decided to go back to videos (and getting some actual work done).

My impressions of Swift are pretty mixed. On one hand, I love that they’re trying to make a language that is simultaneously more accessible and also less prone to bugs. That is as fantastic and commendable as it is self-serving. On the other hand, I’m not yet convinced it’s going to be an instant switch for me. I had lots of little niggling problems with the syntax. For example, I’m not sure the benefit of declaring strongly typed variables using generic keywords (var and let). In the c-based syntax languages I know and love, you declare the variable with the type. So in swift:

var view = UIView()

vs Objective-C:

UIView *view = [UIView new];

Now, the first example isn’t ambiguous or anything, but how about this one:

var views = UIView[]()

This is how you declare an array of UIView objects. I do like that it will always (and can ONLY) be an array filled with UIView objects, but I do think it’d be incredibly easy to miss the brackets. Overall though, most of the problems I had weren’t with the language itself, but with the tools, which I think are just not ready yet. I mostly agree with Austin Zheng when he says (from the comments of his 2048 port to Swift): “Xcode is as unstable as always. The background compiler/code analyzer kept on crashing and restarting itself. Xcode was functional enough to allow the project to be brought to some state of completion. The debugger is horribly broken though.”

All my video learning this week actually started on Monday (while waiting for the WWDC keynote to start) with watching Facebook’s video on building the paper app. This is also the one in which they announced their open-source animation framework pop. (And was recommended to me to learn about why it might be useful.) At an hour and a half, it’s a long video, but worth watching not just for the pop stuff (which is absolutely interesting, particularly if you already use Core Animation in your code), but for a multitude of other insights into how Facebook writes it’s apps. (There is some seriously interesting iOS engineering going on over there, something I did not expect given their history and track record, particularly in the quality department.)

Finally, yesterday (after fully maxing out on more WWDC videos), I randomly stumbled onto a talk about SpriteKit and grid-based games. The first half of the talk, by Scott Kim goes into great detail about several different kinds of grid-based puzzle games (on iOS specifically). He more or less breaks the talk into categories organized by gesture, which I think is an arbitrary distinction. (I’ve talked before about how I think the best games provide both tap and drag control schemes that are not incompatible.) Otherwise I think he does a really great job with the topic, and while it’s nowhere near comprehensive, it’s a very nice introduction / survey of the topic. This is very close to a talk that I’ve been thinking seriously about writing. (I first mentioned this idea in a previous blog post.) But since I haven’t (yet) written my taxonomy of grid-based games, Kim’s talk is, at the moment, much better than mine.

My GDC 2014 talk is available in “The Vault”

The GDC Vault has a ton of old Game Developer Conference content. I think they’ve been recording all the sessions (or most of them) for at least a few years now.

Anyway, my talk Usability Lessons from Mobile Board Game Conversions is now available over there. If you follow that link without being logged in, you’ll be able to see the slides (which are also available in my blog post). I’m not sure about the pricing for premium access, but if you had an “all access” pass to GDC, a vault membership is included. Anyway, if you’re logged in, the full video of the talk is available, in a pretty neat player that includes both my talking head, as well as the slides.

I wanted to talk about the Q&A at the end. After I gave the talk, I left feeling like I’d done an okay job with the Q&A, but when I asked my friend August his honest impressions, he essentially said that part was a train wreck. Watching it again, it was worse than my initial impression. I essentially didn’t answer anybody’s questions clearly. Not sure what was going on, but my brain was basically mush. I thought I’d summarize the questions here, and give some “real” answers if I can. I apologize in advance for not having anyone’s names. None of the questioners introduced themselves, and we have no video of them, so I essentially have no idea who asked these questions.

Why no love for Stone Age?
The first question was about why I hadn’t used any example screenshots from the Stone Age conversion. As I said at the time (maybe I did answer at least one question adequately), I had intended to include some screenshots of this, but essentially hadn’t been able to get a screenshot that I liked or that illustrated one of my points well. Another reason is that my talk was originally about twice as long, and I cut a ton of it to fill the 25 minute slot, so there’s that. I’m sure I could also come up with a list of other games I would have liked to include but didn’t. Looking at the folder of async games on my phone, Stone Age and Lost Cities were the only two that I didn’t include.

Board Game Accessibility
The next questioner was essentially asking about comments or best practices for accessibility in board game conversions. I was not prepared to talk about accessibility at all, I rambled a bit about player colors and how it was a good idea, but had no real suggestions. I think accessibility is a HUGE topic, and essentially my mind was boggling with the various ways I could have tried to tackle it on the fly. I think the first and most obvious point is that you should think about your audience. As with usability, you should be intentional about your accessibility, and by that I mean you should spend some time and think about your audience. Then think about how you intend to make it easy for them to play. If it’s important that you help color blind people play your game, you’ll obviously want to do testing to make sure that they can. There are numerous resources available for online accessibility, and a lot of those probably apply to games, but there is at least on site devoted to the topic of video game accessibility. There is also an IGDA SIG (special interest group) devoted to game accessibility. Note that the questioner was asking about how any of this might apply to Board Game Conversions specifically, and unfortunately, I still don’t have a good answer for that.

Watching and commenting on game plays
The next questioner was asking about watching play-throughs (especially of “expert” games), as well as commenting on those games, and wondered if I had any suggestions for how to implement such a thing. In my rambling answer, I mentioned that the Go community highly values this sort of thing, and that there are a few Go apps that do include this sort of thing. (The same is definitely true of Chess, although I’ve seen fewer apps that allow you to comment or add your own comments.)

I guess any practical advice for allowing others to replay and/or watch game replays would probably depend on a lot of factors. Where will it be played? In the application only, or do you also want to capture physical playthroughs? (If you don’t have cross platform, you’re limiting the audience for the replays, and probably not capturing enough of the games that are being played to be seriously meaningful.) But if you allow the games to be viewed outside of the application, (say on a website or better yet by publishing your file format specifications and the gameplay files themselves), then you’re opening up another big can of worms. How long does the game take to play? Will these playthroughs take as long to watch as playing a game? (Ideally, they would not.)

I think a salient point (that of course I failed to make at the time) is that there is a file format specifically for recording games called SGF (Smart Game Format). SGF is used to record quite a number of simple games, but is limited to two-player games. It’s quite commonly used to record Go games, and for a long time I actually thought SGF stood for “Smart Go Format”. I’ve evaluated it once or twice, and essentially found it too confusing to seriously consider implementing. It’s not a human readable format (though it is text and not binary).

Any conversion will already have to think about how best to save the game. Sharing gameplays is as easy (or hard) as sharing that format. But of course, not all formats allow you to re-play the game. I guess I feel like allowing the game to be replayed from the beginning is a feature you should strive for (ideally) anyway, and of course one benefit of that is that it allows the replay to be watched by someone else. Ideally, you’d then build some kind of commenting system on top of the save format, saving the context of the comment (when it occurs) as well. Of course then you have to build an interface for viewing those replays as well as viewing the comments on the replays. Finally, I think it’d be important to have some kind of moderation of the replays. If you simply made all games played *ever* available for viewing, it’d be too hard to find the expert games. You’d probably want to allow the community to rate the replays or otherwise allow your community to filter and/or otherwise determine what replays have value. Eventually you could filter by actual engagement, ie, how many comments does a game have on it, how many times has it been viewed, etc..

Thinking about usability for the system that allows you to watch the replays will be a big deal. (And probably highly dependent on the game itself.)

I clearly do have some interest in this sort of thing. It’s a shame my comments at the time were so inadequate to the topic.

???
I have to admit that after several listens, I still couldn’t quite understand what the final questioner was asking. He sounded eloquent but I don’t really feel he got his question across. He was asking about examples of “specified language or tools” specific to individual games. At the end he gave the examples of Monopoly or Go, and seemed to be asking how tailoring a conversion for one or the other might be different. I guess my response should probably have been that EVERY game does of course have its specifics, and a general study as I have done will of course not be able to capture the nuances of each game. I guess I feel like all games have a language, or definitions anyway, and one of the first things I do when writing a board game is decide whether I need to include a glossary at the beginning of the rules/instructions. One of our jobs as designers is to shape those rules unambiguously, and attempt to reduce semantic or subjective misunderstandings.

GDC 2014

Since I posted last year’s GDC badge, I figured I’d do it again. Be sure to scroll down for some of my thoughts about the conference this year, as well as being a speaker for the first time.

20140328-115954.jpg

Being a speaker at GDC was definitely a double-edged sword. All bets are off if I get any consulting work out of it, but if you break down how long I spent preparing for my talk, I definitely invested more of my time than the cost of GDC admission. On the other hand, there were certainly less tangible benefits as well. I got to go to the speaker party, for instance, which was really only “valuable” in terms of meeting other speakers and making some industry contacts. I spent quite a while there talking to Chris DeLeon, for example, who runs Hobby Game Dev. (I finally decided to check out his site, and got completely sucked in, btw. Be careful, there’s so much content over there you can easily lose an afternoon!)

A bit about the process of being accepted as a speaker: When my talk was provisionally accepted, the organizers made some suggestions for directions they’d like to see the talk evolve, and made it clear that my acceptance was contingent on those changes. I (of course) had the opportunity to bow out at that point, but chose to work with them and make it the talk they wanted rather than the talk that I’d submitted. I would definitely like to be a speaker again if I have opportunity to present something I’m very passionate about, but that revision process is not something I think I’d like to participate in again, not because it was unpleasant in any way, simply because it really sapped my enthusiasm for speaking. In this case specifically, my talk was initially not so much about usability, and while I think usability is definitely an important aspect of game development, it’s not a topic that I’m super passionate about. If I speak again, I want it to be something I can get fired up about. (Certainly mobile board games are a topic that fits that qualification, but specifically because that aspect of the talk was deemphasized, my enthusiasm also suffered.)

GDC, for me, has always been about soaking in as much of the panels and content as possible. Performance anxiety really put a damper on that goal (certainly on the day of my talk, but it had ripple effects the day before and after) so that definitely felt like another downside. On the other hand the added prestige associated with the speaker ribbon was a definite plus, especially in terms of talking to and meeting people I would not have otherwise.

The other big difference this year was that I attended GDC from the perspective of an igdatc organizer. I went to various meetings and talked to quite a few other chapter organizers from around the world. My take-away from this is that we are doing just the right amount of stuff, I think. There are definitely chapters WAY ahead of us in terms of volunteer effort and event planning, but there are also chapters that put in way more effort and have less events and fewer attendees. Our new Multiplayer Extravaganza series is humming along, and many of us are super excited to create our own local multiplayer games to showcase there.

Finally, the other thing that felt different about this year’s GDC was that there was a lot more opportunity to PLAY there. In addition to the IGF booth (that has existed on the show floor for years AFAIK), as well as the “doing it on the table” (boardgames exhibit that I believe was new as of last year), and GDC Play (which is a paid exhibitor space where you can show off your game), there was also: the Mild Rumpus, Indie Megabooth, alt.ctrl.gdc, and a Killer Queen arcade cabinet randomly positioned near the expo hall entrance. All these were welcome additions, and made for relaxing interludes that definitely helped with that speaker anxiety I previously mentioned.

I feel like this entire week has been “coming down” from GDC. (Which probably explains my high-frequency blog postings.) I definitely feel more energized about game development after this year’s GDC than I felt after last year’s. I don’t think industry events like GDC are required to be a game developer, but if you are developing a game, attending GDC will feel like a giant room full of 24,000 people with whom you already have something in common.

Practice in NYC, day 3

The second FULL day of Practice was easily just as amazing as the first. I never really finished extolling the virtues of the first day, and I’m highly unlikely to go back and flush out my previous post with more details, so here’s a disclaimer that this post will be similarly unable to adequately describe how compelling and wonderful I found the conference experience. If you want to get a sense of it, probably easiest would be to scroll back through the NYC Game Center’s tumbler, where a lot of quotes and some screenshots were posted. I understand that eventually the talks themselves will be posted.

Michael Brough started the morning by talking about roguelikes. It was interesting, (if a bit un-focused), but I would much rather have heard him talk about his process. He only casually mentioned tools he’d created for art (and music?), and I absolutely wanted him to go into detail about those. The “slides” of his talk were mostly just screenshots from various roguelikes, none of which even remotely approach the beauty and glitch-glory of his own creations (even the screenshot of his game(s) didn’t adequately show off the graphics, I didn’t think, and video would have done a much better job). I am a huge admirer of his work, so if you are reading this and aren’t familiar, at least download Glitch Tank or the more recent 868-HACK from the app store. If you have a PC, a lot of his older games are also available for download from his website.

If the first day was influenced by Warren Specter’s talk “about” emergent gameplay versus scripted gameplay, the second day seemed (to me) “about” the second talk, which was about Nordic LARP, by Cecilia Dolk and Martin Ericsson, two of the organizers for a LARP based on Battlestar Galactica called Monitor Celestra. Their talk was highly entertaining and really compelling. (I saw a lot of tweets along the lines of “I’ve never wanted to larp before, but this makes me want to.”) They said a lot about crafting experience, and it was clear to me that the quality of their LARP was what made it extremely compelling. Similar to the generative gameplay concept, they argued that you cannot script a LARP, you merely script the rules and framework, and hope for the best. It sounds like Celestra was a huge success, and they are going to help bring the experience to the US in the next year or so. (And look for copy-cat LARPs that use similar concepts to allow us to “experience” many other fictional worlds in the future. I’ve got my fingers crossed for a disney Star Wars LARP, which there is some evidence to suggest might be in the works.)

The final talk of the day called back to LARPing with references to a dinner theater in which you play the prisoner’s dilemma in order to “move up” to the spots where you get better quality food.

One of the best aspects of the conference (that I have yet to really even mention) was hanging out with all the other incredible game designers in the generously allotted time between talks (left open intentionally for this purpose). My lunchtime discussion was decidedly influenced by the Celestra LARP talk, and we spent probably an hour discussing LARP, role playing, and the various other ways that games and life overlap.

After lunch there was a three-part discussion of user-testing, which diversely included someone working on League of Legends, someone who works on the Assassin’s Creed series at Ubisoft, and Naomi Clark, who interviewed dozens of indie developers for her portion. I won’t say much about this, except that it was great, and to link to Naomi Cleark’s slide deck, which is absolutely chalk-full of good advice for indies.

Finally, my talk of the day award, (IMO) and possibly the talk of the conference, goes to Robert Yang, who essentially did a cultural reading of the Half-Life source code. I couldn’t possibly do it justice, but among the many surprising and beautiful insights he shared were the fact that the door of the train in the opening sequence of the game is actually another train, as well as the observation that “smell” in Half-Life is actually a “sound”. (You’ll probably need to watch the talk to understand either of these statements.) Let it suffice to say that his talk was full of cultural and political references, and also imaginative insights like “Half-Life is the Myst of video games”. He called for more closer examinations of source code in the future, recommending the book 10 PRINT, and the works of Fabien Sanglard, who has done some writeups of the source of a lot of the id software releases. Yang is clearly a lover of originality and beauty in video games, and his passion for both was quite compellingly at the foreground of his talk.

In conclusion, I cannot overstate how compelling and positive I found the experience of going to Practice 2013. I will almost certainly try and go again next year, and I hope that many of the people I made contact with will become long-term relationships. The game development industry is quite fragmented and sometimes feels so huge that it’s a bit like sailing in the ocean. It takes a long time to get anywhere, and in the mean time you probably won’t see anyone on your journey. It’s nice to find a place like Practice, some kind of pirate’s cove or something, where a bunch of similar ships are gathered, at least for a little while.

Practice in NYC, day 2

The morning lineup just blew me away. The day started with Warren Spector, who basically made a long and somewhat impassioned argument for emergent systems in games. He argued against scripting specific gameplay paths in favor of giving your players a lot of freedom of choice. He repeatedly said he wasn’t making qualitative judgements, and that he (sometimes) enjoyed games that didn’t do this, but these apologies probably felt pretty flat for proponents of games without open-ended and emergent qualities. I was pretty active on twitter yesterday, and quoted him as saying “I’m not saying games without emergent gameplay are bad… I wouldn’t call them games really.” (This was an actual quote.) He somewhat cheekily finished the talk in a rush, saying “Games are good, simulated games are better.”

Someone on twitter called his speech preaching to the choir (early on), but other tweets later made it clear that was decidedly not what was happening. I think there is a small but very passionate group here who feel that games can (and should) exist on narrative alone, or rather that the quality of “experience” is all that matters. I think my tastes fall pretty clearly with Warren on this issue, but I can see the other argument too. I think there’s a place for those games, sure, but I wish more giant AAA titles were emergent, and I don’t think I’m particularly interested in making games without those properties myself.

Eric Zimmerman, who more or less moderated and announced all the speakers, called Warren out at the end of the talk, asking for those proponents who had been vocal on twitter to speak up in person and challenge this viewpoint. Barely anyone did, and nobody (in my opinion) made any real challenging or compelling arguments.

As an aside, “action puzzle” games decidedly qualify as emergent, while “static” puzzle games are basically the exact opposite. (Possibly explaining why I still haven’t put out Action Chess Puzzle, even though it’s pretty far along in development. Designing the puzzles themselves was so tedious for me that I ended up writing a puzzle generator to try and get out of the task entirely.

This theme, emergent versus scripted gameplay (even if this isn’t, as some argued, an either/or dichotomy), continued throughout the morning and the rest of the day, almost as if it’d been planned. It was definitely continued on Twitter, but each of the speakers had a Q&A at the end, and in those too, this argument popped up over and over again.

Robert Seater, who I’ve been hanging out a bit with (thorough sheer proximity and the discovery that we share quite a lot of favorite board games), expressed frustration this morning that this argument is not particularly applicable to board games, but I think Rob Daviau‘s brilliant talk later in the day was directly relevant. He talked about designing the game Risk Legacy, and in addition to being one of the more charismatic speakers, he was clearly a board game design veteran with a lot of great advice as well as anecdotal experiential wisdom to impart.

But I’m getting ahead of myself. I don’t have time to write about everything (and there is so much I wanted to talk about that I haven’t gotten to yet!!!). I skipped over the 3-part talk immediately following Warren Spector’s talk ostensibly about “strategy games”. Soren Johnson exceeded my expectations (having mentioned his stint at Zinga in his bio), and struck me as particularly smart. Keith Burgun‘s portion had a slow start, but eventually he got into some really nice design advice.

I’ve got to cut this short, because I’m watching Michael Brough talk about roguelikes, and that’s pretty distracting.

Practice in NYC, day 1

I am in NYC this weekend for the NYC Game Center’s Practice 2013 conference. It’s two days (and change) of game design talks, and I’m super psyched about it. Here’s a brief recap of day .5 today:

Yesterday – Tourism
I got into town yesterday, and got some tourism in with my friend KR and her husband Dan. KR and I took in an audio tour of the statue of Liberty, and got to climb to the top of the “pedestal” on which she stands, looking up her skirt. (She’s standing on a glass ceiling!) The guy who worked there gave us some interesting factual tidbits including the fact that the inside of the statue is black because of “our friend asbestos”, and as they remove that in the upcoming years, the inside of the statue will eventually turn as green as the outside. I am now a fount’ of Statue of Liberty knowledge (though I will likely soon forget it all) and it’s got a much more interesting history than I’d imagined previously.

Getting There
I slept in today, and eventually got to Greenwich Village around 1 pm, but the email said this afternoon’s event started at 3:30. (Playtesting and board games until 5:30!) So I hung out for a while at the nearby Monument park, avoiding the homeless-looking chess players (it’s a bit sad to me that they all appeared to be over the age of 50), and instead sitting on a bench people watching, listening to a pretty amazing saxophonist, and eavesdropping on one side of a tarot card reading by a man wearing a pointy silver hat and cape. Eventually I wandered into a coffee shop called Think Coffee, and lost myself in Oceanhorn for an hour or so. (Prognosis on Oceanhorn: MUST PLAY!!!) I looked up and it was almost 4, so I headed to the location.

Unfortunately I then figured out that the games and playtesting were over in Brooklyn, at the actual NYC Game Center. Fortunately that was only a 15 minute train ride away.

NYU Game Center
The Game Center space is pretty sweet, and there were lots of folks crammed into their “game library” playing a bunch of different games, many of them on machines that are clearly permanent, but several people were demo-ing their own wares on laptops or iPads. There was only one board game being played, a werewolf-like (why are these so popular now!?!), and when I sat down to maybe get in on the next game, it was explained to me that all the cards had different abilities, which you had to memorize, because the rules were in German, and there wasn’t that much time for the next game, so maybe they didn’t want any new players, thank-you-very-much. It was honestly just fine with me, although the game did appear to have more interesting mechanics than your average guess-who-is-who, but Eric Zimmerman, who was organizing, was very apologetic about it afterward, which was nice, and probably as a result, agreed to break out his new game Quantum, so I could at least get a look at it, even if we didn’t really have time to play a full game. (I am hoping to get a game in this weekend sometime. I think it looks very promising even if there is the occasional die roll.)

After that, a group of about 7 or 8 of us took the train together back to Manhattan.

Practice Begins
We got to the venue and got our badges with only ten or fifteen minutes of mingling before everyone filed into the auditorium for the first session.

Well, actually before the first session, this pretty amazing video played:

(Hysterical.)

Then (after some preamble), the first session was by two female break dance event organizers (and themselves breakdancers) explaining some of the game mechanics of break dance competitions. I’m sure I was not the only person in the audience to be surprised that there are international competitions, or that a one-on-one competition is referred to as a cypher. (Was totally not aware of this meaning for the word, though apparently — at least according to wikipedia — it is also used with similar meaning in poetry slams.)

Following the talk, there was a party / reception featuring a demonstration of some of the breakdancing, as well as an open bar (so I could feel doubly slothful). There are some pictures on the NYU Game Center blog, where discerning viewers can probably find some entertainingly candid photos of me.

There were a bunch of games set up for multiplayer fun, and I particularly enjoyed a 2D top-down capture-the-flag game called Slash Dash.

I also had a really great talk with fellow (but former) Minnesotan Ben Johnson, of Babycastles. We both agree that the Twin Cities is rife with potential for game developers and art to collide and make spectacular games.

The Subway
I left with a small crowd of fellow attendees heading toward the subway, to be greeted by this street-performing duo. I think everyone else got on a train before this started though, and I may have been the only Practice attendee to witness how awesome it was:

GDC and App Stickers

This year’s GDC is already a blurry whirlwind memory of game design talks and discussion, hodgepodge game postmortems and analysis sessions, and a smear of industry faces and handshakes. GDC is a lot of things to a lot of people, and there is definitely far more happening in that week than any one person can realistically experience, but for me the main point was to soak up as much as possible in five days, mostly in regards to game postmortems, game design theory, and hearing about what’s happening on the “fringes” of game development. And with that goal in mind, it did not disappoint.

This year, at the suggestion of Eli over at TouchArcade, I had some 2″ app icon stickers printed for some of my apps, and aside from the initial premise of trading and collecting, I found the stickers to be a really excellent conversation starter and way to just launch immediately into who I am and what I do when meeting other people at GDC. I’ll admit to being one of those people who meets you and immediately scans your badge (see the previous post for my GDC badge), looking to see if I recognize your name or your company. It’s a great way to find some common ground for discussion, but I found with the stickers in my pocket, it was far easier to start a conversation, and I rarely had to resort to the “so what do you do?” mantra.

Here are the stickers I had printed:
4grid

And here are all the ones I collected:
loot1

You can see on the right there is a long smear of them. That’s because Dave Castelnuovo, creator of Pocket God, was a sponsor of the Touch Arcade party, and he walked around with a box of stickers, handing out rubber-banded stacks of 50 at a time. Here’s the full set from him:
pocketgod

So in total, I think that makes my sticker haul exactly 100 rounded-rect stickers, including the 50 pocket god ones. There were also a handful of differently shaped ones (only the Letter by Letter one is pictured, but I also got a cool triangular Galcon 2 sticker from Phil Hassey, and probably a dozen other ones too). Last year most of my GDC swag was t-shirts, and I got a few of those this year too, but the stickers were far more valuable, at least in terms of process of acquisition.

Last but not least, many thanks to Sticker Mule, who provided all these high-quality stickers at such a great discount!!!