Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

DF2 :: ФОРУМЫ _ Horn of the Abyss _ Целесообразность создания мода на основе HotA

Автор: arseniy 13 Oct 2016, 19:20

Исходные данные: есть мод для героев, содержащий большое количество изменений (характеристики существ, стоимости и зависимости в замках, специализации героев, стоимость и доступность заклинаний и т.п.). Некоторое изменения уже делаются не правкой файлов, а прямой прошивкой в запущенную игру из стороннего процесса. Сделано это пока кустарно - процесс нужно периодически перезапускать во время игры.
Для того, чтобы реализовать весь необходимый функционал в моде, требуется, чтобы сторонний процесс запускался в начале каждого хода каждого игрока как минимум, а то и чаще (требуется динамическое изменение карты приключений).
Вопрос в том, на основе какого клиента целесообразно делать мод. Ванильных героев уже рассматривать глупо, нужно брать как минимум HD Mod (сразу вопрос, можно ли облегчить некоторые задачи за счет HD Mod, например не так сурово прошивать клиент со стороны). WoG не рассматриваю. Но больше хотелось бы HoTa, в первую очередь не из-за нового замка (он для моего мода как раз создает дикую головную боль с балансом), а из-за очень здоровских новых объектов на карте и в целом из-за большого количества хороших правок. Поэтому хотелось бы узнать, как устроен ехе HotA и насколько это реально?

Автор: Etoprostoya 13 Oct 2016, 19:25

Откройте для себя Эру. http://wforum.heroes35.net/showthread.php?tid=3155
Команда ХотА, насколько я понял, хочет оставить её, ХотУ, немодифицируемой.

Автор: arseniy 13 Oct 2016, 20:31

Вроде уже пробовал когда-то, но не срослось. Как я понимаю, если не брать в расчет простоту установки/возможности иметь несколько модов сразу, era от wog по упрощению модификаций ушла недалеко. То есть, это тот же набор erm скриптов, так? Можно ли из erm скрипта работать с данными в файлах (не игровых, а сторонних)? Можно ли из него вызвать C++ код, который что-нибудь посчитает? Насколько это медленней, чем напрямую фигачить С++ прошивающими вызовами из другого потока?

Автор: Etoprostoya 13 Oct 2016, 22:01

>>То есть, это тот же набор erm скриптов, так?
Нет.
>>Можно ли из erm скрипта работать с данными в файлах (не игровых, а сторонних)?
Да, через ERM там теперь можно вызывать любые внешние функции.
>>Можно ли из него вызвать C++ код, который что-нибудь посчитает?
Да, это, пожалуй, основная "фишка" Эры.
>>Насколько это медленней, чем напрямую фигачить С++ прошивающими вызовами из другого потока?
Собственно Эра тем и занимается, что "напрямую фигачит".
Подробнее лучше на том форуме спросить, там её активные пользователи и создатель. Хотя здесь тоже есть, но по теме общаются не в этом подфоруме, а в "Модах".

Автор: fireman 13 Oct 2016, 22:02

arseniy, если хочется что-то без erm, то посмотри в сторону mop

Автор: baratorch 13 Oct 2016, 22:39

Да, команда хота, не хочет чтобы хоту модифицировали, и не хочет делится ее элементами.

ХД мод облегчить модинг не может (разве что если мод сделать плагином для хд, то не надо будет парится как присоединять свою модификацию к игре), а вот например мой инструмент patcher_x86.dll может. А еще сильнее могу облегчить модинг я) поделившись наработками, но только если тебе по душе тот же лагерь модеров )

1 лагерь - вог, эра. если нужна база вог и ерм.
2. лагерь хд, хота, если фичи вога совсем не нужны и хочется модить непосредственно оригинал (SoD), хочется максимальной совместимости с ХД, а так же если предпочитаемый ЯП - с++
3. MoP, если нужны фичи вог, редактор монстров, редактор еще чего-то там, но не нужен ерм, не нужен ХД мод и любишь ассемблер.

Автор: feanor 14 Oct 2016, 00:04

Цитата
Вроде уже пробовал когда-то, но не срослось. Как я понимаю, если не брать в расчет простоту установки/возможности иметь несколько модов сразу, era от wog по упрощению модификаций ушла недалеко. То есть, это тот же набор erm скриптов, так? Можно ли из erm скрипта работать с данными в файлах (не игровых, а сторонних)? Можно ли из него вызвать C++ код, который что-нибудь посчитает? Насколько это медленней, чем напрямую фигачить С++ прошивающими вызовами из другого потока?

Нет, не только, эра позволяет подключать дллки с любым желаемым кодом и предоставляет двусторонний интерфейс нативный код <-> ерм

Самой адекватной для моддинга платформой является связка эра+бараторчевский патчер, чуть хуже - сод+хд+бараторчевский патчер.

Автор: hippocamus 14 Oct 2016, 00:47

Цитата(arseniy @ 13 Oct 2016, 19:20) *
(сразу вопрос, можно ли облегчить некоторые задачи за счет HD Mod, например не так сурово прошивать клиент со стороны)
Но больше хотелось бы HoTa, в первую очередь не из-за нового замка (он для моего мода как раз создает дикую головную боль с балансом), а из-за очень здоровских новых объектов на карте и в целом из-за большого количества хороших правок. Поэтому хотелось бы узнать, как устроен ехе HotA и насколько это реально?
HD-mod поддерживает подгрузку dll, устанавливающей хуки на различные функции, в том числе на функцию начала нового раунда, а уж dll может обеспечить и существование постоянного активного процесса, вносящего изменения в игровые данные. Причём это примнимо как под СОД, так и под Хоту.
Команда НЕ ПРИВЕТСТВУЕТ моддинга Хоты.
Но можно сделать модификацию под СОД, которая и под ХотУ будет работать тоже, в результате чего будет доступен и Причал.
Но, ещё одно "но" - крайне маловероятно, что такой моддинг (с использованием триггеров начала раунда в бою) будет совместим с хотовским мультиплейером в целом и одновременным ходом в частности. (Нет, оно-то возможно, только если досконально разобраться в работе этого ОХ, а код его не является открытым, и им команда не поделится точно).

Автор: arseniy 14 Oct 2016, 05:59

Спасибо всем за ответы.
Писать на ассемблере я не готов. С++ предпочтительнее, но я посмотрел патчер и понял, что далеко не факт, что изучение api патчера (точнее, как этим пользоваться) займет меньше времени, чем erm (а скорее, существенно больше). Хотелось бы примеры применения. То есть, плюс скриптов в том, что за тебя уже знают куда писать и в каком виде, а с патчером нужно откуда-то и эту информацию брать. С другой стороны, нужных мне скриптов может не быть в принципе.
Мне в любом случае нужна поддержка HD мода, поэтому термин "максимальная совместимость с ХД" меня волнует.
Я опишу более предметно, что нужно сделать, если вы можете точно сказать, с помощью чего это сделать проще, если вообще возможно, то здорово.
Критические фичи:
- возможность менять тип почвы на карте клетками каждый ход (я уже это делал прошиванием в код, так что то, что это возможно, сомнений не вызывает, вопрос, как делать это оптимально)
- получение координат и данных всех объектов с флагом и нейтральных отрядов на карте каждый ход
- изменение родных почв замков,
- изменение почвы замка при осаде (статично - на родную почву из предыдущего пункта)
- изменение эффектов родной почвы (изменение значений характеристик существ в битвах),
- изменение типа замка при его захвате (если невозможно - какой-то аналог воговского разрушения-отстройки)
Фичи, которые желательны:
- изменение штрафов передвижения по различным почвам
- дополнительная характеристика существ инициатива (просто задающая порядок хода в бою вместо скорости, а не как в пятых героях)
- дополнительная характеристика существ подвижность - влияет на очки перемещения героя вместо скорости
- удаление специализаций героев (так как возможна альтернатива - замена на специальность, не дающую в большинстве ситуаций никаких преимуществ, не критично)
- запрещение появления в таверне героев других фракций

Автор: Iv 14 Oct 2016, 09:59

Цитата(arseniy @ 14 Oct 2016, 05:59) *
Критические фичи:
- возможность менять тип почвы на карте клетками каждый ход (я уже это делал прошиванием в код, так что то, что это возможно, сомнений не вызывает, вопрос, как делать это оптимально)
- получение координат и данных всех объектов с флагом и нейтральных отрядов на карте каждый ход

В ERM есть

Цитата(arseniy @ 14 Oct 2016, 05:59) *
- изменение родных почв замков,

http://forum.df2.ru/index.php?showtopic=32268&view=findpost&p=638606

Цитата(arseniy @ 14 Oct 2016, 05:59) *
- дополнительная характеристика существ инициатива (просто задающая порядок хода в бою вместо скорости, а не как в пятых героях)
- дополнительная характеристика существ подвижность - влияет на очки перемещения героя вместо скорости

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

Полагаю, с перемещением можно сделать аналогично.

А вообще, тебе, с такими хотелкам - в VCMI, а не в моддинг

Автор: baratorch 14 Oct 2016, 10:59

Мне сложно сказать что для решения этих задач есть в эра-ерм. Например инициативу и подвижность, мне кажется либо не сделать с помощью erm, либо реализация будет очень черезжопной. Но я могу ошибаться.
В любом случае, если тебе нужно сделать то, что еще никто не делал, то придется значительное время потратить на реверсинг кода игры.

Работа с патчером - это именно, как ты выражаешься "прошивание в код" игры. Просто патчер делает этот процесс стандартизованным, удобным, минимизирует "баго-потенциал" этого процесса, а так же позволяет знать кто и куда еще шьет в игру (например ХД), позволяет разным модам шить в одно и тоже место без конфликта, дополняя функционал друг-друга а не заменяя. Интерфейс патчера простой и логичный. Примеры должны прояснить всё. И здесь, да, нужно ориентироваться в коде оригинальной игры, чтобы понимать что и где менять. И если не писать, то читать ассемблер, все равно придется (хотя в основном приходится читать все же Си-стайл код HexRays'а в IDA).

Здесь еще момент, era - плохая платформа, если ты хочешь хорошую работу мода при игре по сети. Если игра по сети тебя не волнует, то и "максимальная совместимость с ХД" не нужна, той совместимости что есть для era будет достаточно.

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)