IPB

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

История благодарностей участнику baratorch. Спасибо сказали: 4617
Дата поста: В теме: За сообщение: Спасибо сказали:
15 Jul 2017, 09:04 Лобби-сервер для HotA
обсуждение разработки
Seiffear, magoth, XMenik, Sav, Corkes, Cthulhu_55, KypaToP_HM
14 Jul 2017, 21:14 Лобби-сервер для HotA
обсуждение разработки
по той же ссылке доступен оффлайн апдейт до alpha 26
* исправил критический баг ( краш во время игры через лобби)
* подправил ряд мелочей

+:
уже до alpha 27
Mantiss, Shurup, Docent Picolan, hippocamus, Agar, magoth, Vade Parvis, XEPOMAHT, lion-killer, Mefista, nosferatu, Poseidon, J2K, XMenik, Sav, Corkes, DrSlash, Odin, Cthulhu_55, KypaToP_HM, BratetsVolk, tmienei
13 Jul 2017, 22:07 Лобби-сервер для HotA
обсуждение разработки
Запускаю открытый альфа-тест HD мода 5.0 (онлайн лобби для хоты).
Скромная видеопрезентация (видеоинструкция).
Скачать оффлайн апдейт до пятой альфы
Чего в видео нет:
1. Доступ в лобби пока заблокирован для иностранцев.
2. Минимальное разрешение для входа в лобби - 830x664, но чем больше (шире), тем лучше. Интерфейс окна лобби - адаптивный, но больше заточен под широкоформатники.
3. Плагин HW_rules не совместим с игрой через онлайн-лобби! Плагин HotA HW - полностью совместим.
4. Это первое мое сетевое клиент-серверное приложение и мой первый сервер в жизни, так что я не знаю какая у него потенциальная вместимость.
В следствие этого прошу пока особо не кричать и не репостить об этом на крупных ресурсах, хочу чтобы игроки прибывали постепенно.
Как я буду готов, я либо сам буду делать публикации, либо просить об этом вас.

Заходите потусоваться, играйте, приглашайте друзей. Приятного тестирования!
Mantiss, Seiffear, izrukvruki, Shurup, AlexSpl, Intofire, Docent Picolan, hippocamus, Agar, Spartak, magoth, Nestor, Vade Parvis, XEPOMAHT, lion-killer, Mefista, nosferatu, Poseidon, Spektanto, Doomђammer, SerAlexandr, J2K, XMenik, Sav, igrik, Zabuza-san, Corkes, Snake_B, deferatto, DrSlash, Odin, Orzie, Cthulhu_55, KypaToP_HM, sergey808a, BratetsVolk, Nuckelavee, BloodPhoeniX, tmienei
27 May 2017, 02:36 Баг-репорты
Цитата(js00 @ 27 May 2017, 03:49) *
I'm getting a bug when opening up the town management screen.

ResourceManager::GetBitmap816 could not find the "bitmap8" resource "hd_kres4.pcx".

Every time I click on my town it pops up. Very annoying.

1. Try to rollback last update and update again (HD_Launcher.exe must have rights to write in Heroes folder).
2. Try to download and install HoMM3 HD from official site: https://sites.google.com/site/heroes3hd/eng/download (Installation program must have rights to write in Heroes folder).
if the game installed to system drive \ Program Files then it's highly recommended to reinstall it in a folder on which you have full rights.

js00
24 May 2017, 20:49 HD. Релизы и обновления
Информация о свежих версиях
HoMM3 HD 4.208 RC5

Много весенних багфиксов:
Цитата
4.208 RC4 -> 4.208 RC5 (24.05.2017)

[-] несколько критических багов HotA 1.4.2 (утечки памяти, нестабильности).
[-] баг ОХ с водопоем в HotA 1.4.2.
[ ] незначительные изменения.


4.208 RC3 -> 4.208 RC4 (18.05.2017)

[-] критический баг HotA: краш (мгновенный или отложенный) при наступлении месяца монстра.
[-] критический баг HotA: краш при посещении Форта на холме (на самом деле это баг SoD, который стал критическим для HotA).
[ ] изменения для совместимости с будущей версией HotA.


4.208 RC2 -> 4.208 RC3 (17.05.2017)

[-] (WoG/ERA) баг с невозможностью вступить в битву.


4.208 RC1 -> 4.208 RC2 (16.05.2017)

[-] ошибки при переходе по папкам в окне нового/загрузки сценария в сетевой игре (Настоятельно рекомендуется всем игрокам использовать HD версии не ниже 4.208 RC2).
[+] библиотека patcher_x86.dll обновлена до версии 4.2.7
[ ] изменения для совместимости с будущей версией HotA.
[ ] незначительные изменения.


