Аддоны, эры, фракции и юниты

Добавлен , опубликован
Раздел:
Общее
Казалось бы, стоит начать с малого: создать одного юнита, потом ещё парочку, запилить из них фракцию, повторить нужное кол-во раз и сделать эру. Если вы в ладах с английским и любите пораскинуть мозгами, то можете почитать официальную документацию. Но ведь вы здесь не для того, чтобы думать, верно? В этой статье я расскажу, как сделать свою играбельную эру с блекджеком и эльфийками.

Итак, приступим: открываем папку Веснота (или где у вас там userdata) и проходим сюда userdata\data\add-ons. Здесь хранятся все аддоны, и здесь же мы создадим свой. В качестве примера я буду использовать наш аддон по варкрафту.
Создаём папку с названием аддона. userdata\data\add-ons\WarCraft_Era.
По сути своей аддон может содержать несколько эр, кучу кампаний и прочего. Сперва создадим структуру аддона (папки и базисные файлы).
  • _main.cfg
  • era
  • era\era.cfg
  • images
  • images\attaсks
  • images\portraits
  • images\projectiles
  • images\units
  • macros
  • units
Описания файлов и папок
_main.cfg - самый главный файл аддона. Это точка входа. Содержит пути ко всем файлам. Если что-то используется, но не прописано тут, то аддон будет глючить, если вообще запустится.
era - содержит файлы с данными об эре и фракциях.
era\era.cfg - данные об эре. Все cfg-файлы пишутся в формате языка разметки WML, однако не бойтесь - он примитивен как html.
images - все нестандартные картинки. Тут всё как в варике: сначала игра ищет нужные файлы в папке аддона, а если не находит - в стандартной.
images\attaсks - иконки для нестандартных типов атаки.
images\portraits - портреты (спасибо, кеп). Используются в энциклопедии, сюжетных диалогах и тому подобном.
images\projectiles - спрайты снарядов. Вы же знаете, что стрелковые атаки происходят с использованием снарядов?
images\units - спрайты юнитов, и этим всё сказано.
macros - понятия не имею, почему она так называется. Сюда кидают способности, типы движения, словом, все полезные штуки, которые нам сейчас не понадобятся.
units - тут хранятся файлы с данными о юнитах. Вообще, всех юнитов можно прописать в одном файле, но гораздо удобнее их редактировать, когда юнит лежит в отдельном файле.
Для удобства написания своего первого аддона, я рекомендую отложить активные действия и сначала дочитать статью, дабы понять что и как связано. А затем уже начать работу с конца статьи.

Файл аддона

Теперь откроем текстовым редактором файл userdata\data\add-ons\WarCraft_Era\_main.cfg и пропишем некоторые вещи:
#ifdef MULTIPLAYER
[binary_path]
	path=data/add-ons/WarCraft_Era/
[/binary_path]
{~add-ons/WarCraft_Era/era/era.cfg}
[+units]
	{~add-ons/WarCraft_Era/units/alliance}
	{~add-ons/WarCraft_Era/units/horde}
[/units]
#endif
Что же они означают?
#ifdef MULTIPLAYER
#endif
Блок описания мультиплеера. Есть ещё блоки кампании и редактора. В этих блоках описывается содержимое, которое подключается при запуске мультплеера/кампании/редактора.
Формально эти блоки можно разделить на 3 части:
Часть первая - путь.
[binary_path]
	path=data/add-ons/WarCraft_Era/
[/binary_path]
Указывает игре путь к содержимому аддона.
Вторая часть содержит прочие файлы, за исключением юнитов:
{~add-ons/WarCraft_Era/era/era.cfg}
Данная строка говорит игре о существовании такого файла. Он будет прочитан и из него будет взята информация об эре.
И третья часть - юниты.
[+units]
	{~add-ons/WarCraft_Era/units/alliance}
	{~add-ons/WarCraft_Era/units/horde}
[/units]
Если не писать папки с файлами юнитов в блоке [+units][/units], то игра не будет их воспринимать вообще. Ну, разве что там помимо юнита ещё что-то записано.

Файл эры

Теперь напишем свою эру. Открываем файл era/era.cfg и пишем:
[era]
	id=WarCraft Era
	name= _ "WarCraft Era"
	description= _ "This era contain races from WarCraft."
	require_era=yes
	
	{RANDOM_SIDE}
	{~add-ons/WarCraft_Era/era/wc-alliance.cfg}	
	{~add-ons/WarCraft_Era/era/wc-horde.cfg}	
	{QUICK_4MP_LEADERS}
	{TURNS_OVER_ADVANTAGE}
