Книга по моддингу Minetest: 1. Приступая к работе: различия между версиями
N0m (обсуждение | вклад) мНет описания правки |
N0m (обсуждение | вклад) м (→Пакеты модов) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
Понимание базовой структуры папки с модами - важный навык при создании модов. В этой главе вы узнаете о том, как работает моддинг в Minetest, и создадите свой первый мод. | Понимание базовой структуры папки с модами - важный навык при создании модов. В этой главе вы узнаете о том, как работает моддинг в Minetest, и создадите свой первый мод. | ||
[[Книга по моддингу Minetest: 1. Приступая к работе#Что такое игры и моды?|Что такое игры и моды?]] | * [[Книга по моддингу Minetest: 1. Приступая к работе#Что такое игры и моды?|Что такое игры и моды?]] | ||
* [[Книга по моддингу Minetest: 1. Приступая к работе#Где хранятся моды?|Где хранятся моды?]] | |||
* [[Книга по моддингу Minetest: 1. Приступая к работе#Создаем свой первый мод|Создаем свой первый мод]] | |||
** [[Книга по моддингу Minetest: 1. Приступая к работе#Каталог модов|Каталог модов]] | |||
** [[Книга по моддингу Minetest: 1. Приступая к работе#mod.conf|mod.conf]] | |||
** [[Книга по моддингу Minetest: 1. Приступая к работе#Init.lua|init.lua]] | |||
** [[Книга по моддингу Minetest: 1. Приступая к работе#Резюме|Резюме]] | |||
* [[Книга по моддингу Minetest: 1. Приступая к работе#Зависимости|Зависимости]] | |||
* [[Книга по моддингу Minetest: 1. Приступая к работе#Пакеты модов|Пакеты модов]] | |||
== Что такое игры и моды? == | |||
Преимущество Minetest заключается в возможности легко разрабатывать игры без необходимости создавать собственную воксельную графику, воксельные алгоритмы или сложный сетевой код. | |||
За считанные минуты игра представляет собой набор модулей, которые работают вместе, обеспечивая содержание и поведение игры. Модуль, обычно называемый модом, представляет собой набор скриптов и ресурсов. Можно создать игру, используя только один мод, но это делается редко, поскольку это затрудняет настройку и замену отдельных частей игры независимо от других. | |||
Также возможно распространение модов за пределами игры, и в этом случае они также являются модами в более традиционном смысле - модификациями. Эти моды настраивают или расширяют возможности игры. | |||
Как моды, содержащиеся в игре, так и моды сторонних разработчиков используют один и тот же API. | |||
В этой книге будут рассмотрены основные части Minetest API, и она применима как для разработчиков игр, так и для моддеров. | |||
== Где хранятся моды? == | |||
У каждого мода есть свой собственный каталог, в котором размещены его Lua-код, текстуры, модели и звуки. Minetest проверяет наличие модов в нескольких разных местах. Эти места обычно называются путями загрузки модов. | |||
Для данного мира/сохранения игры отмечены три локации с модами. Они указаны по порядку: | |||
1 .Игровые моды. Это моды, которые формируют игру, в которой работает мир. Напр.: | |||
'''<code>minetest/games/minetest_game/mods/</code>, <code>/usr/share/minetest/games/minetest/</code>''' | |||
2. Globalmods - это место, куда почти всегда устанавливаются моды. Если вы сомневаетесь, разместите их здесь. Напр.: | |||
'''minetest/mods/''' | |||
3. World mods - это место для хранения модов, которые относятся к определенному миру. Напр.: | |||
'''minetest/worlds/world/worldmods/''' | |||
'''minetest''' - это каталог пользовательских данных. Вы можете найти местоположение каталога пользовательских данных, открыв Minetest и нажав “Open User Data Directory” на вкладке "Credits". При загрузке модов Minetest проверит каждое из указанных выше местоположений по порядку. Если он обнаружит мод с таким же названием, как и у найденного ранее, вместо предыдущего мода будет загружен более поздний мод. Это означает, что вы можете переопределить игровые моды, поместив мод с таким же названием в глобальное расположение модов. | |||
== Создаем свой первый мод == | |||
=== Каталог модов === | |||
Перейдите в глобальный каталог модов (About > Open user data directory > mods) и создайте новую папку под названием “mymod”. mymod - это название мода. | |||
У каждого мода должно быть уникальное название - технический идентификатор (id), используемый для обозначения мода. Названия модов могут содержать буквы, цифры и символы подчеркивания. Подходящее название должно описывать, что делает мод, а каталог, содержащий компоненты мода, должен иметь то же имя, что и название мода. Чтобы узнать, доступно ли название мода, попробуйте поискать его на странице [https://content.minetest.net content.minetest.net]. | |||
'''mymod''' | |||
'''├── textures''' | |||
'''│ └── mymod_node.png files''' | |||
'''├── init.lua''' | |||
'''└── mod.conf''' | |||
Для модов требуется только файл init.lua; однако рекомендуется использовать mod.conf, и могут потребоваться другие компоненты в зависимости от функциональности мода. | |||
=== mod.conf === | |||
Создайте файл mod.conf со следующим содержимым: | |||
<code>name = mymod</code> | |||
<code>description = Adds foo, bar, and bo.</code> | |||
<code>depends = default</code> | |||
Этот файл используется для метаданных мода, включая название мода, описание и другую информацию. | |||
=== init.lua === | |||
Создайте файл init.lua со следующим содержимым: | |||
<code>print("This file will be run at load time!")</code> | |||
<code>minetest.register_node("mymod:node", {</code> | |||
<code>description = "This is a node",</code> | |||
<code>tiles = {"mymod_node.png"},</code> | |||
<code>groups = {cracky = 1}</code> | |||
<code>})</code> | |||
<code>minetest.register_craft({</code> | |||
<code>type = "shapeless",</code> | |||
<code>output = "mymod:node 3",</code> | |||
<code>recipe = { "default:dirt", "default:stone" },</code> | |||
<code>})</code> | |||
Файл init.lua является точкой входа в мод и запускается при загрузке мода. | |||
=== Резюме === | |||
Этот мод называется “mymod”. Он содержит два текстовых файла: init.lua и mod.conf. Скрипт печатает сообщение, а затем регистрирует узел и рецепт создания – это будет объяснено позже. Существует единственная зависимость, мод по умолчанию, который обычно можно найти в игре Minetest. В разделе textures/ Также есть текстура для узла. | |||
== Зависимости == | |||
Зависимость возникает, когда мод требует, чтобы другой мод был загружен перед ним. Для использования одного мода может потребоваться доступ к коду, элементам или другим ресурсам другого мода. | |||
Существует два типа зависимостей: жесткие и необязательные. В обоих случаях сначала требуется загрузить мод. Если зависимый мод недоступен, жесткая зависимость приведет к сбою загрузки мода, в то время как необязательная зависимость может привести к включению меньшего количества функций. | |||
Необязательная зависимость полезна, если вы хотите дополнительно поддерживать другой мод; она может включать дополнительный контент, если пользователь хочет использовать оба мода одновременно. | |||
Зависимости | Зависимости указаны в списке, разделенном запятыми, в файле mod.conf. | ||
== | <code>depends = modone, modtwo</code> | ||
<code>optional_depends = modthree</code> | |||
== Пакеты модов == | |||
Моды могут быть сгруппированы в пакеты модов, которые позволяют упаковывать и перемещать несколько модов вместе. Они полезны, если вы хотите предоставить игроку несколько модов, но не хотите заставлять его загружать каждый из них по отдельности. | |||
modpack1 | |||
├── modpack.conf (required) - сигнализирует о том, что это пакет модов | |||
├── mod1 │ | |||
└── ... mod files | |||
└── mymod (optional) | |||
└── ... mod files | |||
Пожалуйста, обратите внимание, что модпак - это не игра. Игры имеют свою собственную организационную структуру, которая будет описана в главе, посвященной играм. | |||
[[Книга по моддингу Minetest|<<< Оглавление]] | |||
Текущая версия от 15:30, 13 августа 2024
Понимание базовой структуры папки с модами - важный навык при создании модов. В этой главе вы узнаете о том, как работает моддинг в Minetest, и создадите свой первый мод.
Что такое игры и моды?
Преимущество Minetest заключается в возможности легко разрабатывать игры без необходимости создавать собственную воксельную графику, воксельные алгоритмы или сложный сетевой код.
За считанные минуты игра представляет собой набор модулей, которые работают вместе, обеспечивая содержание и поведение игры. Модуль, обычно называемый модом, представляет собой набор скриптов и ресурсов. Можно создать игру, используя только один мод, но это делается редко, поскольку это затрудняет настройку и замену отдельных частей игры независимо от других.
Также возможно распространение модов за пределами игры, и в этом случае они также являются модами в более традиционном смысле - модификациями. Эти моды настраивают или расширяют возможности игры.
Как моды, содержащиеся в игре, так и моды сторонних разработчиков используют один и тот же API.
В этой книге будут рассмотрены основные части Minetest API, и она применима как для разработчиков игр, так и для моддеров.
Где хранятся моды?
У каждого мода есть свой собственный каталог, в котором размещены его Lua-код, текстуры, модели и звуки. Minetest проверяет наличие модов в нескольких разных местах. Эти места обычно называются путями загрузки модов.
Для данного мира/сохранения игры отмечены три локации с модами. Они указаны по порядку:
1 .Игровые моды. Это моды, которые формируют игру, в которой работает мир. Напр.:
minetest/games/minetest_game/mods/
, /usr/share/minetest/games/minetest/
2. Globalmods - это место, куда почти всегда устанавливаются моды. Если вы сомневаетесь, разместите их здесь. Напр.:
minetest/mods/
3. World mods - это место для хранения модов, которые относятся к определенному миру. Напр.:
minetest/worlds/world/worldmods/
minetest - это каталог пользовательских данных. Вы можете найти местоположение каталога пользовательских данных, открыв Minetest и нажав “Open User Data Directory” на вкладке "Credits". При загрузке модов Minetest проверит каждое из указанных выше местоположений по порядку. Если он обнаружит мод с таким же названием, как и у найденного ранее, вместо предыдущего мода будет загружен более поздний мод. Это означает, что вы можете переопределить игровые моды, поместив мод с таким же названием в глобальное расположение модов.
Создаем свой первый мод
Каталог модов
Перейдите в глобальный каталог модов (About > Open user data directory > mods) и создайте новую папку под названием “mymod”. mymod - это название мода.
У каждого мода должно быть уникальное название - технический идентификатор (id), используемый для обозначения мода. Названия модов могут содержать буквы, цифры и символы подчеркивания. Подходящее название должно описывать, что делает мод, а каталог, содержащий компоненты мода, должен иметь то же имя, что и название мода. Чтобы узнать, доступно ли название мода, попробуйте поискать его на странице content.minetest.net.
mymod
├── textures
│ └── mymod_node.png files
├── init.lua
└── mod.conf
Для модов требуется только файл init.lua; однако рекомендуется использовать mod.conf, и могут потребоваться другие компоненты в зависимости от функциональности мода.
mod.conf
Создайте файл mod.conf со следующим содержимым:
name = mymod
description = Adds foo, bar, and bo.
depends = default
Этот файл используется для метаданных мода, включая название мода, описание и другую информацию.
init.lua
Создайте файл init.lua со следующим содержимым:
print("This file will be run at load time!")
minetest.register_node("mymod:node", {
description = "This is a node",
tiles = {"mymod_node.png"},
groups = {cracky = 1}
})
minetest.register_craft({
type = "shapeless",
output = "mymod:node 3",
recipe = { "default:dirt", "default:stone" },
})
Файл init.lua является точкой входа в мод и запускается при загрузке мода.
Резюме
Этот мод называется “mymod”. Он содержит два текстовых файла: init.lua и mod.conf. Скрипт печатает сообщение, а затем регистрирует узел и рецепт создания – это будет объяснено позже. Существует единственная зависимость, мод по умолчанию, который обычно можно найти в игре Minetest. В разделе textures/ Также есть текстура для узла.
Зависимости
Зависимость возникает, когда мод требует, чтобы другой мод был загружен перед ним. Для использования одного мода может потребоваться доступ к коду, элементам или другим ресурсам другого мода.
Существует два типа зависимостей: жесткие и необязательные. В обоих случаях сначала требуется загрузить мод. Если зависимый мод недоступен, жесткая зависимость приведет к сбою загрузки мода, в то время как необязательная зависимость может привести к включению меньшего количества функций.
Необязательная зависимость полезна, если вы хотите дополнительно поддерживать другой мод; она может включать дополнительный контент, если пользователь хочет использовать оба мода одновременно.
Зависимости указаны в списке, разделенном запятыми, в файле mod.conf.
depends = modone, modtwo
optional_depends = modthree
Пакеты модов
Моды могут быть сгруппированы в пакеты модов, которые позволяют упаковывать и перемещать несколько модов вместе. Они полезны, если вы хотите предоставить игроку несколько модов, но не хотите заставлять его загружать каждый из них по отдельности.
modpack1
├── modpack.conf (required) - сигнализирует о том, что это пакет модов
├── mod1 │
└── ... mod files
└── mymod (optional)
└── ... mod files
Пожалуйста, обратите внимание, что модпак - это не игра. Игры имеют свою собственную организационную структуру, которая будет описана в главе, посвященной играм.