0

BACKGROUND

Apologies in advance, but this question requires some context.

I'm working on a trivia app which has 600 questions in the database. Upon launching the app, the user is presented with a main menu from which they can select how many questions they want to answer. The options are 10, 25, 50, 100, 250, 500 and All.

After the user makes their selection they are taken to the Question screen where they get asked their questions. Questions appear randomly, selected from the pool of 600 questions.

Upon completion the user is taken to another screen summarising their results before returning to the main menu again.

Questions do not repeat, so the pool of questions becomes smaller as they're playing the game. E.g. if a user starts from scratch and has played four sets of 10 question games, the remaining pool of questions is now at 560. If they then select a 100 question game, the pool is reduced to 460. And on it goes.

THE PROBLEM

Eventually the pool of questions would be empty, and the app would crash.

To address this I intend to code the app to reset the database so they can continue. Resetting the database won't reset their score, it just reactivates all the questions so they can be randomly selected again (and therefore repeated).

If the app waits until all questions are asked before the reset, then it avoids repeating questions too soon/often, but then the 'reset' could occur in the middle of an active game. Therefore we'd have to present the user with a message and this is somewhat disruptive.

On the other hand, if it's done automatically at the end of each 'game', then we can avoid the user message and they won't even know the reset has occurred. However, the risk is that they'll see repeat questions too often (e.g. If they select a 25 Question game after which the database is reset, those 25 questions will be back in the pool and open to being selected again. It won't take long before users start seeing the same questions popping up again and again, and this in itself would be distracting.

QUESTION

From a user perspective when is it the best time to reset the database?

3 Answers 3

1

Two solutions came to my mind.

1. Be honest with the user

Given you have "10, 25, 50, 100, 250, 500" as options, it's quite likely there will be a time only 10 or 25 questions would be left. In such cases you could just show these two options with a nice message, something like "Whoaa!!, You're so quick, we've almost run out of questions." Followed by "10/25/50 questions left". This gives the user the chance for one last complete game before reset. It also avoids any kind of confusion or surprises as the user is well aware of what to expect next. Additionally you could finish the last victory with a follow message urging the user to have a refresher with randomized question again.

2. Create a continuous loop

Let the system pick up older questions just to complete the set when it runs out of questions. For example: let's say the user chooses the option of 500 questions. This leaves 100 questions left in the database. After this run if the user selects 250, he will be presented with 100 fresh questions followed by 150 old questions. Here instead of an intrusive message, a small non intrusive callout could be shown when the database is exhausted.

I'd personally not recommend the second suggestion, just trying to show an alternative "slightly non intrusive" way of going about the reset.

1
  • Yes, I quite like the first approach. Much more my style, so think I will just go ahead and do that! I had previously thought of implementing something like your second suggestion, but decided against.
    – Monomeeth
    Feb 16, 2016 at 12:57
0

How about reseting the questions once a user selects a number of questions that exceeds the number of questions left in the pool? Basically if there's 50 questions left in the pool and user selects 10, 25 or 50 then you're ok, but if he selects 100, reset the database.

if(poolQuestions < selectedNumber) {
    resetQuestions();
}

You don't have to reset questions mid-game once the pool is exhausted, check before the game starts if pool has enough questions.

0

I think it would be best to make it a kind of game element.

Do you record if the users answer was right or wrong? Because then you could mention to the user that they have answered all questions, even if it's midway through a game. And then ask them if they want to start over with all the questions or maybe if they only want to get the questions that were answered wrong the last time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.