Гой еси, любопытные читатели, и возможно будущие (а может быть и настоящие) мододелы. В оном руководстве я попробую объяснить основы модов на винтажку, чтобы после Вам был понятнее мой ещё не вышедший дневник о создании собственного мода. Рассказать попробую как можно проще, чтобы даже самовары уразумели, хотя и не уверен что у меня получиться. И да, в подробности очень сильно вдаваться в не собираюсь - поскольку моя цель - объяснить только основы.
Расположение файлов
Пожалуй первое дело, что среднестатистическому Полуэкту придётся сделать, коли он надумал создать мод - создание системы папок его мода. Для этого открываем папку "Vintagestory", ищем в ней папку "Mods", и создаём там папку, одноимённую с будущим модом.
В папке вашего мода (у Полуэкта это просто"mod") создаём папку "assets", а в нёй ещё одну папку с именем вашего мода. После этого можно создавать последние папки, в которые мы и будем сохранять файлы. Это такие папки как "textures" (текстуры), "shapes" (модели), "sounds" (звуки), "entities" (сущности, т.е. животные), "itemtypes" и "blocktypes" (предметы и блоки соответственно) и другие.
В этих папках, если нам приспичит, можно создать ещё папки, для большего порядка.
Создание блока и основы работы с файлами
Допустим, среднестатистический Полуэкт решил создать блок. Для этого на потребуется создать текстовый файл, в любом текстовом редакторе, использовать можно "Visual Studio Code", "Notepad++" и другие, а я делая первые шаги, даже в блокноте умудрялся работать.
Писать файл мы будем в формате Json -- этаком "недокоде". Принцип его работы станет понятным чуть позже, без примеров я объяснить не смогу. Поэтому перейдём к примеру - а именно файлу нашего (Ан нет, Полуэтоковского) блока. А добавить Полуэкт решил блок "чего-нибудь".
После изнурительных 5 часов работы, Полуэкт написал примерно это:
Сейчас будет очень подробное объяснение этого текста, те кто что-нибудь понимают в программировании могут пролистать немного вперёд
Жёлтые фигурные скобки открывают и закрывают файл блока, внутри которого перечисляются свойства блока.
Первым ключевым словом, которое попалось Полуэкту стало "code". (Именно в кавычках, всё ключевые слова желательно писать в кавычках. Желательно, потому что может, да и часто работает, код и без них). Это слово определяет название, под которым будет "закодирован" блок. Полуэкт, не обладающий фантазией написал "блок-чего-нибудь". После этого он поставил запятую, поскольку вообще-то в файле идёт перечисление свойств, и между ними необходимо ставить запятую.
Потом Полуэкту пришлось попотеть, но он старательно написал "creativeinventory". Это слово определяет, в каких вкладках творческого инвентаря можно будет его отыскать. Поскольку вкладок несколько, далее идёт отдельное перечисление, которое тоже заключено в фигурные скобки. Итак, блок чего-нибудь будет находиться во вкладках "general" (всё), "terrain" (ландшафт) и "construction" (строительство). И да, не пугайтесь ["*"] - это обозначает, что в этих вкладках будут все разновидности блока (у Полуэкта разновидностей нет, но всё же).
Далее всё проще, "drawtype" определяет форму блока - "cube" - для простого кубика и "Json" для модельки. "textures" - естественно выбирает текстуру для блока, это даже Полуэкт сразу понял. С нашем случае идёт немного сложная конструкция, которая необходима для разновидностей блоков, но я укороченной версией никогда не пользовался. И { "base": "block/chego-nibud" } - значит, что текстуру надо искать в папках мода (Это определяет "base", если бы пришлось искать среди уже присутствующих в игре, надо было бы поставить "game"), внутри папки "block" по именем "chego-nibud".
Теперь сохраняем файл, и указываем что это файл формата Json. На первых порах этого хватит, запускаем!
Файл мода
Ах да, прежде чем запускать мод, следует создать файлик с информацией о моде и сохранить его в первую папку с именем вашего мода (у меня это "mod") под именем "modinfo". И не забываем указать, что это файл типа Json.
Содержание файла будет примерно таким:
Разберём подробно все эти каляки.
- Строки 1 и 11 - открывают и закрывают "ящик с информацией"
- 2 - слово "type" определяет тип мода. "content" - это тип мода, который может добавлять блоки, предметы, даже сущности не используя настоящий код на C# . "code" - для тех кто умеет и хочет программировать на C#. Есть ещё третий тип - "theme packs" - для того, кто хочет только текстуры и модели менять.
- 3, 4 - "modid" - это имя мода для программы, а "name" - имя мода для публики.
- 5 - "authors" - список авторов, и поскольку это список, он заключён в скобки.
- 6 - description - описание мода. То что написано дальше, можно и не пытаться расшифровать, у Полуэкта что-то с клавиатурой.
- 7 - версия мода, а 8, 9, 10 - необходимые вещи - в том числе версия игры.
Запускаем!
Включаем мод, среди других:
Заходим в мир, ищем блок в инвентаре, ставим и...
Текстуры и модели
Ага, я забыл создать и сохранить текстуры! -- сообразил Полуэкт. Текстуры винтажка принимает любые, главное чтобы размеры были кратны 8, но обычно это 32х32. Поскольку блок у нас чего-нибудь, текстуру для него Полуэкт сделал подобающую.
После длительной работы с текстурой, Полуэкт может дать несколько советов:
- Как основу для текстуры очень удобно брать фото из интернета и уменьшать это до нужных размеров.
- Постарайтесь не делать текстуру совсем однотонной, желательно чтобы каждый соседний пиксель имел немного другой оттенок.
- Если вы делаете текстуру для блока, следите за тем, чтобы она была бесшовной - по текстуре не было видно где кончается один блок, а где начинается другой. У Полуэкта это не вышло.
Но только текстуры - это скучно - решил Полуэкт, и так и не создав нормальную текстуру, побежал создавать модели. Винтажка принимает только те модели, что были созданы в специальном редакторе, который можно получить, только имея официальных аккаунт. Поскольку Полуэкт - это богатый болван, то он смог выклянчить у родителей денег на официальную версию винтажки, благо те, жуть как боялись вирусов.
Управление редактора простое - создаем куб, меняет его положение, размер, вращение по 3-м осям. Полуэкт кое-как разобрался, предполагаю кто-нибудь другой тоже сможет. Потом может и напишу руководство...
Сохраняем модель, в папку block (она вроде не обязательна, но так лучше) в папке shapes и идём редактировать файл Блока. Вписиваем туды "shape" : { "base" : "block/chego-nibud" }, чтобы игра знала, где искать модель; меняем "drawtype": "cube", на "drawtype": "json", для лучшей отрисовки модельки игрой, пишем:
"sidesolid": { "all" : "false" },
"sideopaque": { "all" : "false" }
Сохраняем всё. Получается что-то такое:
Теперь у нас есть моделька блока, и она работает!
Тут среднестатистическая мама погнала среднестатистического Полуэкта спать, и он больше не смог ничего сделать. Надеюсь после этого "руководства по созданию модов" среднестатистический читатель будет понимать что творится в дневниках разработки мода, и я ничего критичного не забыл. Тех, кого создание модов на винтажку увлекло, я коварно отправлю разбираться в вики, где есть всё-всё.
Конец!
Нет, нет не конец, Продолжение следует. По крайней мере хоть одна статья дневника точно будет!