Сеть

GDevelop предоставляет сетевые функции, которые позволяют играм связываться с удаленными серверами, API или веб-сайтами, а так же взаимодействовать с JSON.

Отправить запрос на сервер / API / веб-страницу

Все в Интернете использует HTTP-запросы. Когда вы посещаете веб-страницу, ваш браузер отправляет запрос на адрес веб-страницы, а сервер веб-сайта отправляет ответ с содержанием веб-страницы.

Игры и приложения работают аналогично для отправки данных на сервер или их получения:

  • они отправляют запрос на определенный адрес (также называемый конечной точкой). При желании запрос может включать параметры.
  • сервер отправляет ответ. Набор всех запросов, которые обрабатываются сервером, иногда называют API.

В дополнение к адресу и параметрам, HTTP-запросы также могут иметь связанный “verb”. Запросы на получение данных или веб-страницы обычно являются запросами “GET”. Запросы на публикацию данных обычно являются запросами “POST”.

GDevelop предоставляет действие под названием «Отправить запрос на веб-страницу». Вы можете указать хост и путь к вызываемой API / веб-странице (например, если ваша «конечная точка» - https: // mygame.com / api / store-score, хост - https: / / mygame.com, а путь - / api / store-score (не забудьте косую черту /)). Вы также можете указать содержание запроса (параметр, который будет получен сервером).

Когда сервер отправляет ответ, он сохраняется в переменной, чтобы вы могли прочитать то, что было отправлено.

Как отформатировать контент

  • Для запросов GET параметры должны быть отправлены в содержимом в формате «строки запроса».: parameter1=value1&parameter2=value2&parameter3=value3

Вы можете отправлять данные из переменной, например: "score=" + VariableString(Score) + "&playerName=" + VariableString(Name)

  • Для запросов POST это зависит от того, что ожидает сервер, но в большинстве случаев сервер ожидает текст в формате JSON.

Вы можете построить его самостоятельно: "{\"score\": " + VariableString(Score) + " }" (обратите внимание на использование обратной косой черты перед кавычкой \" , чтобы цитата могла использоваться внутри текста) или используйте выражение для преобразования структуры переменной в JSON: ToJSON(VariableWithData) (подробнее об этом ниже).

Преобразование переменных в JSON и обратно в переменные

Переменная в JSON

JSON - это текстовый формат, который можно использовать для описания структуры данных, содержащей числа, строки, объекты и массивы. Например, JSON, содержащий счет и имя игрока, будет выглядеть: { "name": John, "score": 45 }.

Переменные в GDevelop могут содержать числа, строки или быть «структурой», содержащей дочерние элементы, которые также являются переменными, содержащими число, строки или дочерние элементы.

Дочерними элементами можно управлять, используя обычные действия, связанные с переменными, путем ввода их имени после точки после имени родительской переменной (например, если переменная, содержащая дочерние элементы, называется Progress: `Progress.Level`, `Progress.Score`...).
Узнайте больше о структурах на странице о переменных.

Структуры полезны, поскольку они могут хранить все данные о чем-либо, которые затем могут быть отправлены на сервер. Для этого вы можете преобразовать структурную переменную в JSON, используя выражение под названием ToJSON. Например:

Если у переменной-структуры Progress есть дочерние элементы «Level» со значением 4 и «Score» со значением 1500, результирующий JSON будет выглядеть: {"Level": 4, "Score": 1500}.

Вы можете использовать его как содержимое запроса, отправленного на сервер или при передаче данных P2P или даже для хранения данных в local storage, оптимизируя код и затраченное место.

JSON в переменную

Вы так же можете преобразовать JSON обратно в переменную. Это полезно, если вы получили ответ от сервера, который также обычно имеет формат JSON.

Используйте действие“Преобразовать JSON в переменную” (или «Преобразовать JSON в глобальную переменную», или «Преобразовать JSON в переменную объекта»). Укажите JSON для преобразования (который сам будет сохранен в переменной) и переменную, в которой вам нужно сохранить полученную структуру. Например: