Sponsored By

Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.

Asynchronous Games and Codex

After years of development of my card game Codex, I recently experimented with revising it to support asynchronous play. This initially crazy idea leads to several discoveries.

David Sirlin

May 8, 2013

14 Min Read

Note: This post talks about my customizable, not-collectable card game called Codex that has been in development a whole lot of years. The beta will be playable at Fantasy Strike Expo.

Asynchronous Games

Asynchronous play means that your opponent doesn't have to be around at the same time you are. You can take your turn, then later on your opponent will take his turn at his leisure. This is increasingly more important now that mobile games are a bigger and bigger phenomenon. You can take your turn in some game while waiting at a bus stop or whatever even though you wouldn't be able to play an entire (synchronous) game in that same situation. So it's not just a "feature" when a game can be played in this way, it's transformative in that it allows you to play games in different real-life situations than you otherwise could. It also means you can play 10 different sessions of the game against 10 different people, all taking their turns here and there at bus stops or other free moments here and there. Synchronous games can't do that.

Although I play some simple asynchronous word games, when it comes to "real" games I generally scoff at asynchronous stuff. People ask if Puzzle Strike or Yomi could support such a thing and they pretty much can't because they are both so INTERACTIVE. I tend to put as much interactivity into my games as I can: the more the better, and the less the worse. The games that most lend themselves to asynchronous play are the ones with so little interactivity that you can do a whole bunch of stuff on your turn and the opponent can't even react. That said, allowing asynchronous play is still a huge win in convenience and maybe these days people don't want a "better" and more interactive game, maybe they want a game they can actually get around to playing. Often, that means an asynchronous one. (And does asynchronous really have to mean worse anyway? See below.)


One day I thought, "Can my card game Codex be altered to support asynchronous play?" It's actually ludicrous to consider. The opponent can react about 9,000 times per turn to stuff you can do. It would be like playing MtG asynchronously, where the number of back and forths waiting to see if they other person does anything is so large that you'd give up on it before getting through a single turn, probably. That said, it would be such a big win if it were possible…somehow.

The thing that made me consider this at all is a question that I frequently get when new people play the game. They point to some ability on some card and ask, "Is this an instant?" Then I explain that every ability on every card is instant by default. (Being instant means it can be played "at any time" sort of, rather than just on your own turn.) Eventually, I realized that I could have told them no, it's not instant, and they wouldn't have even given it a second thought. Instants are one of the main reasons Codex (and Magic: the Gathering) are infeasible for asynchronous play. But…what if I removed all instants? That sounds like a bad idea, though the point of this whole post is a principle I've used many times before:

Sometimes you have to give an idea its best shot to really fully know if it's good or bad.

The Experiment

I told a playtester that we are completely free to ruin the game because we have a fully working and fun game right here, all mocked up and printed out. No matter how badly we screw  up the game with this asynchronous stuff, we can always go back to the known-good version. So now that we are free to think of ideas without any worry about them being bad...how do we actually play this game in an asynchronous way?

First, remove all instants. Yeah that might make the game too shallow, but the first step is seeing if we can make rules work *at all*, asynchronously, then we can evaluate how fun or deep it ends up being. Right away, there was at least one point in favor. I held up an instant card to the playtester. Note that he has helped playtest and develop the game extensively for the last three years. I asked him, "in the current rules with instants, when can I play this card?" He laughed because he knew right away he was going to fail at answering it. "Any time?" he said, waving his hands. The real answer is "Any time anything is on the stack and you have priority, you can play an instant (on your turn or someone else's). You can also play them any time you could play a non-instant, which means on your own turn when the stack is empty and you aren't in the middle of a skirmish. Further, you can play instants after each declare attackers step, after each declare blockers step, and at the end of someone else's turn." That's not even the whole answer, actually. The point is that removing all this makes it RADICALLY easier to understand the timing. Without instants, you play stuff on your turn then resolve it immediately, and that's it!

I've found games of this type without a stack and without instants to be kind of too shallow, at least in my experience. So there's potentially a huge negative here too and I'm biased against this whole idea, though I do feel it should get its best shot anyway. Let's keep going and see how it pans out.

