Saturday, July 25, 2020

Puzzle Timer

The most controversial feature (as measured by our company's internal squabbles) was the addition of the puzzle timer.  Should a player be allowed as much time as they want to come up with an answer, or should we put a cap on how much time they have?

The designer that came up with this idea felt that a timer was essential to improving the game play.  She felt like tough puzzles was causing her to get frustrated. Her personality was such that she was not willing to give in to defeat, so would continue to stew on an answer and get more and more frustrated.  She felt that it would be a relief to be forced to move on after some time.

On the other hand, many of our early test players enjoyed the more leisurely pace of the game and having time to think.  Since the game has you traveling the country, shouldn't you be in control of when you travel, where you go and how fast you get there?

Both of these "camps" had very good arguments for their positions.  We were not going to add the feature until we were completely convinced it was important, so we sat on the idea for a long time, reconsidering it often.  This debate began prior to our initial release, and went through many months after our initial launch (March of 2020). 

As we discussed in a previous article, when we launched the game, we only offered a single-player option, then began working on the two-player "Race" game a couple months after launch. The puzzle timer question lingered.  However, about half-way through the design of the Race game it had become fairly clear that the timer was going to be essential for the two-player game.

Why the Timer Matters

Suppose you like the game, but since have a busy life, the amount of game play time you have is limited.  Suppose you have an independently wealthy friend who also likes the game. With much more leisure time on their hands, your friend will have a distinct advantage if they race you: they can contemplate answers for much more time than you can.  

The timer levels the playing field, while also putting a cap on how long a game is going to last.  Thus, it provides both fairness and predictability, both of which we felt were essential in the race version of the game.

Once we committed to the design and engineering effort to add the timer feature for the two-player game, we had no choice but to revisit this question for the single player game.  We ultimately decided to leave the timer out of the single player game. Since our internal factions were so divided, and since we felt the general population could have similar sentiments, providing the choice of un-timed single player mode and timed race mode could keep both types of players happy.

Pausing the Timer

Have you ever tried to interrupt someone while they are in the middle of a time-based game? The reaction you get can be a function of the person's personality, but it can often be less than civilized.  From the player's perspective, life does have a way of making "things" happen, and you might need to interrupt the game to take care of such "things".  It would be a better game if you did not have to choose between tending to life and winning a game.

To address these concerns, we added the ability to pause the game.  This game pause does not happen immediately though, but only after the current puzzle.  This was done to guard against a player using the pause function to gain an unfair advantage. We are not 100% enamored with the current design of this feature, so we may revisit this, but for now it provides the main pausing function we felt we needed.

How Much Time?

Once we committed to adding a puzzle timer, the obvious question is, "How much time should a player get for each puzzle?"  Originally, we had no idea.  We started with 25 seconds and this nearly led to riots.  If you are an adrenaline junkie, this might be your sort of game, but we unleashed 25 seconds on a set of beta testers that were more of a meticulous, laid back mind-set and who were also used to the original version and having all the time in the world.  It was a brutal culture shock for them.

The most obvious place to go from there was a 1 minute timer.  This turned out to be a fair amount of time: enough to let you think and reconsider, but not so much time that you do not feel any time pressure.

Adrenaline Anyone?

A final note about that stress-inducing 25 second timer we experimented with: we are contemplating making this a game option. We would call it something like "Sprint" mode and it would definitely liven things up a bit. We are not sure how much demand there might be for something like this, so if you think this would be of interest, please let us know.

Happy Travels!

Saturday, July 18, 2020

It's a Small World


In the early days of our game development at Plates Across America™, like many software companies, we relied on our friends and family to help test early versions. One of the more engaging aspects of playing in this small universe of people is that you personally know everyone appearing in the leader boards.

While we were enjoying the close-knit nature of the early versions of the game, our game designers began to worry that this element would be lost once we reached a certain number of players.  In any game with a large distribution, there is always a class of people that wind up being on a different level than everyone else.  If you have a million players, how many are going to care to look at the leader boards besides the handful of people that have any chance of being listed there?

The design solution we came up with to address this issue was to allow you to filter the leader boards to only a select set of chosen people.  This requires being about to find and "follow" people to build up the list of those you are interested in.  Adding the ability to find and manage a list of users is no small development effort. If you have not written or designed software before, then you might not appreciate the level of effort required to add something like this, though it sounds simple on the surface.  


This was a sizable body of work we identified before we had even launched our game.  Since we figured it was more important to focus on getting the first 100 customers before we starting to worry about the millionth, we shelved this idea of "filtered" leader boards for a while.  

If you read our previous article on issues we faced when we introduced the two-player race mode, you will have noticed that the race feature required this same need to maintain a list of people you are following (so you can more easily locate race partners).  It was this shared need of the "follow" feature which made it no coincidence that the race feature and filtered leader boards feature launched at the same time.

To use this feature, you first find and/or invite friends in the game to build up your "following" list. Then, when you visit the leader boards, you can select the drop-down menu (top left) to show only those you are following.  The game remembers this choice, so all leader boards will filter down to your list unless you switch the view back.



Another useful feature we have added is to put a yellow star next to the users you are following so you can quickly identify those people you are most interested in. If you play the game and have any feedback on this feature, please let us know.

Happy Travels!

Saturday, July 11, 2020

Ready, Set, Race?

We recently introduced a two-player "race" version of Plates Across America™. This also required us to add a number of other features, all centered around solving the problem of how to find race opponents.  In our previous blog post, we explained the matching process when you choose to "Race Anyone" and in this article we describe what we had to consider when you want you to pick a specific opponent.


If you do not care who your race opponent is, then this is the easiest thing for us to handle. When two people choose this option, we have mutual consent, so we can match them and the race can start.  But there are some tricky parts once you entertain the notion that a user should be allowed to pick the race opponent.
  1. How do players find the opponents they want to race?
  2. How do we ensure that the selected opponent is willing to race?
We needed to tackle both these problems with care, since we value our customer's privacy and have made a promise to not become yet another source of annoying emails.  The typical things game companies do for situations like this are definitely not aligned with our core values, so we could not just blindly copy what others are doing.

Finding Users

There are two principle ways you can select a particular player to race in the game:
  1. if you see them in the leader boards (click on their icon); or
  2. from the newly added page of players you are "following".
The leader boards already had the user's name/icon and allowed you to click to see some of their stats. All we had to do was add a "RACE" button to that view of a user. It is simple to pick them this way, but there are some issues to be addressed about their willingness to participate and how we should notify them. We discuss those issues little further below.


The "Following" page is a new thing we had to add, to make it easy to locate known players. This immediately brought up the need to allow you to manage this list: e.g., searching for, adding and removing players in the list.  If you see a player you know on the leader boards and click their icon, the newly added "FOLLOW" button can be used. However, the much more desirable method is to locate people you already know, e.g., friends, family and acquaintances. Here is where is starts to get tricky.
  • How do you locate them?  By their game username?  By their email address?
  • What if they are not signed up for the game?
  • Is emailing the user in accordance with our "no annoying emails" policy?
  • What if someone else has already invited them, but they have not signed up?
  • What if they signed up and they prefer to not get any more emails like this?
We wrestled with these questions and came up with our "Find Friends" search page.  We wanted this to be as easy as possible, so you can type in, free form, multiple user names and/or email addresses and we'll do the work to sort this out and provide you with the available options.  If the user is already signed up, you get a "FOLLOW" button, if not we give you the option of inviting them.  You must know their email address and choose to email them before we will send out an email. We will not email someone for you unless you know their email address. Most importantly, we will never show your email address to anyone.

Requesting a Race

Just because someone wants to race you, does not mean you want to race them.  If we allow the race to start and you choose not to participate, then there is the risk of that person wasting their time playing  a game that is a dead end.  Therefore, we introduced the notion that before you can race someone, you must first get their consent.  This is just a one time request, and once consent has been granted, we assume there is a mutual agreement and that all subsequent race requests will allow the game to start immediately. 


What happens if you consent and then the playing partner becomes a nuisance?  We needed to also add a "BLOCK USER" feature to handle this case.

Player Notifications

We struggled designing how to notify users when someone requests a race.  If we do not send a notification and if you were interested, then the burden is on you to continually check back with the game.  If we do send notifications, and you are not interested, then we are annoying you with emails, which is what we have promised we would not do.

We also struggled with how to deal with having opt-in emails.  We did not want to default users to getting emails, since that is against the spirit of what we promised, but we also want to make it easy for users to get notified of these game invites.  We hit upon a good balance by making the emails opt-in and by asking about the email option at the point of race requesting. This allows you to opt-in and understand its benefits immediately, in context.  Note that in your user settings, you can control this email setting so can opt out at any time if you change your mind.


The key elements of this notification design are:
  • emails are opt-in and you can opt-out at any time;
  • we only solicit you to opt-in when it matters to the action you are taking;
  • we require a real human user to initiate an email (no automated spamming allowed);
  • you can block particular users; and
  • even if you opt-in, we limit game reminder emails to at most once a day. 

Summary

All these issues about simply finding race partners required considerable design and development work and that is not include the race feature game play itself.  This large body of work is why the race feature was not in our initial release and had to wait until now to be available. We are very pleased that we were finally able to make this feature available. Try it out and let us know what you think.


Happy Travels!

Saturday, July 4, 2020

The Logic Behind: Race Anyone

Our game's new two-person race feature allows you to select opponents in one of two ways: 
  1. you can either locate a particular user and challenge them to a race, or 
  2. you can choose to race "anyone" and allow the game to find a matching opponent.  

This article is about how we automatically find matching players.



Plates Across America(TM) attracts a broad spectrum of people and skill levels.  Playing against someone that is far less or far more skilled than you are is usually not very enjoyable.  To add a more competitive nature to the game, we want to match up people with the same relative skill level.

While designing the matching feature, the first tricky design decision we faced was how to trade-off the precision of skill level matching with how long a player would want to wait to begin playing a game.  Most times, people would prefer to play sooner rather than waiting a long time for the perfect match.  We achieved this balance using an iterative solution that starts with a narrow band of skill ranges and broadens the search when no matches are found.  It stops when a match is found or if the skill differential becomes too great.

When we do the matching, we first need to assign each user a "skill level" based upon their game play history. The main attributes we look at are the quality of answers and the percentage of correct answers.  Each puzzle answer get a "strength" score which translates into miles traveled. Further, each incorrect answer results in a loss of miles traveled.  These two stats tend to be a good indicator of how many puzzles it will take to complete a race: the player with the fewest puzzles wins the race.

We will look at a player's stats over their previous races, though we use their single-person game stats if they have not yet completed in many races. For a brand new user, with no game play stats would have a skill level of "0".  A very good player, averaging 2.5 miles per puzzle, would have a skill level near "25".

As of this writing, we only have experience with this matching algorithm using a relatively small player base. There's plenty of more sophisticated approaches we could have used, but we've opted to start with something simple and we'll refine it when needed. If you have any feedback on how this algorithm is working, good or bad, please let us know.

Sign in to Play the Race Game

Happy travels!