Skip to content
Stove
Last Updated

Game-Time Choice System

Understanding


The game-time choice system (shutdown system) is a system that lets guardians choose and restrict the game-play time of youths under 19.
The STOVE platform supports this feature for games rated under 19.

The STOVE PC SDK delivers the time remaining until game exit, the notification message, and the message-display time via a Base SDK callback.
The game should use this info to display an in-game notification and, when 0 minutes is reached, exit the game naturally.

It's a required item for domestic services rated under 19.
It's a PC-SDK-only feature and isn't provided on mobile. Target games must integrate it.

This feature is not supported when running the game through the Steam Launcher. Therefore, you cannot use it if you're running the game through the Steam Launcher.



Application Environment and Operating Scope

Item Details
Provided platform PC SDK 3.0 (Base SDK) only. Not supported on mobile.
Target games Domestic-service games usable by those under 19. (games exclusively for those 18 and older aren't integration targets)
Target users The callback operates only for youth users under 19 for whom a guardian has set the game-time choice system.
Notification timing The callback is called at the times near game exit (10 minutes before, 5 minutes before, 1 minute before) and at exit. Up to 4 times.



Info the SDK Delivers

When a target user logs in to the game, the following info is delivered via a callback at set times.
The game uses these values to build the notification UI and forcibly exits the game at the exit time.

Delivered info Description
Time remaining until game exit In minutes. Delivered as values of 10, 5, 1, or 0. When 0, handle immediate game exit.
Shutdown notification message A notification message reflecting the remaining time. Shown in the game UI.
Message-display time The time the notification must be shown on screen (in seconds).

When the playable time is 0 minutes, forced game-exit handling is needed.
You must terminate the game process after the user's confirmation input, and omitting the exit handling can cause a policy violation.



Callback Timing and Notifications

The OnShutdownFinished callback is called up to 4 times, from near game-time expiry to the exit point.
The game UI should display a notification matching each point.

Call timing Message example Game handling
10 minutes before "You are subject to the game-time choice system, and game use will be restricted in 10 minutes." Show a logout notification in 10 minutes in the UI.
5 minutes before "You are subject to the game-time choice system, and game use will be restricted in 5 minutes." Show a logout notification in 5 minutes in the UI.
1 minute before "You are subject to the game-time choice system, and game use will be restricted in 1 minute." Show a logout notification in 1 minute in the UI.
Shutdown (0 minutes) "You are subject to the game-time choice system; game use is restricted, so the game will now exit." After showing the logout notification, exit the game immediately upon the user's confirmation.

Integration Guide



Integration Preparation

To use the game-time choice system feature, the list of shutdown-target games and the play-time settings must be completed in advance.
For those settings, contact the publishing technical contact.

Item Details Owner
Add to the shutdown game list Register game-time-choice-system target games in the shutdown game list. Publishing Tech
Store registration and store-key issuance Register the store and issue the store key to use on the child-settings page. Publishing Tech
Game-time choice system page Build a page where child settings and play-time settings are possible. Publishing Tech
One-stop shutdown service Apply default-standard play-time settings without child settings. Publishing Tech
Base SDK integration Base SDK integration into the game is required before using the feature. CP company
Base SDK initialization Complete initialization via the Base_Initialize API.
Base_RunCallback() must be called periodically in the game loop to drive callbacks.
CP company



Basic Integration Structure

From game launch to exit, it operates in the order register notification → receive callback → display notification and handle exit.

Step What's handled
① Register the notification ㆍ After Base SDK initialization, register the shutdown notification with the Base_ShutdownNotification API.
ㆍ Once registered, the PC SDK looks up shutdown info via a Web API and calls the OnShutdownFinished callback near the exit point.
ㆍ Call only once. Calling it inside the Base_Initialize success callback is recommended.
② Receive the callback ㆍ Look up the remaining time, notification message, and display time from the StovePCShutdown struct delivered via the callback.
ㆍ Called up to 4 times (10 min, 5 min, 1 min, 0 min) only for target users. No callback for non-target users.
③ Display the notification and handle exit ㆍ Display the notification in the game UI and keep it for at least the delivered display time (seconds).
ㆍ When 0 minutes is reached, show the exit notice → user confirmation input → terminate the game process.
ㆍ Compose the exit notification with close blocking and top z-order.



StovePCShutdown Struct

The struct delivered via the callback provides the following methods.

Method name Return type Description
GetInadvanceTimeInMinutes() int32_t The current user's time remaining until game exit (minutes). When 0, exit the game immediately.
GetShutdownMessage() const wchar_t* The shutdown notification message.
GetExposureTimeInSeconds() int32_t The message-display time (in seconds).

Development


PC (PCSDK)

This is a PC-SDK-only feature.
It isn't provided on mobile, and the callback isn't called for non-shutdown-target users. In that case, gameplay proceeds normally.


Prerequisites

  • BaseSDK integration and initialization (Base_Initialize) must come first.
  • The callback-driving function (Base_RunCallback()) must be called periodically in the game loop for the callback to be delivered correctly.
  • The publishing technical contact must complete, in advance, adding to the shutdown game list, store registration and key issuance, building the game-time choice system page, and applying the one-stop shutdown service.
  • Registration only needs to be called once. We recommend calling it after initialization succeeds.



Development Flow

  1. Register the notification: After initialization completes, call the shutdown-notification-registration function (Base_ShutdownNotification).
  2. PCSDK internal handling: The PCSDK looks up the user's shutdown info via a Web API. If they're a target user, the event is registered; if not, the callback isn't called.
  3. Advance-notification callback (10/5/1 minutes before): The shutdown-notification callback is delivered. Get the remaining time with StovePCShutdown's GetInadvanceTimeInMinutes() (inadvanceTimeInMinutes in C#) and the message with GetShutdownMessage() (shutdownMessage in C#), and display them in the UI. Keep it for at least GetExposureTimeInSeconds() (exposureTimeInSeconds in C#).
  4. Exit callback (0 minutes): When the remaining time (GetInadvanceTimeInMinutes()) is 0, display the exit-notice UI and take the user's confirmation input.
  5. Exit the game: After the user confirms, terminate the game process immediately. Omitting the exit notice can be a policy violation.



Troubleshooting

SituationCauseSolution
I registered the callback but it's never called even after playing a while (test account)For users not subject to shutdown (accounts 18 or older, or where the guardian hasn't set a time), the SDK has no reason to send a notification, so the callback isn't called. This is normal behavior.To verify shutdown behavior, log in with an under-19 test account for which a guardian has set the game-time choice system. Requesting account registration from the publishing technical contact avoids issues.
I registered the callback but it isn't called even for general usersBase_RunCallback() isn't called in the game main loop, or you attempted callback registration before BaseSDK initialization completed. A callback registered before initialization isn't activated.Move callback registration to after OnInitializeFinished succeeds, and call Base_RunCallback() every frame or at a regular interval in the main loop. Ordering the boot sequence as BaseSDK initialization → callback registration → entering the main loop avoids issues.
The callback isn't called even for a shutdown-target accountThe game isn't registered in the STOVE shutdown game list, so the SDK doesn't recognize this game as a shutdown target. This often happens with new games or new builds.Request that the publishing technical contact register the game in the shutdown game list. Re-testing after registration completes avoids issues.
I received the 0-minute callback but the game doesn't exitThe SDK only sends a signal that 0 minutes is reached; the actual game exit must be handled by the game itself. If you don't implement exit-handling code, the user can keep playing.On receiving the 0-minute callback, show the exit-notice UI and, after the user confirms, terminate the process immediately. Setting a timer to force exit after a set time even if the user doesn't press confirm avoids issues.
The exit-notice UI is hidden by other game UI, or the user ignores and closes itThe exit notice is at the same z-order as regular pop-ups, or you made it closable by user input, so it's unintentionally ignored.Always display the exit-notice UI at the top z-order and block arbitrary closing by the user. Composing it to accept only "OK" input and exit immediately means the user can't avoid exit, which avoids issues.