The next thing that doesn't work is combat. In Codex, you can declare multiple skirmishes per turn, each one against different targets if you like. That means you have to wait for the opponent's blocking decisions multiple times per turn, even if there aren't any instants. That's not very asynchronous. We tried to figure out a way to automate this, such that the defender can't block, or automatically blocks in certain ways. Strategy aside, this just didn't work. Each method we thought of was immediately broken somehow. It was also making combat into a radically different thing than it had ever been before, and not in a good way. It looked like the experiment was failing already. Then I said, "What if instead of waiting for the opponent 9000 times per turn, we got it down to ONE time per turn. That's more than zero, but if it was only one time, that's still pretty asynchronous." If made it so that the attacker declares all skirmishes at once, simultaneously, and the defender then makes all blocking decisions for all that, the combat rules mostly worked. There were a few bugs, but they seemed fixable. The general feel and strategy of combat was pretty similar to what it was like before. This seemed workable at least.

We played a game using these new rules. No instants and just one wait-for-opponent step during combat. We also had the rule of "if a card would demand a decision of the opponent on your own turn, re-write the card on the spot to do what it obviously should do." The results of this game were surprising. It was way, way more fun than I expected. So why is that?

First, the amount of strategy still present was much higher than we expected. The parts of Codex that aren't in other games got even more emphasis. Think of it like your "build order" in Starcraft mattering a lot, even if the specifics of combat changed. Second, we were able to get through a game much, much faster than before. One of the biggest slowdowns in this new version was each of saying "wait, so we can just get on with the turn now? Really?" We were so used to constantly stopping and waiting at every little thing, that were frankly caught off guard by the smoothness of it.

The amount of depth we lost in this version was smaller than I expected, but still there was a loss. After just one game, I knew how to reclaim another whole chunk of that depth while still supporting asynchronous play. "Combat tricks" are the most important type of instants in Codex. There's more emphasis on combat in Codex than in Magic: the Gathering, there's more to protect on the battlefield, and more interactions going on. So losing combat tricks like "oh ho, my guy is +1/+1!" or "hey, one of your guys is suddenly not even in this combat, but you thought he would be!" is pretty significant. Let's add them all back in, then. When the defender is making his blocking decisions, that can be his one and only chance to play any combat tricks he wants to play. The attacker can play his combat tricks afterwards (I'd later discover that the attacker really wants to be able to play combat tricks both before and after the defender's blocking decisions, which is still fine for asynchronous).

We played agian, this time with just the combat tricks as the only instants. It felt good, had good game flow, and really did get us pretty far of the way back to the depth we had before. So what *else* did instants used to do that we can't do anymore? The next most prominent thing was counterspells. You just can't have those anymore. This experiment really shined a light for me on another category of things, though. It made me realize something I had never thought too closely about. Another kind of thing we lost was "tricky interactions that rules experts use to get an advantage." I always assumed that's a good thing and exactly what you want, and that it adds depth. Well, it can. But as I know very well from fighting games, that kind of thing can also add the illusion of depth with no actual depth.

Imagine in a fighting game, you learn the simple command to throw the opponent. Then later you learn a trick that by using a difficult input, you can increase your throw range! You might think that's "depth" because there was more to it than you first realized, and now there is a new thing to master. Actually, there are no decisions involved though. You always want to increase your throw range, so all this did was create two different commands for throws: a simple intuitive one that should never, ever be used and a convoluted one that is the real way to play. A lot of tricks with instants are the same way (in Codex, in MtG, in any of these games). There can often be a right way to handle all that tricky stuff, so it just makes the "right" way to play this convoluted thing. Yes I know that there are cases where tricky stack interactions add real decisions and cool stuff, but what I'm pointing out is that there's a big portion that add no actual depth.

So to summarize, the things we were missing were: 1) counterspells, 2) instant tricks that made the game more difficult to play but added no strategy at all, 3) instant tricks that legitimately added anything. Category 3 was surprisingly small. Category 2 was amazing to get rid fo because it made the game faster to play and easier to learn at no loss of strategy at all. Category 1…that one bothered me for a while. Then I woke up in the middle of the night and thought, "I already solved this one several years ago!" And I had.

