thoughts on CCG & LCG apps

Today Hearthstone is finally available worldwide, and I will definitely be spending some time with it on my iPad. I have played it a bit on my desktop, enough to get the feel of it, and decide I wanted to wait until it was available for iPad. (Mostly because that’s where I spend most of my time gaming.)

I’m not really interested in commenting on the F2P mechanics, (since enough has been made elsewhere of how “gentle” they are in Hearthstone, or how “right” Blizzard is getting it), I’m more interested in a study of the game mechanics independent of the monetization strategies (no matter how closely they may be coupled). From what I saw at GDC, Blizzard really spent a lot of time trying to make Hearthstone accessible to the masses. This manifest in a lot of different ways, but essentially they are balancing card abilities and deck compositions (for pre-built decks you encounter and use early in the game) to help new players.

I never really got into Magic the Gathering. I know there will be some of you that stop reading at this point, but I guess what turns me off about it (and, realizing this, the entire genre of deck-based-fighting-games) is the direct conflict. Most of the card abilities deal with combat. Dealing damage to your opponent is a (if not THE) central mechanic, and I guess I just find that emphatically boring.

A month or two ago, I did get pretty into Card Wars, a LLG (CCG?) inspired by an episode of Adventure Time. It was a great episode, and made everyone who saw it (well, everyone I’ve talked to) want to play the game. It’s a lane-based game like Solforge, Spectromancer (or it’s sort of predecessor Kard Combat), or Kongregate’s more recent Tyrant Unleashed.

The first Hearthstone talk I saw at GDC (I saw two) was one about the AI, and I was pretty much entranced by it, loving this slide of the overall architecture:
20140416-162859.jpg

I guess this is another one of those posts where, if I had infinite time, I would dissect the mechanics I like about each of these games, and draw a cool diagram or something, but I don’t have the time, and I’m going to go download Hearthstone now, before I forget.

An Introduction to Generic Game Model

Here are my slides from the presentation I gave tonight at the MN Cocoaheads group about my open source 2D game framework, Generic Game Model.

Description
Martin Grider will share and discuss a few classes he re-uses from project to project allowing him to rapidly flush-out 2D games. The classes themselves are not all that notable, as most developers could probably re-create them in an afternoon, but the techniques are particularly suited to rapidly prototyping turn-based games. He’ll discuss some of his favorite rapid prototyping techniques, as well as talk about “juicing” animations in UIKit, (with a bit of quartz core, as well as a bunch of external libraries thrown in for good measure).

Commentary
As you can see, if you looked through the slides, I have already used this code in a rather large number of projects in the last two years. I was surprised myself, to be honest. At least 8 projects use this thing, 3 of which are in the app store.

My first Cocoapod
While prepping for the talk, I also turned the project into a Cocoapod. I had played around with cocoapods once before, only long enough to install it and run pod install on a test project, (a process which is, if anything, too easy!), but actually creating a pod myself was a new experience, and bit more work than I’d expected going into it. Anyway, you can now add pod 'GenericGameModel' to your projects to try it out for yourself.

Thanks to Bob McCune for running the show and letting me speak!

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.

For The Win app — relaunching soon & app store rejection

003.ftw_splash@2xSo I mentioned in a previous post that the For The Win app I worked on for Tasty Minstrel Games was removed from the app store, (embarrassingly right before I spoke about it at GDC). When I emailed Michael at TMG, he revealed that it was just not making enough money to justify paying the $99 to apple to keep it there, and he was happy to let me put it back in the app store under my own account.

So I spent some time last Friday and updated it for iOS 7, fixing a few minor cosmetic bugs here and there, finally submitting it around the end of the day.

Long story short, Apple rejected the app, for the following reason: “11.1: Apps that unlock or enable additional features or functionality with mechanisms other than the App Store will be rejected” They clarified with the following statement: “We found your app inappropriately unlocks or enables additional functionality with mechanisms other than the App Store, which is not in compliance with the App Store Review Guidelines. Specifically, your app allows users to unlock avatars by subscribing to a newsletter, following on Twitter, or liking on Facebook.”

Okaaaay… So a couple of reactions: 1. Obviously, this functionality was approved in the original app. But maybe they just didn’t catch it then. And 2. Doesn’t like every 3rd game in the app store do this? I mean, seriously, I see games giving extra currency for FB likes or even just twitter comments ALL THE TIME. Doesn’t candy crush unlock each level pack with Facebook interactions? (Although now that I think about it, those interactions take their friends back into the app, which is maybe how they get around this issue.)

Alright, so my arguments probably amount to “But everybody else does it!” I’ll be making some changes to just give everyone the avatars all the time (and probably re-word the achievements) and upload a new binary… probably sometime later today.

Oh, and by the way, since the app was in the store for about a year, and presumably some people paid for it in that time, I’m just going to put it up again for free. So the folks who downloaded it before can get it again without having to pay. I am considering adding the following functionality in an update: making it Universal, and asynchronous multiplayer. If and when I do that, I’ll probably shout about it some, and then make it paid again.