Сеть
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¶meter2=value2¶meter3=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
...).
Note
Узнайте больше о структурах на странице о переменных.
Структуры полезны, поскольку они могут хранить все данные о чем-либо, которые затем могут быть отправлены на сервер. Для этого вы можете преобразовать структурную переменную в JSON, используя выражение под названием ToJSON
. Например:
Если у переменной-структуры Progress есть дочерние элементы «Level» со значением 4 и «Score» со значением 1500, результирующий JSON будет выглядеть: {"Level": 4, "Score": 1500}
.
Вы можете использовать его как содержимое запроса, отправленного на сервер или при передаче данных P2P или даже для хранения данных в local storage, оптимизируя код и затраченное место.
JSON в переменную
Вы так же можете преобразовать JSON обратно в переменную. Это полезно, если вы получили ответ от сервера, который также обычно имеет формат JSON.
Используйте действие"Преобразовать JSON в переменную" (или «Преобразовать JSON в глобальную переменную», или «Преобразовать JSON в переменную объекта»). Укажите JSON для преобразования (который сам будет сохранен в переменной) и переменную, в которой вам нужно сохранить полученную структуру. Например: