Frequently Asked Questions (FAQ)


Do I have to update SDK every time we make an update to our game?

Not necessarily. If you believe there is an update that changes your business model, we recommend that you discuss with TentuPlay's tech team for assistance.

Can you provide the same service with API, instead of SDK?

Yes. Please contact TentuPlay's tech team for more information.

Which engine does TentuPlay SDK support?

Unity Engine is supported.

Is there any QA process for checking proper SDK implementation?

You can debug your implementation on data collection and upload. Refer to the following Debug SDK section. TentuPlay’s tech team consistently checks the server for any issues as well.

Debug SDK

What are the classes that must be handled as exceptions when processing obfuscation?


Data type for some of TPStashEvent such as currency is float. What should I do when data beyond float type is used as input? The data that goes over its limit has any impact on the data in other methods when it comes to data upload?

If Built in Cast can be done properly, please do Built in Cast. But, in such case, an overflow has happened, so please take an extra step in data processing as follows:

  • float range: from 1.40129846432481707e-45 to 3.40282346638528860e+38

  • double range: from 1.7e-308 to 1.7e+308

When the value goes over 10^38, an overflow happens and TentuPlay receives the value as infinity, which causes an error. Our recommendation is to convert the input value into a logarithm, but one downfall is that you will see logarithmized value on your console.

For the second question, if one or more parameter values in GetCurrency exceeds valid range of its data type, all the data in GetCurrency will not be uploaded to server. It doesn't however affect data upload in other methods like UseCurrency.

If in setting we checked auto-upload, and then player close the app before the interval to upload reached, what happened to data that are already collected?

The data collected before upload term remains inside the player's device, and is uploaded when the player plays the game next time. You can shorten the upload term but this is the trade off between frequent upload (that might cause increase in overhead on data transmission over the network) and missing out data.

How often should TPStashEvent class be called?

How to use the TPStashEvent class: While Auto Upload is checked, for an event that is called multiple times, if you utilize the new TPStashEvent() class and call the needed method uploads will occur automatically following the Upload Interval. (For example, in the case of gaining or using currency, call the collection methods via new TPStashEvent().GetCurrency(), new TPStashEvent().UseCurrency().) If new TPStashEvent() is called only in the beginning of play, data collected is not uploaded while playing.

How can I check if the data is being uploaded properly? Is there a callback?

Currently, there is no callback function. Instead, if you are in TentuPlay Debug Mode, "TPDebug||Upload successful" will show up in the Unity editor's or Roblox Studio's debug console when upload is successful.

If upload fails, data collected remains in the player's device until the next game play.

PlayerGetCharacter event always appear after Join event at SDK status on the console. Why is that?

We automatically call PlayerGetCharacter right after Join, so there is no concern with that.

In documentation TPStashEvent.Join, it is used for user registration, is there some way to check if that user already registered before? (so that we can differentiate which user need to call join & login or just call login)

TentuPlay just uploads everything you called, so there is not much way to check if the user already registered, while not using TentuPlay. In many games, TPStashEvent.Join is called with the event that is called first and once such as signing in with Google user.

In the event of server failure, how will TentuPlay SDK behave?

TentuPlay SDK will retry a few times, and will shutdown itself eventually. This process will not affect gameplay because it runs on a separate thread or a coroutine/callback if the game uses only one thread.

Then, on a loose schedule of about 3~5 days, SDK will check if the server has been repaired by performing health at the application startup. This will not affect gameplay as well.

How robust are your servers?

The server is capable of handling growing demand up to 200,000 DAU and 80,000 concurrent connections by using RDB or NoSQL depending on game genre and scale. For example, our MMORPG client with X00,000 DAU (where the exact number cannot be shared due to NDA) has not experienced any downtime so far.