4.207 RC3 -> 4.208 RC1 (14.05.2017)

[!] (HotA, HD+) Внимание! Сетевая игра в Хота с HD+ возможно только если все гроки используют версии не ниже 4.208 RC1 (формат сохранений не изменился).
[-] исправлено: с ДД можно было прыгнуть на 1 клетку ниже чем в оригинале.
[-] исправлено: ошибки в онлайне при некоторых действиях хоста, когда подключенный игрок выбирает город и героя с помощью нового окна.
[-] исправлено: ошибки связанные с элементами и новыми окнами HD в окне выбора нового сценария.
[-] исправлено: ошибки при переходе по папкам в окне нового/загрузки сценария в сетевой игре.
[-] исправлено: при коннекте между игроком с HD+ и без HD+(или без HD), первый видел сообщение о получении поврежденного сообщения.
[-] исправлен баг ОХ: возможная автоматическая передача незавершенного хода синхронным (синим) игроком призавершении хода основным (красным).
[-] исправлен баг ОХ: в бою у красного мог самопроизвольно завершаться режим тактической расстановки, и могли происходить нарушения очередности хода стеков.
[-] багфиксы для совместимости с будущей версией HotA.
[ ] незначительные изменения.


более ранние, неопубликованные здесь изменения:
izrukvruki, fireman, hippocamus, magoth, Mefista, Savalik, Berserker, J2K, Sav, Corkes, SQR, BratetsVolk, the_new_pirate, Lokos
07 Mar 2017, 23:06 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Новое видео о будущем HD мода:
https://www.youtube.com/watch?v=u70wC0DJ7I8
Seiffear, Shurup, fireman, hippocamus, Spartak, lion-killer, J2K, Sav, igrik, Corkes, Axel_Templar, DrSlash, СЕРЁГА (JET), KypaToP_HM, BratetsVolk, Lokos
22 Feb 2017, 13:21 Лобби-сервер для HotA
обсуждение разработки
В общем со всем разобрался. Буду писать все сам.
Seiffear, hippocamus, AKuHAK, Throutle, packa, nosferatu, J2K, XMenik, igrik, Zabuza-san, Snake_B, DrSlash, Orzie, Cthulhu_55, the_new_pirate, Lokos, AlexejKa83
30 Jan 2017, 07:42 Лобби-сервер для HotA
обсуждение разработки
Цитата(SaintDark @ 30 Jan 2017, 08:16) *
Можно поточнее, что будет отсылаться на сервер с клиента, и что сервер должен отсылать клиентам?

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

С сервера на клиент: игроки в сети, статус игроков: играет сейчас/нет, рейтинг игроков, ну и информация для p2p соединения.

И чат же через сервер работать будет.


***

Немного поизучав вопрос, я понял что для меня проблемой номер 1 является осуществление p2p (пробивания NAT там всякие... )

Если делать передачу игровых данных не p2p а через сервер, то такое, наверное и я написать смогу. Только это плохой вариант.
При p2p можно будет обойтись самым слабеньким(дешевым) сервером(хостингом).
SaintDark
28 Jan 2017, 05:01 Лобби-сервер для HotA
обсуждение разработки
Цитата(SaintDark @ 28 Jan 2017, 06:23) *
Оригинальное лобби героев разве TCP? Для игр в режиме онлайн актуально UDP, т.к. игра не зависает при потере пакетов.

UDP актуален для реал тайм игр, шутанов всяких. Где скорость обмена данными важнеe целостности данных и гарантии доставки.
Героям это не нужно им как раз нужна гарантия доставки и целостности, т.е. Один игрок должен 100% получать то что отправил другой и никак иначе.
Как вы представляете себе шахматы в которых ход соперника может не дойти до вас или дойти не таким, каким его сделал игрок?
Если инет медленный и глючный, то пускай на передачу данных уйдет сколь угодно много времени (до установленного таймаута), но они обязаны дойти 100% целостными.
UDP же не гарантирует целостность и вообще доставку данных. а TCP гарантирует - в этом разница, я так понимаю.

Оригинальный сетевой API использованный в героях предполагает отправку данных как с гарантией доставки, так и без. Но практически используется только вариант с гарантией - по факту это tcp
SaintDark, the_new_pirate
27 Jan 2017, 18:00 Лобби-сервер для HotA
обсуждение разработки
Давным давно востребованная вещь: лобби сервер для онлайн игры в героев.
Чтобы можно было коннектиться без всяких хамачей и прочего.
Чтобы можно было легко искать оппонента.
Общие рейтинг, чат, и прочие вещи, которые являются обыденностью для современных многопользовательских игр.

И я очень хочу этим заняться, но мне катастрофически не хватает знаний и опыта для разработки сего.
Seiffear, hippocamus, AKuHAK, lion-killer, BlackBred, Throutle, packa, nosferatu, Doomђammer, J2K, Axolotl, Day7, SaintDark, igrik, Zabuza-san, Doctor Tea, Odin, Orzie, Cthulhu_55, KypaToP_HM, USBhere, the_new_pirate, Lokos, Tovio, AlexejKa83, Joric
24 Dec 2016, 12:22 Баг-репорты
Это известный баг хоты. Происходит при наступлении месяца какого-либо монстра. Можно попробовать посейв-лоадится до месяца без монстров либо ждать новую хоту.
Сулейман, Corkes, Lokos
07 Dec 2016, 15:31 Баг-репорты
Цитата(Sean1s @ 06 Dec 2016, 21:13) *
То что для Era (2.46) из всех фильтров можно использовать только 4 верхних (nearest и bilinear xxx) это так и должно быть или баг?
При попытке запустить выбрав другие фильтры падает с генерацией HD_CRASH_LOG.txt
HD_CRASH_LOG.TXT

Очень странно, но падение происходит в библиотеке dsound на этапе инициализации звука.
А вообще для эры режимы 32-bit True - не очень вариант.
Во первых с ними не работает цветной текст. Во вторых с ними крашится примочка, позволяющая выводить графику с альфаканалом (например она используется в моде LORD)
Поэтому для эра выставляется по умолчанию режим 32-bit (stretchable), но в нем нет модных фильтров.
Sean1s
05 Dec 2016, 15:33 HD. Релизы и обновления
Информация о свежих версиях
HoMM3 HD 4.206 RC1

Цитата
4.205 RC4 -> 4.206 RC1 (05.12.2016)

[+] Новый фильтр Nearest для графического режима 32-bit True (stretchable) GDI.
[+] (SoD, HotA) игра теперь делает автоматические сохранения с именем BATTLE перед каждой битвой.
[-] (HotA, HD+) критический баг ОХ: краш при передаче хода и порча автосейва синего (синхронных игроков) при игре с лодками.
[-] (HotA, HD+) баг ОХ: преждевременное прерывание ОХ при игре с верфями.


Видео, в котором я рассказываю о новых фичах 4.206: https://www.youtube.com/watch?v=NFPDZd62u6U
Shurup, hippocamus, Spartak, magoth, lion-killer, Spektanto, Etoprostoya, J2K, Day7, Sean1s, Sav, igrik, Corkes, serovoy, DrSlash, KypaToP_HM, BratetsVolk, Lokos, tmn
28 Nov 2016, 17:48 Файлы HD-мод
что и для какой версии нужно, а что можно удалять
Цитата(hippocamus @ 28 Nov 2016, 16:57) *
И что за файл появился в последней сборке (помню, он и раньше был - а потом исчез) - HD3_InternalTool.exe ?
Он необходим или случайно попал в сборку?

HD3_InternalTool.exe - это элемент установки и обновления ХД.
Прилетает с обновлением и при установке подключаемых модулей, собранных мной.
Для работы игры не нужен.
hippocamus
20 Nov 2016, 08:19 Файлы HD-мод
что и для какой версии нужно, а что можно удалять
HD3_Launcher.exe - Стартер лаунчера для обратной совместимости

HD_MCR.dll - (Multi Core Render) - это функционал графического режима 32-bit True (stretchable) GDI, если не используете этот режим, библиотеку можно удалить.
Однако все dll запишутся снова при обновлении.

FM_Dir.m - это заголовок карты, который используется для отображения папок в окне нового сценария.
FM_Dir.s - это заголовок сейва, который используется для отображения папок в окне сохранения/загрузки.

HD3_Backup.exe - нужен для отката на предыдущую версию.
HD3_Update.exe нужен для возможности создания HD3_Backup.exe
hUpdate.dll - это обновлялка HD


Mp3dec.asi и
Mss32.dll - это более новые версии библиотек для вывода звука игрой вообще.
Их можно удалить если в твиках прописать <Sound.NewerLibraries> = 0, но делать это смысла большого нет.
hippocamus, WindR
19 Nov 2016, 22:28 HD. Релизы и обновления
Информация о свежих версиях
HoMM3 HD 4.205 RC1

Цитата
4.204 RC4 -> 4.205 RC1 (18.11.2016)

[+] В окне "Нанять всех существ" теперь отображается сколько существ доступно, как в стандартном окне "Нанять".
[+] (SoD, HotA) В окне нового сценария выбрать город и героя можно кликнув на иконку (появляются списки всех городов и героев).
[!] (SoD, HotA) Случайная карта теперь именуется "Дата Игрок1 vs Игрок2" вместо "Игрок1 vs Игрок2 Дата"
[-] (HotA, HD+) баг ОХ: сбивалась посещенность хижин провидца.
[-] (SoD, HotA) исправления в сетевом функционале HD, HD+.
[-] Исправлена невозможность коннекта к хосту в игре через GameRanger при наличии старой библиотеки DPWSOCKX.DLL в папке с игрой.



