- Print
- PDF
Game Report SDK and method
- Print
- PDF
Available in Classic and VPC
Game Report provides an SDK related to analysis/log collection platform technology to use the service.
This activity includes the following subtasks.
- Think Core game analysis service
- Lib Core game log provision service
If you use the Unreal or Unity 3D Engine, then you don't have to set up separate development environments for iOS and Android.
Basic terms
The terms and their descriptions you should know when configuring Game Report SDK are as follows.
Term | Description |
---|---|
Content | - Fun elements to be played in the game - PVP, normal stage, raid |
Partner | - Game resources that accompany the character when playing the content - E.g., pets, friends, drones |
Wear | - All items that can be worn or equipped in some way - E.g., weapons, armor, shoes, earrings, etc. |
Item | - All game resources used in the game - All items other than goods such as weapons, clothes, items used for upgrades, items that can be consumed, item skills, etc. |
Enemy | - All targets involved in confrontation within the game content, other than allies - E.g., pets, monsters, drones, PVP opponents, raid bosses, etc. |
Skill | - Abilities of characters or partners used within the game content - RPG: abilities used by characters, pets, friends, drones, etc. - PANG: skills that characters have |
Set up development environments
Download SDK
The SDK file required for configuring the development environment can be downloaded from the Service Center. Please refer to Download SDK at the Service Center for more information.
UNREAL
Plugin installation and settings
The following describes how to install and set up the plugin in the Unreal Engine editor.
- Run the Unreal Engine editor, and open the Plugins folder of the project where you want to install the plugin.
- Copy the SDK file in the downloaded SDK's "Unreal" folder to the Plugins folder and decompress it.
- Run the Unreal Engine editor again, and click Settings > Plugin > Project > Other in order.
- Mark the Enable checkbox in StorageCoreSDKPlugin and restart the Unreal Engine editor.
Initialize SDK
If you're running the app for the first time, then the SDK must be initialized using Blueprint, etc.
You may also directly access StorageCoreSdk to initialize the SDK with C++ code.
The following describes how to initialize the SDK with Blueprint.
- Run Blueprint.
- Enter basic information referring to the table below, and then initialize.
The basic information to enter is as follows.
Name | Value | Description |
---|---|---|
Server IP | String | NCP API URL - https://storagecore.gamereport.naverncp.com |
Auth Key | String | Authentication key for using API - Service Center > Enter the authentication key from the game's settings page - Required field for aggregation |
Game Version | String | Game version - Required field for aggregation |
Channel Code | String | Channeling code - Enter the channel information of the game store - Required field for aggregation |
Channel ID | String | Channeling ID - Enter the email address of the user who signed up |
- String must be entered within 100 characters, including special characters.
- Set member IDs (account IDs) and nicknames separately depending on the game user information.
- Make an exception for the SDK as follows when using "ProGuard".
- ProGuard file location: Game project\Build\Android\proguard-project.txt
- Exception commands
keep class com.coresight.storagecoresdk.** { *; } dontwarn com.coresight.storagecoresdk.**
Unity3D
Plugin installation and settings
- Run Unity 3D, and open the project where the plugin should be installed.
- From the Unity menu, click Assets > Import package > Custom package.
- Select the StorageCoreUnityPlugin.unitypackage file in the downloaded SDK's "Unity" folder, and click the [Import] button.
- Drag the Plugin/StorageCoreManager.prefab on the first scene hierarchy.
- Select StorageCoreManager GameObject, and set the basic environment referring to the table below in the Inspector window.
The basic information to enter is as follows.
Name | Value | Description |
---|---|---|
Server IP | String | NCP API URL - https://storagecore.gamereport.naverncp.com |
Auth Key | String | Authentication key for using API - Service Center > Enter the authentication key from the game's settings page - Required field for aggregation |
Game Version | String | Game version - Required field for aggregation |
Channel Code | String | Channeling code - Enter the channel information of the game store - Required field for aggregation |
Channel ID | String | Channeling ID - Enter the email address of the user who signed up |
- Set member IDs (account IDs) and nicknames separately depending on the game user information.
- The sample project can be checked from the sample scene in the StorageCoreSample folder.
Name | Description |
---|---|
Sample.scene | Example of Game Report SDK usage |
TestGUI.cs | Example source of sending data (Refer to the SDK detailed guide in Method details) |
- Make an exception for the SDK as follows when using "ProGuard".
- ProGuard file location: Assets/Plugins/Android/proguard-user.txt
- Exception commands
keep class com.coresight.storagecoresdk.** { *; } dontwarn com.coresight.storagecoresdk.**
- Add content as follows when using "Custom Gradle template."
- Location of the mainTemplate.gradle file: Assets/Plugins/Android/mainTemplate.gradle
- Content to add
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) …………… // Add the implementation below. implementation 'com.android.installreferrer:installreferrer:1.0' ……………. **DEPS** }
iOS Native
Plugin installation and settings
- Copy StorageCoreSdk.framework and strip-frameworks.sh in the "iOS" folder of the downloaded SDK to the folder that contains the Xcode project file (.xcodeproj).
- Set StorageCoreSdk.framework and strip-frameworks.sh from the Xcode project settings menu in the following method.
- Install StorageCoreSdk.framework
- Click General from the Xcode project settings menu, and click the + button in the "Embedded Binaries" area.
- Click the Add other button to add "StorageCoreSdk.framework" copied to the project folder.
- Check if the "Embedded Binaries" area has "StorageCoreSdk.framework" added.
Install SystemConfiguration.framework
In the same way as installing "StorageCoreSdk.framework," click General from the Xcode project settings and add "SystemConfiguration.framework" in the "Linked Frameworks and Libraries" area.strip-frameworks.sh settings
The Storage Core SDK Framework is provided in the form of Fat available on both devices and simulators, and you have to go through the strip process when building.
Set the shell script provided to the post build for the strip process.
- Click Build Phases in the Xcode project settings.
- Click the + button at the upper left, and select New Run Script Phase to add the Run script.
- Write a script that runs the strip-frameworks.sh copied to the project folder in the added Run script, referring to the table below.
The basic information to enter is as follows.
Name | Value | Description |
---|---|---|
Server IP | String | NCP API URL - https://storagecore.gamereport.naverncp.com |
Auth Key | String | Authentication key for using API - Service Center > Enter the authentication key from the game's settings page - Required field for aggregation |
Game Version | String | Game version - Required field for aggregation |
Channel Code | String | Channeling code - Enter the channel information of the game store - Required field for aggregation |
Channel ID | String | Channeling ID - Enter the email address of the user who signed up |
- String must be entered within 100 characters, including special characters.
- Set member IDs (account IDs) and nicknames separately depending on the game user information.
Initialize SDK
If you're running the app for the first time, then the SDK must be initialized.
- In order to use the library, import the header file using the Import command as shown below.
#import <StorageCoreSdk/StorageCoreManager.h>
- Call the initSDK function as follows in the ViewController.m > viewDidLoad function.
[StorageCoreManager initSDK:@"https://storagecore.gamereport.naverncp.com" authKey:@"YWtoaWw6YWtoaWw=" gameVersion:@"1.0" channelCode:@"GOOGLE" channelID:@"media_account@gmail.com" memberID:@"testuserid01" charID:@"TestCharID" nickName:@"testnickname01"];
Cocos2d-x
Cocos2d-x runs using the Cocos2d-x Wrapper based on iOS/Android libraries. Set up the development environment for iOS or Android first in order to use Cocos2d-x.
Plugin installation and settings
- To copy the Wrapper source code, unzip "StorageCoreSdk.zip" in the "Cocos2d-x" folder of the downloaded SDK, and copy the StorageCoreSdk folder to the Cocos2d-x project file folder/Classes.
- Drag the Cocos2d-x project folder/Classes/StorageCoreSdk folder and add it to an Xcode or Visual Studio project, and then set the basic environment referring to the table below.
The basic information to enter is as follows.
Name | Value | Description |
---|---|---|
Server IP | String | NCP API URL - https://storagecore.gamereport.naverncp.com |
Auth Key | String | Authentication key for using API - Service Center > Enter the authentication key from the game's settings page - Required field for aggregation |
Game Version | String | Game version - Required field for aggregation |
Channel Code | String | Channeling code - Enter the channel information of the game store - Required field for aggregation |
Channel ID | String | Channeling ID - Enter the email address of the user who signed up |
- String must be entered within 100 characters, including special characters.
- Set member IDs (account IDs) and nicknames separately depending on the game user information.
Initialize SDK
If you're running the app for the first time, then the SDK must be initialized.
In order to use the library, include the header file using the Include command as shown below.
#include "StorageCoreWrapper.h"
Call the initSDK function as follows in the init function of the first starting scene.
StorageCoreWrapper::initSDK("https://storagecore.gamereport.naverncp.com", "YWtoaWw6YWtoaWw=", "1.0", "GOOGLE", "media_account@gmail.com", "testuserid01", "TestCharID", "testnickname01");
Android Native
Plugin installation and settings
Copy StorageCoreSdk.jar and gson-2.8.4.jar in the "Android" folder of the downloaded SDK to the Android Studio project folder/app/libs.
Set in the build.gradle as follows to set the dependencies.
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation files('libs/gson-2.8.4.jar') implementation files('libs/StorageCoreSdk.jar') implementation 'com.android.installreferrer:installreferrer:1.0' }
Set the basic environment in AndroidManifest.xml referring to the code and table below.
- Add permissions
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
The basic information to enter is as follows.
Name | Value | Description |
---|---|---|
Server IP | String | NCP API URL - https://storagecore.gamereport.naverncp.com |
Auth Key | String | Authentication key for using API - Service Center > Enter the authentication key from the game's settings page - Required field for aggregation |
Game Version | String | Game version - Required field for aggregation |
Channel Code | String | Channeling code - Enter the channel information of the game store - Required field for aggregation |
Channel ID | String | Channeling ID - Enter the email address of the user who signed up |
- String must be entered within 100 characters, including special characters.
- Set member IDs (account IDs) and nicknames separately depending on the game user information.
Initialize SDK
If you're running the app for the first time, then the SDK must be initialized.
In order to use the library, import the file using the Import command as shown below.
import com.coresight.storagecoresdk.StorageCoreManager; import com.coresight.storagecoresdk.StorageCoreApi; import com.coresight.storagecoresdk.Models.Enums.*;
Call the initSDK function as follows in the MainActivity > onCreate function.
StorageCoreManager.initSDK(this, "https://storagecore.gamereport.naverncp.com", "YWtoaWw6YWtoaWw=", "1.0", "GOOGLE", "media_account@gmail.com", "testuserid01", "TestCharID", "testnickname01");
SDK method summary
Class
- public class StorageCoreManager
- Send the game log with the Coresight StorageCore.
StorageCoreApi creator
- The default creator for sending data
- It creates an object with the basic information as a parameter.
Syntax
StorageCoreApi(string Url, string AuthKey, string TargetVer, string ChannelCode, string ChannelID, string MemberID, string CharID, string NickName).
// Example
m_api = new StorageCoreApi(serverIp, authKey, gameVersion, channelCode, channelID, memberID, charID, nickName);
Parameters
Parameter Name | Description |
---|---|
Url | Rest API URL information |
AuthKey | Authentication key for Rest API authentication |
TargetVer | Game app version |
ChannelCode | Game service channel's channel code - E.g., store names such as iOS, Android OS, ONE Store, etc. |
ChannelID | ID information that the user entered in specific channel companies (App Store, Google Play Store, ONE Store) |
MemberID | Member ID issued by the game - Member IDs are member-specific unique codes - If an empty value or NULL data is included, then it will be excluded from the aggregation - If it contains blank, tab, or line feed characters, then they will be removed before aggregation |
CharID | Character ID issued by the game - The ID of the character currently accessed among multiple IDs issued for a member code - If an empty value or NULL data is included, then it will be excluded from the aggregation - If it contains blank, tab, or line feed characters, then they will be removed before aggregation |
NickName | Nickname that corresponds to a member or character |
SDK Method summary
SetAccountLevel
- Call and renew the character's level information when the user's level goes up
CautionThe change doesn't mean the change in character level, but the change in the account level. If multiple characters are used by one account, then use ResourceChangeInfo for changes. However, you can use it when the account and character are mapped 1:1.
public void SetAccountLevel(int AccountLevel) /* SampleCode */ // Set at level 50 StorageCoreManager.GetInstance().GetApi().SetAccountLevel(50);
SetCharacterID
- Change the character used by the user to another character the user has during the game
public void SetCharacterID(string CharacterID) /* SampleCode */ // Change the character in use to "7777777" StorageCoreManager.GetInstance().GetApi().SetCharacterID("77777777");
SetMemberID
- Set the user's member ID
- Use if the MemberID can't be entered through the creator when creating the initial Game Report instance
- E.g., if there's no MemberID when running the game for the first time, set Game Report instance as Empty, issue the account, and then set the MemberID.
CautionMemberID used should be unique for each user. Otherwise, it may result in inaccurate indicators.
public void SetMemberID(string MemberID) /* SampleCode */ // Set the account ID as "MID0000007" StorageCoreManager.GetInstance().GetApi().SetMemberID("MID0000007");
SetNickName
- Set the user NickName
- E.g., if there's no nickname when running the game for the first time, set Game Report instance as Empty, issue the account, and then set the NickName.
- Used when changing the nickname using the nickname coupon
public void SetNickName(string NickName) /* SampleCode */ // Set the nickname as "Thanos" StorageCoreManager.GetInstance().GetApi().SetNickName("Thanos");
- Set the user NickName
SetChannelID
- Set ID information issued by the channel companies (Apple App Store, Google Play Store, ONE Store, etc.) used for the game app installation
- Used when changing the game service channel's ID to renew ChannelID
public void SetChannelID(string ChannelID) /* SampleCode */ // Set the channel ID as "0000001234567" StorageCoreManager.GetInstance().GetApi().SetChannelID("0000001234567");
SetChannelCode
- Set the game service channel code, which is the store's name
- E.g., Set store names such as iOS, Android OS, ONE Store, etc.
public void SetChannelCode(string ChannelCode) /* SampleCode */ // Set the channel code as "GOOGLE". StorageCoreManager.GetInstance().GetApi().SetChannelCode("GOOGLE");
- Set the game service channel code, which is the store's name
GetInstance
- Initialize the StorageCoreManager object
ConnectInfos Log
- Send the user's game login/logout logs and analyze the achievement
- Send the user's game content (stages, dungeons, PVPs, stores, etc.) access/exit logs and analyze the achievement
ContentActInfos
- Send various logs at the point in time the user finishes accomplishing game content and analyze the content's difficulty, game resource balance, and difficulties faced by the game users
- Included information
- Game resource which accompanied the user in the content accomplishment
- Items used during the content accomplishment
- Skills used during the content accomplishment
- Equipment worn during the content accomplishment
- Enemies killed during the content accomplishment
Method Return Description ClearPartnersInfo void Initialize the list to save the partner information AddPartnersInfo void Add partner information GetPartnersInfo List<PartnersInfo> View partner information ClearWearItemInfos void Initialize the list to save the WearItem information AddWearItemInfos void Add WearItem data GetWearItemInfos List<WearItemInfo> View WearItem data ClearSkillInfos void Initialize the skill list to save the skill information AddSkillInfos void Add the skills that the character uses to the skill list GetSkillInfos List<SkillInfo> View the skill list saved ClearItemInfos void Initialize the list to save the item information AddItemInfos void Add item information GetItemInfos List<ItemInfo> View the item list saved ClearEnemyInfos void Initialize the list for saving the information of opponents faced in the content AddEnemyInfos void Add the information of opponents faced in the content GetEnemyInfos List<EnemyInfo> View EnemyInfo information saved through AddEnemyInfos AdPerformInfos
- Send the banner exposure information and banner click logs from the game app when run, and analyze the user response
- Send various campaign (event) logs about the user's event participation, and analyze the game user participation rates
Method Return Description ClearJoinContents void Initialize the list to save the partner information AddJoinContents void Add partner information FileDownloadInfos
- Send the logs of files downloaded and installed during game updates and analyzes problems occurring in the downloading and installing process
InstallInfos
- Send the logs of the game's first access and game account creation and analyze the game in service
CautionThe InstallInfos log is what game log analyses are based on. If it's not sent, then it may cause problems with a variety of analyses.
FriendshipInfos
- Send the logs on friendships occurring in the game, and search the friendships within the game through these logs
NoteThe FriendshipInfos log is not the type of log that is analyzed. If required, then you can use the log search feature to check it.
ItemChangeInfos
Send the log immediately after the user acquires/consumes various game items, and analyze the user response to the item balance and game design
Both paid and free items used in the game are analyzed
Included information
- Purpose of the item's quantity change
- Route of each item's quantity change
- Multiple items acquired/consumed with one action
Set objects to accumulate and send multiple ItemChangeInfos information
Method Return Description ClearItemChangeInfoList void Initialize the list to save the item change history AddItemChangeInfoList void Add the item change history GetItemChangeInfoList List<ItemChangeInfo> Return the item change list saved through AddItemChangeInfoList Set ItemsInfo object information included in ItemChangeInfos
Method Return Description ClearItemChangeInfos void Initialize the item quantity change (acquisition/consumption) information saved AddItemChangeInfos void Add item details when acquiring/consuming an item GetItemChangeInfos List<ItemsInfo> Return the item change (acquisition/consumption) information added through AddItemChangeInfos
VMoneyChangeInfos
- Send the quantity change (acquisition/consumption) logs for all goods used within the game and analyze the flow of game goods
NoteIt's possible to analyze not just goods, but also game resources that are similar in form to goods within the game.
Set objects to accumulate and send multiple VMoneyChangeInfos information
Method Return Description ClearVMoneyChangeInfoList void Initialize the goods quantity change (acquisition/consumption) information saved AddVMoneyChangeInfoList void Add the goods quantity change (acquisition/consumption) information GetVMoneyChangeInfoList List<VMoneyChangeInfo> Return the goods change (acquisition/consumption) history information added through AddVMoneyChangeInfoList
ResourceChangeInfos
- Send the characteristic change logs of the items used in the game, and analyze the user response to the game content balance, item balance, relationship between content and item, and game design
BuyInfos
- Send the purchase logs such as cash/credit card/coupon/gift card and analyze the sales
- Analyze sales users, items, and relationship between items through the sales analysis
String must be specified within 100 characters.
SDK method details
InstallInfos
Send the logs of the game's first access and game account creation and analyze the installation/account creation status of the game in service
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log after installing the game, immediately after the game app is first run | Y | - RU - NRU - Retention (user who visited again) - Revisit - Real-time inflow - New member status - Indicators related to inflow - Indicators related to reroll - Indicators related to installation |
Send the log immediately after the account is created for the first time | Y | - RU - NRU - Retention (user who visited again) - Revisit - Real-time inflow - New member status - Indicators related to inflow - Indicators related to reroll - Indicators related to installation |
This is the basic information required for analysis, so the logs need to be sent for you to be able to view most indicators.
- If the game is designed so that the character is created at the same time as the account, then the character creation log has to be saved separately as ChangeType.INIT in ItemChangeInfos.
- If an error occurs when running the game app initially, then send the error code or error message together with the code.
Enumerations content
- InstallType
When sending the log related to the game app installation, this specifies whether the log is about installation or account creation
Name | Value | Description |
---|---|---|
INSTALL | 0 | Installation - Set at the point when the game app is first run (one time of the initial execution) after installing from App Store or Google Play Store. |
ACCOUNT | 1 | Set at the point when the account is created (sign-up and account creation) after running the game app. |
- The character creation log must be saved separately as ChangeType.INIT of ItemChangeInfos.
- For games that allows 1 character for 1 account, enter the character creation log together when completing the account creation to measure the exact indicators.
- Enter the ConnectInfos login log together when completing the account creation to measure the exact indicators.
- ResultType
Specify the success status of the game installation (game resource file patch)
Name | Value | Description |
---|---|---|
NON | 0 | No success/failure status of the game app installation (game resource file patch) |
SUCCESS | 1 | Game app installation (game resource file patch) successful |
FAIL | 2 | Game app installation (game resource file patch) failed |
Method description
string InstallInfos(InstallType AppInstallType, string ReferrerURL, string APPVersion, StateType DeviceInstallStateType, ResultType DeviceInstallResult, string InstallErrorMessage, string PushToken)
Parameter Name | Data Type | Description | |
---|---|---|---|
AppInstallType | InstallType | Required field for collecting the app installation/deletion separately | |
ReferrerURL | string | Required field for collecting information that checks which websites users visited before accessing the store | |
APPVersion | string | Required field for collecting the game version information. | |
DeviceInstallStateType | StateType | Game app installation (game resource file patch) process information | |
DeviceInstallResult | ResultType | Game app installation (game resource file patch) result information | |
InstallErrorMessage | string | Information of the error message occurred when the game app is installed (run initially) | |
PushToken | string | Personal push token information for sending push messages | |
Return (call result) | |||
- | - | No returned value |
Sample source
// Leave the installation log when running the game for the first time after installation (required)
StorageCoreManager.GetInstance ().GetApi ().InstallInfos (InstallType.INSTALL, StorageCoreManager.GetReferrerName(), "APPVersion", StateType.FINISH, ResultType.SUCCESS, "InstallErrorMessage", "");
// Leave the account creation log (required)
StorageCoreManager.GetInstance ().GetApi ().InstallInfos (InstallType.ACCOUNT, StorageCoreManager.GetReferrerName(), "APPVersion", StateType.FINISH, ResultType.SUCCESS, "InstallErrorMessage", "");
// Game login (required/this information can be left through ConnectInfos and checked through ConnectInfos)
StorageCoreManager.GetInstance().GetApi().ConnectInfos(ConnectType.APP, "Login", FlowType.IN);
// Character creation process
// Instance object creation (required/this information can be left through ItemChangeInfos and checked through ItemChangeInfos)
StorageCoreManager scManager = StorageCoreManager.GetInstance();
// Initialize data array before saving the item data
scManager.ClearItemChangeInfos ();
// Enter character creation information
// Leave the character creation log after creating the account
scManager.AddItemChangeInfoList(FlowType.IN, ChangeType.INIT, "ChangeDetail1", "ContentName", "ContentCode", scManager.GetItemChangeInfos());
FileDownloadInfos
Send the download log when installing additional files for the game app (game resource file patch), and if a download error occurs, check the error by searching
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send logs every time files are downloaded | N | No analysis indicators, check through searching logs |
Send the log when a file is not downloaded due to disconnection problems while downloading | N | No analysis indicators, check through searching logs |
Send the log (including the error code) when the file to be downloaded can't be found | N | No analysis indicators, check through searching logs |
- Sends every time a game resource file is downloaded.
- The FileDownload logs sent can be viewed with the search feature in LIBCORE.
Enumerations
- MethodType/Enum
Specify the transmission method for when the user downloads the game's resource files
Name | Value | Description |
---|---|---|
DATA | 0 | Download via data communication |
WIFI | 1 | Download using Wi-Fi |
Method description
string FileDownloadInfos(string FileName, int FileSeq, string FileVersion, string ErrorMessage)
Parameter Name | Data Type | Description | |
---|---|---|---|
FileName | string | Name of file to download | |
FileSeq | int | File download order | |
FileVersion | string | File version | |
ErrorMessage | string | Error message | |
Return (call result) | |||
– | string | Result value of whether the transmission was successful |
Sample source
//"ErrorMessage" error occurred while downloading "{FileName}", which was the first in the download queue so the download log was saved
StorageCoreManager.GetInstance ().GetApi ().FileDownloadInfos ("hero1.png", 1, "0.1.0", "ErrorMessage");
StorageCoreManager.GetInstance ().GetApi ().FileDownloadInfos ("contents1.json", 2, "FileVersion", "ErrorMessage");
StorageCoreManager.GetInstance ().GetApi ().FileDownloadInfos ("item_bs.csv", 3, "FileVersion", "ErrorMessage");
BuyInfos
Send the logs showing purchases made through cash/credit card/Present/gift card and analyze the game sales in detail
- Sales analysis (first purchase/repeated purchase ratio)
- Sales analysis (by item or level)
- Purchase status analysis (purchasing user's additional item purchase status)
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log when an item is purchased with credit card | N | - Total sales - First purchase - Repeated purchase - ARPU - ARPPU - BU - Real-time sales - Association analysis of item/play time - Sales by item - Sales by level - Item association analysis - Analysis indicators related to payment/non-payment |
Send the log when an item is purchased with gift card | N | |
Send the log when an item is purchased with mobile phone payment | Y | |
Send the log when an item is purchased with bank transfer | Y | |
Send the log when an item is purchased with various mobile payment methods (KakaoPay, NAVER Pay, etc.) | Y | |
Send the log when an item is purchased with mileage points | Y |
The log must be sent after the completion of the purchase is confirmed by the channel company.
Once the item has been provided after the payment is completed, the ItemChangeInfos log also needs to be sent.
Enumerations content
- PurchaseType
Specify the type of game resource acquired or paid item purchased by the user
Name | Value | Description |
---|---|---|
CHARGE | 0 | Cash charged by cash |
BONUS | 1 | Bonus cash charged (E.g., reward cash for winning an event or coupon use) |
CASHPRESENT | 2 | Cash sent to another user as a gift |
PURCHARSE | 3 | Item purchased |
ITEMPRESENT | 4 | Item sent to another user as a gift |
- CurrencyType
Specify the payment currency when purchasing paid items
Name | Value | Description |
---|---|---|
KRW | 0 | South Korean won |
CNY | 1 | Chinese yuan |
HKD | 2 | Hong Kong dollar |
TWD | 3 | Taiwan dollar |
EUR | 4 | Euro |
USD | 5 | U.S. dollar |
GBP | 6 | British pound |
AUD | 7 | Australian dollar |
JPY | 8 | Japanese yen |
RUB | 9 | Russian rubel |
AED | 10 | UAE dirham |
AFN | 11 | Afghan afghani |
ALL | 12 | Albanian lek |
AMD | 13 | Armenian dram |
ANG | 14 | Antilliaanse gulden |
AOA | 15 | Angolan kwanza |
ARS | 16 | Argentine peso |
AWG | 17 | Aruban florin |
AZN | 18 | Azerbaijani manat |
BAM | 19 | Bosnian mark |
BBD | 20 | Barbadian dollar |
BDT | 21 | Bangladeshi taka |
BGN | 22 | Bulgarian lev |
BHD | 23 | Bahraini dinar |
BIF | 24 | Burundian franc |
BMD | 25 | Bermudian dollar |
BND | 26 | Brunei dollar |
BOB | 27 | Boliviano |
BRL | 28 | Brazilian real |
BSD | 29 | Bahamian dollar |
BTC | 30 | Bitcoin |
BTN | 31 | Bhutanese ngultrum |
BWP | 32 | Botswana pula |
BYN | 33 | New Belarusian ruble |
BYR | 34 | Belarusian ruble |
BZD | 35 | Belize dollar |
CAD | 36 | Canadian dollar |
CDF | 37 | Congolese franc |
CHF | 38 | Swiss franc |
CLF | 39 | Unidad de Fomento |
CLP | 40 | Chilean peso |
CNH | 41 | Chinese Yuan (Offshore) |
COP | 42 | Colombian peso |
CRC | 43 | Costa Rican colon |
CUC | 44 | Cuban convertible peso |
CUP | 45 | Cuban peso |
CVE | 46 | Cape Verdean escudo |
CZK | 47 | Czech koruna |
DJF | 48 | Djiboutian franc |
DKK | 49 | Danish krone |
DOP | 50 | Dominican peso |
DZD | 51 | Algerian dinar |
EEK | 52 | Estonian kroon |
EGP | 53 | Egyptian pound |
ERN | 54 | Eritrean nakfa |
ETB | 55 | Ethiopian Birr |
FJD | 56 | Fijian dollar |
FKP | 57 | Falkland Islands pound |
GEL | 58 | Georgian lari |
GGP | 59 | Guernsey Pound |
GHS | 60 | Ghanaian cedi |
GIP | 61 | Gibraltar pound |
GMD | 62 | Gambian dalasi |
GNF | 63 | Guinean franc |
GTQ | 64 | Guatemalan quetzal |
GYD | 65 | Guyanese dollar |
HNL | 66 | Honduran lempira |
HRK | 67 | Croatian kuna |
HTG | 68 | Haitian gourde |
HUF | 69 | Hungarian forint |
IDR | 70 | Indonesian rupiah |
ILS | 71 | Israeli shekel |
IMP | 72 | Manx pound |
INR | 73 | Indian rupee |
IQD | 74 | Iraqi dinar |
IRR | 75 | Iranian rial |
ISK | 76 | Icelandic krona |
JEP | 77 | Jersey Pound |
JMD | 78 | Jamaican dollar |
JOD | 79 | Jordanian dinar |
KES | 80 | Kenyan shilling |
KGS | 81 | Kyrgyzstani som |
KHR | 82 | Cambodian riel |
KMF | 83 | Comorian franc |
KPW | 84 | North Korean won |
KWD | 85 | Kuwaiti dinar |
KYD | 86 | Cayman Islands dollar |
KZT | 87 | Kazakhstani tenge |
LAK | 88 | Lao kip |
LBP | 89 | Libyan pound |
LKR | 90 | Sri Lankan rupee |
LRD | 91 | Liberian dollar |
LSL | 92 | Lesotho loti |
LYD | 93 | Libyan dinar |
MAD | 94 | Moroccan dirham |
MDL | 95 | Moldovan leu |
MGA | 96 | Malagasy ariary |
MKD | 97 | Macedonian denar |
MMK | 98 | Burmese kyat |
MNT | 99 | Mongolian tugrik |
MOP | 100 | Macanese pataca |
MRO | 101 | Mauritanian ouguiya |
MRU | 102 | Mauritanian Ouguiya |
MTL | 103 | Maltese Lira |
MUR | 104 | Mauritian rupee |
MVR | 105 | Maldivian rufiyaa |
MWK | 106 | Malawian kwacha |
MXN | 107 | Mexican peso |
MYR | 108 | Malaysian ringgit |
MZN | 109 | Mozambican metical |
NAD | 110 | Namibian dollar |
NGN | 111 | Nigerian naira |
NIO | 112 | Nicaraguan cordoba |
NOK | 113 | Norwegian krone |
NPR | 114 | Nepalese rupee |
NZD | 115 | New Zealand dollar |
OMR | 116 | Omani rial |
PAB | 117 | Panamanian balboa |
PEN | 118 | Peruvian Nuevo Sol |
PGK | 119 | Papua New Guinean kina |
PHP | 120 | Philippine peso |
PKR | 121 | Pakistani rupee |
PLN | 122 | Polish zloty |
PYG | 123 | Paraguayan guarani |
QAR | 124 | Qatari riyal |
RON | 125 | Romanian leu |
RSD | 126 | Serbian dinar |
RWF | 127 | Rwandan franc |
SAR | 128 | Saudi riyal |
SBD | 129 | Solomon Islands dollar |
SCR | 130 | Seychellois rupee |
SDG | 131 | Sudanese pound |
SEK | 132 | Swedish krona |
SGD | 133 | Singapore dollar |
SHP | 134 | Saint Helena pound |
SLL | 135 | Sierra Leonean leone |
SOS | 136 | Somali shilling |
SRD | 137 | Surinamese dollar |
SSP | 138 | South Sudanese pound |
STD | 139 | Sao Tome and Principe dobra |
STN | 140 | Sao Tome and Principe Dobra |
SVC | 141 | Salvadoran colon |
SYP | 142 | Syrian pound |
SZL | 143 | Swazi lilangeni |
THB | 144 | Thai baht |
TJS | 145 | Tajikistani somoni |
TMT | 146 | Turkmenistan manat |
TND | 147 | Tunisian dinar |
TOP | 148 | Tongan pa'anga |
TRY | 149 | Turkish lira |
TTD | 150 | Trinidad and Tobago dollar |
TZS | 151 | Tanzanian shilling |
UAH | 152 | Ukrainian hryvnia |
UGX | 153 | Ugandan shilling |
UYU | 154 | Uruguayan peso |
UZS | 155 | Uzbekistani so'm |
VEF | 156 | Bolivar fuerte |
VND | 157 | Vietnamese dong |
VUV | 158 | Vanuatu vatu |
WST | 159 | Samoan tala |
XAF | 160 | CFA franc (BEAC) |
XAG | 161 | Silver (1 troy ounce) |
XAU | 162 | Gold (1 troy ounce) |
XCD | 163 | Eastern Caribbean dollar |
XDR | 164 | Special Drawing Rights |
XOF | 165 | CFA franc (BCEAO) |
XPD | 166 | Palladium (1 troy ounce) |
XPF | 167 | CFP franc |
XPT | 168 | White Gold (1 troy ounce) |
YER | 169 | Yemeni rial |
ZAR | 170 | South African rand |
ZMK | 171 | Zambian kwacha |
ZMW | 172 | Zambian kwacha |
- PayToolCode
Specify the payment method when purchasing paid items
Name | Value | Description |
---|---|---|
CARD | 0 | Payment by credit card |
MOBILE | 1 | Payment by mobile phone |
SENDCASH | 2 | Payment by bank transfer or mobile payments |
CASH | 3 | Mileage or media company cash |
GIFTCARD | 4 | Payment by gift card |
- ResultType
Specify the result of purchasing paid items
Name | Value | Description |
---|---|---|
TRY | 0 | Payment attempt |
SUCCESS | 1 | Success after completing the payment |
FAIL | 2 | Failure after completing the payment |
Method description
BuyInfos(string OrderNO, string GoodsCode, PurchaseType PayPurchaseType, string ItemCode, string ItemName, int Amount, CurrencyType CurrencyCode, float TotalPrice, ToolCodeType PayToolCode, DateTime Sdate, DateTime Edate, string ReceiveMemberID, int Balance, ResultType PayResultType, string PayResultMessage)
Parameter Name | Data Type | Description | |
---|---|---|---|
OrderNO | string | Order number received from a store Key to compare with the store payment information in case of problem | |
GoodsCode | string | Product code recognized by the store | |
PayPurchaseType | PurchaseType | Type of game resource to be acquired | |
ItemCode | string | Internal product code of game/event participation key value Required – This is a required field for aggregation | |
ItemName | string | Game product name Required – This is a required field for aggregation | |
Amount | int | Number of purchased items Required – This is a required field for aggregation | |
CurrencyCode | CurrencyType | Currency type of the payment amount Required – This is a required field for aggregation | |
TotalPrice | float | Total purchase amount (decimal point allowed) Required – This is a required field for aggregation | |
PayToolCode | PayToolCodeType | Payment method | |
Sdate | DateTime | Start time for time-limited items/bonus cash | |
Edate | DateTime | Expiration time for time-limited items/bonus cash | |
ReceiveMemberID | String | Account ID issued by the game | |
Balance | Int | Cash balance or quantity after completing a purchase event | |
PayResultType | ResultType | Result value classification Required – This is a required field for aggregation | |
PayResultMessage | string | Payment result message Success or failure message or code | |
Return (call result) | |||
– | string | Results after saving the log |
Sample source
//Declaration of variable of the time and date of item purchase
System.DateTime today = System.DateTime.Now;
//Send purchase log
StorageCoreManager.GetInstance().GetApi().BuyInfos("OrderNO", "GoodsCode" ,PurchaseType.PURCHARSE, "ItemCode", "ItemName", 100, CurrencyType.USD, 100.99, ToolCodeType.CARD, today, today.AddDays(10), "ReceiveMemberID", 100, ResultType.SUCCESS, "PayResultMessage");
ContentActInfos
Send the user's game content accomplishment log within the game and analyze the content's difficulty, character balance, item balance, etc.
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log immediately after a normal stage has been completed in the game (regardless of success/failure) | N | - Stay time - Number of content accomplishment attempts/successes/failures - Real-time play stage - Mission/stage summary information - Causal analysis of failures - Mission analysis |
Send the log immediately after a guild battle has been completed in the game | N | |
Send the log immediately after a friendly battle has been completed in the game | Y | |
Send the log immediately after a mission content has been completed in the game | Y | |
Send the log immediately after a siege content has been completed in the game | Y | |
Send the log immediately after a content such as PVP, PVE, or PVMP has been completed in the game | Y | |
Send the log immediately after an event quest has been completed in the game | Y |
The log must be sent at the point when the payment is completed.
In the MMORPG genre, it's recommended to send a log after eliminating a monster.
Enumerations content
- StageType
Specify the content type accomplished by the user in the game
Name | Value | Description |
---|---|---|
STAGE | 0 | Specify when the content is a normal stage |
GUILD | 1 | Specify when the content is a guild battle |
FRIENDSHIP | 2 | Specify when the content is a friendly battle |
MISSION | 3 | Specify when the content is a mission within the game |
PVE | 4 | Specify when the content is PVE (raid or boss stage) |
PVP | 5 | Specify when the content is PVP |
PVMP | 6 | Specify when the content is held in arena or against multiple users |
QUEST | 7 | Specify when the content is a quest |
SIEGE | 8 | Specify when the content is a siege |
EVENTSTAGE | 9 | Specify when the content is an event stage |
- AutoType
Specify the method of gameplay used by the user when accomplishing content
Name | Value | Description |
---|---|---|
AUTO | 0 | Accomplish the stage automatically |
MANUAL | 1 | Accomplish the stage manually |
- ResultType
Specify the result of game content accomplished by the user
Name | Value | Description |
---|---|---|
NON | 0 | Specify when you can't classify the stage result as success or failure |
SUCCESS | 1 | Specify in case of success |
FAIL | 2 | Specify in case of failure |
- PartnerType
Specify the type of partner or game resource (friend, pet, guild member, etc.) who accompanied the user in accomplishing the content
Name | Value | Description |
---|---|---|
MYSELF | 0 | Specify when the user owns the character |
MAINMYSELF | 1 | Specify when the character is the user's main character |
FRIEND | 2 | Specify when the partner is a friend |
GUILD | 3 | Specify when the partner is a guild member |
PET | 4 | Specify when the partner is a pet |
RANDOM | 5 | Specify when the partner is randomly selected |
ETC | 6 | Other |
Params Data Class
- PartnersInfo
Save the detailed information of the game partner (friend (character), guild member, pet, card) who accompanied (helped) the user in accomplishing the game content
Data Member | DataType | Description |
---|---|---|
PartnerType | PartnerType | Partner type |
MemberID | string | Member ID (Serial number) |
PartnerID | string | Partner character (guild member/pet/card) serial number |
PartnerCharUQCode | string | Partner character (guild member/pet/card) unique number |
PartnerLevel | int | Partner character (guild member/pet/card) level |
PartnerHP | int | Partner character (guild member/pet/card) HP at the point when the content was completed |
PartnerMP | int | Partner character (guild member/pet/card) MP at the point when the content was completed |
- WearItemInfo
Save the item information which was worn (equipped) by the user while accomplishing the game content
Items worn or equipped (weapons, accessories, clothes, etc.)
Data Member | DataType | Description |
---|---|---|
PartnerID | string | ID of the partner that used the item |
ItemCode | string | Code of the item worn |
ItemName | string | Name of the item worn |
ItemLevel | int | Level of the item worn (enter as 0) |
ItemGrade | string | Grade of the item worn |
ItemDeckCode | string | Deck code applied to the item worn |
ItemDeckName | string | Deck name applied to the item worn |
- SkillInfo
Save the information of character skills used by the user while accomplishing the game content, in the order of use
Data Member | DataType | Description |
---|---|---|
PartnerID | string | ID of the partner who used the skill |
SkillName | string | Name of the skill used |
SkillDamage | int | Sustained damage of the used skill to monsters or opponent characters |
SkillType | string | Attack type of the used skill (Physical, magical, or healing) |
SkillDuration | int | Duration of the skill used |
- ItemInfo
Save the information of items used by the user while accomplishing the game content, in the order of use
Data Member | DataType | Description |
---|---|---|
PartnerID | string | ID of the partner that used the item |
ItemName | string | Name of the item used |
ItemAmount | int | Number of the items used |
ItemDuration | int | Duration of the item used |
- EnemyInfo
Save the information of eliminated game resources (monsters, pets, opponent characters in PVP, boss monsters) while accomplishing the game content
Data Member | DataType | Description |
---|---|---|
PartnerID | string | ID of the partner that killed the enemy |
EnemyID | string | ID of the character (PVP, PVMP) or monster killed |
EnemyLevel | int | Killed character/user level INT 0 if the level doesn't exist |
EnemyAttack | int | Killed character/user attack power INT 0 if the attack power doesn't exist |
EnemyDefense | int | Killed monster/character defense power 0 if the defense power doesn't exist |
EnemyStamina | int | Killed monster/character HP 0 if the HP doesn't exist |
Method description
// Initialize the content in PartnersInfo
public void ClearPartnersInfo()
Parameter Name | Data Type | Description | |
---|---|---|---|
– | – | – | |
Return (call result) | |||
– | void | No returned value |
// Add partner information one by one to List<PartnersInfo>
public void AddPartnersInfo(string MemberID, string PartnerCharUQCode, int PartnerHP, string PartnerID, int PartnerLevel, int PartnerMP, PartnerType PartnerType)
Parameter Name | Data Type | Description |
---|---|---|
MemberID | String | Member number |
PartnerCharUQCode | String | Unique number of characters using friends (characters)/guild members/pets/cards |
PartnerHP | int | HP of friend (character)/guild member/pet/card |
PartnerID | String | ID of friend (character)/guild member/pet/card |
PartnerLevel | int | Level of friend (character)/guild member/pet/card |
PartnerMP | int | MP of friend (Character)/guild member/pet/card |
StagePartnersInfo | PartnerType | Partner type Required field for aggregation |
Return (call result) | ||
– | void | No returned value |
// View the history of accompanied partner information added through AddPartnersInfo
public List<PartnersInfo> GetPartnersInfo()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
PartnersInfos | List<PartnersInfo> | Information of the partner saved in the list |
// Initialize the content in WearItemInfo
public void ClearWearItemInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add items worn one by one to List<WearItemInfo>
public void AddWearItemInfos(string PartnerID, string ItemCode, string ItemDeckCode, string ItemDeckName, string ItemGrade, int ItemLevel, string ItemName)
Parameter Name | Data Type | Description |
---|---|---|
PartnerID | string | ID of the partner that used the item |
ItemCode | string | Code of the item worn |
ItemDeckCode | string | Deck code applied to the item worn |
ItemDeckName | string | Deck name applied to the item worn |
ItemGrade | string | Grade of the item worn |
ItemLevel | int | Level of the item worn (enter as 0) |
ItemName | string | Name of the item worn |
Return (call result) | ||
– | void | No returned value |
// View the history of worn items added through AddWearItemInfos
public List<WearItemInfo> GetWearItemInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | List<WearItemInfo> | Information of the equipment worn saved in the list |
// Initialize the content in SkillInfos
public void ClearSkillInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add skills used while accomplishing the content, one by one, to List<SkillInfo>
public void AddSkillInfos(string PartnerID, int SkillDamage, int SkillDuration, string SkillName, string SkillType)
Parameter Name | Data Type | Description |
---|---|---|
PartnerID | string | ID of the partner who used the skill |
SkillDamage | int | Sustained damage of the used skill to monsters or opponent characters |
SkillDuration | int | Duration of the skill used |
SkillName | string | Name of the skill used |
SkillType | string | Attack type of the used skill (Physical, magical, or healing) |
Return (call result) | ||
– | void | No returned value |
// View the history of used skills added through AddSkillInfos
public List<SkillInfo> GetSkillInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
SkillInfos | List<SkillInfo> | Information of the skills used saved in the list |
// Initialize the content in ItemInfo
public void ClearItemInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add items used while accomplishing the content, one by one, to List<ItemInfo>
public void AddItemInfos(string PartnerID, int ItemAmount, int ItemDuration, string ItemName)
Parameter Name | Data Type | Description |
---|---|---|
PartnerID | string | ID of the partner that used the item |
ItemAmount | int | Number of the items used |
ItemDuration | int | Duration of the item used |
ItemName | string | Name of the item used |
Return (call result) | ||
- | void | No returned value |
// View the history of used skills added through AddItemInfos
public List<ItemInfo> GetItemInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | List<ItemInfo> | Information of the items used saved in the list |
// Initialize the content in List<EnemyInfo>
public void ClearEnemyInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add eliminated game resources (monsters, pets, opponent characters in PVP, boss monsters) while accomplishing the game content, one by one, to List<EnemyInfo>
public void AddEnemyInfos(string PartnerID, int EnemyAttack,int EnemyDefense,string EnemyID,int EnemyLevel,int EnemyStamina)
Parameter Name | Data Type | Description |
---|---|---|
PartnerID | string | ID of the partner that killed the enemy |
EnemyAttack | int | Killed character/user attack power INT 0 if the attack power doesn't exist |
EnemyDefense | int | Killed monster/character defense power 0 if the defense power doesn't exist |
EnemyID | string | ID of the character (PVP, PVMP) or monster killed |
EnemyLevel | int | Killed character/user level INT 0 if the level doesn't exist |
EnemyStamina | int | Killed monster/character HP 0 if the HP doesn't exist |
Return (call result) | ||
– | void | No returned value |
// Return the opponent information saved through AddEnemyInfos
public List<EnemyInfo> GetEnemyInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | List<EnemyInfo> | Information of the opponent saved in the list |
// Send the user's game content accomplishment log in the game
public void ContentActInfos(StageType ContentActStageType, string StageName, AutoType IsAuto, string StageGrade, string StageResultGrade, int StagePlayTime, ResultType StageResult, IEnumerable<PartnersInfo> StagePartnersInfo, int RemainHP, int RemainMP, IEnumerable<WearItemInfo> WearItemInfo, IEnumerable<SkillInfo> UseSkillInfo, IEnumerable<ItemInfo> UseItemInfo, int EnemyKill, IEnumerable<EnemyInfo> EnemyKillInfo)
Parameter Name | Data Type | Description |
---|---|---|
StageType | StageType | Set base of access (game or content) - Required field for aggregation |
StageName | String | Name of the content accomplished - For StageName, enter a unique name that includes a difficulty of the stage - Even if StageType or StageGrade is different, the name of the content must be uniquely specified in order to get an accurate analysis - E.g., stage name_difficulty, Stage1_2, HardStage2_4 - Required field for aggregation |
IsAuto | AutoType | Game content accomplishment method |
StageGrade | String | Expected grade before starting the game content - Stage grade determined by the game before the stage starts - Required field for aggregation |
StageResultGrade | String | Result grade after the game content is completed - Enter the success grade in case of stage success - E.g., StageResult (SUCCESS) - "3 star grade" - Enter the reason for failure in case of stage failure - E.g., StageResult (FAIL) – "Death due to insufficient potions" - The use of standardized names is required as data will be grouped by text - Required field for aggregation |
StagePlayTime | int | Game content playtime (unit: seconds) - Required field for aggregation |
StageResult | ResultType | Result after the game content is completed - Required field for aggregation |
StagePartnersInfo | List<partnersinfo> | Game partner information who accompanied (helped) while accomplishing the content |
RemainHP | int | HP balance after the game content is completed |
RemainMP | int | MP balance after the game content is completed |
WearItemInfo | List<WearItemInfo> | Information of the item worn (equipped) when playing the game content |
UseSkillInfo | List<SkillInfo> | Information of the character skill used while accomplishing the game content |
UseItemInfo | List<ItemInfo> | Information of the item used while accomplishing the game content |
EnemyKill | int | The number of eliminated game resources (monsters, pets, opponent characters in PVP, boss monsters) while accomplishing the game content |
EnemyKillInfo | List<EnemyInfo< | The information of eliminated game resources (monsters, pets, opponent characters in PVP, boss monsters) while accomplishing the game content |
Return (call result) | ||
– | string | Return the response from the internet resources |
Sample source
- Stage accomplishment log
// Initialize objects
StorageCoreManager scManager = StorageCoreManager.GetInstance();
// Initialize partner information
scManager.ClearPartnersInfo();
// Add partner 1
scManager.AddPartnersInfo("1000", "2",100,"1001",10,50, PartnerType.ETC);
// Add partner 2
scManager.AddPartnersInfo("1001", "3", 105, "1002", 11, 55, PartnerType.ETC);
// Initialize to add the equipment worn
scManager.ClearWearItemInfos();
// Add equipment worn 1
scManager.AddWearItemInfos(“PartnerID”, "1","1","1","A",1,"Helmet");
// Add equipment worn 2
scManager.AddWearItemInfos(“PartnerID”, "2", "1","1", "B", 1, "Shield");
// Initialize to add the skills used
scManager.ClearSkillInfos();
// Add skill used (during the stage) 1
scManager.AddSkillInfos(“PartnerID”, 100, 10,"Fire Ball","Magic");
// Add skill used (during the stage) 2
scManager.AddSkillInfos(“PartnerID”, 50, 5, "ICE Ball", "Magic");
// Initialize to add the information of items used during the stage
scManager.ClearItemInfos();
// Add item used (during the stage) 1
scManager.AddItemInfos(“PartnerID”, 10,4,"Potion");
// Add item used (during the stage) 2
scManager.AddItemInfos(“PartnerID”, 1, 5, "Mana Potion");
// Initialize to add the information of monsters or characters killed during the stage
scManager.ClearEnemyInfos();
// Add the information of monsters or characters killed (during the stage) 1
scManager.AddEnemyInfos(“PartnerID”, 40, 10, "1001", 2, 10);
// Add the information of monsters or characters killed (during the stage) 2
scManager.AddEnemyInfos(“PartnerID”, 50, 20, "1002", 3, 20);
// Send content accomplishment log
scManager.GetApi().ContentActInfos(StageType.STAGE, "StageName01", AutoType.AUTO, "StageGrade", "StageResultGrade", 100, ResultType.SUCCESS, scManager.GetPartnersInfo(), 100, 100, scManager.GetWearItemInfos(), scManager.GetSkillInfos(), scManager.GetItemInfos(), 10, scManager.GetEnemyInfos());
ResourceChangeInfos
Send the logs of qualitative (abilities) changes in various resources used in the game, and analyze the game resource balance
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Account - Send the log when there's a qualitative change to the account due to growth in account content (level-up, grade-up) | Y | - Number of enhancement attempted/succeeded/failed - Stay time by level - Real-time item enhancement - Game item enhancement analysis |
Character - Send the log when there's a qualitative change to the account due to growth in account content (level-up, grade-up) | Y | |
Item/pet (weapons, armor, accessories, gems, skills) - Send the log when there's a qualitative change to the account due to growth in account content (level-up, grade-up) | Y | |
Send the log when the account or character wears or removes resources such as item or pet | Y |
- Tracking is available for all game resources (resources, accounts, items, characters, pets) with qualitative (abilities) changes in the game.
- The probability of successful/failed changes in the game resources can be analyzed.
- It's possible to analyze users who use changes in the game resources, and adjust content difficulty according to item ability scores through additional log searches.
Enumerations content
- ObjectType
Specify the subject to be changed
E.g., pet enhancement, weapon change, weapon socket change, cloth enhancement, drone enhancement
Name | Value | Description |
---|---|---|
ACCOUNT | 0 | Change in accounts |
CHAR | 1 | Change in characters |
CARD | 2 | Change in cards |
ITEM | 3 | Change in items |
PET | 4 | Change in pets |
- ChangeStateType
Specify the classification of qualitative changes in account, character, card, and game subjects
Name | Value | Description |
---|---|---|
GRADE | 0 | Grade-up |
LEVEL | 1 | Level-up |
COMPOSE | 2 | Combine |
TRANSCENDENCE | 3 | Transcend |
ENHANCING | 4 | Enhance characteristics |
DISASSEMBLE | 5 | Disassemble |
OPTION | 6 | Option change |
NUMBERS | 7 | Stat change |
SKILL | 8 | Skill change |
ETC | 9 | Other change |
INSTALL | 10 | Wear equipment |
- ResultType
Specify whether a task of qualitative change in account, character, card, or game subject was successful
Name | Value | Description |
---|---|---|
TRY | 0 | Attempt (not required) |
SUCCESS | 1 | Success |
FAIL | 2 | Failure |
NON | 3 | "NON" if there is no success/failure |
Method description
Send the qualitative (abilities) change log of various resources
public void ResourceChangeInfos(ObjectType ChangeObjectType, string UniqueCode, long SeqCode, string Name, string TargetUniqueCode, string TargetSeqCode, string TargetName, ChangeActType ResourceChangeStateType, string BeforeLevel, string AfterLevel, string BeforeLevelDesc, string AfterLevelDesc, ResultType ChangeResultType, string MoneyCode, string MoneyName, int MoneyAmount)
Parameter Name | Data Type | Description |
---|---|---|
ChangeObjectType | ObjectType | Classification of changed resource objects such as accounts, characters, pets, etc. - Required field for aggregation |
UniqueCode | string | Unique code of the resource changed - Required field for aggregation |
SeqCode | long | Serial number of the resource changed |
Name | string | Name of the resource changed - Required field for aggregation |
TargetUniqueCode | string | Unique number of the target character/item that equip a piece of equipment or skill |
TargetSeqCode | string | Serial number of the target character/item that equip a piece of equipment or skill |
TargetName | string | Name of the target character/item that equip a piece of equipment or skill |
ResourceChangeStateType | ChangeActType | Classification of type of change in the resource changed, such as options change, level-up, enhancement, etc. - Required field for aggregation |
BeforeLevel | string | Digitize the grade, level, or option value before change - E.g., A, B, C, D, E/1, 2, 3, 4, 5, 6 Normal, Advanced, Rare, Heroic, Ancient, Legendary, Immortal/White, Green, Blue, Purple, Yellow, Orange, Red |
AfterLevel | string | Digitize the post-change grade, level, or option value - E.g., A, B, C, D, E/1, 2, 3, 4, 5, 6 Normal, Advanced, Rare, Heroic, Ancient, Legendary, Immortal/White, Green, Blue, Purple, Yellow, Orange, Red |
BeforeLevelDesc | string | Describe the details of grade, level, or option before change |
AfterLevelDesc | string | Describe the details of post-change grade, level, or option |
ChangeResultType | ResultType | Result of game resource's change - Required field for aggregation |
MoneyCode | string | Game money code |
MoneyName | string | Game money name Must be consistent within the game |
MoneyAmount | int | Acquisition cost |
Return (call result) | ||
– | string | Results after saving the log |
Sample source
//When leveling up the {UniqueCode} item and the result is successful
//Send the game resource's qualitative change logs
StorageCoreManager.GetInstance().GetApi().ResourceChangeInfos(ObjectType.ITEM, "{UniqueCode}", 2, "Name", “TargetUniqueCode”, “TargetSeqCode”, “TargetName”, ChangeStateType.LEVEL, "1", "2", "{BeforeLevelDesc}", "{AfterLevelDesc}", ResultType.SUCCESS, “MoneyCode”, “MoneyName”, 100);
VMoneyChangeInfos
Send the logs of all goods acquired/consumed within the game and analyze the flow of cash and non-cash goods
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log when acquiring game money through various actions in the game | Y | - Amount of game goods acquired/consumed - Number of characters who acquire/consume game goods - Real-time goods acquisition/consumption - Incoming/outgoing goods analysis by item - Game goods summary - Game goods analysis |
Send the log when consuming game money through various actions in the game | Y | |
Send the log when acquiring cash goods with bank transfer/credit card/gift card, etc., in the game | Y | |
Send the log when acquiring fame points in the game by accomplishing achievement | Y | |
Send the log when consuming stamina in various forms in order to proceed with the content in the game | Y | |
Send the log when acquiring guild points by donating to the guild the user belongs to in the game | Y | |
Send the log when acquiring goods through various exchanges in the game | Y | |
Send the log when consuming goods through various exchanges in the game | Y |
- When an incoming/outgoing goods log occurs by an item, the item's ItemCode and ItemName information should be entered in the ContentCode and ContentName respectively.
- If the log was not generated by an item, then it should be entered as NULL in the ContentCode and ContentName.
- Game money refers to all goods used as money within games. However, cash is not game money.
- Example of game money
- Diamond purchased with cash/credit card/gift card: cash goods
- Gold acquisition/consumption: non-cash goods
- Fame points acquisition/consumption: non-cash goods
- Challenge points acquisition/consumption: non-cash goods
- Guild points acquisition/consumption: non-cash goods
- Stamina (required to proceed the game) acquisition/consumption: non-cash goods
Enumerations content
- MoneyChangeType
Specify the acquisition/consumption path of game goods
Name | Value | Description |
---|---|---|
MoneyChangeType.CASH | 0 | Game money purchase by cash |
MoneyChangeType.VRCASH | 1 | Purchase by game money |
MoneyChangeType.COUPON | 2 | Acquire by coupon |
MoneyChangeType.EVENTREWARD | 3 | Acquire by events such as attendance rewards |
MoneyChangeType.QUESTREWARD | 4 | Acquire by quest rewards |
MoneyChangeType.MISSIONREWARD | 5 | Acquire by mission rewards |
MoneyChangeType.NORMALREWARD | 6 | Acquire by normal rewards |
MoneyChangeType.POST | 7 | Acquire by posts |
MoneyChangeType.GUILDSUPPORT | 8 | Acquire/consume by guild support (Support guilds, and individuals receive support) |
MoneyChangeType.GUILDCREATE | 9 | |
MoneyChangeType.GACHA | 10 | Acquire by gacha items |
MoneyChangeType.BUY | 11 | Purchase/sell/repurchase via store (game store) |
MoneyChangeType.COLLECT | 12 | Acquire by toggle (Directly toggle items dropped after hunting monsters, toggle items dropped from an enemy character after PK, etc.) |
MoneyChangeType.SNSSUPPORT | 13 | Acquire/consume via SNS |
MoneyChangeType.ITEMENCHABT | 14 | Consume by item enhancement |
MoneyChangeType.CHARNCHABT | 15 | Consume by character enhancement |
MoneyChangeType.DISMANTLE | 16 | Acquire/consume by item/character disassembly |
MoneyChangeType.MAKE | 17 | Acquire/consume by item/character production and combination |
MoneyChangeType.STAGEACTION | 18 | Acquire/consume by stage accomplishment |
MoneyChangeType.PVPACTION | 19 | Acquire/consume by 1 vs. 1 mode |
MoneyChangeType.PVEACTION | 20 | Acquire/consume by raid, etc. |
MoneyChangeType.PVMPACTION | 21 | 1 vs. n mode (battling against multiple users) |
MoneyChangeType.GUILDACTION | 22 | Acquire/consume in guild battles |
MoneyChangeType.EVENTSTAGEACTION | 23 | Consume in event stages |
MoneyChangeType.UPGRADE | 24 | Acquire/consume by upgrading the game resources such as item/character and changing properties |
MoneyChangeType.DELETE | 25 | Destroy/delete items (active destruction) |
MoneyChangeType.ITEMDROP | 26 | Acquire/consume by item drops (direct drops, PK, death by monsters, etc.) |
MoneyChangeType.DEAL | 27 | Acquire/consume by transactions between characters, exchange points, or private stores |
MoneyChangeType.REPAIR | 28 | Repair cost |
MoneyChangeType.EXTEND | 29 | Inventory/warehouse expansion cost |
MoneyChangeType.MOVEMENT | 30 | Movement cost |
MoneyChangeType.USERSUPPORT | 31 | Cost of supporting users or being supported |
MoneyChangeType.INIT | 32 | Initial creation (money received at the initial creation of the character) |
MoneyChangeType.ETC | 33 | Select if a change occurred for other reasons When selecting ETC, ChangeName of Method description must be entered. |
- FlowType
Specify the value classifying the game money changes
Name | Value | Description |
---|---|---|
IN | 0 | Acquire |
OUT | 1 | Consume |
- Money Type
Specify the classification of cash/non-cash game goods
Name | Value | Description |
---|---|---|
MoneyType.GOLD | 0 | Non-cash goods |
MoneyType.CASH | 1 | Cash goods (cash, diamonds) |
MoneyType.STAMINA | 2 | Acquire points (stamina, coins, cookies) |
MoneyType.MILEAGE | 3 | Bonus money accumulated when making payments (mileage) |
MoneyType.EXP | 4 | Acquire experience points |
Method description
// Initialize the content in VMoneyChangeInfo
public void ClearVMoneyChangeInfoList()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add goods usage one by one to List<VMoneyChangeInfo>
public void AddVMoneyChangeInfoList(FlowType MoneyFlowType, string MoneyName, MoneyChangeType MoneyChangeType, string MoneyChangeDetail, string ContentName, string ContentCode, MoneyType MoneyType, long Amount, long HoldAmount, string MoneyChangeName = “”)
Parameter Name | Data Type | Description |
---|---|---|
MoneyFlowType | FlowType | Game money's flow type - Required field for aggregation |
MoneyName | string | Game money name - Required field for aggregation |
MoneyChangeType | MoneyChangeType | Game money's change type - Required field for aggregation |
MoneyChangeDetail | string | Game money change details |
ContentName | string | Name of the content that causes the game money change - Required field for aggregation - When a goods log event for an item occurs, enter the item's ItemName information - NULL if the log is not generated by an item |
ContentCode | string | Code of the content that causes change in game money - Required field for aggregation - When a goods log event for an item occurs, enter the item's ItemCode information - NULL if the log is not generated by an item |
MoneyType | MoneyType | Game money type |
Amount | string | Amount of the changed game money - Required field for aggregation |
HoldAmount | long | Total amount of the game money after the change |
MoneyChangeName | string | Enter the reason if MoneyChangeType.ETC is selected - This field is required when selecting ETC - Strings with identical values will be matched to provide analysis information |
Return (call result) | ||
– | – | No returned value |
// View the history of acquisition/consumption of goods added through AddVMoneyChangeInfoList
public List<VMoneyChangeInfo> GetVMoneyChangeInfoList()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
VMoneyChangeInfoList | List<VMoneyChangeInfo> | Goods change list |
// Send the logs of all goods acquired/consumed in the game
public void VMoneyChangeInfos(IEnumerable<VMoneyChangeInfo> VMoneyChangeInfoList)
Parameter Name | Data Type | Description |
---|---|---|
VMoneyChangeInfoList | List<VMoneyChangeInfo> | Goods change list |
Return (call result) | ||
- | void | No returned value |
Sample source
// If {MoneyName} game money was acquired by toggle
StorageCoreManager scManager = StorageCoreManager.GetInstance();
//Initialize the goods change list
scManager.ClearVMoneyChangeInfoList();
//Add goods change history
//Acquire experience points
scManager.AddVMoneyChangeInfoList(FlowType.IN, "MoneyName", MoneyChangeType.INIT,"MoneyChangeDetail1", "ContentName", "ContentCode", MoneyType.EXP, 1000, 50000);
//Acquire experience points
scManager.AddVMoneyChangeInfoList(FlowType.IN, "MoneyName", MoneyChangeType.DEAL,"MoneyChangeDetail2", "ContentName", "ContentCode", MoneyType.EXP, 2000, 40000);
//Acquire "Red gem," which is non-cash goods, through disassembly
scManager.AddVMoneyChangeInfoList(FlowType.IN, "MoneyName", MoneyChangeType.DISMANTLE,"MoneyChangeDetail3", "Red gem", "CD0002", MoneyType.GOLD, 3000, 30000);
//Use "Shoes", which is stamina, for participating in a guild war
scManager.AddVMoneyChangeInfoList(FlowType.OUT, "MoneyName", MoneyChangeType.GUILDACTION, "MoneyChangeDetail4", "Shoes", "CD0003", MoneyType.STAMINA, 4000, 20000);
//Acquire diamonds through a cash purchase
scManager.AddVMoneyChangeInfoList(FlowType.IN, "MoneyName", MoneyChangeType.CASH, "MoneyChangeDetail5", "Diamond", "ContentCode", MoneyType.CASH, 5000, 10000, "MoneyChangeName");
//Send goods change history
StorageCoreManager.GetInstance().GetApi().VMoneyChangeInfos(scManager.GetVMoneyChangeInfoList());
ItemChangeInfos
Send the log of game items acquired/consumed (change in quantity) by the user in the game, and analyze the flow of items
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log when acquiring items in the game | Y | - Amount of items acquired/consumed - Number of characters who acquired/consumed the item - Real-time item acquisition/consumption - Mission analysis - Acquired item - Game item summary - Game item analysis |
Send the log when consuming items in the game | Y | |
Caution |
- Game items are not paid items. The purchase log of paid items should be sent to BuyInfos.
- Only the goods acquired through the purchase are sent to ItemChangeInfos.
- If you purchase cash package items, or purchase weapons, accessories, or game money with cash, then the purchase log must be saved together in the Buy log.
- For the Gacha indicator (ItemChangeType = GACHA), even if the player performs 10 consecutive gachas, only 1 acquisition data must be included.
- Information of 10 items are entered as 10 cases in the ItemsInfos.
- 10 consecutive gachas and individual gacha must have separate ContentCode and ContentName respectively.
- If 10 consecutive gachas are performed, then save the acquisition cost (MoneyAmount) divided by 10.
- If the total cost is 10,000 gold, then save 1,000 gold for each item acquisition.
- When an incoming/outgoing goods log occurs by an item, the item's ItemCode and ItemName information should be entered in the ContentCode and ContentName respectively.
- (ItemChangeType = STAGEACTION, PVPACTION, PVEACTION, PVMPACTION, GUILDACTION, EVENTSTAGEACTION) ContentCode and ContentName should have the stage's unique name entered.
- The StageName information must be identical to ContentActInfos.StageName. Even if a StageType or StageGrade is different, specify a unique StageName for accurate data aggregation.
- For games where multiple characters are collected by gachas or quests, character enhancement should be entered in the item change log for accurate data aggregation.
Enumerations content
- ChangeType
Specify the reason for the item's quantitative change
Name | Value | Description |
---|---|---|
ChangeType.CASH | 0 | Game money purchase by cash |
ChangeType.VRCASH | 1 | Purchase by game money |
ChangeType.COUPON | 2 | Acquire by coupon |
ChangeType.EVENTREWARD | 3 | Acquire by various events such as attendance reward |
ChangeType.QUESTREWARD | 4 | Acquire by quest rewards |
ChangeType.MISSIONREWARD | 5 | Acquire by mission rewards |
ChangeType.NORMALREWARD | 6 | Acquire by normal rewards |
ChangeType.POST | 7 | Acquire by posts |
ChangeType.GUILDSUPPORT | 8 | Acquire/consume by guild support (Support guilds, and individuals receive support) |
ChangeType.GACHA | 9 | Acquire by gacha items |
ChangeType.BUY | 10 | Purchase/sell/repurchase via store (game store) |
ChangeType.COLLECT | 11 | Acquire by toggle (directly toggle items dropped after hunting monsters, toggle items dropped from an enemy character after PK, etc.) |
ChangeType.SNSSUPPORT | 12 | Acquire/consume via SNS |
ChangeType.ENCHABT | 13 | Consume by enhancement |
ChangeType.DISMANTLE | 14 | Acquire/consume by item/character disassembly |
ChangeType.MAKE | 15 | Acquire/consume by item/character production and combination |
ChangeType.STAGEACTION | 16 | Acquire/consume by stage accomplishment |
ChangeType.PVPACTION | 17 | Acquire/consume by 1 vs. 1 mode |
ChangeType.PVEACTION | 18 | Acquire/consume by raid, etc. |
ChangeType.PVMPACTION | 19 | 1 vs. n mode (battling against multiple users) |
ChangeType.GUILDACTION | 20 | Acquire/consume in guild battles |
ChangeType.EVENTSTAGEACTION | 21 | Consume in event stages |
ChangeType.UPGRADE | 22 | Acquire/consume by upgrading the game resources such as item/character and changing properties |
ChangeType.DELETE | 23 | Destroy/delete items (active destruction) |
ChangeType.ITEMDROP | 24 | Acquire/consume by item drops (direct drops, PK, death by monsters, etc.) |
ChangeType.DEAL | 25 | Acquire/consume by transactions between characters, exchange points, or private stores |
ChangeType.INIT | 26 | Initial creation information (initial creation information of the character and item information received upon creation) - Required field for aggregation |
ChangeType.ETC | 27 | Select if a change occurred for other reasons When selecting ETC, ChangeName for Method description must be entered. |
- FlowType
Specify the classification value of quantitative changes in items
Name | Value | Description |
---|---|---|
IN | 0 | Acquire |
OUT | 1 | Consume |
Param data class
- ItemsInfo
Save each information of an acquired item
If multiple items are acquired/consumed, then add everything one by one
Data Member | DataType | Description |
---|---|---|
ItemUniqueCode | string | Unique code of the item |
ItemName | string | Name of the item |
ItemGrade | string | Grade of the item |
ItemLevel | int | Level of the item |
ItemAmount | int | Number of the item |
ItemImputeType | byte | Item binding status |
MoneyCode | string | Game money code |
MoneyName | string | Game money name Must be consistent within the game |
MoneyAmount | int | Acquisition cost |
Method description
// Initialize the content in List<ItemChangeInfo>
public void ClearItemChangeInfoList()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add the quantity change of the item through various paths, one by one, to List<ItemChangeInfo>
public void AddItemChangeInfoList(FlowType ItemFlowType, ChangeType ItemChangeType, string ChangeDetail, string ContentName, string ContentCode, IEnumerable<ItemsInfo> ItemsInfo, string ChangeName = "")
Parameter Name | Data Type | Description |
---|---|---|
ItemFlowType | FlowType | Type of game item flow - Required field for aggregation |
ItemChangeType | ChangeType | Type of game item change - Required field for aggregation |
ChangeDetail | string | Details of changes in the game item |
ContentName | string | Name of the content that causes the game item change - Required field for aggregation - Name of the gacha content in case of ItemChangeType (GACHA). (10 consecutive gachas and individual gacha should be separated.) - For content with the StageName information, enter the identical information as ContentActInfos.StageName. |
ContentCode | string | Content code where game items change - Required field for aggregation - Code of the gacha content in case of ItemChangeType (GACHA). (10 consecutive gachas and individual gacha should be separated.) - For content with the StageName information, enter the identical information as ContentActInfos.StageName. |
ItemsInfo | List | Game item acquisition/consumption details - Required field for aggregation |
ChangeName | string | Enter the reason if ChangeType.ETC is selected - This field is required when selecting ETC - Enter as text if the value required is not found among the listed values - Enter the same text for the items with the same characteristics which show up on the screen after being grouped as the same text and analyzed |
Return (call result) | ||
– | void | No returned value |
// View the history of item quantity changes added through AddItemChangeInfoList
public List<ItemChangeInfo> GetItemChangeInfoList()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
ItemChangeInfoList | List<ItemChangeInfo> | History of the item quantity changes saved in the list |
// Initialize the content in List<ItemChangeInfo>
public void ClearItemChangeInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add the item's quantity change details to List<ItemsInfo>
// Item information when acquiring/consuming multiple items with one action
public void AddItemChangeInfos(int ItemAmount,string ItemGrade, byte ItemImputeType,int ItemLevel,string ItemName,string ItemUniqueCode, string MoneyCode, string MoneyName, int MoneyAmount)
Parameter Name | Data Type | Description |
---|---|---|
ItemAmount | int | Number of the item - Required field for aggregation |
ItemGrade | string | Grade of the item - Required field for aggregation |
ItemImputeType | byte | Item binding status |
ItemLevel | int | Level of the item |
ItemName | string | Name of the item - Required field for aggregation |
ItemUniqueCode | string | Unique code of the item - Required field for aggregation |
MoneyCode | string | Game money code |
MoneyName | string | Game money name - Must be consistent within the game - Required field for aggregation |
MoneyAmount | int | Acquisition cost - Required field for aggregation |
Return (call result) | ||
– | void | No returned value |
// View the history of item quantity changes added through AddItemChangeInfos
public List<ItemsInfo> GetItemChangeInfos()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
ItemsInfos | List<ItemsInfo> | Information of the item details saved in the list |
// Send the item quantity change logs
public void ItemChangeInfos(IEnumerable<ItemChangeInfo> ItemChangeInfoList)
Parameter Name | Data Type | Description |
---|---|---|
ItemChangeInfoList | List<ItemChangeInfo> | Item change list |
Return (call result) | ||
– | void | No returned value |
Sample source
//If acquired the {MoneyName} game money by toggle
StorageCoreManager scManager = StorageCoreManager.GetInstance();
//Initialize the list to add the items acquired to the list
scManager.ClearItemChangeInfos ();
//Add the items acquired ***************************************************************************************************************************
//Acquire 3 items after eliminating "zombie_A" in the content - add the items to List<ItemsInfo>
scManager.AddItemChangeInfos (1, "B", 1, 1, "legend Sword", "1001", "M100100", "Ruby", 100);
scManager.AddItemChangeInfos (2, "C", 1, 1, "Iron Shield ", "1002", "M100200", "Gold", 100);
scManager.AddItemChangeInfos (5, "D", 1, 1, "Iron Shield ", "1007", "M100200", "Gold", 100);
//Add the item log set by adding the acquired items to the item log set in the List<ItemChangeInfo>
scManager.AddItemChangeInfoList(FlowType.IN, ChangeType.STAGEACTION, "Kill zombie_A", "zombie_A", "Cts0100100", scManager.GetItemChangeInfos());
//Add acquired/consumed items ***************************************************************************************************************************
//Add acquired/consumed items ***************************************************************************************************************************
//Acquire 2 items after eliminating "zombie_KING" in the content - add the items to List<ItemsInfo>
scManager.AddItemChangeInfos (1, "B", 1, 1, "legend Sword", "1001", "M100100", "Ruby", 100);
scManager.AddItemChangeInfos (2, "C", 1, 1, "Iron Shield", "1002", "M100200", "Gold", 100);
//Add the item log set by adding the acquired items to the item log set in the List<ItemChangeInfo>
scManager.AddItemChangeInfoList(FlowType.IN, ChangeType.STAGEACTION, "Kill zombie_KING ", "zombie_A", "Cts0100100", scManager.GetItemChangeInfos());
//Consume 10 potions after eliminating "zombie_KING" in the content - add the items to List<ItemsInfo>
scManager.AddItemChangeInfos (10, "C", 1, 1, "Commu_Potion", "HP5011", "M100200", "Gold", 100);
//Add the item log set by adding the acquired items to the item log set in the List<ItemChangeInfo>
scManager.AddItemChangeInfoList(FlowType.OUT, ChangeType.STAGEACTION, "Kill zombie_KING", "zombie_KING", "Cts0100100", scManager.GetItemChangeInfos());
//Add acquired/consumed items ***************************************************************************************************************************
//Send the item quantity change log
StorageCoreManager.GetInstance ().GetApi ().ItemChangeInfos (scManager.GetItemChangeInfoList());
ConnectInfos
Send the login/logout logs and analyze the game user access status
Send the entrance/exit log to the content in the game (stages, dungeons, PVP, stores, etc.) and analyze the content utilization
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log immediately after the user logs in to the game - ConnectType is sent with APP - FlowType is sent with IN | Y | - AU - Retention/Revisit (revisit D+n)/Churn (churn D+n)/Return (return D+n) - TS - ARPU - Number of logins - Last login - Level distribution summary - Level distribution analysis |
Send the log immediately after the user logs out of the game - ConnectType is sent with APP - FlowType is sent with OUT | Y | |
Send the log immediately after the user enters the game content - ConnectType is sent with CONTENT - FlowType is sent with IN | Y | - MTS - Level distribution analysis |
Send the log immediately after the user exits the game content - ConnectType is sent with CONTENT - FlowType is sent with OUT | Y |
This is the basic information required for analysis, so the logs need to be sent for you to be able to view most indicators.
- Content definition
- This refers to all items with content elements, not just login status
- RPG – dungeons (daily, raid, etc.), PvP, quests, guild management, etc.
- SNG – town management, social content, etc.
- FPS – quick match, competitive battle, equipment management, etc.
- Puzzle – stages, deck management, etc.
- The more detailed the content segmentation is, the more accurate the user analysis becomes.
Enumerations content
- ConnectType
Define the content format
Name | Value | Description |
---|---|---|
APP | 0 | Specify when the user logs in to or logs out from the game |
CONTENT | 1 | Specify when the user enters or exits the content |
- FlowType
Specify the value classifying the game money changes
Name | Value | Description |
---|---|---|
IN | 0 | Specify when the user logs in or enters the content |
OUT | 1 | Specify when the user logs out or exits the content |
Method description
public void ConnectInfos(ConnectType connectType, string contentName, FlowType entryType)
Parameter Name | Data Type | Description |
---|---|---|
connectType | ConnectType | Set access base - Required field for aggregation |
contentName | String | Content name - Required field for aggregation - Enter "Login" or "Logout" when logging in/out - Enter the content name for content |
entryType | FlowType | Set entrance or exit - Required field for aggregation |
Return (call result) | ||
– | void | No returned value |
Sample source
Game login or logout
// Login, logout
// Send the game login logs
StorageCoreManager.GetInstance().GetApi().ConnectInfos(ConnectType.APP, "Login", FlowType.IN);
// Send the game logout logs
r.GetInstance().GetApi().ConnectInfos(ConnectType.APP, "Logout", FlowType.OUT);
Content entrance or exit
// Content entrance and exit
// Send the entrance log for Stage 1-1
StorageCoreManager.GetInstance().GetApi().ConnectInfos(ConnectType.CONTENT, “Stage 1-1”, FlowType.IN);
// Send the exit log for Stage 1-1
StorageCoreManager.GetInstance().GetApi().ConnectInfos(ConnectType.CONTENT, “Stage 1-1”, FlowType.OUT);
AdPerformInfos
Send the logs of banners (advertisements, notices) exposed in the game app, and analyze the user response for the game banners
Send the logs for accomplishing certain achievements (reaching a specific level, specific quest, specific stage, etc.) in the game app and analyze the user response for the event
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log immediately after the banner is exposed to the client in the game | Y | - Number of banner views/clicks - Number of users who played the event/were successful - Banner analysis - Event analysis - Event funnel analysis |
Send the log immediately after the user clicks on the exposed banner | Y | |
Send the log immediately after the user accomplishes a certain achievement in the game | Y |
- When sending advertisement, event, and notice logs, they should be saved separately when the banner is displayed (exposed) on the screen and when the user clicks the screen displayed.
- Specify ContentType as TRACK if there is specific content you want to track (e.g., accomplishing achievements, clearing events, completing quests, reaching a specific stage, etc.)
- If a log is sent after completion of an event you'd like to measure as shown below, then you can analyze the rate at which the users reach the event point.
- Tutorial Step 10 complete
- A certain achievement accomplished (level 20 reached)
- An event content completed (double reward event for the first purchase)
Enumerations content
- ContentType
Specify the type of the tracking target
Name | Value | Description |
---|---|---|
AD | 0 | Specify if the game banner is an advertisement |
EVENT | 1 | Specify if the game banner is an event |
NOTICE | 2 | Specify if the game banner is a notice |
TRACK | 3 | Specify if you track an in-app content (e.g., accomplishing achievements, clearing events, completing quests, reaching a specific stage, etc.) |
- AdsActType
Specify the behavior format of the system and user
Specify separately when it is displayed from the system and when the user clicks it
Name | Value | Description |
---|---|---|
IMPRESSION | 0 | The banner is exposed to the client |
CLICK | 1 | When the exposed banner is clicked |
ENTRY | 2 | When the user entered the tracking target content |
COMPLATE | 3 | When the user completed the tracking target content |
FAIL | 4 | When the user failed the tracking target content |
SUCCESS | 5 | When the user succeeded with the tracking target content |
Params data class
- JoinContent
Save the event participation details
If there are several stages in the event, then save the log by individual stages
Data Member | DataType | Description |
---|---|---|
JoinStep | int | Classify multiple (step-specific) participation sessions |
JoinChoice | int | Participation (optional) detail - E.g., selection event, attendance event, etc. |
JoinLevel | int | Level at the time of participation |
Method description
// Initialize the saved List<JoinContent> value
public void ClearJoinContents()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
– | void | No returned value |
// Add the event content to List<JoinContent>
public void AddJoinContents(int JoinChoice, int JoinLevel, int JoinStep)
Parameter Name | Data Type | Description |
---|---|---|
JoinChoice | int | Participation (optional) detail - E.g., selection event, attendance event, etc. |
JoinLevel | int | Level at the time of participation |
JoinStep | int | Classify multiple (step-specific) participation sessions |
Return (call result) | ||
– | void | No returned value |
List<JoinContent> GetJoinContents()
Parameter Name | Data Type | Description |
---|---|---|
– | – | – |
Return (call result) | ||
JoinContents | List<JoinContent> | Return the list of participation sessions saved in the list |
// Initialize the saved List<JoinContent> value
public string AdPerformInfos(ContentType PromoteContentType, AdsActType PromoteAdsActType, string PromoteContentName, string PromoteContent, string PromoteJoinKey, IEnumerable<JoinContent> PromoteJoinContent, string ReferrerPageName)
Parameter Name | Data Type | Description |
---|---|---|
PromoteContentType | ConnectType | Game banner type such as advertisement/event/notice - Required field for aggregation |
PromoteAdsActType | AdsActType | Classify whether the banner was exposed to the client, and if the user clicked on it - Required field for aggregation |
PromoteContentName | string | Page name/content name - Required field for aggregation |
PromoteContent | string | Content summary |
PromoteJoinKey | string | Key values for reward items and mapping |
PromoteJoinContent | List | Participation detail |
ReferrerPageName | string | Address or name of the previous screen |
Return (call result) | ||
– | string | Return the response from the internet resources Results after saving the log |
Sample source
StorageCoreManager scManager = StorageCoreManager.GetInstance();
//If there are stages in the content, then add them one by one
scManager.ClearJoinContents();
scManager.AddJoinContents(1, 10,2);
scManager.AddJoinContents(2, 12, 1);
//Send the log
AdPerformInfo StorageCoreManager.GetInstance().GetApi().AdPerformInfos(ContentType.EVENT, AdsActType.IMPRESSION, "promotecontentname", "promotecontent","promotejoinkey", scManager.GetJoinContents(), "referrerPageaName");
FriendshipInfos
Save the information related to friends within the game
API call point
Call point | Requirement status | Indicators affected |
---|---|---|
Send the log when the user sends a friendship request to another user in the game | Y | - No analysis indicators - Log search available |
Send the log when the other user accepts the friendship request in the game | Y | |
Send the log when the other user refuses the friendship request in the game | Y | |
Send the log when a friendship that's connected within the game is deleted | Y |
- The FriendshipInfos log is used for searching, not for analysis.
Enumerations content
- RequestType
Specify the user action when saving the friend information
Name | Value | Description |
---|---|---|
ASK | 0 | Send friend request |
AGREE | 1 | Accept friend request |
DROP | 2 | Delete friend |
REJECT | 3 | Reject friend request |
Method description
// Send friend request to a user/reject request/accept request/delete the request
public void FriendshipInfos(RequestType FriendRequestType, string FriendMemberId, string CharID, string FriendNickName, string FriendCharId, int FriendLevel)
Parameter Name | Data Type | Description |
---|---|---|
FriendRequestType | RequestType | Request type such as friend request, acceptance, deletion, rejection, etc. |
FriendMemberId | string | Friend ID |
CharID | string | Character ID |
FriendNickName | string | Friend nickname |
FriendCharId | string | Friend character ID |
FriendLevel | int | Friend level |
Return (call result) | ||
– | void | No returned value |
Sample source
//Send a friend request to the user whose level is 1, member ID is {FriendMemberId}, and nickname is "{FriendMemberId}"
string StorageCoreManager.GetInstance().GetApi().FriendshipInfos(RequestType. ASK, "FriendMemberId", "FriendNickName", 1);
//Accept the friend request from the user whose level is 1, member ID is {FriendMemberId}, and nickname is "{FriendMemberId}"
StorageCoreManager.GetInstance().GetApi().FriendshipInfos(RequestType. AGREE, "FriendMemberId", "FriendNickName", 1);