Of Steamworks and Magick Obscura
АРКАНУМ
арканум
arcanum

Читальный зал

arcanum

Поддержи Клуб!

arcanum

Проекты

arcanum
Файловый архив
Архивы

Мастерская

arcanum

Моддинг игр

arcanum
Arcanum
Главная | Форумы | О проекте | Новости | Графика | Мануалы | Моддинг | Поиск | Контакты

Мануал по моддингу игры Арканум

Делаем карту мира Arcanum

arcanum

Автор мануала: Zammy, первоисточник: Арканум-Сити.

От редакции Арканум-Клуб: мануал чрезвычайно древний и любители создания модов Арканум давно его знают. Тем не менее, до сих пор редактирование мира Arcanum продолжают всё новые и новые наши посетители (что чрезвычайно странно, но факт). Цели редактирования мира самые различные. На нашем Форуме недавно (!) возникли некоторые вопросы по теме настоящего мануала и, для любителей более светлых тонов нашего сайта — мы перенесли это руководство из Арканум-Сити. Огромный респект Автору, Zammy, и администрации сайта, нашим друзьям из Арканум-Сити.

Далее текст от Автора, без редактирования и исправлений. Удачного моддинга!


Сейчас, когда я пишу это руководство, я сам проверяю все возможные варианты. Хотя я и сделал первую не Арканумовую карту мира, я все равно не знаю всех тонкостей. Я думаю, что это руководство не только поможет создать карту мира, но и поможет отказаться от этой идеи.

Терминология

Давайте определимся с терминами, во избежание неразберихи. Использовать их я буду не так много:

  1. GUI Map — представляет собой просто картинку или несколько. Формат стандартный для Арканума — BMP 256 цветов. При делении, делайте сегменты равного размера.
  2. Chunk — сегмент GUI Map, лежащий в отдельном файле. Файлы называться могут произвольно, но одинаково и с добавлением в конец имени трехзначного числа (в примерах этого руководства я буду использовать map001.bmp, map002.bmp, map003.bmp и т.д.).
  3. Terrain — это поверхность вашей карты. Редактировать ее можно только в редакторе и она не имеет никакого отношения к GUI Map. Terrain можно увидеть в нижнем левом углу редактора. Также вы можете получить BMP c Terrain’ом найдя в меню редактора опцию «Export terrain bitmap». BMP появится в каталоге Maps вашего модуля и будет называться так же, как и карта из которой он получен.

Связь между GUI Map и Terrain

1) Каждой точке GUI Map соответствует один сектор Terrain’a. Если вы используете карту размером 500 на 500 точек, то ей должен соответствовать Terrain 500 на 500 секторов.

2) Как можно представить себе связь GUI Map и Terrain. Представьте себе два листа бумаги. На первом нарисован Terrain в WorldEd’e, а на втором картинка GUI Map. Теперь положите их один на другой : Terrain — снизу, GUI Map — сверху. В игре вы ходите по этому бутерброду так : фактически вы ходите по Terrain’у, горы и реки, именно на нём мешают вам перемещаться, а визуально вы ходите по GUI Map. Теперь вам будет легче понять, как будет все обстоять при их разном размере.

3) Если GUI Map больше чем Terrain, то при хождении по карте в игре вы не сможете выйти за рамки Terrain’a, но видеть будете весь GUI Map. Куда денется неиспользуемый фрагмент GUI Map, можно понять по рисункам. Красная линия обозначает границу Terrain’a

arcanum arcanum arcanum arcanum
TerrainGUI MapНаложениеВид карты в Игре

4) Если GUI Map меньше чем Terrain, то недостающая часть на GUI Map дополнится черным цветом. Смотри рисунок.

arcanum arcanum arcanum arcanum
TerrainGUI MapНаложениеВид карты в Игре

Давайте разберемся

О чем надо подумать прежде чем приступать к созданию карты и модуля вцелом.

1) А нужна ли вам карта мира вообще!

Она нужна вам лишь в том случае, если вы собираетесь делать несколько локаций (городов, деревень и т.п.). Если у вас будет лишь один город, то лучше откажитесь от этой затеи.

2) Размер карты

arcanum

Размер окна, в котором отображается карта — 501 на 365. Давайте считать этот размер минимальным для карты мира. Если вы будете использовать карту меньшего размера, то увидите то, что изображено на рисунке справа. Оно бы еще ничего, но карта начинает «метаться» по углам при ходьбе по ней. Я не рекомендую использовать настолько маленькую карту.

При использовании карты 501 на 365 (заполнение всего окна карты в игре), вы тоже столкнетесь с некоторыми неприятностями. Пока вы не начинаете ходить по карте или ходите по левой верхней четверти, карта выглядит как на Рис.1. Все замечательно!

arcanum arcanum
Рис.1Рис. 2

