Всех приветствую. Раньше форумы только читал, и вот впервые что-то тут пишу.
Для меня это просто мечта детства исполняется. Я все моды на замены фракций в свое время перепробовал и мечтал - вот бы их добавить без замен. И теперь это можно сделать.
Коротко - .exe пропатчен примерно в 60 местах, айдишники town type и race расширены так, что теперь можно сверху до 24 новых фракций налепить. Но это лишь половина фреймворка. Проект еще в разработке, но не могу не поделиться прогрессом.
Показалось, что формат видеообзора для такого удобнее, но если кому больше текстом нравится, то под видео продублирую тезисы текстом.
Важно: это демонстрация того, что это всё возможно, это не готовый мод на фракции. Я разрабатываю инструментарий, который потом отдам в руки комьюнити.
Новые фракции
Фреймворк патчит .exe игры так, что заменяет примерно 60 хардкодов айдишников фракций на свою расширяемую таблицу для фракций. Технически пока что расширение сделано на +24 фракции.
Это позволяет полноценно добавить:
Выбор фракции в лобби (в любых картах, где можно выбирать фракцию)
Привязку новых героев к фракциям и выбирать в лобби
Во встроенном в игру генераторе карт выбор новых фракций, их генерацию на карте
Свою иконку, свой замок
Музыку в замке
Редактируемое окно строительства, включая новые уникальные здания
Родная земля (в генераторе карт используется как раз)
Свои арены, в том числе при осаде (а там и башни, и стены, и иконки башен)
Работу таверны, стартовые армии героев с фракционными существами
Если в лобби выбрать случайную фракцию, то выпадение новых фракций тоже
Жилища на карте (опять же, если на карте случайные жилища определенных уровней, привязанные к фракции - то при выборе фракций корректно подставляются жилища новых фракций)
Разумеется, своих существ, причем привязанных к фракции новой
Новые существа корректно генерируются в стеках случайных существ
С новыми фракциями работает ИИ - он полноценно управляет городом, покупает существ, в бою применяет способности существ
Новый инструментарий моддинга - конструктор
Изначально добавление фракций было как просто баловство, но по итогу это получилось намного лучше, чем я ожидал, и я решил на этом не останавливаться. Проблема модовских фракций, которые заменяют ванильные, всегда была в том, что они как правило не приносили новых механик. В лучшем случае там могла быть рекомбинация способностей существ и героев, но обычно просто переименование и рескин. Способности те же, просто описаны текстом по-другому и с другими иконками. Это не плохо, я с удовольствием играл в такие моды, но это, как по мне, работает только пока фракции именно заменяют ванильные. Но как только фракции добавляем, то условная основанная на орде фракция болота с теми же варварами уже кажется странным дубляжом механики, при том, что кровь еще и работать с существами болота не будет.
Тогда я понял, что мало просто добавить фракции. Нужен инструментарий, который позволит добавлять новые механики: эффекты, статусы, способности, навыки, заклинания и т.п. И всё это комбинировать между собой.
Я сам разработчик игр, и не один раз в играх писал модульные системы способностей, которые потом настраиваются в data driven стиле. А чем герои хуже?
Соответственно, было решено каждый аспект фреймворка сделать модульным и поделить на декларативные кирпичики, из которых потом уже можно что хочется собрать, как угодно обозвать, кому угодно выдать. Например, тригеры (начало дня, начало недели, старт в бою, конец боя, получение урона и т.п.), эффекты (просто разовые действия, например, наложить статус), статусы (тут аналогия с ваниальными статусами, но они тоже составные - политика стака, политика снятия). И всё это комбинируется и выстраивается в различные цепочки логики, давай огромный простор для новых механик. Потом это цепляется к существам, героям, навыкам, городам - и вот уже особенности фракций.
База под вышеперечисленное уже сделана. Это всё привязывать можно к навыкам, заклинаниям (новые тоже можно добавить), пассивкам, фракционным новым навыкам, даже к городам. Даже кастомную прокачку (свое колесо с новыми навыками) тоже уже можно сделать, то есть свой класс героя. Самих таких кирпичиков не очень много пока что. Я завел себе огромную таблицу, собрал тонну материала по форумам о том, какие идеи по механикам вообще люди придумывали (а то у меня у одного фантазии не хватит), смотрю, как бы это могло быть выражено через эти кирпичики, и добавляю потихоньку. То есть на выходе должен быть прям огромный конструктор.
Из прям уникального уже сделанного - кастомный призыв существ (я так единорогов призывал, например). Причем можно даже на стороне противника призвать существ (мало ли кто и такому применение придумает)
Совместимость
Еще один важный аспект фреймворка - потенциальная совместимость. Внутри себя совместимость я по максимуму стараюсь сделать. То есть разные люди могут работать над разными фракциями, и можно будет спокойно использовать комбинации этих модов. Для этого был реализован алгоритм автоматического резолва конфликтов.
Этот алгоритм автоматически распределяет айдишники. Не надо вручную указывать числа фракциям, существам, заклинаниям и т.п. Только строковые айдишники - фреймворк сам позабодится о численном представлении в игре. При этом есть система миграции сохранений - скорее всего сохранения не слетят при добавлении новых модов.
Есть еще алгоритм слияния модов, если где-то айдишники всё же одинаковые или затрагиваются одинаковые части игры (и тут потенциальная совместимость с другими вообще модами, мой фреймворк патчит .exe поверх того, что там уже есть, не заменяя ничего, и такое вроде как с каким-нибудь armagedon blade совместимо будет), но его я слабо тестировал. Как минимум в случае конфликтов при запуске игры есть окно с уведомлением о конфликтах с последующим подробным логированием самого конфликта
Сами моды упакованы по итогу будут в .h5u файлы фракций. Одна фракция - один файл. Упаковку модов без фракций (отдельно класс героя, или там отдельно существа) пока не делал, всё в рамках фракций. Будет спрос - сделаю. Соответственно, можно просто добавлять\убирать эти .h5u файлы не боясь что-то сломать (при удалении разве что сохранения могут слететь). Добавил файл - есть фракция. Убрал - нет фракции, и остальные фракции это не затрагивает.
Чего пока нет (ПОКА)
Сетевой код не трогал вообще. Мультиплеер не работает.
Редактор карт пока не трогал и не патчил вообще. Тоже не работает.
Фреймворк ставится поверх ванильного 3.1 TOTE, полноценно пока что на другие еще не ставится, хотя механизм практически есть.
Нет установщика - я пока не могу поделиться прям пощупать кроме как если я сам соберу сборку с пропатченным .exe и отдам для тестов.
Нет документации, так что даже если кому-то давать доступ, то будет совсем не понятно, чего делать.
Планы
Мультиплеер.
Интеграция с редактором карт.
Совместимость с популярными модами. С NCF совместимость есть, с armagedon blade вроде как должна быть, но еще не тестировал. С heroes 5.5 попробую совместимость сделать.
Установщик, чтобы просто папку героев указал и всё.
В идеале полноценный редактор, чтобы вся вот эта data-driven веселуха была с нормальным понятным интерфейсом, валидацией, а не ковыряние в XML. Заодно редактор как раз в .h5u будет упаковывать (сейчас у меня это скрипты на питоне делают)
Больше и больше тех самых кирпичиков для механик
Редактирование UI игры, чтобы прям совсем полноценно даже новые фракционные механики выглядели
Документация по работе с фреймворком
Как это сделано
Патч сделан в виде .dll библиотек, написанных на плюсах. Проблема в том, что я сам не объясню, как это работает, поскольку не разбираюсь. Я активно использую LLM в разработке. Это не галимый вайбкод - я контролирую процесс в достаточной степени более высокоуровнево. Но сам процесс реверс инжениринга и реализации патча - это я уже не сам делаю. При необходимости я могу попробовать разобраться или упаковать пайплайн в документацию через нейронку, и знающие люди уже смогут это разобрать и понять, как это работает.
Как-то так. Кого эта тема интересует - поделитесь, какие бы вы фракции хотели полноценно добавить в игру как новые и, главное, какие уникальные механики (способности, статусы, навыки, классы, постройки и т.п.) вы бы хотели увидеть у таких фракций. Я постараюсь как можно больше добавить элементов в конструктор, чтобы эти механики и вправду можно было собрать.
Скорее всего периодически буду на форуме заявляться с прогрессом.