There are a lot of digital board games and a lot of online systems which behave wildly differently from app-to-app. What are the best features? Let's dig in a little bit and find out.
When I started this site I only played games online and asynchronously. It was a great way to play with friends when game nights were difficult to schedule, not to mention a handful of minute or two long distractions throughout the day. I was fairly surprised while doing research for our AI in Digital Board Games article at how skewed the numbers were for people playing offline rather than online. Developers chimed in stating their audience's preference for offline play vastly outpaced online gaming sessions. Despite this, it is still an expected feature of modern games to feature an online component. The rare exception is made for co-op games which can be very tricky to play remotely and often work really well as solo games anyway.
This is an inexact science and even more of an opinion-based topic than our usual posts, so while we encourage you to get those pitchforks out and tell us where we went wrong, please read this as a basis for a friendly debate more than anything else. Without further ado, our way too long look at what we would love to see in online play for all board game apps. Please note the strategically chosen screenshots, these are games which tend to get way more right than wrong in their online implementations.
Let's start from the beginning. Actually, let's start a step before the beginning with a caveat: there are exceptions to every one of this "rules." Sometimes, it's okay for a game to not have asynchronous play if it doesn't make sense. We will always prefer it be an option, but sometimes it simply isn't a deal breaker if it's not there. With that out of the way, the very basic requirements for online play include:
- Real-time play
- Asynchronous play
These should both be options and they should be separate options. You can argue that any game with async play immediately has real-time play simply by not leaving the app, but that only works if the players involved agree to do so. Having an explicit real-time mode allows you to enter an agreement upfront with complete strangers (or friends) to take the time to play a full game. Asynchronous play is more of an agreement that you'll get to it when you get to it, within reason. Both have their place and they form the foundation of a good online multiplayer experience.
We've got both gameplay pace options, now what? A few fundamentals will get things started on the right foot:
- System notifications
- Varying length async games
- Private games
We'll dive deeper on some of the details later, but for now these are important basics to get right. An async game without working system notifications is something that 1) happens was more often than you would think and 2) effectively eliminates the async aspect of the game. I can only play when I open the app to check if it is my turn? What's the point?
Varying game length is a simple one that goes a long way. 24 or 48 hours per turn is an easy blanket rule, but what if I'm playing friends and I really don't care how long it takes them to play, I want to keep it going even if they go on vacation for a few days and forget about our digital cardboard battle? On the other hand, a shorter timeout for random matchmaking is nice to ensure that games don't drag out forever. The point here, which will be a recurring theme, is to give players options which best suit their needs for a particular game.
Private games are essential and can be achieved in a number of different ways, but the premise is simple: allow me to start a game with specific people and, optionally, nobody else.
It's amazing how wildly varying the options for online games are. There are definitely a few bugaboos we see in this area, so here is how we would like game options to work:
- Consistent options for all game type
- Rotating/Daily challenge mode
If I start a game with a friend or an empty game people can join via lobby or a new game to have random matchmaking, I want the options to be the same throughout. If I can add an AI against a friend, why can't I setup a three player random match game with an AI?
A daily or weekly challenge is a huge "nice to have" but it is pretty amazing how big of a draw they can be in keeping players coming back. This can look very different depending on the game type. Avowel, for example, offers players identical solo games to play to see who can get the highest score. Star Realms, on the other hand, allows players to face off against random opponents using a unique set of rules for the duration of that challenge. However it best fits the game, offering a rotating challenge mode is a great feature. Insider tip: If your game has a campaign which offers variants of the rules, those make for great challenge conditions.
These are features we love to see but often don't. They aren't necessarily essential to functionality, but can go a long way to making the user experience better.
- Allow AI players to be added from the start
- Stat keeping
AI players are often overlooked but can be really important to certain types of players. If I have a friend I want to play a game against but neither of us really like how the game plays at strictly two players. An AI (especially in an app with good AI options) can be the prefect substitute for another human. AI plays instantly and that ultimately provides drastically reduced playtimes compared to adding more humans.
Stat keeping should be a basic because it is just a lot of fun to see how you have performed over dozens and dozens and hundreds of games. Win/loss records are fun, but give me all of those details! Highest score, lowest score, biggest win margin, number of sixes rolled, number of times an enemy stole my castle, etc... Give me everything!
Leaderboards which allow players to climb, and fall, can be a lot of fun. Some games use essentially an XP based leaderboard, but all that really does is measure how many times you have played. Sure, winning move you up faster, but if you are moving up with every play whether it's a win or loss, is that really a leaderboard? Star Realms' use of a tiered board is a good compromise. You need a certain amount of wins to get to the next level and losses drop you by a win but you can't drop to the level below you. This level ranking is used to populate a top 1000 lifetime leaderboard as well as weekly and monthly.
Starting a Game
We've covered the list of features we want to see, so let's dive into how things should perform. First up, how do we want to start new games?
- Lobby-based setup is fine, but give us a "quick start" option as well
- "Find the best fit" matchmaking is ideal
- Optional or required player seats
- Friend games should be right alongside normal games
I don't love the lobby system. Mainly because I frequently just want to hit a button and get put into a game. The problem with this case is what happens if I want to play a game with a specific rule set or timeout duration? A lobby becomes much more appealing in games with larger rule variances. In my book, a perfect online lobby would look like this:
- Open lobby where anybody can create games with specific settings and allow others to join, or password protect them
- A "give me a game with _______ timeout" button. This is the "I don't care the rules, I just want to play a real-time game ASAP, find me the first available or the one that is only missing one player before it starts" button.
- A "give me the best fit button" which allows me to pick all of the settings I care about and the game scans the dozens of open games to find the one that is closest to what I wanted to play. This is the "I'm not super picky, but give me a long async game without that one expansion because I hate it because it's awful" option.
- For all of these options allow required and optional seats. "I want at least three players but I don't care if we have 5 if there are that many available."
- For any of these options, adding a friend is as simple as reserving a seat for them in your game. Through the Ages is one that nails these last two points.
To summarize: lobbies are fine but give me some quick play options in case I don't care to scan through a huge list of open games.
Got all of that? Probably not, but let's move on anyway.
Resuming a Game
This might be the most frustrating aspect of digital board gaming. It should be simple, but so many get this area so, so wrong. It's fairly simple, an asynchronous game should work like so:
- System notification received and clicked
- App opens, loads all of its appness, connects to servers
- App opens up the game that generated the notification
- I play my turn then go back to browsing Twitter
It is that third step that a lot of apps fail on. I don't want a notification to take me to my game list or, significantly worse, the main menu! Gasp! If it's my turn in a game and I click the notification, that's a fairly strong indication that I want to, you know, take my turn in that game. The app should make this as seamless as possible.
Mastered the rest of this list? Here's some extra credit for the overachievers!
- Lightning quick load times
- Immediate disconnects when you close the app
- Gracefully handle timeouts
If you have great load times in your app it becomes significantly more user friendly. This means loading the app as well as connecting to servers. Temple Gates Games (Race for the Galaxy and Shards of Infinity) do this way better than anyone else.
Disconnecting might be misunderstanding what is going on under the hood, but a very common thing I see on my Android phone is the following:
- Play a turn, exit app and put my phone down
- After not touching my phone, I get a game notification ten minutes later
- Click the notification, the game opens right back to the same game (because I hadn't used my phone otherwise, Android didn't shut down the app), but I'm disconnected from the servers
- App spins for a bit trying to reconnect, sometimes it works and I get to play, other times I get booted back to the main menu and have to load that game again
This is a bad user experience. If your app immediately disconnects when it is closed, you never have to worry about this. Of course, if your load times are long then this could lead to a separate huge pain, so this is a bit of a tricky balance to pull off. Regardless, don't make me wait twice as long by trying to reconnect and then forcing me to reload the game when that fails.
Timeouts are a separate issue. What happens to my four player game with Bill is lazy and doesn't play in his 48 hour window? The easy answer is to plug in an AI, but 1) some games don't do this and 2) what level AI? If the AI is good then adding a hard AI can be less fun. Likewise, adding a poor AI against three seasoned players is ripe for unfair play. How about you use player rankings in your online leaderboards to determine the more appropriate AI to insert? The other option is highly dependent on the game, but a "graceful resignation" is appealing if that makes sense for the game. Can the game be completed with one less player without major hiccups? That is easier than adding an AI replacement.