поддержка модов в игре и JSON

другие уроки, мануалы, советы по Construct 2

Сообщение поддержка модов в игре и JSON
» 29 июн 2020, 16:47

Это довольно сложная тема и я над ней работал месяц, рад рассказать об этом вам
ВНИМАНИЕ
Previev browser нужно обязательно поставить на NWjs

------

 Подготовка
Для того, чтоб нам работать, надо скачать плагин JSON

Переходим по ссылке и жмём Download
Изображение

Устанавливаем плагин
Если не знаете как, то урок можно посмотреть тут

Создаём проект в construct
Нужно обязательно добавить эти объекты:

*2 кнопки(update и addons folder)
*JSON
*NWjs
*list
*sprite
*textbox
*Function


У textbox ставим данные свойства:
Изображение

Поздравляю! С подготовкой закончили


------

 Нахождение аддонов
Так-как я сейчас экспортировать ничего не собираюсь, то мы сами сделаем путь к нашей папке с аддонами
Приступим к программированию

Для начала, нам надо узнать у пользователя путь к нашей папке:
Изображение
Код спрашивает у пользователя путь к папке с аддонами и записывает его в переменную для удобства

Теперь сделаем так, чтоб в List были все папки с аддонами при выборе папки, а так-же нажатии кнопки Update:
Изображение
Поправка:
Изображение

Создадим папку Mods на рабочем столе, а в ней Mod1 и Mod2
И при выборе папки Mods получается это:
Изображение


------

 Создание аддона
Для начала закинем в папку Mode1 несколько файлов
page.txt
Код: Выделить всё
Это тестовый текст
Это тестовый текст

page.json
Код: Выделить всё
Пока ничего туда не пишем

page.png
Код: Выделить всё
Любое изображение размером спрайта в вашем проекте


------

 Страница аддонов
Создать аддон - создали, но надо, чтоб наше приложение могло его читать
Для начала сделаем, чтоб спрайт принимал изображение page.png:
Изображение

Получилось примерно так:
Изображение
Изображение

Отлично!
Теперь сделаем так, чтоб textbox принимал текст из page.txt:
Изображение

Изображение


------

 CSS для textbox
Все мы знаем, что textbox может изменяться по css,
Я не просто так добавил JSON, с помощью него мы изменим CSS textbox'а:
Для начала впишем в page.json данный код:
Код: Выделить всё
{
   "TBcss": {
      "font-size": "22pt",
      "border-size": "0px"
   }
}

 Синтаксис JSON
JSON файлы устроены так:
Код: Выделить всё
"название":значение

название всегда пишется в скобках, а значение не обязательно.
Значение может быть данными несколькими типами данных:
string - пишется в скобках
number - пишется без скобок и поддерживает только цифры и знак "."
array - массив, или же множество переменных в одной, записывается так:
Код: Выделить всё
"array":[12,22,40]

и object - почти то же самое, что и массив, но может иметь только измерение x. Записывается так:
Код: Выделить всё
"object:{
    "string":"yolo",
    "number":12
}"


В JSON файле обычно хранится множество переменных и их значений, но чтоб их разделять, после каждого значения, кроме последнего, нужно писать ",".

 Чтение файла
Сделаем чтение файла JSON:
Изображение

Итог:
Изображение


------

 Подготовка игрового поля
Всё таки аддон - это не только страница.
Поэтому давайте добавим возможность "загружать карты".
Для начала мы создадим новый layout и назовём его "Game":
Изображение

Добавим спрайт игрока с проведениями Platform и ScrollTo:

Изображение

И добавим платформу с поведением Solid.


------

 Логика
Персонаж есть, платформа есть, теперь за логику!
Добавим кнопку для перехода на Layout в главном меню и отключим её. Ведь если её оставить включённой - то игрок сможет пойти играть при этом не загрузив уровень.

Теперь поправим наш главный event sheet:
Изображение

Всё! Теперь он будет работать при выборе нового уровня!

Сделаем переход на игру при нажатии на кнопку:
Изображение

Теперь приступаем к самому важному- работе аддона


------

 Загрузка карты из аддона
Для начала я поправил json файл нашего аддона:
Код: Выделить всё
{
   "TBcss": {
      "font-size": "22pt",
      "border-size": "0px"
   },
   "Map":{
       "1":"32, 352",
       "2":"96, 352",
       "3":"160, 352",
       "4":"32, 416",
       "5":"96, 416",
       "6":"160, 416"
   }

}


Теперь - генерация

Добавим данную логику в наш Game_ES(ES игрового поля):

Изображение

Теперь объяснение:
Скрипт в начале игры проходит по переменной 'Map' в нашем json файле. В нём хранятся данные всех позиций для блоков по X и Y через запятую.
Чтоб разделить X и Y я использую функцию tokenat()
Так как на выходе мы получаем тип данных string- его нужно перевести в int. Это я проделал через функцию int()


