Files

83 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# World Map Engine — путешествия между местами по нарисованной карте
World Map Engine показывает полноэкранную картинку игрового мира с отмеченными на ней местами. Игрок открывает карту, выбирает место и отправляется туда: игра переключается на сцену этого места. Сценарии могут открывать, закрывать, прятать и снова показывать места по ходу истории, и игра сохраняет эти изменения.
Её использует Cthangover. Это не то же самое, что тайловые карты RPG World: карта мира — одна картинка с областями, по которым можно щёлкать, и переход меняет сцену; тайловая карта — сетка, по которой герой идёт с клетки на клетку.
## Карта в игре
Открывается по иконке карты на панели инструментов.
![Карта мира Cthangover: долина с двумя городами среди гор и рек; подписи "Villa" и "Town entrance" отмечают два места, штриховка показывает, где они; легенда слева внизу (вы здесь, доступна, закрыта) и подсказка внизу.](assets/world-map.jpg)
- **Места** — области, нарисованные поверх картинки; их выдаёт штриховка. У некоторых мест есть ещё и круглая эмблема с иконкой.
- **Легенда**: зелёный — где вы сейчас, золотой — доступно, серый — закрыто.
- **Щёлкните место**, чтобы увидеть его карточку: состояние, описание и кнопку **Перейти**. Карту закрывают **Esc** или **×**.
![Выбран вход в город (Town entrance): его область обведена золотым, справа карточка — Available, "The northern entrance to the town", Transition, Travel.](assets/zone-selected.jpg)
**Перейти** переключает игру на сцену места:
![После перехода: сцена входа в город с её первой строкой и двумя ответами.](assets/after-travel.jpg)
Место закрыто — в карточке написано «Путь ещё не открыт.», а кнопки «Перейти» нет — когда сценарий его закрыл, когда у него нет сцены или когда его сцены нет в той игре, в которую играют.
## Как добавить карту мира в игру
Игре нужны две вещи в её модах:
1. **Картинка** — фон с именем `map` (например `backgrounds/map.png`).
2. **Места** — JSON-файлы в папке `map/`. Все позиции — доли ширины и высоты картинки, от 0 до 1, поэтому карта работает при любом размере.
Вот вход в город из Cthangover (сокращённый пример):
```json
{
"Items": [
{
"ID": "town_entry",
"points": [[0.7099, 0.2493], [0.7334, 0.2630], [0.7348, 0.2906], [0.7091, 0.3429], [0.6974, 0.3264]],
"title": "",
"scene": "town_entry",
"description": "mapzone/town_entry/info",
"locked": false,
"hidden": false
},
{
"ID": "town_entry_label",
"points": [],
"title": "mapzone/town_entry",
"label_pos": [0.7246, 0.2163]
}
]
}
```
- `points` — контур области, по которой можно щёлкать.
- `scene` — логическая сцена, на которую переключает «Перейти».
- `title`, `description` — ключи переводов; title — имя места на его карточке и эмблеме.
- `image` и `image_pos` — иконка и её позиция: так место получает круглую эмблему.
- `label_pos` — отдельно стоящее имя на карте. Зона, у которой есть только title и позиция подписи (как `town_entry_label`), — это имя, а не место: щёлкнуть по ней нельзя.
- `locked` — закрыто на старте; `hidden` — не показано на старте.
Cthangover держит имена своих мест в отдельных зонах-подписях и оставляет `title` самих мест пустым — поэтому на карточке выше нет имени наверху.
Карту мира также можно нарисовать и отредактировать в редакторе карт из Editor Tools.
## Изменение мест из сценария
```scenario
action map.open_zone zone_id=town_entry
action map.close_zone zone_id=town_entry
action map.show_zone zone_id=town_entry
action map.hide_zone zone_id=town_entry
```
Изменение попадает в сохранение и остаётся после загрузки; новая игра стартует со значениями из JSON.
## Если что-то пошло не так
1. **«Карта недоступна».** Ни у одного мода игры нет фона с именем `map`.
2. **В место нельзя попасть.** Его `scene` пуста или написана с ошибкой, либо сценарий его закрыл.
3. **Место не на своём месте.** Позиции — это доли картинки (0–1), а не пиксели.