4.204 RC2 -> 4.204 RC4 (14.11.2016)

[-] (HotA, HD+) баг ОХ: не возможно было сдать квест "победить монстра" или "победить героя" не в день выполнения.
[+] добавлен испанский язык для HD_Launcher.exe
[ ] незначительная оптимизация.



4.204 RC1 -> 4.204 RC2 (13.11.2016)

[-] (HotA, HD+) при перегенерации карты в онлайн игре сбивалась опция "Правила HW" при игре с плагином HW Rules.



4.203 RC6 -> 4.204 RC1 (11.11.2016)

[!] (HotA, HD+) Внимание! Сетевая игра в HotA c HD+ возможна только если все игроки используют 4.203 RC7 и выше (формат сохранений не изменился).
[-] (HotA, HD+) исправлена неверная работа ОХ при игре через Gameranger
[-] (HotA, HD+) ряд исправлений и оптимизаций ОХ.
[-] (HotA, HD+) исправлены известные баги перегенерации карты в онлайн игре: продолжение проигрывания звуков с предыдущей карты, пропадание звуков, неверная работа отображаемого таймера.

[+] (SoD, HotA) В окнах героя и обмена теперь доступен новый способ быстрого переодевания артефактов:
[SHIFT] + клик левой (или просто клик средней кнопкой мыши) на слот куклы героя открывает окно быстрой замены артефакта на варианты из рюкзака.
[-] (SoD, HotA) Исправлен баг: если при [ALT]+клик на артефакт в рюкзаке, этот артефакт невозможно было надеть на героя, то артефакт пропадал.
[+] (SoD, HotA) Колесо мыши в битве прогручивает лог.
[+] (SoD, HotA) В окне битвы клик на лог или нажатие на клавишу [H] открывает большое окно с логом битвы.
[+] (SoD, HotA) Усовершенствован алгоритм автоматического исправления ошибок карты.
[-] (SoD, HotA) Исправлена смещенная граница Двери Измерений
[+] (SoD, HotA) Клавиша [R] в окне приключений показывает/скрывает границу Двери Измерений.
[-] (SoD, HotA) Был возможен краш при выходе из игры.

[+] библиотека patcher_x86.dll обновлена до версии 4.2.4



4.203 RC5 -> 4.203 RC6 (03.10.2016)

[+] библиотека patcher_x86.dll обновлена до версии 4.2.3
[-] исправлена невозможность запуска на машинах, не поддерживающих SSE инструкции.



4.203 RC4 -> 4.203 RC5 (27.09.2016)

[-] HotA, критический баг: краш при попытке перегенерации карты в онлайн игре.
[-] незначительные исправления
[+] библиотека patcher_x86.dll обновлена до версии 4.2.2



4.203 RC3 -> 4.203 RC4 (25.09.2016)

[+] библиотека patcher_x86.dll обновлена до версии 4.2.1



4.203 RC2 -> 4.203 RC3 (26.08.2016)

[ ] (SoD, HotA) Исправления нового Журнала Квестов



4.203 RC1 -> 4.203 RC2 (26.08.2016)

[ ] (SoD, HotA) Исправления нового Журнала Квестов



4.202 RC5 -> 4.203 RC1 (24.08.2016)

[+] (SoD, HotA) Новое окно журнала квестов.
[-] Незначительные изменения.



4.202 RC4 -> 4.202 RC5 (26.07.2016)

[-] баг в увеличенных окнах сообщений мог приводить к вылетам.


Видео, в котором я рассказываю о новых фичах 4.205 (и 4.204): https://www.youtube.com/watch?v=nsFeLmOT9gE
Seiffear, Shurup, Docent Picolan, fireman, hippocamus, Spartak, magoth, Algor, lion-killer, StasPV, Spektanto, Etoprostoya, J2K, Sav, igrik, Corkes, Axel_Templar, serovoy, DrSlash, СЕРЁГА (JET), KypaToP_HM, BratetsVolk, WindR, Lokos, tmn
14 Nov 2016, 11:48 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Если PvP c нейтралами есть в Вог, значит это скорее всего какой-то вог версии более ранней чем 3.58f
ХД видимо не определяет его как Вог и считает за Сод.
С вогами младше 3.58f HD никогда не тестировался и официально не совместим (и не будет совместим).
Dusty
26 Oct 2016, 08:57 patсher_x86
Цитата
А в чем принципиальная разница Hi и Lo хуков?