В итоге мы получаем это:
Изображение
Изображение



------

 Заключение
Вот мы и сделали поддержку модов и даже небольшую карту как аддон. Следующим делом которым я попытаюсь занять своё свободное время будет документация по mod.io - обширную платформу модов для ваших игр.
Данная платформа может вам заменить steam workshop если постараться.

Данный пост я официально закрываю. Попробуйте основываясь на данном уроке сделать поддержку других кадров, ширины, высоты и тп. Кто знает, может данный исходник послужит направлением для новой версии Gmod в 2D
mods.capx
(177.27 КБ) Скачиваний: 52
Последний раз редактировалось dimidroll16 27 сен 2020, 18:58, всего редактировалось 4 раз(а).
 Мои уроки
Аватара пользователя

Участник
Сообщений: 15
Я тут с 29 июн 2020
Откуда: Минеральные Воды
Двиг: construct 2
Лицензия: personal
VK: vk.com/dshved2006
Репутация 3 [ ? ]

Сообщение поддержка модов в игре
» 30 июн 2020, 10:27

Жду продолжения урока с нетерпением :biggrin:
Аватара пользователя

Участник
Сообщений: 133
Я тут с 13 фев 2020
Откуда: Москва
Двиг: Construct2 r277
Лицензия: Personal
Репутация 31 [ ? ]

Сообщение поддержка модов в игре
» 23 июл 2020, 00:05

Довольно интересно. Мне нравится!
Аватара пользователя

Участник
Сообщений: 26
Я тут с 10 сен 2017
Репутация 9 [ ? ]

Сообщение поддержка модов в игре и JSON
» 28 сен 2020, 21:25

Сделал обновление:
Теперь по данному уроку вы сможете добавить возможность создания кастомных карт :cool:
 Мои уроки
Аватара пользователя

Участник
Сообщений: 15
Я тут с 29 июн 2020
Откуда: Минеральные Воды
Двиг: construct 2
Лицензия: personal
VK: vk.com/dshved2006
Репутация 3 [ ? ]

Сообщение поддержка модов в игре и JSON
» 28 сен 2020, 22:19

dimidroll16, Интересный урок. Но только русские символы он не воспринимает. Как это исправить?
Аннотация 2020-09-28 221832.png
Исходники:
Библиотека исходников для Construct Classic - http://c2community.ru/forum/viewtopic.php?f=16&t=16843

Плагины:
Портирование плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=17021
Поддельные плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=16933
Аватара пользователя

Участник
Сообщений: 633
Я тут с 12 мар 2020
Откуда: GameSoul Inc.
Двиг: Construct,Unity
Лицензия: Business
Репутация 92 [ ? ]

Сообщение поддержка модов в игре и JSON
» 30 сен 2020, 22:21

GameSoul писал(а):Но только русские символы он не воспринимает.

Я немного посмотрел, ну я могу сказать так- у меня все символы отображаются. Я зашёл на форум к javascript разработчикам и могу сказать, что у вас либо устаревшая версия nw.js либо вы запускаете файл через браузер :ok:
Если мои суждения не верны, вы можете попробовать закинуть папку с модами на рабочий стол
Даже если это не помогло- я бы попросил вас кинуть вашу папку с модами, я попробую разобраться wink::
 Мои уроки
Аватара пользователя

Участник
Сообщений: 15
Я тут с 29 июн 2020
Откуда: Минеральные Воды
Двиг: construct 2
Лицензия: personal
VK: vk.com/dshved2006
Репутация 3 [ ? ]

Сообщение поддержка модов в игре и JSON
» 02 окт 2020, 16:27

dimidroll16, Уже решил проблему изменив кодировку у файла на UTF-8 с BOM. Может попробуешь сделать так, чтобы в моде можно было манипулировать игровыми событиями (изменять уже существующие, добавлять свои)?
Исходники:
Библиотека исходников для Construct Classic - http://c2community.ru/forum/viewtopic.php?f=16&t=16843

Плагины:
Портирование плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=17021
Поддельные плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=16933
Аватара пользователя

Участник
Сообщений: 633
Я тут с 12 мар 2020
Откуда: GameSoul Inc.
Двиг: Construct,Unity
Лицензия: Business
Репутация 92 [ ? ]

Сообщение поддержка модов в игре и JSON
» 02 окт 2020, 17:39

GameSoul писал(а):можно было манипулировать игровыми событиями

Уже работаю на этим :ok: , если смогу разобрать плагин Function или найти подходящий плагин(посматриваю в сторону scenario), то сразу напишу урок :good:
 Мои уроки
Аватара пользователя

Участник
Сообщений: 15
Я тут с 29 июн 2020
Откуда: Минеральные Воды
Двиг: construct 2
Лицензия: personal
VK: vk.com/dshved2006
Репутация 3 [ ? ]



Вернуться в Другие уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх