How to design good player choice in games?

Potato Pirates

When we first started designing our new game, Potato Pirates: Enter the Spudnet, a question often popped out every now and then: Are board games like Snakes and Ladders considered a game? Half of our team feels that a game that involves zero decision-making might as well be a storybook, yet the other half argues that what makes an activity a game is the fun it can provide. Undeniably, both sides have their merits but we will leave the definition of a game as a topic for another day. In this post, I would like to talk about the side involving decision-making in games and our thought process when it came to designing what a player can do.

In games that involve decision-making, there are choices that are given (by us, the designers) and decisions to be made (by players) at every stage of the game. Be it to move a ship left or right, to choose a special power, or to negotiate a deal— such choices are given in multiple stages of our game. But what exactly makes that part of the game fun? What makes a choice interesting or boring? How would we design such choices? My answer is to look at the triviality (or rather non-triviality) of the decisions. The crux is that for the decision-making to be interesting, decisions should not be trivial.

Here are my top 5 considerations when it comes to designing player choice in your game:

1. The impact of the choices

Take this: for example, you need to enter a building via a door. You are given two choices:
  1. Push the door
  2. Pull the door

    Surprise surprise, the door is locked so pushing or pulling didn’t matter, you are still locked out of the building. 

    The golden question. To push or to pull. When all along…. it doesn’t matter.

    When it comes to designing your player choice, each decision your player makes needs to have some form of influence on the outcome of the game. It does not necessarily need to be immediate or in a physical form (like currency/powerup) but it should be apparent to the player in some form eventually. Otherwise, the player would feel that their decision didn’t matter and as a result, feel less invested and lose interest in the game.

    2. The opportunity cost incurred choosing that choice

    Choices matter to us only because we lose something choosing another. This is what we refer to as an opportunity cost. With opportunity costs attached to each choice, we can create dilemmas which engage the players by asking them to weigh the choices.

    One classic example that is often used in other games is the Prisoner’s Dilemma. Bear with me if you saw this before but I will give a brief description to those who have yet to see this. 

    In this scenario, we have two prisoners, A and B. Both of them are taken into separate rooms with no means of communication between them, for interrogation. If one testifies and betrays the other, the testifier gets off free while the other suffers a heavier penalty. If both stay silent, they both only serve 1 year. If both testify, they both get a heavy sentence of 2 years

    Prisoner's Dilemma: Taken from Business Insider, source from Wikipedia
    (Taken from Business Insider, who took it from Wikipedia)


    From our point of view, the best outcome would be for A and B to keep silent. Both prisoners will serve 1 year and only a total of 2 years will be lost. In reality, when personal gain outweighs the collective good, it’s not that simple. Say, A chooses to stay silent but deep in his mind, this doubt surfaces. What happens if B betrays me? Wouldn’t I have to spend an additional 2 years?! If A was rational, the more logical choice would be to betray because of the possible reward of getting off free or the less heavy punishment of only spending 2 years. But what if B was a loyal friend to A, and doing so will destroy their 10-year friendship? Would that change A’s decision?

    That same logic can be applied to our player choice. By creating multiple “what if” scenarios, you add weight to the player’s choice. Do I use this powerup now and risk not having it in the later stages? But if I don’t use it now, I can possibly lose the game now, etc.

    3. The amount of information given to make that choice and the weight-risk ratio

    In the previous point, we mentioned creating dilemmas but we forgot to mention one important detail. The prisoners’ dilemma will only happen if the prisoners were told about the years they would serve in each scenario. If the investigators simply demanded that they testify. Prisoner A probably wouldn’t testify since he does not know what he can potentially gain or lose. Without knowledge pertaining to the choices, those choices lose their consequences and impact. Another example would be if the player does not know what money does, spending it now or saving it for later doesn’t really matter, because to him, both choices are equally unclear.

    At the same time, having too much information is not necessarily good. Back to the prisoners, if A had perfect knowledge of what B is going to do (maybe with a mind-reading device), there would be a clear and obvious choice to take no matter what B does. If B chooses to betray, the best outcome rationally for A is to betray too. If B chooses not to, the choice that gives the most benefits for A is to betray B.

    Comic Strip displaying Opportunity Cost

    The golden question…. how to get rid of all those apples afterwards...  

    Although other choices are given, if one choice is always optimal, it causes the other choices to be arbitrary (just for show). Hence, to avoid that scenario, the choices you design should have relatively equal weight-risk ratios. A choice cannot be too risky and provide too little benefits or vice versa. The information you provide should be just right so that players can make an informed decision and at the same time, due to the lack of certain information, there is no clear choice at any point of time. 

    4. The amount and diversity of choices given

    Imagine that you are really hungry and there is only one restaurant nearby. There are only two dishes you can order. There isn’t much choice to make, is there? If you didn’t like the two the restaurant had to offer, it feels bad to fork out money for something you don’t really want but you are forced to have anyways (or you can starve, which is technically a valid option). Giving too little choice limits the fun a player can have.

    Now, imagine that you made the (sad) choice of the two and the next thing that comes is not the food but a question of which sauce would you like out of their 108 homemade sauces. It’s not just that. What awaits you is not the food but a 1000-question survey, of what side dish would you like, what drink would you want, etc. Eventually, you (or the player) gives up and takes the most convenient choice, which trivializes the whole decision-making process.

    The above scenario is an example of placing too much cognitive load on the player. Cognitive load refers to the amount of information that working memory can hold at one time. In John Sweller’s paper on cognitive load theory, it is said that generally, humans have a limited capacity of working memory of 5 to 9 items of information at any point of time. Overloading that working memory will only cause undesirable results. And the last thing you would want in your game is players being overloaded and giving up that decision-making because it is too tough to make that decision.  

    5. The rationality of players

    When it’s no longer about winning
    This may seem contradictory to the previous 4 points but. The previous 4 points are based on a huge assumption that players are rational. That players play to win. Often or not, there may be scenarios where players don’t play to win but rather for various other reasons. Some may go for the sandbox approach to just try out new stuff or some may just be targeting specific others for revenge (and ignoring their win conditions). It is difficult to consider for such interactions but it is good practice to take into consideration that there will be players who do not follow your mindset (if it were you playing the game) when it comes to making decisions.

    So what do we do now after all these points to consider? The next decision one should make is to use what to document your player choices. One of the most popular support tools out there would be a Decision Tree to help you visualize and map out those player choices/actions.


    A basic example of what a basic decision tree is. Super basic


    The above diagram shows a simplified overview of a basic RPG game, the player fights monsters, restocks in the shop and fights again. 

     Here’s a general guide on how to build a basic decision tree:

    1. Start off with the scenarios in your game and put them in boxes

    2. Colour the scenarios which require decision-making

    3. For those decision-making scenarios, create outgoing arrows for each decision your player can make

    4. Link those arrows to their resulting scenario boxes. 

    5. If the decision indirectly impacts another scenario, link its direct result to the scenario it indirectly impacts with a dotted line

      Like all things on the internet, there are many variations of decision trees out there and this is just one of the many. You can use this guide as it is but it is usually better if you adjust it accordingly to fit your game. The general idea of it all is for you to organize and visualize the entire structure of your game. It should display which outcome does each decision lead to or influence, which decisions are critical and which are repetitive (aka the game’s core gameplay loop and hence should be optimized). 

      In our upcoming game, Potato Pirates: Enter the Spudnet, we went through many iterations to improve the core gameplay loop. One of the initial ideas had the player choose between collecting money or cards every turn. Money and power cards help players advance their winning condition. So this is how it is like:

      • Either the player chooses to have fewer cards but more money to use their cards

      • Or the player chooses to have more money to use their cards but fewer cards to use

      Sounds like a good player choice? It wasn’t. Why? Here’s the breakdown:
      • The opportunity cost of each choice is somewhat clear and balanced. Choosing to get cards would mean having less money, vice versa
      • The amount and diversity of choice may be little but the cards (and their various effects) adds onto the “Choose cards or money” to become “Choose to activate this or that effect or money”
      • The impact, however, is not immediate. Taking cards doesn’t allow you to use them immediately. You need to have money. Taking money doesn’t allow you to do anything (since you don’t have cards)
      • The amount of information given is sufficient but the deal-breaker lies in this area. There is always a clear optimal path. Take cards, then take money to fuel those cards. Having either one is pointless but having cards first to use (and deny others from having those cards) is logically better than having money but be unable to plan how to utilize it.
      • We assumed that our playtesters will play logically. Most did but there were a few outliers who just kept taking money. God knows why.

      Out of the 5 considerations listed above, we only achieved 2 so this iteration was scrapped and we repeated this design process until it led us to the final product today. If you like potatoes and board games, come take a look at our new board-game, Potato Pirates: Enter the Spudnet!

      Read more →

      Teach Programming With This Card Game

      Codomo Singapore
      The Genesis

      The only reason we came up with the idea of creating a table top card game that teaches programming concepts is solely due to our personal experience. In our freshman year in university, everyone had to take an introduction to computer science module. Most of the students had never done programming before, it is a completely new world to many of us. The struggle was real - countless hours of debugging only to realize a semicolon was missing, being absolutely clueless of what the lecturer was rambling about in the lecture hall, and of course dozing off in class to our teacher's monotonous lullaby of programming concepts. 

      It was extremely tough for me, it took a lot of determination and perseverance to finally get a good sense of what was going on. Thankfully, I had friends who have had programming experience and they helped me a great deal. They took time out to patiently explain the logic and concepts to me, debugged the code with me, and whenever I had problems, they're just a table away. I am truly grateful to them for helping me get through those merciless late nights.

      That experience made me realize how important it is to have somebody there with you when learning gets tough. It is that feeling of accomplishment and achievement together that creates the bond between friends. We asked ourselves if there is a way to exemplify the way my friends helped me, letting kids learn with their friends, instead of facing the computer all alone, puzzled and frustrated overspending more than 1 hour trying to make the code work.

      Of course, thanks to child-friendly drag-and-drop programming platforms such as Scratch, MIT AppInventor, Microbit, alongside many others, children can now learn programming logic without the hassle mentioned above. They learn the logic well enough to create apps, animations, and interactive hardware projects with the new skills they learnt. They are empowered to create something they call their own. Even though you can share and remix projects with other kids around the world, we felt that the social element, which plays a huge part in learning, is still lacking in these platforms. 

      We began to brainstorm ways to make learning fun, sociable, and impactful to the innovators of tomorrow. The obvious answer was definitely through a game. When it comes to playing, nobody ever feels like they are learning! Next, we have to decide what form does the game takes on? We knew we wanted a simpler, better, and more visual way to learn such an abstract field of study that is essentially made up of 0s and 1s.

      However, we did not want the game to become another mobile application where kids have to stare at their iPads to play. We wanted the human connection and emotions you get from playing a game. That is how we arrive at the decision of creating a tabletop card game that is highly interactive and thrilling and at the same time allows anyone above age 6 to grasp fundamental programming concepts, with #noscreensattached!


      Prototype and Testing

      Even though Potato Pirates is a card game designed with kids in mind, we wanted to ensure that it is attractive to people of all ages. From classrooms to family nights, our card game is an activity suitable for any setting. Children, parents, and grandparents can all have a To achieve that, other than being fun, it needs to be addictive and the educational aspect has to be substantial and progressive.


      For the past 18 months, we have worked through more than 20 iterations of the game to ensure that the concepts brought across are straightforward and directly applicable to any coding language or platform. We tested it with many different audiences every step of the way. Starting with our own computer science professors, to freshman students who were taking the introduction to computer science module, geeks, parents, grandparents, children attending coding camps, K-12 educators, and much more.

      Through multiple rounds of testing, we altered many components and aspects of the game. With over close to 20 iterations, we finally agreed on a version that was comprehensive in terms of concepts taught, but also wickedly fun. In order to evaluate the effectiveness and the impact of our game, we came up with 2 quizzes for participants to fill up before and after playing the game.

      Diagnostic Quiz

      The first quiz is the diagnostic quiz, it consists of various multiple-choice questions on the basics concepts of programming. The objective is to assess the participant's knowledge in programming prior to any exposure to the game. This allows us to compare the results with the formative quiz that will be done after the session.


      Formative Quiz

      After playing the game, participants will be given a quick 10-minute debrief on what they have learnt in the game and how it all relates to computer programming. They will understand the terminology and concepts covered in just 1 round of the game. For the formative quiz, other than fundamental concepts of programming, we also included application-style questions in the context of the game.

       Results and Statistics

      The quiz was completed by over 100 play-testers that we have engaged over the course of 4 months. The results were promising and encouraging. The game not only eased the learning curve of picking up computer programming, participants' interest, and confidence in learning programming also rose by approximately 80%.

       infographic on effectiveness of potato pirates game in raising interest and increasing confidence of players in coding and computer science

      All in all, we are ecstatic with the results so far and we believe that our product creates a genuine impact on kids' perception of learning. We can't wait for you to try Potato Pirates, rated as one of the best STEM gifts on Forbes, it is a perfect birthday or Christmas gift for young children, budding gaming families, or that awesome geeky friend of yours. 

      Interested in our game design and development process? Read more about how we design and create this card game.

      Read more →

      Potatoes, Pirates and... Programming?

      Potato Pirates

      You may have never used the words “potatoes”, “programming” and “piracy” in the same sentence, but that's about to change.

      Remember the times before iPhones and iPads? When we would gather with friends to play sports, enjoy games and or just chill out together? Potato Pirates is trying to bring back that social element for computer science. Doesn't matter if you're a kid, parent or an educator.

      Potato Pirates is a game that’s perfect for classrooms, family nights, and even game night with friends over a drink (or ten).

      Why Potato Pirates?

      There's an obvious increase in students' learning through digital devices. At the same time, we hear complaints from parents and teachers about the adverse effects of screen time and they are craving for offline platforms that are educational yet engaging for kids.

      potato pirates no screens attached

      Moreover, the challenge with teaching computer science is that many parents did not learn such things in school so when their kids ask them for help, they are quite clueless on how to even guide them. This causes a lack of continuity in a kid’s learning journey and makes it tough to sustain their enthusiasm in coding.

      play potato pirates to learn computer science

      Computer Science is tough! We know this. It’s been etched into the recesses of our minds. But why though?

      Learning to code is like learning a new language — except that this language is built upon cryptic symbols and mathematical jargon! Although there are certain overlaps, it’s not really the same.

      Nonetheless, in every language there are certain nuances which require a thorough level of familiarity to grasp. This is what we call syntax — the arrangement of words to make up well-constructed sentences. It’s no different in programming.

       Syntax is also one of the main reasons computational thinking concepts seem abstract and tough to grasp. That’s because most of your effort is spent debugging; trying to find the missing semicolon or parenthesis which is causing your program to crash.

      I once spent 6 hours fixing a program that had crashed because I had accidentally uncommented a line. True story.

      PYTHON: for i in range(11): print(“The number is %s” %(i))

      JAVA: for(int i=0; i<11; i++){ System.out.println(“The number is:”+ i); }

      PHP: for ($i = 0; $i <= 10; $i++) { echo "The number is: $i

      For non-programmers, these 3 for loops look terrifying. There’s good news though. The logic governing all these statements is universal. All 3 of these statements accomplish the same thing: counting up from 1 to 10.

      Wait…Instead of overwhelming people with these alien looking symbols, what if we could just present the underlying, fundamental concept of loops, without all the mumbo jumbo?


      Potato Pirates is a secret weapon to tackle these challenges.

      Through Potato Pirates, parents get to be involved in their child’s education and it provides them with an engaging medium where they can learn with their child. 

      It promotes social interaction among kids and adults while encouraging peer learning. No Wi-Fi, no computers, no electricity — but, you still can learn coding. Totally accessible to all!


      Potato Pirates removes all syntax and provides a visual reference to these overarching, fundamental concepts. It’s completely language-agnostic. This means anyone can move to any language of their choice after learning to play Potato Pirates.

      Potato Pirates is the universal first step into the world of computer science

      For anyone who has ever made the effort to learn something new, you’d know that the first step is always the most challenging.

      Programming is a very esoteric experience where one only interacts with a machine. And most of the time the machine doesn’t do what you want it to.

      Despite having great communities like freeCodeCamp and Stack Overflow, we still end up without having anyone to turn to, especially when we’re just starting out.

      With Potato Pirates, we’re trying to make this first step easier by removing computers and introducing social interaction; so that you don’t end up like this guy:

      10 hours of programming in 30 minutes? C'mon!

      It’s quite miraculous how much content we’ve managed to cover with Potato Pirates by staying clear of syntax. In a regular CS101 setting, there’s no way that you’d cover concepts like nested loops and running loops within a conditional (if-else) statement in your first 30 minutes of class.

      We’ve actually had to remove a lot of what we incorporated in previous prototypes of the game. We did not want to cram too many concepts at the expense of game mechanics.


      Computer Science concepts covered in Potato Pirates

      Does it actually work?

      This was the big question we asked ourselves while developing the game. We spent almost 18 months perfecting Potato Pirates.

      At each stage, the focus was always on:

      Testing, testing and more testing

      In fact, we wrote a separate Medium article to document our journey and highlight our development strategy. Schools and parents all around the world use Potato Pirates to introduce Computer Science with ease and success. In our Potato Pirates workshops, we put the participants through a short assessment, both before and after playing Potato Pirates to assess how much they had learned. This practice continues till today. 

      Here's what our data shows:

      Potato Pirates learning outcomes

      Two years on, we've now launched our second game, Potato Pirates: Enter The Spudnet to a very warm reception on Kickstarter. If you want the perfect gamified learning experience, I'd personally like to recommend the Potato Pirates Super Spud bundle!

      Read more →