HiHook - это "высокоуровневый" хук. Он может ставиться только на функцию.
SPLICE_ - на саму функцию.
CALL_ - на ее конкретный явный вызов (call 0xAABBCC или call dword ptr [0xAABBCC])
FUNCPTR_ - на указатель, т.е. например на позицию в виртуальной таблице или таблице импорта, или на колбэк, передаваемый аргуменом в другую функцию).

SLPICE_ - используется если нам всегда и везде нужно измененное поведение функции, откуда бы она ни вызывалась.
СALL_ - если нам нужно измененное поведение функции только в этом конкретном вызове.
FUNCPTR_ чаще применяется когда по-другому функцию не захучить (функция из таблицы импорта)
если мы ставим FUNCPTR_ хук на функцию из таблицы импорта, то в рамках игры получается тот же эффект, что от SPLICE_ хука.
Если поставим FUNCPTR_ хук на функцию в виртуальной таблице, то наша измененная функция будет вызываться только тем объектом - чья виртуальная таблица. Хотя сама функция при этом может входить в другие виртуальные таблицы других объектов, и на их поведение наш FUNCPTR_ хук уже влиять не будет.

Используя высокоуровневый хук, мы заставляем игру вызывать вместо ее функции - нашу. Наша функция при этом имеет (должна иметь) тот же интерфейс что и оригинальная, т.е. тот же возвращаемый тип и те же аргументы.
Здесь мы совершенно не запариваемся ни о каких низкоуровневых вещах - содержимом регистров и состоянием стэка, и т.п. Нам совершенно не нужно знать ассемблерный контекст вызова. Поэтому я назвал этот тип Хука - высокоуровневым.

LoHook - это, соответственно, "низкоуровневый" хук. Его мы можем поставить вообще на любое место в коде. При этом мы получаем возможность работать с регистрами процессора как с переменными, используя их в нашем (допустим С++) коде и можем менять адрес возврата.
LoHook - гораздо более мощный и универсальный инструмент, в сравнение с HiHook'ом. Им можно решать любые задачи (даже те что решают SPLICE_ и CALL_ хайхуки).

Но я в ХД использую в основном именно ХайХуки - ибо с ними код гораздо более читаемый, удобный для правок, безопасный и минимально конфликтен с другими модификациями.
ЛоуХуки стараюсь использовать как можно меньше. Я их использую в крайних случаях, когда это максимально эффективно (в плане объема работ и скорости внедрения изменений).


Цитата
И еще вопрос: можно ли как-то вывести диалог, с выбором одного из 7-ми элементов. Элементы - изображения ресурсов (дерево и т.д.). (Хотя думаю вопрос не совсем в теме)

можно, конечно. Может быть найду время и выложу UI SDK для героев с примерами.
Bes, AlexSpl, hippocamus, igrik, Raistlin
22 Oct 2016, 00:53 patсher_x86
Положил на дропбокс патчер 4.2.3 (отличается от 4.2.2 меньшим размером) и обновленный хэдер для Си++:
https://dl.dropboxusercontent.com/u/5667529...r_x86%204.2.zip

Итак, изменения версии 4.2 относительно 2.8:

[!] Переработана структура хранения примененных патчей.
Теперь патчи группируются не по адресу установки, как было, а по динамическим диапазонам (отрезкам): начальный адрес - конечный адрес.
В одном таком динамическом отрезке хранятся все пересекающиеся патчи.
Если применяется один патч поверх другого со смещением или отличающийся по размеру - то этот патч помещается в тот же отрезок, при этом отрезок расширяется (меняются его начальный адрес и конечный адрес)
Пока (в версии 4.2), отрезки при применении патчей - создаются, расширяются. Но не уменьшаются и не удаляются при отмене.
Т.е. возможна ситуация когда в одной стопке хранятся не пересекающиеся патчи (когда патч пересекающий их обоих отменен).

В связи с этим теперь:
- можно отменить любой патч, в том числе и перекрытый другим со смещением. FIXED патчей теперь нет.
- методы, GetLastPatchAt GetFirstPatchAt, все зависимые (UndoAllAt и пр.) теперь ищут патч не по адресу установки, а по попаданию в существующий диапазон (в patcher_x86.cpp хэдере используется термин "в окрестности адреса address" вместо "по адресу address").
(методы BlockAt и BlockAllExcept по прежнему оперируют адресами установки)
- изменились форматы дампа и лога патчера.

