Моддинг:Базовое Руководство по Предметам

From Vintage Story Wiki
This page is a translated version of the page Modding:Content Tutorial Simple Item and the translation is 100% complete.
Other languages:

Эта страница проверялась в последний раз для версии Vintage Story 1.20.7.


Введение

Цель

В этом руководстве вы создадите предмет - простую палочку! Хоть этот предмет не будет иметь никакого функционала,он нужен чтобы продемонстрировать как создавать ассеты в json, как использовать модели и языковые пакеты.

Ассеты

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

Это руководство начинается со следующими ассетами:

  • Настройка Мода и Структура Папки
  • Пустой файл предмета
  • Шаблон языкового пакета
  • Файл модели предмета
  • Файл текстуры предмета

Требования

Предполагается, что вы уже знакомы со следующими темами:

Навигация в Ассетах

Скачав рабочее пространство, посмотрите на файлы которые там представлены.

  • modinfo.json - Файл modinfo, который задаёт вашему моду уникальный идентификатор 'simpleitem'.
  • modicon.png - Файл с иконкой мода, которая отобразится в менеджере модов.
  • assets/simpleitem/itemtypes/simplewand.json - Пустой файл, который вы заполните кодом для вашего предмета.
  • assets/simpleitem/lang/en.json - Простенький языковой пакет, куда вы добавите значения для перевода.
  • assets/simpleitem/shapes/item/simplewand.json - Файл модели для палочки.
  • assets/simpleitem/textures/item/simplewand.png - Файл текстуры для палочки.

Создание Предмета

Чтобы создать предмет, необходимо создать файл внутри директории itemtypes. Если вы используете скачанное рабочее окружение, то там уже существует предмет, под названием simplewand. Откройте этот файл в вашей среде разработки.

Самое важный ключ при создании ассета это ключ code, ещё его называют ID. Поэтому для начала, скопируйте это в открытый файл simplewand.

{
  "code": "simplewand"
}

Помните что файлы json это пары ключей и значений. В нашем случае ключ это "code", а значение это "simplewand". Заметьте что файл начинается и кончается фигурными скобками ({ }), обозначая что это один единый объект.

Теперь, когда наш itemtype правильно заполнен кодом, игра создаст и зарегистрирует такой предмет. Тем не менее, нам надо указать способ получения предмета. Чтобы это сделать, добавьте новое свойство:

{
  "code": "simplewand",
  "creativeinventory": {
    "general": [ "*" ]
  }
}

Обратите внимание что каждое свойство разделяется запятой. Новое свойство "creativeinventory" говорит игре в какую вкладку творческого инвентаря поместить этот предмет. Синтаксис в этом конкретном свойстве немного сложный, но пока не думайте об этом. Всё что он делает, это добавляет наш предмет во вкладку "general".

Теперь, если запустить Vintage Story с нашим модом, то вы увидите этот предмет в творческом инвентаре!

Content Tutorial Simple Item No Texture Or Shape.png

В идеале, предмет не должен быть большим черным квадратом, верно?

Добавление Модели и Текстуры

Модель и текстура уже есть в ассете, почему же предмет не отрисовывает их как надо?

Если ассет должен использовать какую-то модель или текстуру, то это должно быть объявлено в его json файле. Замените ваш текущий код в itemtype на следующее:

{
  "code": "simplewand",
  "creativeinventory": {
    "general": [ "*" ]
  },
  "texture": {
    "base": "item/simplewand"
  },
  "shape": {
    "base": "item/simplewand"
  }
}

Добавилось два новых свойства - texture и shape. Помните, что модель это трехмерное представление нашего предмета, а текстура это двухмерное изображение которое размечено по нашей модели, и нам надо включить их обоих чтобы наш предмет отрисовался как надо. Вас может сбить с толку тот факт что и текстура и модель, кажется, задаются одинаково, но игра ищет эти файлы в разных местах. Чтобы найти модель, игра по умолчанию смотрит в директорию shapes которая находится в нашей папке мода, а для текстур игра смотрит в директорию textures которая тоже находится в нашей папке мода.

Если вы снова запустите игру, то заметите некоторые изменения.

SimpleItemTutorialWandNoPositioning.png

Теперь это больше похоже на то, что нам надо, но позиционирование предмета неправильное.

Позиционирование Предмета

Ваш предмет почти готов, однако 3d модель трансформирована неправильно. Трансформирование в 3d графике это установка положения, вращения и масштаба объекта.

Использование Редактора Трансформирования

Чтобы позволить моддерам легко и точно позиционировать предметы, Vintage Story использует редактор трансформирования к которому можно получить доступ в игре. Когда вы в игре, возьмите в руки, предмет который нужно позиционировать и исполните команду '.tfedit' чтобы открыть редактор трансформирования.

Редактор трансформирования позволяет вам выбрать где объект должен отрисовываться и равнять его напрямую. Самая лучшая часть в том, что снизу редактор генерирует json код, который вы можете скопировать и вставить прямо в ваш файл предмета.

Рекомендуется изучить редактор трансформирования, так как это очень ценный инструмент для трансформирования предметов и блоков.

Изменения, сделанные в редакторе не изменяют никаких файлов, и далее не сохранятся. Для каждого предмета который вы создаёте, рекомендуется задать позиции для основной руки (main hand), для интерфейса (gui) и для выброшенного предмета (ground). Это свойства tpHandTransform, guiTransform и groundTransform соответственно.

Чтобы трансформировать палочку, добавьте следующие свойства. Не забудьте поставить запятую после закрывающей фигурной скобки вашего предыдущего кода.

"guiTransform": {
    "translation": {
      "x": 0,
      "y": 0,
      "z": 0
    },
    "rotation": {
      "x": -89,
      "y": 41,
      "z": 33
    },
    "origin": {
      "x": 0.48,
      "y": 0,
      "z": 0.38
    },
    "scale": 1.78
  },
"groundTransform": {
    "translation": {
      "x": 0,
      "y": 0,
      "z": 0
    },
    "rotation": {
      "x": 0,
      "y": 0,
      "z": 0
    },
    "origin": {
      "x": 0.5,
      "y": 0,
      "z": 0.5
    },
    "scale": 3.4
  },
"tpHandTransform": {
    "translation": {
      "x": -0.45,
      "y": 0.03,
      "z": -0.66
    },
    "rotation": {
      "x": 90,
      "y": 0,
      "z": 0
    },
    "origin": {
      "x": 0.5,
      "y": 0,
      "z": 0.5
    },
    "scale": 0.8
  }

Чтобы проверить изменения, вы можете просто перезагрузить мир. Если все будет работать как надо, вы должны увидеть что ваша палочка теперь лучше помещается в руку игрока, и правильнее отображается в инвентаре.

SimpleItemContentTutorialItemPositionButNoName.png

Осталась ещё одна маленькая деталь, перед тем как наш предмет будет готов.

Переименование Предмета

Сейчас, в любом месте игры предмет называется 'simpleitem:item-simplewand'. Чтобы это исправить нужно добавить некоторый код в наш языковой пакет. Откройте предоставленный языковой файл en.json который лежит в assets/simpleitem/lang.

Наш образец содержит два заранее созданных перевода, чтобы показать вам как работают языковые пакеты и переводы для творческих вкладок. Обратите внимание, что переводы для творческого режима имеют префикс 'game', потому что все творческие вкладки специально добавляются в игровой домен.

{
  "game:tabname-examplemod": "Example Mod",
  "template-lang-1": "Template Lang 1",
  "template-lang-2": "Template Lang 2"
}

Слева ключ перевода, а справа строчка (string) с переводом. Добавьте новую запись в этот файл, поставив запятую после второго перевода, и перейдите на новую строку. В данном случае ключ перевода будет 'item-simplewand'. Обратите внимание что ключ это название предмета в игре, только без домена мода. Строка перевода будет 'Simple Wand'.

{
  "game:tabname-examplemod": "Example Mod",
  "template-lang-1": "Template Lang 1",
  "template-lang-2": "Template Lang 2",
  "item-simplewand": "Simple Wand"
}

Оба перевода из образца не используются, можете удалить их, если хотите.

Чтобы ускорить процесс проверки изменений, если ваша Vintage Story ещё открыта, вы можете исполнить команду '.reload lang' чтобы перезагрузить языковые пакеты. Теперь при наведении на предмет вы должны увидеть что ваш языковой пакет теперь работает.

SimpleItemTutorialFinalImageWorking.png

Заключение

Поздравляем, вы создали свой первый предмет! Это руководство должно было дать вам базовое понимание о предметах, текстурах и языковых пакетах и, разумеется, об основах моддинга Vintage Story!

Что Дальше?

Если хотите проверить свои знания, попробуйте выполнить задания из раздела "Дополнительные Задания" ниже.

Когда будете готовы, попробуйте следующее руководство: Базовое Руководство по Блокам . Оно расскажет вам о том, как создать новый блок с текстурой.

Дополнительные Задания

Хотите внести пару дополнительных изменений в этот мод? Попробуйте достичь следующих вещей!

Измените цвет палочки

Показать решение
Необходимо изменить цвет текстуры simplewand.png.

Измените ваш идентификатор мода и домен мода на какие-нибудь другие

Показать решение
Измените запись об идентификаторе в modinfo.json, и измените имя папки 'simpleitem' в директории 'assets'.

Переименуйте вашу 'Simple Wand'

Показать решение
Измените запись для вашей simplewand в языковом пакете en.json

Создайте ещё одну палочку с другим цветом

Показать решение
Создайте копию текстуры с отличным цветом и продублируйте файл itemtype. В новом файле itemtype измените код предмета и значение текстуры так, чтобы они соответствовали местоположению нового файла текстуры. Не забудьте добавить новые строки в ваш языковой пакет!

Обратите внимание что не нужно изменять текстуру в файле 'shapes', т.к. вместо неё будет использоваться текстура из файла itemtype.


Моддинг
"" Основы Контентные Моды Программные Моды Типы Ассетов Model Creator Устранение Неполадок Движок VS
"" Основы Контентных Модов Руководства Справочники и Концепции Все Страницы о Контентных Модах
"" Руководства для Начинающих Руководства для Любителей Руководства для Продвинутых Прочие Руководства
"" Введение в Контентный Моддинг Базовое Руководство по Предметам Базовое Руководство по Блокам Базовое руководство по Рецептам