Но стоит вам перейти на правую или нижнюю половину, карта начинает двигаться, и вы увидите, примерно то, что изображено на Рисунке 2. Это происходит из-за того, что крест, обозначающий местонахождение игрока, должен находиться по центру экрана. При использовании карты 2000 на 2000 (размер карты Арканума) такого эффекта не будет (вы ведь плавали на острова Tanatos или Cattan). Возможно разработчики оставили возможность изменять границы, при достижении которых карта перестает перемещаться, со значений подходящих для размера карты Арканума. Пока эта возможность мне не известна. Чтобы избежать черных полос справа и снизу, вы можете сделать GUI Map больше чем Terrain на 251 по X и 183 по Y (501 и 365 поделить на 2). Заполните это пространство водой или картинками, подобными тем что на морях Арканума. Согласитесь, это не такая большая цена. В использовании карты большего размера нет ничего нового. Просто карта будет перемещаться. Я рекомендую вам остановить свой выбор на минимальном размере (501 на 365). На нем спокойно разместятся несколько городов, небольшие горы и пара островов.

3) Деление на сегменты

Я думаю, что деление на сегменты было введено для того, чтобы не держать в памяти всю карту мира. Рассмотрим карту Арканума. Карта 2000 на 2000 — это минимум 4 мегабайта, а при делении можно держать в памяти лишь 9 сегментов 250×250, и при переходе между ними, подгружать новые в то место, где лежали те, которые скрылись из виду. Я склоняюсь к этой теории потому, что сам использовал этот метод в своих трудах.

Размер сегмента оказался произвольным, в отличие от моего прошлого мнения, что сегменты могут быть только 250 на 250 точек, как в Аркануме. Итак, если вы используете карту минимального размера, то деление на сегменты вам не понадобится, так как вы можете сделать сегмент 501 на 365. Если же ваша карта достаточно велика и вы хотите поделить ее на сегменты, то делайте сегменты одинакового размера. Я пробовал поделить минимальную карту (501×365) на 4 сегмента размером 251 на 183 каждый, и все работало отлично. Как это все реализуется я рассмотрю далее.

Начинаем создавать карту Arcanum

Итак, вы решились делать карту мира и определились с размером. Прислушайтесь к моему совету: сначала нарисуйте Terrain в WorldEd’e, а потом, полученную при экспорте картинку, переделайте в GUI Map. Вы можете сделать и наоборот, но переводить нарисованный GUI Map в Terrain придется очень долго. Мне пришлось перерисовать GUI Map водорастворимой краской на монитор (это не шутка), а потом переносить с монитора в Terrain через WorldEd.

Я рассмотрю создание карты по шагам на примере карты 501 на 365, без разбиения на сегменты, но по ходу объяснения я буду указывать, как сделать тоже самое для карты разбитой на сегменты.

Если у вас Terrain уже готов, то пропустите первый пункт.

  1. arcanum Добавьте в ваш модуль новую карту выбранного размера (в нашем случае 501 на 365) и назовите ее для простоты «Main». Используя «Terrain Editor» Worlded’a сделайте ее пригодной для вашего модуля. Пример на рисунке.
  2. arcanum Сделайте экспорт и нарисуйте GUI Map. В каком редакторе вы ее будете рисовать — не имеет значения, но сохранять окончательный вариант я рекомендую в Photoshop’e. Этим вы спасете цвета при переводе в 256 цветов. Если его нет под рукой, то вы можете делать ее в Paint, прилагаемом с Windows из кусочков карты Арканум (как это делал я). Если вы хотите то можете разбить карту на сегменты.
  3. Создайте в вашем модуле каталог «WorldMap». Создайте в нем фаил «wolrdmap.mes». В этот файл вам придется прописать всего две строки:
    • {20}{0, 0}
    • {50}{1, 1, map, ZoomedName: ZoomMap, MapKeyedTo: 2}

Рассмотрим все по отдельности

{20}{0, 0} — точка начала отсчета координат. В игре помещая курсор над картой мы видим не абсолютные координаты, а относительные. Если центр находится в секторе с координатами (0, 0) то двигая курсором в Игре от верхнего правого угла карты вниз и влево, мы увидим, что координаты по X и Y — увеличиваются от 0. Прописав сюда, к примеру, 100 и 100, мы перенесем начало координат на сектор (100, 100) и логические координаты верхнего правого угла (т.е. что мы увидим поместив курсор в правый верхний угол карты) станут равны -100,-100. Зачем это нужно — не знаю, поэтому не использую, но прописать эту строку обязательно!

arcanum

