Игровые переменные
Обзор
Глобальные переменные игры позволяют управлять контентом игры без обновления самой игры. Каждой переменной можно указать значение на любом доступном языке. Она будет загружена на предпочитаемом игроком языке или по умолчанию взята с английского, если в другом языке значение пустое. Чтобы добавить новую переменную, перейдите в панели управления GamePush в раздел Игровые переменные - Добавить переменную.

Несколько примеров использования переменных:
- Динамические значения. Любые значение в игре, которые хотелось бы изменить в любой момент. Например ради эксперимента или коррекции баланса игры.
- Загружаемый контент. Добавляйте уровни в игру, изменяйте карты, добавляйте героев, экипировку, сюжетные главы.
- Переводы. Загружайте файлы с переводами в разные языки переменной и обеспечивайте мгновенные исправления и дополнения по переводам. Это касается не только текста, а также и изображений, видео и аудио.
- Ивенты. Вы сможете контролировать ивенты и, с помощью языков, включать нужные ивенты в нужном переводе. Например новый год на русском, рождество на английском. А также локальные праздники.
Получить переменные
+0-1 RequestПо-умолчанию переменные проекта загружаются автоматически при первом запросе к сервису. Однако, если в них много данных и вы хотите самостоятельно контролировать загрузку, то можно выключить свойство Load variables on game boot и вызвать метод загрузки самостоятельно.
- JavaScript
- Construct 3
- Unity
// Дожидаемся получения переменных
await gp.variables.fetch();
Легенда
Button
GamePush
System
Button — Объект Button (Кнопка)
GamePush›Плагин GamePush
System›Системный объект Construct 3
GP_Variables.Fetch(OnFetchSuccess, OnFetchError);
События:
- JavaScript
- Construct 3
- Unity
// Событие при загрузке
gp.variables.on('fetch', () => console.info('variables available'));
// Событие при ошибке
gp.variables.on('error:fetch', (error) => console.error(error));
Легенда
GamePush
GamePush›Плагин GamePush
// Событие при загрузке
private void OnFetchSuccess(List<VariablesData> variables)
{
for (int i = 0; i < variables.Count; i++)
{
Debug.Log("VARIABLE KEY: " + variables[i].key);
Debug.Log("VARIABLE TYPE: " + variables[i].type);
Debug.Log("VARIABLE VALUE: " + variables[i].value);
}
}
// Событие при ошибке
private void OnFetchError() => Debug.Log("FETCH: ERROR");
Получение значения переменной FREE:
- JavaScript
- Construct 3
- Unity
// Считываем переменную
const dialogs = gp.variables.get("dialogs");
Легенда
System
Text
System›Системный объект Construct 3
Text — Объект Text (Текст)
Debug.Log("VARIABLES: GET INT " + GP_Variables.GetInt("number"));
Debug.Log("VARIABLES: GET FLOAT " + GP_Variables.GetFloat("float"));
Debug.Log("VARIABLES: GET BOOL " + GP_Variables.GetBool("bool"));
Debug.Log("VARIABLES: GET STRING " + GP_Variables.GetString("string"));
Debug.Log("VARIABLES: GET IMAGE " + GP_Variables.GetImage("image"));
Debug.Log("VARIABLES: GET FILE " + GP_Variables.GetFile("file"));
Проверка на существование FREE:
- JavaScript
- Construct 3
- Unity
// Проверяем есть ли переменная или содержит значение
if (gp.variables.has("newYearEvent")) {
// mygame.enableNewYearEvent();
}
Легенда
GamePush
GamePush›Плагин GamePush
Не реализовано
Проверка типа переменной FREE:
- JavaScript
- Construct 3
- Unity
// Проверяем тип переменной
// data - строковый
// stats - числовой
// flag - булевый
// doc_html - текст в формате html
// image - ссылка на изображение
// file - ссылка на файл
if (gp.variables.type("lastNews") === "doc_html") {
$newsContainer.innerHtml = gp.variables.get("lastNews");
}
Легенда
GamePush
Text
GamePush›Плагин GamePush
Text — Объект Text (Текст)
Не реализовано
Пример с получением файла из переменной FREE:
- JavaScript
- Construct 3
- Unity
const levelsUrl = gp.variables.get("levels");
// Достаем контент файла через модуль файлов
const levels = await gp.files.loadContent(levelsUrl);
// myGame.setLevels(JSON.parse(levels));
Легенда
System
Text
GamePush
System›Системный объект Construct 3
Text — Объект Text (Текст)
GamePush›Плагин GamePush
string levelsUrl = GP_Variables.GetFile("levels");
GP_Files.LoadContent(levelsUrl);
Получить переменные площадки
FREEПлощадки могут предоставлять свои LiveOps инструменты. Вы можете проверить поддерживаются ли удаленные переменные на стороне площадки.
Площадки без поддержки
Проверка поддержки:
- JavaScript
- Construct 3
- Unity
if (gp.variables.isPlatformVariablesAvailable) {
// На площадке поддерживаются переменные
}
Легенда
GamePush
GamePush›Плагин GamePush
if (GP_Variables.IsPlatformVariablesAvailable())
{
// На площадке поддерживаются переменные
}
Получение:
- JavaScript
- Construct 3
- Unity
// Дожидаемся получения переменных
const variables = await gp.variables.fetchPlatformVariables();
// Объект вида ключ-значение, например
{
myVariable: 'myValue',
AB_Test1: 'B'
}
Легенда
Button
GamePush
System
Text
Button — Объект Button (Кнопка)
GamePush›Плагин GamePush
System›Системный объект Construct 3
Text — Объект Text (Текст)
GP_Variables.FetchPlatformVariables( OnPlatformFetchSuccess, OnPlatformFetchError);
Получение с передачей дополнительных клиентских параметров как дополнительной информации для получения переменных по условию:
- JavaScript
- Construct 3
- Unity
// Дожидаемся получения переменных
const variables = await gp.variables.fetchPlatformVariables({
clientParams: {
gold: 1000,
class: 'warrior'
}
});
Легенда
Button
GamePush
System
Button — Объект Button (Кнопка)
GamePush›Плагин GamePush
System›Системный объект Construct 3
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("gold", "1000");
dict.Add("class", "warrior");
GP_Variables.FetchPlatformVariables(dict, OnPlatformFetchSuccess, OnPlatformFetchError);
События:
- JavaScript
- Construct 3
- Unity
// Событие при загрузке
gp.variables.on('fetchPlatformVariables', (variables) => {});
// Событие при ошибке
gp.variables.on('error:fetchPlatformVariables', (error) => console.error(error));
Легенда
GamePush
GamePush›Плагин GamePush
// Событие при загрузке
private void OnPlatformFetchSuccess(Dictionary<string, string> variables)
{
foreach(string key in variables.Keys)
{
ConsoleUI.Instance.Log(key + " : " + variables[key]);
}
}
// Событие при ошибке
private void OnPlatformFetchError(String err) => Debug.LogLog("FETCH ERROR: " + err);
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram: @gs_community.
Для ваших обращений e-mail: official@gamepush.com
Желаем вам успехов!