minetest_modding_book/_ru/basics/getting_started.md

183 lines
9.4 KiB
Markdown
Raw Normal View History

---
2024-11-29 07:57:26 +03:00
title: Основы
layout: default
root: ../..
idx: 1.1
2024-11-29 07:57:26 +03:00
description: Как создать проект мода, включая init.lua, mod.conf и прочее.
redirect_from:
2024-11-29 07:57:26 +03:00
- /ru/chapters/folders.html
- /ru/basics/folders.html
---
2024-11-29 07:57:26 +03:00
## Введение <!-- omit in toc -->
2024-11-29 07:57:26 +03:00
При создании модов очень важно понимать структуру проекта мода. В этой главе
вы узнаете как работает моддинг в Minetest и создадите свой первый мод.
2024-11-29 07:57:26 +03:00
- [Что такое Игры и что такое Моды?](#what-are-games-and-mods)
- [Где хранятся моды?](#where-are-mods-stored)
- [Создание первого мода](#creating-your-first-mod)
- [Директория](#mod-directory)
- [mod.conf](#modconf)
- [init.lua](#initlua)
2024-11-29 07:57:26 +03:00
- [Итого](#summary)
- [Зависимости](#dependencies)
- [Модпаки](#mod-packs)
2024-11-29 07:57:26 +03:00
## Что такое Игры и что такое Моды?
2024-11-29 07:57:26 +03:00
Сила Minetest — в возможности легко создавать игры без необходимости создания
собственной воксельной графики, воксельных алгоритмов или крутого сетевого
кода.
2024-11-29 07:57:26 +03:00
В Minetest Игра — это набор модулей, работающих вместе и создающих контент и
игровую механику.
Модуль (или мод) — это набор скриптов и материалов.
Конечно, можно создать игру только из одного мода, но такое встречается редко,
ведь так труднее настраивать и заменять отдельные элементы игры, не затрагивая
всё остальное.
2024-11-29 07:57:26 +03:00
Кроме того, вы можете распространять свой мод без привязки к конкретной игре.
В этом случае он также будет называться *модом* в традиционном смысле —
модификация. Такие моды изменяют или добавляют различные элементы игры.
2024-11-29 07:57:26 +03:00
Как моды в составе игры, так и просто сторонние моды используют один и тот же
API.
2024-11-29 07:57:26 +03:00
В этой книге описаны основы Minetest API, и она подходит как для разработчиков
игр, так и для моддеров.
2024-11-29 07:57:26 +03:00
## Где хранятся моды?
<a name="mod-locations"></a>
2024-11-29 07:57:26 +03:00
У каждого мода есть своя директория, в которой лежат Lua-код, текстуры,
модели и звуки. Minetest ищет моды в нескольких определённых папках.
В документации эти папки обозначаются как *mod load paths*.
2024-11-29 07:57:26 +03:00
Для каждой созданной карты или сохранённой игры Minetest ищет моды в трёх
местах в следующем порядке:
2024-11-29 07:57:26 +03:00
1. Моды Игры: Эти моды являются неотъемлимой частью Игры.
Папки: `minetest/games/minetest_game/mods/`, `/usr/share/minetest/games/minetest/`
2. Глобальные моды: место куда почти всегда устанавливаются моды.
Если не уверены, кладите их сюда.
Папка: `minetest/mods/`
3. Моды Мира: эти моды относятся к конкретной созданной карте.
Папка: `minetest/worlds/world/worldmods/`
2024-11-29 07:57:26 +03:00
`minetest` — это директория для пользовательских фалов. Чтобы её найти,
запустите Minetest и нажмите "Папка данных пользователя" на вкладке
"Подробней".
2024-11-29 07:57:26 +03:00
Во время загрузки модов Minetest проверяет по порядку каждое из перечисленных
расположений. Если он обнаружит несколько модов с одинаковым именем, то мод,
найденный позже, заменит собой предыдущий. Таким образом можно подменять моды
игры, помещая мод с таким же названием в папку Глобальных модов.
2024-11-29 07:57:26 +03:00
## Создание первого мода
2024-11-29 07:57:26 +03:00
### Директория
2024-11-29 07:57:26 +03:00
Перейдите в глобальную папку модов (Подробней > Папка данных пользователя > mods)
и создайте новую папку под названием "mymod". `mymod` — это имя мода.
2024-11-29 07:57:26 +03:00
У каждого мода должно быть уникальное *имя*, технический идентификатор (id),
по которому можно ссылаться на этот мод. Имя мода может состоять из букв, цифр
и подчёркиваний. Хорошее имя даёт представление о том, что делает мод.
Директория, в которой лежат компоненты мода, должна иметь такое же имя.
Моды можно искать по их имени на сайте [content.minetest.net](https://content.minetest.net).
mymod
├── textures
2024-11-29 07:57:26 +03:00
│   └── mymod_node.png
├── init.lua
└── mod.conf
2024-11-29 07:57:26 +03:00
Обязательным является только файл init.lua. Тем не менее, рекомендуется
добавлять файл mod.conf и другие компоненты в зависимости от функционала мода.
### mod.conf
2024-11-29 07:57:26 +03:00
Создайте файл mod.conf следующего содержания:
```
name = mymod
description = Adds foo, bar, and bo.
depends = default
```
2024-11-29 07:57:26 +03:00
Этот файл содержит мета-данные мода, такие как имя, описание и прочее.
### init.lua
2024-11-29 07:57:26 +03:00
Создайте файл init.lua следующего содержания:
```lua
print("This file will be run at load time!")
core.register_node("mymod:node", {
description = "This is a node",
tiles = {"mymod_node.png"},
groups = {cracky = 1}
})
core.register_craft({
type = "shapeless",
output = "mymod:node 3",
recipe = { "default:dirt", "default:stone" },
})
```
2024-11-29 07:57:26 +03:00
Файл init.lua запускается при загрузке мода.
2024-11-29 07:57:26 +03:00
### Итого
2024-11-29 07:57:26 +03:00
Этот мод носит имя "mymod". Он содержит два текстовых файла: init.lua
и mod.conf. Скрипт выводит сообщение, а затем регистрирует новый рецепт крафта
(об этом будет написано дальше). У этого мода указана единственная зависимость
от [мода default](https://content.minetest.net/metapackages/default/), который,
обычно, является частью Minetest Game. Также есть текстура для блока в папке
textures/.
2024-11-29 07:57:26 +03:00
## Зависимости
2024-11-29 07:57:26 +03:00
Зависимости указываются, если перед загрузкой нода необходимо загрузить другой
мод. Моду могут потребоваться код, предметы или ещё что-нибудь из другого мода.
2024-11-29 07:57:26 +03:00
Существует два типа зависимостей: жёсткие и необязательные.
В обоих случаях требуемый мод загружается первым. Если требуемый мод
недоступен, жёсткая зависимость не позволит загрузить мод, в то время как
при необязательной зависимости мод всего лишь потеряет часть функций.
2024-11-29 07:57:26 +03:00
Необязательные зависимости полезны в случаях, когда вы хотите добавить
поддержку другого мода: например, вы можете добавлять дополнительный контент,
если пользователь решит задействовать оба мода одновременно.
2024-11-29 07:57:26 +03:00
Несколько зависимостей перечисляются через запятую в файле mod.conf.
depends = modone, modtwo
optional_depends = modthree
2024-11-29 07:57:26 +03:00
## Модпаки
2024-11-29 07:57:26 +03:00
Несколько модов могут быть собраны в модпак, который позволяет распространять
эти моды вместе. Модпак позволяет загрузить и установить несколько модов
за раз, без необходимости скачивать их по одному.
modpack1
2024-11-29 07:57:26 +03:00
├── modpack.conf (обязательный) — обозначает, что это модпак
├── mod1
2024-11-29 07:57:26 +03:00
│   └── ... файлы мода
└── mymod (optional)
2024-11-29 07:57:26 +03:00
   └── ... файлы мода
2024-11-29 07:57:26 +03:00
Не нужно путать модпак и *Игру*.
У Игры есть собственная структура, которая будет описана в главе Игры.