From Random to Targeted Hints: Smart Hint Management

Helpful hintsSince mobile games take some (preferably short) time to load, loading screen is the perfect place to provide hints and important messages. Almost all of the games need full or shortened loading time again if you switch from the application and come back. This means you have plenty of chances to display your messages.

Although many games are already using loading screen to display game hints, I see that the opportunity is not fully utilized. A smart hint management can improve users’ engagement significantly by speeding up the learning curve.

Smart Hint Management

The key point in Smart Hint Management is to move from “random” to “targeted” hints. Most of the game developers prepare a list of hints, insert these hints to a “hints table” in the database. Then each time a hint has to be displayed, the application calls a random one from that hint table. Yes, it’s a simple approach but not smart enough if you want to differentiate from others and maximize user experience.

How can we make targeted smart hints?

Let’s assume we have a hint display case as;

Hint: Connect Facebook to compete with Facebook friends and earn weekly rewards.

Conditions: If the user did not connect with Facebook yet, show one of the hints promoting Facebook connect. The user may see the same hint again, unless connected Facebook account. If the user has reached level 50 in the game, stop showing this hint.

1. Logging. Displaying the hint to the user is not enough. You need to log which hint is displayed to which user and when! We’ll use this data.

2. Useful content. Make your hints simple, useful and clear. Unless you are sure that user is a veteran gamer or spent enough time with your game, focus on “how to play” hints rather than “fun story” hints. Hints should be short. Use simple words, short sentences. Tell the main message. You can find some samples in my The Good, the Bad and the Ugly Hints post.

3. Timing. In your hint table, add properties to each hint to manage when to display it. These “timing properties” will override any other classification, targeting or segmentation rule we’ll define later. Timing consists of 2 elements:

  • When a hint is active. Add a property to enable/disable a hint immediately (HintActive in my example). Set when to start displaying a hint (HintStartDate) and set after which time the hint is not valid anymore (HintEndDate). You may need hints to tell about seasonal events like Valentine’s Day.
  • How often the hint should be displayed. Some hints, as long as you know that user did not take expected action accordingly, can be shown often. For example, if the user did not connect with Facebook, you may remind the user every few days or so. Set a time period in seconds/minutes/days (ShowFrequency), whatever makes sense for your game for each hint.

4. Segmentation. I’ve prepared 2 examples of segmentation. The first one is based on simple flagging on hints table, if you want a quick solution and do not need a comprehensive user segmentation. The second one is based on user segmentation managed separately. The idea is simple: Either specify which hints will be displayed for which kind users through flagging or identify which hints will be displayed to which user segments and then create user segments and assign users to these segments real-time/periodic basis.

smart hint table

Sample Hint Table 1 – Simple flagging


smart hint segmentation

Sample Hint Table 2 – Segmentation

I’ve created these 2 sample “hints table” implementations just to give an idea. You may need to normalize the database table and add additional relationships  according to your actual design architecture.

target hit5. Rule engine. If you go with simple flagging method, you may not need a rule engine. You may even hardcode in your application to select hints based on the flags defined. But, ideally, you need a rule engine to segment users.

In our case, we want to show the hint to users in “noFacebook” segment. Through our rule engine, we can write the code to define this segment and assign proper users to this segment. It will more or less look like:

If the user’s Facebook connect does not exist and the user was never connected with Facebook before and user’s game level is less than 50 assign this user to noFacebook segment.

Some rules may run periodically, some rules need to run upon certain events. If the user connects with Facebook, you need to run segmentation/rule engine again so that the user will be removed from noFacebook segment and our sample hint will no longer be displayed to that user.

6. Monitoring and Analysis. You may think that you have created the best segmentation, rules and written the hint in most effective wordings. Unless you monitor what’s going on and analyze the results you cannot be sure of it. Let the statistics talk! Use your logging infrastructure together with analysis and data mining tools. Test effectiveness of the same hint in different wordings. After displaying your “Facebook connect” hint, is that user actually initiating Facebook connect? If not, think why, check which users are reluctant, find their common attributes and try to improve the result.

Briefly, the goal is to target users with the most appropriate hint for them at the most appropriate time. Divide and conquer! Segment users, target them, prioritize hints and show them by a timely fashion. Monitor and analyze the results to improve effectiveness.

Sample smart hints

With our simple prototype design, we can already manage many of the smart hints. Here are some example cases:

  • Show a “very beginner” type hint only if the user’s game level is less than 5 and show these hints only once.
  • If a game functionality becomes available when the user reaches to level 10, show related hint only users reached to level 10 and never used this functionality. As long as the user did not experience functionality, continue showing the hint, but not more often than once a day.
  • Display message about approaching “Valentine’s Day” seasonal event promotions starting from Jan 20th but stop showing the message by Feb 20th.
  • If user logged in at least 3 times during the Valentine’s Day seasonal event, do not show event hints to this user anymore.
  • If the user is stuck at the same level for more than 5 days, display a hint to help moving forward.
  • If the user is a veteran gamer, show advanced hints and messages about upcoming changes.

Additionally, it may be a good idea to have general hints accessible through a menu or web forum. With targeted hints, hints may be consumed fast. Add new hints continuously. The questions coming to your support line or common web topics among your gamers will also guide you what kind of hints/messages you need to add.

Happy hint hunting!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.