ShutdownNotification isn't Korea-only
For accounts with shutdown applied, it works overseas too. Register this callback in global builds as well.



Sample Code

cpp
using namespace Stove::PCSDK;
using namespace Stove::PCSDK::Base;

// 1) Register the shutdown notification — call once inside the Base_Initialize success callback
Base_ShutdownNotification(
    [](CallbackResult callbackResult, StovePCShutdown shutdown)
    {
        if (!callbackResult.GetResult().IsSuccessful())
        {
            // Non-target-user / exception handling
            return;
        }

        int32_t remaining   = shutdown.GetInadvanceTimeInMinutes();
        const wchar_t* msg  = shutdown.GetShutdownMessage();
        int32_t exposureSec = shutdown.GetExposureTimeInSeconds();

        // Display the message in the UI, keep it for at least exposureSec
        if (remaining == 0)
        {
            // Show the exit-notice UI → user confirmation input → terminate the game process
        }
    }
);

Frequently Asked Questions



Q1. Which games should the game-time choice system be applied to?
A. It's a required item for domestic-service games usable by those under 19. Games exclusively for those 18 and older aren't integration targets.
Q2. Where do I do the shutdown game list and time settings?
A. Adding to the shutdown game list, store registration and store-key issuance, building the game-time choice system page, and applying the one-stop shutdown service are pre-configured by the publishing technical contact.
Since those settings must be complete before the CP company (developer) starts SDK integration, contact the publishing technical contact.
Q3. What's the difference between child settings and the one-stop shutdown service?
A. Child settings is a method where the guardian sets the play time directly for the child's account on the STOVE game-time choice system page.
The one-stop shutdown service is a method where a default-standard play time is automatically applied even when child settings aren't separately done.
Since the SDK callback behavior is the same for both, the game side can implement the same handling.
Q4. How many times is the OnShutdownFinished callback called?
A. It's called up to 4 times, only for game-time-choice-system target users. Advance-notification callbacks are called at 10 minutes, 5 minutes, and 1 minute before exit, and the exit callback is called when 0 minutes is reached.
The callback isn't called for non-target users.
Q5. Do I have to call Base_ShutdownNotification every time?
A. You only need to call it once. We recommend calling it inside the Base_Initialize success callback.
Once registered, the PC SDK looks up the user's shutdown info and calls the callback automatically from near the exit point, so there's no need to re-register at each point.
Q6. What handling should the game do when it receives the 0-minute callback?
A. After showing the user a notice that game use is restricted and will be exited, terminate the game process immediately upon the user's confirmation input.
Since omitting the exit handling constitutes a policy violation, mind UI handling such as z-order and close blocking so the exit notice is definitely perceived by the user.
Q7. The callback isn't called. How do I check?
A. First, you need to check whether the user is a game-time-choice-system target. The callback isn't called for non-shutdown-target users.
Besides that, also check whether Base_RunCallback() is called periodically in the game loop, whether Base SDK initialization (Base_Initialize) completed correctly, whether registration happens after the initialization callback, and whether the game is registered in the shutdown game list.
Q8. Can I write the notification message myself in the game?
A. We recommend using the message received via GetShutdownMessage() as-is, because it's a message reflecting the wording set by policy.
If you must use your own message for game-design reasons, you must maintain the policy's wording requirements and meaning, and discuss it with the publishing technical contact in advance.
Q9. How should I decide the notification's display location and time?
A. Display it at a location the user can clearly perceive. Keep the display time at least the GetExposureTimeInSeconds() value delivered via the callback.
Mind the z-order so it isn't hidden by other UI elements, and compose the exit notification when 0 minutes is reached so the user makes an explicit confirmation input rather than closing it arbitrarily.
Q10. What's the difference between the game-time choice system and overindulgence prevention?
A. Both are mandatory features for youth protection, but they operate differently.
Overindulgence prevention shows a warning message every hour but doesn't exit the game.
With the game-time choice system, the game itself is forcibly exited when the play time set by the guardian ends.
The two features operate separately, so games subject to them must integrate each one independently.



Need to contact us directly? stove.developers@smilegate.com