I'd like to save the story of counterspells for another time. The short version is that Codex already gives everyone the ability to shut down certain types of cards the opponent can play, so we can lean on that system even more to get a somewhat similar effect as counterspells, without messing up asynchronous play. If you're interested in this, you'll get a very full explanation someday in the future when I finally explicitly explain how this game works.

Reaction Effects

A few months ago, someone complained that reaction spells were all too weak. What he meant is that in MtG, if you keep your lands untapped (unused) while you are holding some type of reaciton spell, it's possible that your opponent won't do whatever you're trying to react to and you will sometimes "waste" your resources because you didn't get to use them. In MtG, this isn't an actual problem though. Yet the very same situation in Codex is a huge problem. The reason it's different is that in Codex, you have a bunch of stuff that you can invest resources in that don't exist in MtG. If you don't do this while your opponent does, you fall too far behind. Therefore, the "cost" of trying for a reaction spell but ending up not using it is too great.

One of the two main areas I was referring to just then to invest your resources is leveling up your heroes. "What if we add a level up heroes phase that happens after your chance for reactions ends?" we asked. That way you aren't totally screwed for not using resources. This immediately helped gameplay, but it was also clearly clunky. I hated having to explain this extra phase to new players. It was just unsightly and embarrassing to have, yet we realized how necessary it was after playing with it.

What about the asynchronous experiment though? That extra phase is adding another waiting time for you opponent to do something and that's not very compatible with asynchronous play. You wouldn't want to have to wait a day just to hear back from your opponent that he "didn't level up any heroes this time" or whatever. We had to fix this.

"What if your resources rolled over form turn to turn, always?" someone said. Hmm, that probably breaks a bunch of stuff. We tried it, and it was nothing like I expected. Of the hundreds and hundreds of cards in the game, somehow it didn't break any of them except it made one too weak (easily rewritten) and one too strong (easily re-written). What it did do is simplify the wording on dozens and dozens of cards. It turns out that it's a lot simpler to write wording some things in resource system where you use physical objects for the resource. "Exhaust target worker, some stuff about how they can't react to it (so they can't exhaust in response to get the money anyway), then you ready a worker" is a convoluted and confusing way of saying "Steal 1 gold from the opponent."

The New World of Codex

It turns out this asynchronous stuff turned out really well. I have asked after games end, "so, was there enough strategy?" and people laugh because they were just locked in some deep battle for a hour and they didn't even realize the time went by.

Meanwhile, the accessibility of the game went way, way up. Wording is simpler because all timings of "instants" are now consolidated into very specific steps marked with a bright yellow "combat" tag on every single ability that can be used during that step. By just glancing at the cards, it's a lot clearer what they actually do and when they should be used. This also simplifies their wordings because no text is needed to explain when you do most effects. You either do them during your own turn outside of combat (the default) or you do them during the specific combat steps if they have the "combat" tag.

Wording is simpler still because the new resource system made dozens of cards require far fewer words. This has been such a boon that we'd use this new resource system no matter if the game was asynchronous or not. It's just that we might have not even discovered it without the quest for asynchronous.

On top of the simpler wording from the "combat" tag and from the resource system, there's even more improvement. Because I had to revise so many cards throughout the game for those two reasons, I took the chance to review every card, looking for ways to make them more clear. I found several cards that had become unnecessarily fiddly over various revisions, or that made complicated distinctions that didn't matter much. In some cases, I was able to cut the words in half to have the card do almost the same thing.

We've been playtesting this new version a few weeks now, and it's gone very, very well. It turns out that it's just more fun when it's easier to quickly grasp the function and timing of cards and when you have such good gameflow that you only wait for your opponent once per turn, rather than 9000 times per turn. So someday when we ever get around to implementing Codex online (a lot of things are in the queue first…), it looks like you'll be able to play it asynchronously.

Read more about:

Featured Blogs

About the Author(s)

David Sirlin


David Sirlin (www.sirlin.net) is currently a Producer / Game Designer at Backbone Entertainment. He's a multiple-time national Street Fighter tournament champion, author of the book Playing to Win, co-organizer of the Evolution Fighting Game Championships national tournament series, past member of Street Fighter Team USA (representing America at an annual international tournament held in Japan), and one of the main subjects of Bang the Machine (a documentary film about the competitive Street Fighter scene). He also did a two-year stint in the World of Warcraft.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like