дамп:
Код
[ ][ ][ ] 3: (00401510 05 HiHook 0000001843 - HD.HotA), (00401510 05 HiHook 0000001845 - HD.HotA), (00401510 05 HiHook 0000002968 - HD.Af)
[ ][s][t] 2: (00424389 04 Patch  0000003595 - HotA), (00424389 06 LoHook 0000003596 - HotA)
[ ][s][t] 2: (0042440B 03 Patch  0000003597 - HotA), (0042440B 05 LoHook 0000003598 - HotA)
[a][s][t] 2: (005A8048 05 HiHook 0000002731 - HD.HotA), (005A8014 64 Patch  0000005395 - HotA)
[a][s][ ] 2: (005F946E 03 Patch  0000001782 - HD.HotA), (005F9470 01 Patch  0000003184 - HD.True32)

[a] значит в стопке есть патчи не совпадающие по адресам установки
[s] значит в стопке есть патчи не совпадающие по размеру
[t] - по типу
число после типа патча - это общая глобальная очередность применения.

в логе ворнинги теперь выглядят так:

Код
WARNING! [a][s][t]: Applying LoHook (00432E91 10 - HotA) over already applied Patch  (00432E97 04 - HotA).




[!] теперь для установки EXTENDED_(и SAFE_) CDECL_ HiHook-хуков можно использовать и __stdcall функции (возможность использовать __cdecl функции сохранена)
- это было продекларировано для более ранних версий патчера, но с какой-то версии сломалось и не работало.
Таким образом для EXTENDED_ хука хук-функция имеет единый вид: ? __stdcall new_func(HiHook* hook, ?)

