Below you can find my slides from the presentation I gave at last night’s IGDA Twin Cities meeting.
I think the presentation went okay, but I should have realized ahead of time how boring a topic spreadsheets can be. I saved the demos for the end of the talk, and by the time I got to them, I was really feeling the boredom radiating from all corners of the room. Anyway, I hope these slides are helpful to someone.
While preparing for the talk, I came across an interesting article about the history (origin) of spreadsheets called A Spreadsheet Way of Knowledge.
Yesterday, my friend Lloyd linked me to Chessrunner (reddit thread), a web-based, chess-inspired endless runner in which you start with only a king, which you have to move forward on an endless chessboard. As you move, you can capture enemy pieces and make them your own. It’s an inspired idea, and one that apparently only took developer/creator Juha Kiili a weekend to implement (in Unity). There has been plenty of positive commentary on Reddit, and hopefully he’ll flush out the idea and (ideally, IMO), bring it to iOS.
Chessrunner’s “timer” mechanic (making it an action puzzle game) is pretty cool in that the gameboard is both expanded (from the top) and shrunk (at the bottom) one square at a time. The opposing colored pieces take one move after every one of your moves. They will ALWAYS capture your king if you give them opportunity, but they are not smart enough to trap you (yet), so surviving is really all about seeing all the attack lines. And that’s why this game really does a good job (IMO) of feeling like something you do while playing chess.
Have I been remiss?
I’ve written before about various chess-inspired puzzle games. (And of course I hope anybody reading this already knows about ActionChess, which was my first app in the app store.) But I realized when I started writing about Chessrunner that there was no way to find those game mentions! (Now there is a Puzzle Chess Games category.) And furthermore, there are several other chess puzzle type games that I’ve played over the last few years that have not (yet) been mentioned here. So I wrote up some mini-reviews:
Pawn’d (available for $1 on iOS, or in Lite form for free) is a chess & match-3 matchup. I had a very similar design idea for this style of game as a game mode for ActionChess, but I never really put any time into it.
Pawn’d takes the concept in a lot of different directions at once, and looks great while doing it. There are three main game modes, each designed around how the game ends, and each with two more difficult variations called “Blitz” and “Master”. Additionally, there are two introductory modes that have neither variation, one called “Practice’d” (play to a certain # of matches), and another called “Clock’d” (play to a time limit). Each of the modes has its own leaderboards, making something like 22 leaderboards in the whole app. There are also a ton of achievements. Basically, if you like this concept, you can keep playing it for a LONG time without running out of things to do.
This game, possibly more than any of the other ones listed here, is decidedly worth playing, and I’ll cop to getting sucked back into it while writing this.
Chess Tower Defense
I’m fond of telling the story about how, when asked what he thought of ActionChess, my (then 8-year old) nephew Jake replied with “Could you make it a tower defense game?” I LOL’d. Well I think it was less than a year later that you could play Chess Tower Defense over on Kongregate.
It’s graphic design is quite spartan, but the concept is interesting nonetheless. You must survive waves of attacking “things”. (They are not pieces really.) The things don’t attack your pieces, but instead march methodically toward you (downward), passing right through your pawns. Your pawns (and other pieces) can attack them, in the standard directions, and if they don’t, each thing will remove one of your hearts when it gets past your back row. Between waves, you can reposition your pieces, and buy new ones. It’s an interesting concept, and one also worth spending some time playing, if only just to wrap your head around it, I think.
Knight Defense (for iPhone or iPad) appeared in the app store about another year or so later. As good as Knight Defense looks, it’s definitely less on the chess strategy end of the spectrum, and closer to the tower defense end. It’s all real-time, so there is no turn based aspect, and you can move your pieces all over the board at will during the game. In each of the squares your pieces could attack in a real game of chess, those pieces may damage enemy pieces. Like other tower defense games, Knight Defense is played in waves, during which enemies will appear at the top of the screen and move toward your king piece, wherever he might be on the gameboard. Though they are shaped like chess pieces, the enemies don’t move or attack like chess pieces, there just run into whichever of your pieces are in front of them, and “damage” them, eventually destroying them. Your pieces can be upgraded to do more damage at once, and to heal them once they’ve themselves been damaged. This is worth playing for chess fans, (especially so for those of you who already enjoy Tower Defense), but it’s not necessarily at the top of my list.
Cheesy Chess (free with ads for iOS) is not turn-based or action-puzzle at all. It’s more of a static puzzle game where the goal of each level is to get your king to the other side of a small chess board filled with pieces but for one square. In as much of the game as I’ve seen, there were no captures, only moving pieces around in a very cramped and crowded grid. This felt to me like a chess-themed version of Rush Hour (a sliding block game). Admittedly, I’ve played the least of this game. The mouse chess theme is super cute though, and it’s very well-made.
I was musing on game design this morning, and came to a conclusion that I already knew both intellectually and intuitively, but one that I’m not sure I’ve articulated to myself previously: Game design is a creative endeavor. (With all the subjectivity and painful process woes that plague all creative endeavors.)
I’ve always just made games that I myself wanted to play, avoiding the entire camp of game design that suggests your players should be influencing your design. That may sound like an arrogant position to take, but at first it was borne more out of laziness and ignorance than anything else. Until I attended my first GDC in 2012, I didn’t even really realize there were people whose job was game design, and I certainly didn’t realize there were books written on it or — more importantly — people thinking about it academically. It was that revelation, more than any other, that has kept me going back to GDC; I find immense value in immersing myself in game design topics opinions and thinking for a week, not to mention all the networking opportunities.
But anyway, aren’t I also a player? In my opinion, I’m a player whose wants and desires are seriously under-served. (That means my games are probably for a small segment of the market, and I’ve made peace with that. I’m not looking for commercial success… if it finds me, awesome.) I’m not going to cave to the pressure to make games for someone else. Because essentially I feel like that’s compromise. And I think compromise kills art. My vision is no more important than anyone else’s, but it’s also just as important as everyone else’s. And hey, I’m the one making it.
So is this all one big excuse for not accepting constructive feedback? Partly, yes. These thoughts all come in the wake of showing off a new (-ish) board game last night at a local game designer meetup. I haven’t talked about this game publicly before, and this whiny blog post is probably not the place to start, but it was not received well. (In spite of many — at least 10 — fairly successful playtests previously.) Mostly, the feedback last night consisted of ways to change the game entirely, ways to take it in some other direction. Essentially, the playtesters (game designers, but for one) didn’t enjoy the game, and spent a good fifteen minutes after their play trying to brainstorm ways to “fix” the design. Almost all the player suggestions last night involved tearing up the design and making something new out of the pieces. This is something I’ve already done with this particular design at least three, maybe four times so far, and I’m actually very happy with where it’s at right now, so that option is not really on the table.
It’s hard not to take this kind of feedback personally. (Made more difficult by at least one of the designers in question having a lot of problems keeping his feedback constructive.) The whole experience really threw me for a loop, and I spent this morning struggling against an impulse to just put the game away and not think about it for a while.
Perhaps I can salvage this piece by adding a few bullet points about giving constructive game design feedback.
- Be thoughtful — Generally speaking, think before you speak. As best you can, it’s a good idea to form complete thoughts before you speak them. If you’re offering up specific “fixes” for a perceived issue, make sure you articulate that issue before you offer up your solutions. Think about why something is a problem before you say it’s a problem. General “impressions” are generally not that useful, better to back them up with a “why” or a “how”.
- Be courteous — Nothing invalidates your feedback quicker (or makes it harder to hear) than an insulting statement. Make sure your feedback is about the game, and cannot be construed as a criticism of the designer. In general, if it’s not nice, try hard to think of a way to say it nicer.
- Context is everything — Ideally the game designer has asked for specific feedback points, but even if not, it’s probably worth asking some probing questions before getting into a torrent of specific criticisms. There are several “levels” at which you can talk about any game. Is the designer looking for feedback about the overall systems used in the game, or are they looking for feedback about specific components or balance issues?
- Be specific — “I did not like this.” is not, by itself, useful feedback. Generally speaking, the more detailed you can be about why you didn’t (or did!) like something the better. If the designer was paying attention, they probably already know whether you were enjoying the experience.
- Stay on topic — I’ve found that “after playtest discussion” can easily veer into a speculative realm of what-ifs and imaginary games that could exist. This is especially true with game designers. Try not to be the one leading the discussion away from the current game.
I’m backing up my iPhone in prep for a new device, and one of the things I did was spend ten minutes taking screenshots of every folder, just in case I need to restore things “manually” later. (Actually, I may decide to start “from scratch” on this new device, and I’ll use these images as reference if I need them.)
Anyway, nobody probably cares about my home screen, but I thought these screenshots of my “TetrisLike” folder were pretty cool. Enjoy!
I’ve been meaning to write a post for a while now with pull quotes from the two big Catchup reviews. (It’s kind of a shame I haven’t even mentioned them yet on here.)
But before I get to those, Catchup is free in the App Store today. I’m hoping for a big influx of new players who might then tell their friends about how great it is, and maybe some of those folks will purchase the app tomorrow, when it’s back to $2.99. So if you haven’t already, go download it now! (But if you’re reading this, my guess is you’ve already got it, so thanks for that.)
Anyway, Catchup’s first big review came from Pocket Tactics on the 14th of August, exactly a week after its release. It’s an absolutely stellar review, giving the game 5 out of 5 stars, and I’ll just let some of the quotes speak for themselves:
“Catchup is as elegant as a game can reasonably be, presented in a marvelously user-friendly way.”
“…it’s packed with all kinds of options, some of which are unprecedented in my experience.”
In another quote that I found quite amusing, the author, Kelsey Rinella, also manages to call Nick (the game’s designer) a yahoo, while still complimenting him:
“I am not amused that some yahoo can waltz in and make what I do look easy and sound like a caring, brilliant guy at the same time.”
Catchup’s second big review was from the iOS Game review behemoth Touch Arcade. It absolutely floored me to get a full review on the front page of Touch Arcade, and they gave it 4.5 out of 5 stars to boot. Here are a couple of quotes from author Shaun Musgrave’s review:
“If you’re even a little bit into strategy games, you need to get some Catchup all over your mobile device.”
“There are also a number of achievements set up through Game Center, some of them very cleverly devised to force you to play outside of your comfort zone. That’s my favorite type of achievement.”
The Touch Arcade review didn’t appear until August 22nd, slightly more than a week after the Pocket Tactics review. Another week after that, Catchup was back on Pocket Tactics (on the 29th) for their “Games of the month” for August. Here is another great quote from that:
“The greater the ratio of fidelity to a complex system to rules overhead, the better I tend to like a design. Catchup doesn’t even attempt to satisfy my strongest gaming craving, and yet I feel excitement every time I see the badge saying it’s my turn in a game. It’s like rediscovering excellent vanilla ice cream after years of trying all sorts of tarted-up frozen confections. It’s such pure gaming goodness, without dissonance or unpleasantness of any kind.”
Obviously, I’ve added some of the above to the app’s app store description. (Let me know if you have any opinions about the ones I chose!)
I will probably write another post at some point about stats, including download numbers, and what kind of impact these reviews had on those. But anecdotally, the Pocket Tactics review got us slightly more downloads on the day of the review, (I’m guessing because their readers are closer to our core demographic), but the TA review had a longer impact, for more days. Possibly we fell off the front page of PT faster.
Here are the release notes for Catchup version 1.0.1, which was approved and went live in the App Store sometime late last Saturday night (September 6th).
* added a setting to let you change who goes first in a vs AI game
* minor changes to text strings, mostly consistent capitalization of AI and Catchup (thanks go out to Martijn Althuizen for help with this work!)
* minor changes to Dutch localization
* relatively significant changes to the german translation
* fix for the “next game” button flashing after you take an async turn
* close the GameCenter UI if the app goes into the background
* misc additional minor bug fixes
Thanks again for playing Catchup!
After getting two emails almost simultaneously on Sunday morning, both letting me know their game over screens were reporting the wrong winner, I pre-pended the following message to the 1.0.1 release notes, and sat down to find the problem:
WARNING: this update actually causes inaccurate end-game win reporting on the game over screen. (The stats and leaderboard submission should still be correct.) This will be fixed in the next update.
And here are the release notes for version 1.0.2 that I submitted to apple on Sunday afternoon, (September 7th):
* fixed bug with incorrect winner name on game over screen (Sorry!)
* corrected title bar string on game screen
All of this illustrates one of the frustratingly difficult aspects of solo application development — regression testing. Or, for anyone unfamiliar with the term, testing existing functionality after a code change “to make sure everything still works”. Basically, it was my work on the new feature (letting the user pick whether or not they go first in an AI game) that broke the game over screen reporting. As bugs go, it’s fairly minor. (I don’t mean to belittle the frustration if you encounter it!) Nothing is crashing, and the win statistics are reported correctly, both to Game Center and the internal stats page. I definitely tested quite thoroughly playing against the AI before submitting 1.0.1, but I just plain didn’t think to check local multiplayer, and might have played through an async game, but I’m not 100% sure. Anyway, I clearly didn’t encounter the bug. (Or didn’t notice if I did.) The specifics are kinda funny: the wrong player name is reported as winning the game in async, but only to one of the players. (Which player depends on who actually won the game.) In the local multiplayer scenario, it basically always reported player 1 as winning.
I have plenty more features to work on for the next build I submit, but figured I should get this fix out there ASAP.
So today an interview I did over at tech.mn went live. It’s part of a Nerdery-sponsored “know this nerd” series, so I’ll forgive them for using the term “nerd” instead of “geek” (which I generally prefer).
In case that isn’t enough biographical writing for you, I have also been meaning to post some of my responses to a game-related user-group application I filled out about a month ago. I’m not going to go into details about what the application was for, but let it suffice to say that I spent a lot of time on the application, but ultimately wasn’t accepted. So I feel the need to post a mashup of my answers here to salvage something from the experience.
The first question from the application, and the spark for most of what was written below, was as follows: Describe your work as a game developer. Why did you start developing and what do you hope to do as a developer in the future?
My first game designs were all variations on board games that I was already playing. I played a lot of chess as a kid, and have always been interested in chess variants. I re-worked this paragraph about six times, remembering earlier and earlier game designs, and just now realized that I can probably pinpoint my very first game variant, and it was actually published! One of my grade-school friends and I played a lot of an abstract strategy game called Terrace. Terrace had a newsletter called Terrace Times that you could write-in and subscribe to. The newsletter published variants written by their readers, and you guessed it, my friend and I wrote in with a few of ours. If I remember correctly, we wrote up about four or five designs, and they published two of them. [I'm 90% sure that I still have the issue in storage somewhere! TODO: dig those up and post them here!]
Later, when we were both just about done with high school, that same friend and I got really into playing an early first-person shooter called Marathon, and we made maps for it that other people actually downloaded over the internet. (This was about 1994 or so, so that meant over dialup!)
Fast forward to 2006, I had been working as a backend web programmer for two or three years, and I realized that making my own video game was actually an achievable goal! It took me over six months working nights and weekends, but my first video game was called Go Tetris. It was the first and last thing I ever wrote in Flash, and is still playable online at go-tetris.com.
I’ve always had a ton of game ideas, and when my wife bought me an iPhone as a wedding gift (giving it to me early so I could take it on our honeymoon!), I knew from the second I started playing games on it that I wanted to make some. The SDK was announced the following year, and even though I’d never worked in a compiled language before, I started writing a game for it right away. That game took about half the time to make that it took me to make Go Tetris, and it came out in 2008, was called Action Chess, and like Go Tetris, combined two of my favorite game genres, chess variants, and action puzzle games. It made a meager $1000 in the App Store, but that was the first $1000 I ever earned in game development. [EDIT: I just remembered this is not quite true. I earned about $6 in ad revenue after Go Tetris was linked-to from the US Go Association's website for a week.] Learning iOS development was a good career move, and about two years ago I was able to quit my day job to do iOS game development “full time” (one of my first contracts as a freelancer was working on a little abstract strategy game for Tasty Minstrel Games called For the Win).
In March of this year I was privileged to speak at Game Developer Conference in San Francisco about “Usability Lessons from Mobile Board Game Conversions”.
I keep a design journal where I write down all my game ideas, and I usually add one every week or two. I’d say they run about 40% physical (board) games, and 60% video games. On rare occasions I get really enamored with one of my ideas, and have to start working on it right away. I’ve got several prototypes like this that are pretty near completion. It’s standard practice for me to “sit on” a game that I feel is pretty close to finished because I don’t have enough time to give it the polish I think it deserves. Anyway, the point is that I can’t imagine NOT working on games. I’d definitely be doing it even if it hadn’t worked out for me to turn that into a career.
Here are a list of games I’ve worked on that were published in some way: http://chesstris.com/about/#bibliography
I’ll fully admit that most of my games are unlikely to be commercially successful. At any given time, I’m probably working on two or three games at once, and juggling a freelance project to pay the bills. (Sometimes those are games!) My fondest hope is that one of my projects does give me the kind of return that I can stop the freelance work entirely, and continue to make the games I most want to play, without compromise or constraint.
I had the pleasure of attending United Geeks of Gaming’s Game Designer Sessions event last night, and play testing the latest (third) iteration of a game whose working title has always been “workers”. I realized after a couple of games that the rules were a little “fuzzy”, seeing as how they’ve never been formally written down, and decided that some kind of documentation was in order… Hence this blog post. (Half rules formalization, half designer diary.)
Workers was initially conceived as a “born digital” board game with the central mechanic that there are a variable number of “resource pools” in the game, and every round each pool’s count of available resources is incremented by one. The name stems from it being a very light “worker placement” game, with the initial version allowing for only one action taken (worker placed) per turn. I’ll get into the various specific actions available when I go into details about each version of the game below.
The only other shared mechanic for all the versions of the game has been the turn / round mechanism. Each round a starting player is indicated, every player takes an action (or two) for their turn in clockwise order, and then the starting player indicator is passed to the next player (also in clockwise order).
The initial version of this game remains the only one for which there is a (completed) digital prototype. I completed a very quick and dirty app to “prove out” the game mechanics in an evening or two of work and subsequently sent it to some of my TestFlight users for feedback and testing. The prototype was “successful” in that it convinced me more work was needed, but ultimately had quite a few design flaws, which I’ll detail in a minute.
As you may or may not be able to understand from the screenshot, there are 5 available pools of resource (yes, a hard-coded number, even though I knew from the beginning that I wanted it to be variable), as well as hard-coded two-players (with their resource counts on either side of the screen). In the center are all the available actions, and under the main resource pools (which double as buttons for taking the corresponding collection actions) are action buttons for selling each combination of two resource. This version has a selling mechanic whereby you can sell pairs of different-colored resources for the value shown on each pair. Between rounds, not only do the number of resources in each “pool” increment, but the point values for selling each combination are also incremented every round. When a player took a selling action they automatically sold all possible combinations of the two resources for the point value shown. (So if they had 3 green and 2 blue, and took the green/blue selling action when it was worth 5 points, the would end up with 10 points and 1 remaining green resource.) After a sale action, the value for that combination is reset to zero.
Available actions (one per turn):
- collect all of one resource pool
- sell a combination of resources
The game lasted a set number of rounds. (15 here, although I experimented with different values.)
Reasons this version is a failure:
- Replayability: essentially this game played the same no matter how many times you played it. This was pretty boring and led to an…
- Optimal strategy: it turns out, the best way to play this game is to keep collecting resources, whatever pool has the most, until the last two or three rounds of the game, then sell for the highest possible point combination. Boring and stupid. I could possibly mitigate this by capping either point values for selling, or total number of resources, either per player or per pool. Ultimately I never implemented either, and instead moved on to working on…
The next version of the game was conceived to “solve” some of the design problems in the fist game by adding variability (via a game board), as well as removing the complex in-game scoring (the entire “selling” mechanic). I don’t remember whether removing in-game scoring was a goal in and of itself, or whether it was primarily meant to facilitate paper prototyping. I took this version to my first Game Designer Sessions meetup, (quite a number of months ago). The game was played at that time with decks of cards with different colored backs for each resource pool.
The “game board” consists of an empty grid at the beginning of the game. Grid dimensions (as well as “number of resource pools”, “starting player resources”, and “starting resources in each pool”) are meant to be variable for each game.
Scores weren’t known/calculated until the end of the game, when all the spots in the grid were filled with resources. I played with a couple of formulas for scoring (see below), but in general, I wanted the more groups and the larger the groups to have higher point values at the end.
Available actions (again, choose one):
- take a pool of resources
- play a single resource from your resources into the game board
- One issue became evident right away, and that was lack of incentive to be the player who plays onto the game grid. After one play test, the player who sat back and hoarded resources was the clear victor. If I remember right, I believe we played a second game after the first and changed the “play on the board” action to take the resource from the pool rather than from your hand. Additionally, you got to take one resource from the pool into your hand as part of that action. I came up with another possible solution on the fly last night.
The version I brought last night had basically one new mechanic: Every player started with a “x2″ (times two) card face-up in front of them. There were two ways you could use this card, but when you did, you turned it face-down, and those actions were no longer available to you. I also play tested this version of the game with colored cubes for resources, which I felt was more visible (at a glance) than had been the case with using decks of cards, and had the added benefit of keeping the game board size considerably smaller. (I drew the game board out as well as “spots” for 4 resource pools on a single sheet of graph paper.)
- take all of one pool of resources
- place a cube from your resources onto the game board
- use your “x2″ action to increase the subsequent pool increment by one additional cube per turn (this could stack if multiple players did it)
- use your “x2″ action to place a cube on top of a cube already on the game grid (increasing the size of that group by one without taking up a spot on the board)
We played a relatively quick game with 4 players, 4 resources, and a 4×4 grid, but less than halfway into the game I remembered the problem discovered in the playtesting of Workers II. I let the game play out, but suggested we play another game where you take two actions per turn, but your second action has to be a placement on the game board. One player left, so we played 3-players, 4-resources, on a 4×4 grid, but everyone started with one of each resource. I feel like this went pretty well, but still “needed something”.
Possible scoring mechanisms for multiple variable-sized groups:
- group-size times group-size added together
- group size added together times number of groups
- Fibonacci values for each group totaled, times number of groups
I have lots of ideas for Workers IV. I’ll post back here when I get a chance to try any of them out!
Catchup version 0.9.1 hit the app store earlier this week. Here are the notes that shipped with that version:
* russian localization
* german localization
* settings screen: delete local saved game when changing manual AI level
* fixed a bug with tutorial step 3 not getting displayed
* made popover text scrollable if necessary
* translated a few more strings for all localizations
new in 0.8.x
* traditional chinese localization
* added HSB sliders to color screen, cleaned up UI
* fixed crash in iOS 6
I have been learning a lot with this release, namely about how much extra work localization entails, but Game Center async code stuff also. In fixing a bug at the last minute related to determining whether a Game Center game was still valid (specifically, it goes through and checks all the players to make sure their “match outcome” isn’t set), I introduced another bug, this one making Game Center invitations completely fail, as the match outcome is in an “unknown” state for those, since the invited player hasn’t accepted it yet at that point. Apologies to all the folks who ran into this!
A few minutes ago I submitted build v.0.9.3 to fix this issue. The complete release notes are as follows:
This build fixes a really horrible bug with Game Center “invite” games ending as soon as they began. My apologies!!!
Thank you very much for playing Catchup!
* fixed “invite” games ending as soon as they are created
* number of “your turn” games is sometimes incorrect, (I need to reset all helper arrays when the UI opens)
* crashing bug when you delete an async game in which it is your turn, start a new one, then click next game after taking your turn (need to re-create all the arrays in the async helper)
* swapped positions of share and close on the game over screen.
* added a new “use english instead of XXX” button for non-english localizations
* lots of fixes for Dutch translation text, some english ones
* credit for Dutch translator in English localization
* dutch (nl) translation
* minor change to make one of the tutorial steps a bit more consistently worded
I did use the official form to request an “expedited review”. I have had good results with that in the past, but also know someone who had it “not work” recently, so we shall see.
My latest game release, Catchup came out for iOS last Thursday, and I thought I’d write a bit about my experience developing it.
First up, how’s it doing? Well, despite a surprise conversation with Apple the Friday before launch, we didn’t get an app store feature. I could show you the typical “long tail” graph, but if you’ve seen any of them before, you know exactly what it looks like. We started with a day of 88 sales, (this at $2.99), followed it up with 34, 26, and 16 sales yesterday. I’m hoping we have a boost again today because it’s no longer the weekend, but essentially, I do not have high hopes. The game’s designer, Nick Bentley, did a great job writing about the game, and making a lot of noise about it in the weeks/days before launch. I definitely credit his efforts for the downloads we did get.
The app ended up climbing to #51 in the “top paid board games” category of the app store.
Reactions / Responses
I think partly because only folks who really care about Abstract Strategy games for iOS have even heard about it, Catchup has had a really great response so far. We’ve got about 12 ratings in the app store, and all but 1 are 5-star. Here are some quotes from the handful of reviews:
“Great implementation of an indie boardgame. The controls are very easy and there are many customization options. The AI has a wide range of levels so it is nice to play at low or high levels of skill.”
“This is definitely one of those games you learn something new every time you play. App is well designed for it and runs really smoothly.”
And some more quotes from around the web:
“Wow. This is beautiful! I thought the ai was crap until i found the manual setting for it… I got pommelled at level 20. The whole ap experience is really very impressive. Nicely minimal and functional… The way i like my abstracts.” – Facebook user
“I like the minimal but pleasantly functional interface.” – BGG user
And I saved my favorite public quotes for last, from Touch Arcade forum user Nachtfischer:
“This is simply brilliant. Just as clean and efficient as the implementation of For The Win was, but even better, with asynchronous online play, dynamically adjusting (and very good!) AI and all kinds of stats you could ever want (it even has a stat for “times you checked the stats screen”, I felt a little caught there, haha).
The game itself is a beloved board game. It has incredibly simple rules, but a ton of emergent complexity, which makes it very elegant – easy to learn, hard to master indeed. There’s a lot of depth beneath the surface here.
It might not look like something special, but if you really love games (and not just semi-related crafts such as audiovisual spectacle, storytelling, Skinner Box mechanisms or whatever), depth and challenge, then you should definitely buy this without a doubt.”
…later, he posted:
“After playing some more, it looks like this is probably going to be my favorite app release of the year so far!”
What could I have done better?
These post-mortems typically have a section for “things I could have done better”, right? But as far as I’m concerned I could have done everything better, so consider all the rest of the headings below a minor subset of bullet points in that overwhelmingly long list.
Beta Testing & Bug fixing
When I decided we should definitely do a beta test, I think I had the right idea. This is a multiplayer application, and I wanted to get people using that multiplayer code ASAP, both to find bugs, but also to gauge the user experience and figure out what I could be doing better. I seriously under-estimated the time needed to run a beta test, (both to find people, and get them playing it, as well as respond / record / react to their suggestions). And then I ended up starting it about two weeks later than intended.
Here’s what I did: I put up a quick google form to collect interested people, then sat on that list for about three weeks. (I’d meant to let it accumulate for maybe a week, but I was still fixing stuff!) When I finally picked users, I basically just sent promo codes to all the ones in the US (because I have evidence that the promo codes only work for US app store users), and who also indicated they would give feedback even if they didn’t like the game. Along with the promo codes, I also sent them a link to a form to collect feedback. The responses were okay, but nothing super revelatory. They definitely helped me find bugs, but the bulk of good UX feedback came from a single individual who would probably have tested the app without our running a beta test at all. (More about that below.)
In short, I still feel like it was extremely useful. It was more useful in terms of finding async bugs, but I could probably have played more games with my handful of friends who had it to get that kind of feedback. If I’d had about two or three more weeks, I think it would have been great to have run more organized play sessions with the beta testers, and perhaps that would have led to more valuable feedback.
Never enough time (or, Things I Never Got Around To Doing)
I really wish I’d spent another week or two polishing the app. In particular, there are some async features I really meant to write in the last month or so of development and just never got around to doing. The main one (which is definitely still on my plate) is opening each individual game when the user opens the app from a notification. I might still get to sneak that into the next release, which is primarily a bug fix release meant to fix Game Center invitations, which I broke in the current app store build (while fixing another bug, of course).
I also wish I’d spent more time working with Nick on promoting the game. I basically let him run with it, and didn’t even hold up my end of the deal by writing a blog post every week until release. (Although this was more a promise to myself rather than a promise to him.) I actually brainstormed a HUGE list of posts I could write, and then only ended up writing a single blog post four weeks before launch, and then finally writing a “release notes” post the day of launch.
I’m a big fan of games giving you a solid reason to keep playing. Just about the only thing Catchup does in that regard is show you the level of the AI player, and how that increases/decreases after each game you win or lose. There are also a bunch of Game Center Achievements. While I was implementing the achievements, it occurred to me to space them out so you wouldn’t get a bunch of them after winning one game. So a lot of the achievements are actually dependent on reaching a certain level of AI player. It only occurred to me belatedly (maybe a week before launch) that it would have been really cool to point out that achievement progression in some kind of “campaign screen”, or at the very least in popover messaging after you reach a level where that achievement is available. I have really given this almost no thought, but it feels like something that’s lacking to me.
Programmer UI / UX
I’ve written a bunch about how long it took me to make Catchup… and talked about some of the reasons, but there is maybe one reason that I don’t think I’ve talked about yet. Mainly, it didn’t even occur to me until today, but essentially, the UI changed quite a bit in various iterations of Catchup. And each one of those iterations took some time. To the right you can see the first (totally playable!) version. Obviously, I knew this was going to change, but if I’d known by how much, and how well the app was going to do on release, I might have been more okay with just releasing that version. (OK, probably not really.)
As someone who presented at GDC this year on UX, you’d think I know a thing or two about it. But the not-so-secret truth is that I really don’t. I can probably fake it better than most, but when someone who really does know a lot about UX gives you honest feedback about it, it just becomes super clear that you don’t know jack. That person for me was Nate Weiner (of Pocket / Read it Later fame). When I got his email, it was one of those moments where you realize you’ve been doing something wrong all along. Fortunately, he was kind enough to preface it by saying that none of them were things he would allow to delay launch. Anyway, here’s a list of UX stuff that I could really have done better. (Over half of these points were made originally by Nate in that aforementioned email.)
- all the popover menus — in particular, I remove the nav bar when I show ‘em, and not only does that look weird, but it’s the cause of a number of bugs.
- replacing the “default” Game Center UI — This is another one that, surprise, surprise, would have fixed a number of bugs. In particular, if someone “swipes to delete” a game from the default Game Center UI, your app is not notified, and (AFAIK) there is really no way (no status change even!) to detect that the delete has happened. Plus, it looks like butt. Would have been a lot of work tho.
- Onboarding / tutorial — I sorta knew I was doing this the “easy way”. Even though it’s an interactive tutorial, I basically show all my messages on a popover that doesn’t change contextually. I should have been highlighting all the things the tutorial talks about (and just assumes you will be able to find as soon as you close the popover).
- Game Over Screen — Similar to the tutorial popover, the game over screen could have been made contextually. In particular, it’s been suggested that it should at the very least highlight the group that won the game. (And this should be fairly easy to do, I just wish I’d thought of that before I made the current version of the game over screen!)
- the Color picker screen — This screen just really blows. I’m happy with how it LOOKS, but it’s not at all obvious how it functions. And there is literally nowhere in the app that explains it. I should probably add a help popover at the very least, but that hasn’t even made the TODO list yet. (OK, now it has.)
- the Game Settings screen — I really tried to make this screen as flexible as possible, but I think there are probably significantly clearer ways to present and allow you to change the AI level. It gets a little better in one of the updates that hasn’t been approved yet, but it’s definitely still a pain point, I think.
- the game screen itself — I would love to still include Game Center icons on this screen. I do also feel like it could better (more clearly) indicate whose turn it is.
When I estimate client work, I always emphasize how much less work there will be for me if the graphic designer has already completed their work by the time I begin. I don’t know why it didn’t occur to me that it would of course take longer for me to do that UX and graphic design myself. Well, if you’d asked, I might have told you it was true, but nobody asked, and I just kept plugging away.
I hope someone finds this useful. Thanks for reading.
EDIT(s): Edited to clarify some points, directly name Nate Weiner, and add references to the “top paid board game” category numbers.