[/era]
Значения строк
id - айди он и в Весноте айди. Уникальный идентификатор. Не должен повторяться.
name - название эры. Будет отображаться в списке выбора эр. Шаблон _ "..." означает, что это эту строку можно перевести.
description - описание, отображаемое при выборе эры.
require_era - говорит о том, что в сетевой игре эра должна быть установлена у всех игроков.
{RANDOM_SIDE} - скрипт. Прописан в файлах игры. Без него не будет случайного выбора фракции и лидера.
{~add-ons/WarCraft_Era/era/wc-alliance.cfg} и {~add-ons/WarCraft_Era/era/wc-horde.cfg} - ссылки на файлы фракций.
{QUICK_4MP_LEADERS} - скрипт, дающий лидерам с дальностью хода в 4 гекса черту "быстрый".
{TURNS_OVER_ADVANTAGE} - скрипт. Необязателен. Понятия не имею, зачем он. Кому интересно, почитайте файл Wesnoth\data\multiplayer\eras.cfg
Полный перечень параметров эры тут.
Если вы хотите добавить в свою эру стандартные фракции, то используйте скрипт {ERA_DEFAULT} или пропишите нужные расы вручную {multiplayer/factions/undead-default.cfg}.

Файл фракции

Далее создадим файлы фракций, указанные в эре.
Файл era/wc-alliance.cfg:
[multiplayer_side]
    id=wc-Alliance
    name= _ "Alliance"
    image=units/human-loyalists/general.png
    {MAGENTA_IS_THE_TEAM_COLOR}
    leader=wc-Paladin, wc-ArchMage, wc-MountainKing, wc-BloodMage
    recruit=wc-Peasant, wc-Militia, wc-Footman, wc-Knight, wc-Rifleman, wc-MortarTeam, wc-Helicopter, wc-GryphonRider, wc-Priest, wc-Sorceress, wc-WarWagon, wc-SpellBreaker, wc-DragonHawk

    [ai]
         recruitment_pattern=fighter,fighter,scout,mixed_fighter
    [/ai]
[/multiplayer_side]
Значения строк
id и name имеют аналогичное значение, что и в эре.
image - спрайт юнита, отображаемый в лобби игры при выборе фракции. Спрайт может находиться как в изображениях игры, так и в изображениях аддона. Спрайты аддона перекрывают спрайты игры, имеющие такое же название и относительный путь.
{MAGENTA_IS_THE_TEAM_COLOR} - скрипт, задающий цвет magenta тимколором. Используется на спрайтах, поэтому соблюдайте стандарты спрайтов Веснота и оставьте этот в качестве тимколора. Иначе у вас могут возникнуть графические артефакты.
leader - список id юнитов, из которых будет выбираться лидер фракции.
recruit - список id нанимаемых юнитов.
recruitment_pattern - шаблон ролей, по которому искусственный интеллект будет нанимать юнитов.
Содержимое файла орды аналогичное.

Файл юнита

Завершающий на сегодня файл - файл юнита units\alliance\wc-Footman.cfg.
Собственно, пройдите в Wesnoth\data\core\units и скомуниздите оттуда наиболее подходящего юнита для переработки в нужного вам.
Скопировали? Переименовали? Отлично, открываем. Видим кучу текста.
Нас, разумеется, интересует не всё.
Параметры первостепенной важности
id, name и description - всё как в предыдущих файлах.
gender - пол. Советую не мудрить и выбирать между male и female. Некоторые спрайты имеют обе версии.
image - спрайт вашего юнита в положении "стоит". Также отображается при выборе лидера и покупке юнитов. Если вы знакомы со спрайтами и у вас уже есть все спрайты вашего юнита - можете скопировать спрайты в изображения аддона и заменить пути спрайтов (используется относительный путь из папки images).
profile - портрет юнита, его изображение "в HD формате". Используется в энциклопедии, сюжетных диалогах и тому подобных вещах.
movement_type - тип передвижения (пешком, верхом, на крыльях любви). От этого параметра также зависит сопротивляемость урону, но сопротивляемость можно прописать для каждого юнита отдельно.
movement - дальность передвижения в гексах.
hitpoints - здоровье юнита. (Кеп снова в деле)
experience - сколько опыта должен набрать юнит, чтобы проапгрейдиться.
level - уровень юнита.
alignment - Добропорядочность юнита. Может быть lawful/neutral/chaotic/liminal.
advances_to - список id юнитов, в которых может быть улучшен юнит.
cost - стоимость в золоте.
usage - роль юнита. Используется ИИ для закупки юнитов.
Блок атаки
[attack]
        name=pike
        description=_"pike"
        type=pierce
        range=melee
        damage=10
        number=3
        [specials]
            {WEAPON_SPECIAL_FIRSTSTRIKE}
        [/specials]
    [/attack]
Думаю, нет смысла что-то объяснять? Ну, разве что блок [specials]. Он отвечает за атакующие способности юнита.
Поменять характеристики юнитов, добавить абилок по вкусу. Повторить нужное кол-во раз.

Заключение

Если вы прислушались к моему совету не делать всё сразу, то можете начать творить юнитов (вы ведь уже придумали себе юнитов для эры?), затем объедините их в файлах фракций, а их пропишите в файле эры. И не забудьте прописать использованные файлы в _main.cfg!
0
37
10 лет назад
0
Молодец, вообще, полезно набивать этот проект обучающими статьями. Потому что по редактору Веснота очень мало описано статьей на русском. По-хорошему, я знаю только один русскоязычный сайт, где что-то есть (но и то, немного).
0
23
10 лет назад
0
Розовое выделение? Зачем? В файле аддона под катом выделение неправильное в строке {~add-ons/WarCraft_Era/era/era.cfg}.
0
37
10 лет назад
0
SomeFire, это не я. И... на сайте нет розового форматирования (его и не должно было быть там, раз ты используешь форматирование для кода, который отключает любое форматирование). Это что-то новое. Попробуй сам подредактировать - если не получается, я попробую пробить в админке.
0
28
10 лет назад
Отредактирован nvc123
0
SomeFire, на тёмном розовое а на светлом зелёное
короче это просто подсветка синтаксиса
0
23
10 лет назад
0
Я так понял, сервер считает их регулярками. Но я не вижу даже возможности исправить ресурс после публикации.
1
3
10 лет назад
1
movement_type - тип передвижения (пешком, верхом, на крыльях любви).
Здесь следует отметить, что movement_type определяет не только стоимость перемещения юнита на разных ландшафтах, но и защиту юнита и его резисты. movement_type'ы задаются либо в файле general-movetypes в папке macros, либо в файле расы (не фракции!) в папке units
0
16
10 лет назад
0
Airat, резисты, если не ошибаюсь, задаются в файле самого юнита.
0
3
10 лет назад
0
Патиссончик:
Airat, резисты, если не ошибаюсь, задаются в файле самого юнита.
Nope, специально проверил
0
16
10 лет назад
0
Видимо, в самом файле юнита можно изменять.
screenshot.su/show.php?img=ef18a2d2347a9c84356e274d024579c0.jpg
0
3
10 лет назад
Отредактирован Airat
0
Патиссончик:
Видимо, в самом файле юнита можно изменять.
screenshot.su/show.php?img=ef18a2d2347a9c84356e274d024579c0.jpg
И правда, но, как я понимаю, это сделано для создания юнитов с особыми резистами, остальные резисты все равно берутся из мувменттайпа. Но для более менее однородной расы будет проще резисты вписать в мувменттайп. В случае Варкрафт эры проблем с этим быть не должно, ибо стандартные мувменттайпы отлично подойдут без каких либо изменений.
0
23
10 лет назад
0
Эльрат, будет возможность редактировать собственные ресурсы?
0
37
10 лет назад
0
SomeFire, а ее разве нету? Проверил права - возможность редактировать свои ресурсы у участников есть.
0
16
10 лет назад
0
Airat, как я понял, можно менять и скорость, и защиту (и резист) на определенных клетках и в самом юните после указания мувтипа.
0
23
10 лет назад
0
Эльрат, я не могу редактировать эту статью. Во всяком случае, не вижу нигде нужной кнопочки. Другие свои ресурсы могу, а этот - нет.
0
37
10 лет назад
0
Загруженные файлы
0
23
10 лет назад
0
Вот теперь есть. Утром не было.
0
23
10 лет назад
0
Комменты стёрлись... Понятия не имею, как избавиться от подсветки.
0
37
10 лет назад
0
SomeFire, это нормально. Так - потому что после редактирования ресурс стоит на заявке для публикации. Создается как бы подкопия ресурса.
0
23
10 лет назад
0
Эльрат, знаю, но опять-таки, я не видел возможности переключиться на опубликованную страницу, как в своих проектах варика. Тогда я мог смотреть и то, и то.
0
37
10 лет назад
0
SomeFire, я тоже. Полагаю, это из-за типа ресурса - Статья.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.