[-] исправлен баг с применеием-отменой-применением хуков поверх длинных патчей (размером больше 5, на практике это серии NOP'ов)

[!] изменена часть мостов хай-хуков, позволяющая устанавливать хуки на рекурсивно выполняющиеся функции. Теперь для не рекурсивных вызовов выполняется один (максимально быстрый и безопасный) код, а для рекурсивных - другой. Поскольку не рекурсивных функций обычно 99+% , такой подход очень сильно повлиял на быстродействие и стабильность.

[ ] теперь патчер жрет на ~ 1.2 - 1.5 мегабайта оперативы меньше (в сравнение с версиями 2.7, 2.8, ...).

[ ] практически устранена разница между CODE_ и DATA_ патчами. Т.е. Code патч всегда пишет код именно так как мы задумали, без неочевидных конвертаций относительных адресов. Таким образом вызовы PatcherInstance::Write(a, d, CODE_) и PatcherInstance::Write(a, d, DATA_) теперь идентичны.

[+] добавлены новые методы PatcherInstance: WriteAsmPatch и WriteAsmHook (а так же CreateAsmPatch и CreateAsmHook):


***

в хэдере в методе
virtual LoHook* __stdcall WriteLoHook(_ptr_ address, _LoHookFunc_ func) = 0;
изменен тип func с void* на _LoHookFunc_, чтобы
в MS VC++ компиляторах (в VC++ 2010 и новее) методу можно было скармливать лямбды:

Код
        _PI->WriteLoHook(0xAABBCC, [](LoHook* h, HookContext* c) -> int
        {
            o_MsgBox("Hello from lambda LoHook!");
            return EXEC_DEFAULT;
        });


так же для MS VC++ 2010 и новее
я сделал такой макрос (через лямбду опять же):

чтобы можно было ставить "быстрые инлайн" хайхуки:

Код
                Create_HiHook(0xAABBCC, SPLICE_, EXTENDED_,
                    int, __thiscall, FuncName, (int in, int in2),
                    {
                        //...
                        return DefaultFunc(in, in2);
                    }
                )->ApplyInsert(0);


правда пользоваться ими для написания больших хуков неудобно, потому что IntelliSence не работает как надо внутри.


***

позже буду обновлять первый пост - добавлять в него актуальную информацию, ссылки, примеры.
AlexSpl, magoth, feanor, Sav
21 Oct 2016, 16:43 patсher_x86
Цитата(Etoprostoya @ 21 Oct 2016, 16:10) *
А patcher_x64 сложно будет сделать?

У меня лично в нем нет потребности и я не знаю особенностей x64
И если учесть что надо будет писать другие

то да, для меня сделать сложно. Но вообще - реально.

Основные проблемы, короче, - это дизассемблер длин и ассемблер, остальное - уже решаемо мной.
Причем дизассемблер длин нужен компактный и быстрый, писанный на асм/си/си++.
А ассемблер тоже нужен с минимальнейшим функционалом, лишь бы все инструкции понимал. + должен быть написан на си/си++. Я когда искал подходящего кандидата для x86 натыкался либо на каких-то громоздких суперфункциональных чудовищ либо на ущербов, которые даже не все 86ые инструкции переваривали. Ассемблер из OllyDbg - идеален для наших задач, но я нашел его не сразу. Насколько мне известно подобного для х64 - нет (в смысле - открытых исходников).

В принципе можно обойтись и без ассемблера, как без него обходился патчер x86 до версии 4.0. Он нужен только чтобы полностью повторить имеющийся сейчас функционал.
Etoprostoya
21 Oct 2016, 13:41 patсher_x86
Патчер - это инструмент для модификации любого исполняемого кода (не только героев). Патчер делает модинг максимально стандартизованным, удобным и безопасным. А так же помогает достичь максимальной совместимости между несколькими независимо разрабатываемыми модификациями одного кода (пример - Хд, Хота и ХВ-рулз).


С хд и хотой поставляется уже патчер версии 4.2.2
в нем теперь нет понятия неотменяемого патча.
появились методы WriteAsmPatch и WriteAsmHook, которые позволяют писать конструкции типа:

Код
_PI->WriteAsmHook(0x4F8662,
    "push 1",
    "call %d", Sleep,
    "_ExecDefault",
    0);


Код
            _PI->WriteAsmPatch(0x59D715,
                "MOVZX ESI,BYTE PTR DS:[EAX + EBX - 0x159]",
                "MOV EAX, DWORD PTR DS:[EBX + 0x60]",
                "TEST EAX,EAX",
                "JNZ SHORT 0x59D72A",
                "CMP DWORD PTR DS:[EBX + 0x74], 1",
                "JE SHORT 0x59D735",
                "CMP EAX, 1",
                "JNZ SHORT 0x59D7A9",
                "CMP DWORD PTR DS:[EBX + 0x74], 2",
                "JNZ SHORT 0x59D7A9",
                "PUSH DWORD PTR DS:[EBX + 0x6C]",
                "PUSH DWORD PTR DS:[EBX + 0x68]",
                "MOV ECX, DWORD PTR DS:[EBX + 0x64]",
                "PUSH ESI",
                "CALL 0x4E54B0",
                "MOV ECX, DWORD PTR DS:[EBX + 0x64]",
                "MOVSX ECX, WORD PTR DS:[ECX + 0x18]",
                "CMP EAX, ECX",
                "JG SHORT 0x59D762",
                "MOV EDX, DWORD PTR DS:[EDI + 0x8]",
                "MOVZX EAX, BYTE PTR DS:[EDX + EBX - 0x159]",
                0);


Так же в новом патчере практически устранена разница между Code и Data патчами. Т.е. Code патч всегда пишет код именно так как мы задумали, без неочевидных конвертаций относительных адресов.
И еще ряд мелких правок и багфиксов.

***

Кому-нибудь это вообще интересно?
Расписывать ли мне здесь общую документацию, изменения и документацию к новому функционалу?
Кто-нибудь, кроме меня, Сава и феанора еще пользуется патчером? feanor, тебе это интересно?
Просто у меня весьма ограничено свободное время и совершенно не хочется его тратить впустую.

На вог-форуме есть тема по патчеру, но, к сожалению, цель с которой я эту тему там создавал - не достигнута.
Эра так и не встала на рельсы патчера. Берсу не до эры и тем более не до патчера, поэтому писать туда смысла не вижу.
AlexSpl, hippocamus, Ben, Etoprostoya, Berserker, igrik, DedMorozzz
17 Oct 2016, 16:57 Might & Magic: Duel of Champions
F2P-CCG по Ашану
Щас пытаюсь замодить игру, сделать возможной игру оффлайн - в горячий стул. Если не успею до остановки серверов, т.е. до 30 октября, то уже вряд ли смогу. А если смогу, то дальше можно будет о много каком модинге задуматься.

Intofire, magoth, Adept, Qed'Maen, Арысь-Поле, Zabuza-san
15 Oct 2016, 13:58 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Прокоментирую некоторое пока.

Цитата
Возможно ли добавить в HD/HD+ исправления из HotA? Особенно исправления ГСК.

Возможно, только если Sav даст добро. Но он не даст, так что - нет.
Цитата
Телепортироваться при двойном клике по городу в списке окна Town Portal.

запросто.
Цитата
Заменять надетый на кукле артефакт при alt+click из рюкзака.

геморрой с обработкой сборников пока останавливает меня сделать это, но вообще вероятно сделаю когда-нибудь.
Цитата
Прокрутка колёсиком комбат лога. И открытие высокого окна с логом по клику.

можно, не сложно, сделаю, когда руки дойдут.

Цитата
В окне старта новой карты колёсико мыши всегда прокручивает время хода. Было бы неплохо прокручивать города, героев и бонус, а время хода — только при наведении на его полоску.

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

Цитата
Расширенная информация о стартовом герое показывается только для случайных карт, но не для фиксов.

Тут дело в том, для фиксов герой может быть изменен в редакторе, и эту измененную инфу в игре нужно доставать из другого, не изученного мной места. И у такого измененного героя в книжку могут быть помещены все заклинания, могут быть выучены все навыки, иметься все боевые машины, и могут быть заняты все слоты существ. Очевидно это все не помещается в то окно, что есть для рандома. Предложения есть по этому поводу? Очевидно, нужно другое окно - работы нужно немало. Мне лень этим заниматься.

Код
Из нового журнала заданий не должно быть возможности определить местоположение существ, которых необходимо убить. Особенно, когда те находятся в тумане. Это хоть и удобно, но в оригинале было невозможно.

Так то в оригинале это возможно, посмотрев карту в редакторе.
Я думал об этом когда делал то что есть сейчас. И хотел сделать определение местоположения только тех монстров, что на разведанной территории. Но заленился. Сделаю так когда-нибудь..
Ashka, BlackBred, J2K, Corkes, tmn
14 Oct 2016, 13:32 Might & Magic: Duel of Champions
F2P-CCG по Ашану
Цитата(XEL @ 14 Aug 2012, 18:13) *
Даже немного удивило, что Марзин или Cepheus не пришли в тему и не начали ревностно защищать новую игру от Юбисофт.

Внезапно сюда пришел защищать игру я.

MMDoC - гениальнейшая, уникальнейшая игра! Это лучшее что со мной случалось в сфере компьютерных игр, после 2001 года! Для меня эта игра в одном ряду с любимейшими играми, включая HoMM3, MM8 и Half Life 1. Да, именно так!
Самое главное достоинство игры - это глубочайшая, уникальная, проработаннейшая механика, дающая невероятное многообразие стратегий и тактик. После нее я понял что героям не хватает глубины механики!
Самая популярная, массовая онлайн кки сейчас - ХС по сравнению c MMDoC, примитивна и поверхностна так, как игра в чапаевцев по сравнению с шахматами. Я понимаю почему MMDoC не популярен среди широких масс - игра слишком хардкорна, слишком требовательна к скиллу и логическому мышлению (влияние рандома в ней, по сравнению с другими многими играми - минимально), чтобы быть массовой. Но я не понимаю почему стримеры - топ-игроки трешки поголовно играли/играют в этот дебильный ХС и не играли в MMDoC.

Второе достоинство игры - визуальная часть. В ММDoC - серьезная, очень стильная готичная, проработанная графика. И тут мне совершенно пофиг, что
картинки эти из презренного мира Ашан. Все воспринимается очень органично. Тут конечно вкусовщина, но от детскости графики ХС меня тошнит.

История MMDoC как игры - печальна.
После пары лет развития все начинает катится в одно место.
Сначала игра перестает быть доступна для айпад.
Затем объявляется о прекращении поддержки (т.е. прекращаются обновления, исправления багов)
Теперь же после 30 октября останавливают все сервера. Т.е. после 30 октября в игру поиграть уже будет нельзя совсем.

Я могу простить Юби все ее Герои но за ММДОК пожизненная ненависть для Убея от меня обеспечена.
Понятно здесь юби просчитались в самом начале - сделали ставку на не казуальную, действительно глубокую игру.
Затем просчитались в организации платности контента и тупо не смогли нормально заработать даже на том что было, причем многочисленные реформы этой сферы очевидно никаких результатов не дали. Так что игра вполне возможно для них оказалась убыточной.

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

Я пытался найти что-то похожее на ММДоС, но нет ничего - везде либо клоны ХС либо клоны МТГ по механике.
Группа неравнодушных фанатов даже начала разрабатывать клон ММДОКА - игру Duels of Xen'Arun, но что и когда выйдет и выйдет ли у энтузиастов - большой вопрос. У них напряг с художниками, а работы по графике там - море. Все-таки ~1000 карт.

Я, имея опыт моддинга тройки успел помодить и ММДОК - после того как прекратилась поддержка, я состряпал утилиту, лечащую аккаунт, от сломанного драфта (режима игры типа Арены в ХС) - результата бага игры.

**

Вот мне интересно, а почему ВЫ пропустили эту игру?
XEL, magoth, Vade Parvis, Qed'Maen, Арысь-Поле, Скорпион, Lizardmen
14 Oct 2016, 10:59 Целесообразность создания мода на основе HotA
Мне сложно сказать что для решения этих задач есть в эра-ерм. Например инициативу и подвижность, мне кажется либо не сделать с помощью erm, либо реализация будет очень черезжопной. Но я могу ошибаться.
В любом случае, если тебе нужно сделать то, что еще никто не делал, то придется значительное время потратить на реверсинг кода игры.

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

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

26 страниц V  < 1 2 3 4 5 > » 
Текстовая версия Сейчас: 29 March 2024 - 08:51
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика