IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Целесообразность создания мода на основе HotA
arseniy
сообщение 13 Oct 2016, 19:20
Сообщение #1

Newbie
Сообщений: 7
Спасибо сказали: 9 раз




Исходные данные: есть мод для героев, содержащий большое количество изменений (характеристики существ, стоимости и зависимости в замках, специализации героев, стоимость и доступность заклинаний и т.п.). Некоторое изменения уже делаются не правкой файлов, а прямой прошивкой в запущенную игру из стороннего процесса. Сделано это пока кустарно - процесс нужно периодически перезапускать во время игры.
Для того, чтобы реализовать весь необходимый функционал в моде, требуется, чтобы сторонний процесс запускался в начале каждого хода каждого игрока как минимум, а то и чаще (требуется динамическое изменение карты приключений).
Вопрос в том, на основе какого клиента целесообразно делать мод. Ванильных героев уже рассматривать глупо, нужно брать как минимум HD Mod (сразу вопрос, можно ли облегчить некоторые задачи за счет HD Mod, например не так сурово прошивать клиент со стороны). WoG не рассматриваю. Но больше хотелось бы HoTa, в первую очередь не из-за нового замка (он для моего мода как раз создает дикую головную боль с балансом), а из-за очень здоровских новых объектов на карте и в целом из-за большого количества хороших правок. Поэтому хотелось бы узнать, как устроен ехе HotA и насколько это реально?
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 13 Oct 2016, 19:25 (Сообщение отредактировал Etoprostoya - 13 Oct 2016, 19:25)
Сообщение #2

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




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


--------------------
Etoprostopodpis'


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
arseniy
сообщение 13 Oct 2016, 20:31 (Сообщение отредактировал arseniy - 13 Oct 2016, 20:32)
Сообщение #3

Newbie
Сообщений: 7
Спасибо сказали: 9 раз




Вроде уже пробовал когда-то, но не срослось. Как я понимаю, если не брать в расчет простоту установки/возможности иметь несколько модов сразу, era от wog по упрощению модификаций ушла недалеко. То есть, это тот же набор erm скриптов, так? Можно ли из erm скрипта работать с данными в файлах (не игровых, а сторонних)? Можно ли из него вызвать C++ код, который что-нибудь посчитает? Насколько это медленней, чем напрямую фигачить С++ прошивающими вызовами из другого потока?
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 13 Oct 2016, 22:01
Сообщение #4

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




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


--------------------
Etoprostopodpis'


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
fireman
сообщение 13 Oct 2016, 22:02
Сообщение #5

Immortal
Сообщений: 2 768
Спасибо сказали: 959 раз




arseniy, если хочется что-то без erm, то посмотри в сторону mop
Go to the top of the pageAdd Nick
 
+Quote Post
baratorch
сообщение 13 Oct 2016, 22:39 (Сообщение отредактировал baratorch - 13 Oct 2016, 23:05)
Сообщение #6

Immortal
Сообщений: 2 412
Спасибо сказали: 4617 раз




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

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

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


--------------------
HoMM 3 HD:
http://sites.google.com/site/heroes3hd
последняя версия - 3.61f


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 14 Oct 2016, 00:04
Сообщение #7

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




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

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

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


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 14 Oct 2016, 00:47
Сообщение #8

пират с чёрной меткой
Сообщений: 23 630
Спасибо сказали: 12911 раз




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


--------------------
Давший быка на убой не выпросил и печень на жаркое.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
arseniy
сообщение 14 Oct 2016, 05:59 (Сообщение отредактировал arseniy - 14 Oct 2016, 08:21)
Сообщение #9

Newbie
Сообщений: 7
Спасибо сказали: 9 раз




Спасибо всем за ответы.
Писать на ассемблере я не готов. С++ предпочтительнее, но я посмотрел патчер и понял, что далеко не факт, что изучение api патчера (точнее, как этим пользоваться) займет меньше времени, чем erm (а скорее, существенно больше). Хотелось бы примеры применения. То есть, плюс скриптов в том, что за тебя уже знают куда писать и в каком виде, а с патчером нужно откуда-то и эту информацию брать. С другой стороны, нужных мне скриптов может не быть в принципе.
Мне в любом случае нужна поддержка HD мода, поэтому термин "максимальная совместимость с ХД" меня волнует.
Я опишу более предметно, что нужно сделать, если вы можете точно сказать, с помощью чего это сделать проще, если вообще возможно, то здорово.
Критические фичи:
- возможность менять тип почвы на карте клетками каждый ход (я уже это делал прошиванием в код, так что то, что это возможно, сомнений не вызывает, вопрос, как делать это оптимально)
- получение координат и данных всех объектов с флагом и нейтральных отрядов на карте каждый ход
- изменение родных почв замков,
- изменение почвы замка при осаде (статично - на родную почву из предыдущего пункта)
- изменение эффектов родной почвы (изменение значений характеристик существ в битвах),
- изменение типа замка при его захвате (если невозможно - какой-то аналог воговского разрушения-отстройки)
Фичи, которые желательны:
- изменение штрафов передвижения по различным почвам
- дополнительная характеристика существ инициатива (просто задающая порядок хода в бою вместо скорости, а не как в пятых героях)
- дополнительная характеристика существ подвижность - влияет на очки перемещения героя вместо скорости
- удаление специализаций героев (так как возможна альтернатива - замена на специальность, не дающую в большинстве ситуаций никаких преимуществ, не критично)
- запрещение появления в таверне героев других фракций
Go to the top of the pageAdd Nick
 
+Quote Post
Iv
сообщение 14 Oct 2016, 09:59
Сообщение #10

Immortal
Сообщений: 6 260
Спасибо сказали: 12647 раз




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

В ERM есть

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

http://forum.df2.ru/index.php?showtopic=32...st&p=638606

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

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

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

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


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
baratorch
сообщение 14 Oct 2016, 10:59 (Сообщение отредактировал baratorch - 14 Oct 2016, 11:26)
Сообщение #11

Immortal
Сообщений: 2 412
Спасибо сказали: 4617 раз




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

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

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


--------------------
HoMM 3 HD:
http://sites.google.com/site/heroes3hd
последняя версия - 3.61f


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19 April 2024 - 13:16
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика