Вышло обновление для HoMM 3 ERA
Текущая версия:
3.8.1
Что нового ?
[+] Реализована поддержка композитных изображений png.
При загрузке любого изображения png для формирования окончательного композитного изображения может быть применен фон из другого изображения pcx8/pcx16 (или их замены png).
Это поведение контролируется с помощью конфигураций json. Например, можно сделать все кадры кнопки "Загрузить игру" составными изображениями:
Code:
{
"era": {
"png_backs": {
"data/defs/zmenulg.def/0_0.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_1.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_2.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_3.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
}
}
}
Здесь "era.png_backs" - это раздел конфигурации. Укажите относительный путь к изображению png в нижнем регистре как подраздел и следующие параметры в значении:
- "file": имя файла pcx фона. Используйте расширение "*.pcx" для pcx8 (256 цветов с прозрачностью) и "*.pcx16" для pcx16 (65536 цветов без прозрачности).
Реальное используемое имя ресурса для "*. pcx16" — "*. pcx", но расширение указывает Era, какой формат изображения использовать. Если есть замена png для pcx изображения, то она будет использоваться вместо pcx.
- "x": начальная x-координата в фоновом изображении.
- "y": начальная y-координата в фоновом изображении.
Составные изображения позволяют применять полупрозрачность в игровых кнопках. Оригинальные кадры игровых кнопок были сделаны с предварительно нанесенным фоном, таким как фон главного меню (zpic1005.pcx). Таким образом, все разработчики интерфейсных модов должны были применять фиксированный фон к каждому кадру кнопки. Отныне мы можем выпускать скины, которые подойдут для любого фона. Мы также можем применять фиксированный фон для иконок, портретов монстров и навыков, предоставляя изображения переднего плана в формате png с прозрачными областями.
[+] Реализована реальная обрезка png в памяти. Потребление памяти было значительно снижено для изображений с большими прозрачными областями по периметру.
[+] Реализована поддержка стабильных многопользовательских сражений путем введения детерминированного генератора псевдослучайных чисел в PvP-сражениях. Спасибо ZVS за идею.
Детерминированный генератор влияет на все вызовы функции rand(), включая собственные способности существ, возможности опыта стека и команду VR:R.
Состояние генератора формируется следующими значениями: [Боевой раунд, Минимальное значение для генерации, Идентификатор боя, Максимальное значение для генерации, Идентификатор боевого действия], где Идентификатор боя — действительно случайное значение для каждого боя, Боевой раунд — счетчик раундов, а идентификатор боевого действия — счетчик действий.
[+] Добавлена опция "Debug.Rng" в heroes3.ini. Если установлено значение 1, команды rand/srand/VR:R будут генерировать отладочные сообщения.
[+] Положение анимации главного меню acredit.smk больше не зависит от переключателя Rus/Eng в zmess00.txt. Теперь координаты не жестко закодированы,а хранятся в конфигурационном файле json в ключах "era.acredit_pos.x" и "era.acredit_pos.y".
[+] Добавлена новая утилита на javascript для преобразования патчей UN:C в двоичные патчи. См. "Tools/UncToBin/index.html".
[+] Добавлен дополнительный бинарный патч "disable darkness dragons map shadowing.bin.off" в мод WoG.
[+] Добавлены недостающие константы в Era Erm Framework. Новые константы для классов героев: HERO_CLASS_XXX.
[+] Обновлен редактор Erm.
[*] Бинарный патч "no prisons on random maps.bin" включен по умолчанию.
[-] Исправлено поведение генератора случайных чисел в игре: установка состояния родного генератора больше не влияет на состояние генератора Вихря Мерсенна. VR:T не будет возвращать идентичные значения после боя.
Code:
Version 3.8.1 (06/2021)
------------------------
[+] Implemented composite png images support.
When any png image is loaded, a background from another pcx8/pcx16 (or their png replacement) image may be applied to form final composite image.
This behavior is controlled via json configs. Example, making all "Load Game" button frames composite images:
{
"era": {
"png_backs": {
"data/defs/zmenulg.def/0_0.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_1.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_2.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
"data/defs/zmenulg.def/0_3.png": {
"file": "zpic1005.pcx16",
"x": "533",
"y": "132",
},
}
}
}
Here "era.png_backs" is config section. Specify relative path to png image in a lower case as subkey and the following parameters in value:
- "file": pcx file name of background. Use "*.pcx" extension for pcx8 (256 colors with transparency) and "*.pcx16" for pcx16 (65536 colors without transparency).
The real resource name for "*.pcx16" extension is "*.pcx", but the extension tells Era, which image format to use. If there is png replacement for pcx
image, it will be used instead.
- "x": x-coordinate in background image to start drawing from.
- "y": y-coordinate in background image to start drawing from.
Composite images allow to have semi-transparency in game buttons. Original game buttons frames were made with pre-applied background like main menu background (zpic1005.pcx).
Thus all skin makers had to apply fixed background to each button frame. From now we are able to release skins, which will suit any backgrounds. We are also able to apply
fixed background for icons, monster portraits and skills, supplying foreground images in png format with transparent areas.
[+] Implemented real png cropping in memory. Memory consumption was highly reduced for images with large perimeter transparent areas.
[+] Implemented stable multiplayer battles support by introducing deterministic pseudo random number generator in PvP battles. Thanks to ZVS for idea.
Deterministic generator influences all calls to rand() function, including native creature abilities, stack experience abilities and VR:R command.
The state of generator is formed by the following values: [Combat round, Min value to generate, Combat ID, Max value to generate, Combat action ID], where Combat ID is truly random value for each combat, Combat round is round counter and Combat action ID is action counter.
[+] Added "DebugRng" option to heroes3.ini. If set to 1, rand/srand/VR:R commands will generate debug messages.
[+] acredit.smk main menu animation position does not depend on Rus/Eng switch in zmess00.txt. The coordinates are not hardcoded anymore and are stored in
json config file in "era.acredit_pos.x" and "era.acredit_pos.y" keys.
[+] Added new Javascript utility to convert UN:C patches into binary patches. See "Tools/UncToBin/index.html".
[+] Included optional binary patch "disable darkness dragons map shadowing.bin.off" in WoG mod.
[+] Added missing constants to Era Erm Framework. New constants for hero classes: HERO_CLASS_XXX.
[+] Updated Erm Editor.
[*] "no prisons on random maps.bin" binary patch is on by default.
[-] Fixed game random number generator behavior: reseeding does not influence Mersenne Twister generator state anymore. VR:T will not return the same values after battle.