{50}{1, 1, — 1 и 1 это размер карты в сегментах по X и Y (в нашем случае — у нас 1 сегмент)

map — это и есть корень имен файлов сегментов. Сохраните ваши сегменты в этот каталог с именами «map001.bmp», «map002.bmp» и так далее начиная с левого верхнего. Можете поменять «map» на то, что вам захочется, но не забудьте и файлы назвать соответственно.

ZoomedName: ZoomMap — задает имя уменьшенного варианта GUI Map. Сожмите ваш GUI Map до 365 на 365 и сохраните в этот каталог как «ZoomMap.bmp». Теперь вы сможете увидеть уменьшенный вариант вашей карты нажав в Игре на эту кнопку, находящуюся левее карты.

MapKeyedTo: 2 — 2 это значит, что ходя по карте мира вы будете перемещаться по карте, прописанной в MapList.mes второй по счету. Вот мой MapList.mes :

  • {5000}{ShopMap, 31, 29, Type: SHOPPING_MAP}
  • {5001}{Main, 10000, 10000, Type: START_MAP, WorldMap: 0}

Заметьте, что в строке карты, связанной с картой мира добавлен параметр WorldMap: 0 — это обязательно! Возможно в этом параметре лежит ключ к использованию более чем одной карты мира но пока я этого не знаю.

4. Нам осталось только прописать области на карте. Найдем файл «gamearea.mes» в каталоге MES вашего модуля. Посмотрим что там.

Небольшое описание и строчка:

  • {0}{0, 0, 0, 0 /A Place Unimportant/This is the unknown area.}

Эту строку я рекомендую не трогать, а создавать новые! Рассмотрим параметры. Первая скобка — это просто номер строки. Добавляйте новую строку и ставьте в первую скобку просто следующий номер (1,2,3…). Первые две цифры в скобках — координаты точки, где вы появитесь, если зайдете и телепортируетесь в эту область (например : приходя в Тарант вы появляетесь за мостом. Координаты этой точки и прописаны для области Тарант в Аркануме). Координаты задаются не в секторах, а в тайлах!

Следующие два числа — смещение названия области на карте мира по X и Y. Вот несколько примеров:

Карта Арканум Карта Арканум Карта Арканум Карта Арканум
0,0-100,0-50,-15-50,15

После первой косой черты «/» идет название области, которое вы увидите на карте мира (для которого и были эти смещения). После второй черты напишите краткое описание области, которое появится в Игре в окошке под картой при наведении курсора на эту область. Далее, если того требует ваш сценарий, можно добавить параметр «/Radius:» и число, показывающее в скольких секторах надо пройти мимо области, чтоб она стала видимой (по умолчанию «5»). Если поставите «-1», то эта область не обозначится на карте, даже если вы пройдете прямо по ней, но обозначить ее будет можно другими путями (в диалоге или картой).

Вот пара строк для нашего примера:

  • {0}{0, 0, 0, 0 /A Place Unimportant/This is the unknown area.}
  • {1}{10000,10000, 0, 0 /First Area/This is Area where you start game}
  • {2}{13000,9000, 0, 0 /Second Area/This is another Area}
Arcanum

5. А как связать карту мира с другими картами? Например, у вас в городе есть подземелья, которые, конечно на другой карте, как же сделать так, чтоб при использовании телепорта, или просто включении карты мира, все выглядело как будто вы находитесь в городе? Вот как это сделано в Аркануме.

  • GameArea.mes:
  • -Skipped-
  • {21}{62243,65664, 0, 0 /Tarant/The Most industrial City in Arcanum.}
  • -Skipped-

  • MapList.mes:
  • -Skipped-
  • {5002}{PSchuylers Lev 1-fixed, 96, 126, WorldMap: 0, Area: 21}
  • {5003}{PSchuylers Lev 2-fixed, 96, 126, WorldMap: 0, Area: 21}
  • -Skipped-
  • {5075}{Tarant Sewers-02, 91, 98, WorldMap: 0, Area: 21}
  • -Skipped-

Опять же, указывается карта мира 0 (WorldMap: 0) и номер области, на которую указывает вся эта карта (21 Tarant).

Вот и всё! Напоследок пара советов.

Советы

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

PS

Когда я все уже написал, то обнаружил одну вещь. Прописав в worldmap.mes еще 2-е строки с номерами 21 и 51 прописывающие еще одну карту мира, добавив еще одну карту в MapList.mes и указав ей WorldMap:1, то на этой второй карте можно увидеть вторую карту мира!!! Но ходить по ней нельзя. Нельзя также прописать области (т.к. gamearea.mes один). Скорее всего нельзя сделать еще одну работающую карту мира — некоторые возможности к этому, видимо, задатки, от которых разработчики впоследствии отказались.

Вопросы, замечания и предложения по поводу прочитанного можно высказать на форуме.

Оглавление раздела   ВКонтакте   Форум   На Главную


Arcanum
Arcanum жив!
Рекомендуем
Новости проекта

Все новости

Арканум Клуб: Фэнтези, RPG, творчество. Нарисуй свой Арканум!

Arcanum: Of Steamworks and Magick Obscura

© 2005–2022 Арканум-Клуб