# 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), а не пиксели.