Патчи
Настройки
- Stunlock fix when meatbug tries to draw weapon - Исправление, предотвращающее зависание персонажа, если, играя за "мясного жука", попытаться достать оружие
- First day in savegame is 1 - Теперь в меню сохранения/загрузки номер первого игрового дня начинается с 1, а не с 0
- Fit viewport to screen - Автоматически масштабирует элементы интерфейса по размеру экрана, устраняя некоторые негативные эффекты DX7
- Create drawweapon perception - NPC реагируют, если персонаж достаёт оружие на бегу в G1
- Create removeweapon perception - NPC реагируют, если персонаж прячет оружие на бегу в G1
- Fix NPC_KnowsInfo - Исправлена ошибка скриптов, из-за которой ранее скрывались определённые диалоги
[DEBUG]
Файловая система и плагины
- FixBinkNew - активирует новую систему исправления видеороликов на базе Union.
- FixBink_InterpCpuCount - регулирует качество сглаживания видеоряда.
- 0 - отключено, обеспечивая лучшую производительность
- 1 - оптимальное качество, при этом производительность ниже
- 2 - сбалансированное качество и производительность
- 3 или выше - минимальное качество, но максимальная производительность
- FixBink_InterpPixelSize - задаёт количество потоков CPU, задействованных для сглаживания видеоряда. Допустимый диапазон от 1 до 16.
- Исправлены ошибки при распаковке сжатых томов.
- Параметры IgnoreList и UnIgnoreList теперь также применяются к VDF томам
- Приоритет версии dll теперь выше, чем временная метка тома.
- zParserExtender интегрирован нативно в Union.vdf, что исключает необходимость его отдельного подключения вместе с API скриптами в других VDF.
Звук
Мышь
- Для корректной работы звука в G1 на (не)эмуляторах добавлена библиотека Mss32.dll из другой версии игры
Фикс роликов
- Буфер опроса значительно увеличен для предотвращения возможного залипания кнопок
- Из-за увеличения количества жалоб на фикс от SystemPack, основанный на opencv, была разработана новая библиотека масштабирования видеороликов. Новая реализация не зависит от железа и драйверов, используя для расчётов CPU. Совмещая различные методы оптимизации, алгоритмы позволяют применять библиотеку на любых ПК, а в отдельных случаях даже заметно повышают производительность.
Ознакомьтесь со следующими параметрами в ini:
Изменено назначение кнопок.
- FixBink_InterpCpuCount - этот параметр определяет, сколько ядер CPU будет задействовано для сглаживания изображения. По умолчанию система автоматически подбирает оптимальное количество ядер, исходя из характеристик вашего процессора. Максимальное значение – 16 ядер.
- FixBink_InterpPixelSize - данный параметр устанавливает качество сглаживания изображения по умолчанию. Значение подбирается автоматически с учётом мощности CPU и разрешения экрана. Это стартовое значение, после которого система корректирует качество в зависимости от времени вычисления кадра. При более высоком значении качество сглаживания снижается, однако оно не опускается ниже исходного уровня (система сама это контролирует). Значение 0 отключает сглаживание.
При extendedVideoKeys=0:
При extendedVideoKeys=1:Код:Esc пропустить ролик Space пропустить ролик Enter пропустить ролик Shift + Space приостановить/возобновить ролик
Код:Q вкл/выкл звук Left отмотать назад Right отмотать вперед Up увеличить громкость Down уменьшить громкость Esc пропустить ролик Home начать с начала Space приостановить/возобновить ролик
ВАЖНО!!!
Если у вас установлен GD3D11, библиотекаzBinkFix
будет отключена, и все операции масштабирования будут выполняться DirectX11.
Исходный код zBinkFix:
GitHub - Gratt-5r2/zBinkFix
На данный момент это полностью рабочая тестовая версия, которая в ближайшее время не претерпит изменений или останется без изменений вовсе.
SystemPack 2.0
SystemPack - Изменения патчей
- Внедрены ассемблерные вставки, существенно упрощающие создание патчей
- Добавлены вызовы API для реализации сложных патчей
- Реализована возможность переопределения значений из SystemPack.ini с помощью слова OVERRIDES_SP. Функциональность аналогична соответствующей секции ini мода. Переопределения не изменяют физический файл SystemPack.ini, однако их значения имеют более высокий приоритет.
- Введены приоритеты выполнения патчей. По умолчанию первым запускается Union.patch, а остальные – в порядке их обнаружения в игровых файлах. Для повышения приоритета файл должен начинаться с нижнего подчёркивания. Такие патчи будут исполняться до Union.patch, причем приоритет определяется количеством нижних подчёркиваний.
Подробнее см. в теме Union - формат .patch файла
- InteractCollisions - теперь фикс отключает не сами коллизии NPC, а выборочный обработчик. Это означает, что столкновения с персонажем всё ещё возможны, но он становится невосприимчивым к окружению, при этом объекты, с которыми происходит взаимодействие, сохраняют свои коллизии.
- No_strafe_while_fall - помимо стрейфов, отключаются и прочие состояния, способные прерывать падение: parade, attackforward, attackleft, attackright
- Shield - устранена ошибка, при которой щит не снимался со спины, если адрес предмета попадал в отрицательный знаковый диапазон
- Реализация чтения Bink из VDF полностью перенесена в Shw32.dll
SystemPack - новые патчи
Для Spacer
- |G1 G2| Фикс зависания спела при одновременном касте и открытии инвентаря
- |G1 | Превью предмета в его описании теперь отрисовывается максимально справа
- |G1 | Исправлен баг падения персонажа с лестницы, когда другой NPC обращается к ней преждевременно
- |G1 G2| Выравнивание NPC с учётом кривизны наклона лестницы
- |G1 | Фикс, предотвращающий «сталкивание» NPC на лестнице при их подпирании другим NPC
- |G1 | Для предотвращения выхода за барьер вводится смертельный урон в воде и при взаимодействии с монстрами
- |G1 G2| Будучи монстром, устранён баг, позволяющий возвращаться в (живую) человеческую форму в первые секунды после смерти
- | G2| Исправлена проблема с неотображающимися субтитрами минидиалога
- | G2| Удалена угрожающая музыкальная тема в зонах 'WALD' (например, дом Эрола)
- | G2| Исправлена возможность стрейфа в состоянии, когда движение запрещено
- |G1 | Исправлен баг множественного вызова AI при открытом инвентаре (исправляет эффекты «летающих» факелов над рудокопами, выпадение предметов из рук NPC, прерывание диалогов и т.п.)
- | G2| Исправлена возможность пропуска диалогов и катсцен стрейфом
- |G1 G2| Устранена ошибка, при которой NPC не слышал шаги другого NPC во время стрейфа, прыжков и обратного шага
- |G1 G2| Введена установка состояний (BS_SNEAK, BS_WALK, BS_RUN) при стрейфах
- |G1 G2| Исправлена недоработка, из-за которой не посылалось уведомление о доставании и убирании оружия на бегу
- |G1 G2| Если текстура мультидокумента имеет прозрачный контур, её изображение немного корректируется
- |G1 | Исправлена ошибка, когда при первом открытии инвентаря не отображались все предметы торговца или показывались неправильные их количества
- |G1 G2| Исправлен двойной выныривание после падения персонажа в воду
- |G1 G2| Персонажи не обновляют и не восстанавливают здоровье в полночь, если находятся в зоне видимости игрока
- |G1 G2| Устранено световое пятно, возникающее после удаления света от факела или иного источника
- |G1 G2| Исправлена возможность открытия инвентаря во время диалога
- |G1 | Реализовано автоматическое закрытие инвентаря, когда NPC обращается к игроку
- |G1 G2| Исправлена проблема с телепортацией через стены при использовании свитка превращения
- | G2| Исправлена ошибка, когда пираньи, находящиеся далеко от острова, определялись с неверной дистанции
- | G2| Исправлены луки и арбалеты, находящиеся на спине, которые бесконечно проигрывали анимацию
- |G1 G2| Опция ForceFlip (рекомендуемая при использовании технологий G-sync, FastSync или EnhancedSync) устраняет мерцающие артефакты
- [G1 G2] Опция DisableOcclusionCulling отключает фильтрацию видимых объектов, что исправляет их мерцание или исчезновение, но может снизить общую производительность
SystemPack - фичи
- [G1 ] В G1 добавлены патчи для Spacer (crc32:6C370582), аналогичные тем, что присутствуют в G2 (crc32:B1B45718)
- [G1 G2] Исправлено сворачивание главного окна
Union - мышь
- |G1 | Оружия, кольца и амулеты теперь группируются в пачки
- |G1 | Предметы в инвентаре всегда отображаются поверх игрового мира
- |G1 G2| Адаптивная дистанция прорисовки устанавливается автоматически в зависимости от частоты кадров (для DirectX 7)
- |G1 G2| Реализовано построение графика производительности в реальном времени (для DirectX 7 или DirectX 11 [v17.7-dev17])
- |G1 G2| Скорректирована высота спуска с лестницы, предотвращающая провал ног NPC под землю
- |G1 G2| Введён более адекватный ограничитель частоты кадров для оконного режима
- |G1 G2| Встроен плагин, устраняющий множественные VFX-уроны с участием нескольких дочерних частиц
- |G1 G2| Видео в оконном режиме больше не зависают
- |G1 G2| Реализовано переключение между оконным и полноэкранным режимами через Alt+Enter
- |G1 G2| Загрузка из Data\ModVdf возможна даже если том занят другим процессом и не может быть перемещён в Data
Union - система
- Отключение мыши и клавиатуры происходит при потере фокуса окна
- Мышь не «отваливается», даже если происходит зависание с потерей фокуса или подключён дебаггер
- Осуществляется очистка буфера нажатых клавиш между загрузками
- Добавлен режим no-DirectX, позволяющий управлять осями через фактическое расстояние, пройденное мышью на экране. Этот режим более отзывчив и полезен для пользователей с GFA (Gothic Free Aim), низким FPS, а также для корректной работы таких плагинов, как «Расширенный инвентарь от Hedin» или «Меню крафта в Returning 2.0 AB и NB».
Union - SDK
- Ядро переработано для оптимальной работы с Windows 7 и (не)эмуляторами под macOS & Linux
- Обновлены паттерны байткодов, повышающие эффективность «безопасных» хуков
- Исправлена ошибка в zip-vdf, теперь многопоточное чтение разрешено только после точки входа в движок
- Добавлена полная виртуализация системной папки, позволяющая ей иметь любое название и создавать несколько системных папок для различных задач
- Параметры PluginList и IgnoreList могут переопределять запуск Ninja, поэтому он вынесен в отдельную опцию в SystemPack.ini
- Введён «пассивный» zParserExtender, который будет запущен, если в папке Autorun присутствуют скрипты или включён его принудительный запуск
- Добавлена возможность сборки плагинов со статической run-time библиотекой (libcmt.lib /MT[d]) начиная с SDK 1.0l
Новое в SystemPack.ini
- По умолчанию при создании проекта устанавливается версия платформы v142
- Добавлены варианты сборки со статической run-time библиотекой, что означает отсутствие необходимости в предварительной установке vcredist для ваших плагинов. Это достигается посредством экспорта указателя на RTDynamicCast из статической libcmt.lib через объект самого плагина (см. Interface.cpp)
- Режим сборки MP разделён на два типа:
А. MP x2 – сборка плагина только для G1 и G2A
Б. MP x4 – сборка плагина для G1, G1A, G2, G2A- В Gothic API добавлены комментарии с размерами классов, полей и их смещениями
- Добавлены сниппеты для быстрого создания хуков. Для этого достаточно начать вводить слово hookPatch или hookDetours (в зависимости от требуемого хука) и нажать TAB. Будет создан шаблон, куда следует перенести сигнатуру перехватываемой функции. Сниппет также дополнит прототип, который можно вставить в UserAPI.
Дополнительно
- |G1 | [Parameters] MultislotWeapons – разрешает группировку оружий в пачки [по умолчанию – 1]
- |G1 | [Parameters] MultislotMagic – разрешает объединение колец и амулетов в пачки [по умолчанию – 1]
- |G1 G2| [Parameters] AdaptiveSightDistance – включает автоматическую настройку дистанции прорисовки [по умолчанию – 0]
- |G1 G2| [Parameters] AdaptiveSightDistance_ShowInfo – позволяет отображать значения адаптивной дистанции прорисовки [по умолчанию – 0]
- |G1 G2| [Parameters] AdaptiveSightDistance_LowerFPS – задаёт нижнюю границу FPS, ниже которой дистанция прорисовки уменьшается [по умолчанию – 55]
- |G1 G2| [Parameters] AdaptiveSightDistance_UpperFPS – задаёт верхнюю границу FPS, выше которой дистанция прорисовки увеличивается [по умолчанию – 60]
- |G1 G2| [Parameters] VisualizePerfomance – разрешает отрисовку графика производительности [по умолчанию – 0]
- |G1 G2| [Parameters] HeightCorrectionOnLadder – предотвращает провал ног под землю при использовании лестницы [по умолчанию – 1]
- |G1 G2| [Parameters] FPS_Limit – ограничивает FPS до заданного значения [по умолчанию отключено – 0]
- |G1 G2| [Parameters] ClearKeyBufferOnLoad – включает очистку буфера ввода при загрузках [по умолчанию – 1]
- |G1 G2| [Core] Ninja – разрешает загрузку Ninja.dll [по умолчанию – 1]
- |G1 G2| [Core] ParsetExtenderAlwaysOn – включает загрузку zParserExtender.dll независимо от наличия скриптов в Autorun [по умолчанию – 0]
- |G1 G2| [Mouse] NoDirectXMode – позволяет отслеживать перемещение мыши не через dinput [по умолчанию – 0]
- |G1 G2| [Debug] GPUName – системный параметр, указывающий последнюю работавшую видеокарту
- |G1 G2| [Debug] ForceFlip – устраняет мерцающие артефакты при использовании G-sync, FastSync или EnhancedSync. Рекомендуется для пользователей с данными технологиями. [по умолчанию – 0]
- |G1 G2| [Debug] DisableOcclusionCulling – отключает фильтрацию видимых объектов, что исправляет их мерцание/исчезновение, но снижает производительность. [по умолчанию – 0]
Visual C++ 2008 более не требуется для работы фикса Bink
- Особенности нового zParserExtender см. в теме Расширение возможностей парсера | zParserExtender [плагин для Union]
- В папке Gothic добавлен прямой деинсталлятор Union
- Обновлены некоторые ресурсы Первичного патча, а также оставлен только Патч с 4GB патчем
- Менеджер ресурсов самостоятельно скачает и установит Visual C++ 2010 (при согласии пользователя)
- Исправлен патч FindNextFightAction_Workaround_1 – теперь скелеты в Gothic 1 атакуют с нормального расстояния.
- Исправлен и возвращен патч Transform crashfix – теперь при переходе между локациями персонаж не будет умирать.
- Анизотропная фильтрация по умолчанию выключена (для оптимизации на старом железе при чистой установке). Чтобы включить обратно, используйте опцию AnisotropicFiltering.
Основные изменения в Union, файловой системе и SDK
(*Больше информации по SDK будет представлено в соответствующей теме.)
- Добавлена поддержка сжатых томов
- Сжатые тома используют zip-архивирование, но файлы в них разделены на сегменты. Это позволяет быстро получать доступ к данным в любой части файла. Средняя скорость распаковки достигает 1.5 ГБ/с, но на практике этот показатель зависит от конкретного мода. Сжатие отлично подходит для плагинов и небольших проектов.
- Исправлена ошибка файловой системы VFILE
- Ошибка возникала при использовании 4GB патча. В движке проверка валидности хендлера работала некорректно: если его числовое значение становилось отрицательным, система ошибочно считала его недействительным. Это происходило, если указатель на файл превышал 2GB.
- Исправление файлов с нарушенным доступом
- Файлы с поврежденными правами доступа теперь автоматически исправляются системой, вне зависимости от причин их повреждения.
- VDF-тома теперь можно запускать из DATA\PLUGINS
- Чтобы не загромождать корневую папку, плагины теперь хранятся в DATA\PLUGINS. Разработчики могут использовать этот путь по своему усмотрению.
- Настройка языка через ini-файл
- Union и плагины определяют язык системы и используют его для локализации. Если необходимо задать другой язык, его можно указать в SystemPack.ini в параметре Language.
- Интеграция патчей прямо в плагины
- Теперь патчи можно включать непосредственно в плагин. В шаблон проекта SDK добавлены патчи Plugin.patch, которые автоматически загружаются вместе с плагином. Дополнительные патчи можно запускать с помощью:
Код:SystemPack::CPatch::ExecuteResource( module, resource_id, resource_group ) module - модуль, в котором находится патч resource_id - идентификатор ресурса resource_group - наименование группы, в которой состоит патч Пример: SystemPack::CPatch::ExecuteResource( module, MAKEINTRESOURCE( 103 ), "PATCH" );
- Поддержка dynamic_cast в debug-библиотеках (RTTI патч)
- Теперь dynamic_cast доступен в debug-конфигурации.
- Предварительная распаковка OGG
- Файлы OGG (музыкальные и звуковые дорожки) теперь можно предварительно распаковывать в память. Это позволит избежать фризов при загрузке крупных аудиофайлов.
- Опции для (не)эмуляторов
- Для работы с Wine и аналогами можно включить EmulatorMode в SystemPack.ini.
- Новые патчи
skip EV_AIMAT
zFILE_VDFS::open unsigned
Regen mana without hp
- Новые опции
DecompressedCacheSize
UnzipThreadsCount
EmulatorMode
GpuFixes
Language
- Первичный патч
- Добавлены оригинальные ini и rtf файлы для каждой локализации.
Рекомендация
Для слабого железа можно отключить параметр AnisotropicFiltering, чтобы повысить производительность.
Добавлена поддержка Wine и аналогичных решений, что было протестировано на Ubuntu 20.04 и macOS 11.1 с использованием Wine 5.0. Основное отличие от стандартной версии 1.0i заключается в том, что под Wine GPU-патчи, мешающие запуску игры, не активируются.
Требования для корректной работы под Wine (аналогично для других (не)эмуляторов):
- Менеджер ресурсов и автономные установщики требуют установленного .NET Framework 4.0 и Visual C++ 2010.
- Запуск самой Gothic возможен при наличии установленных Visual C++ 2008 и 2010.
Важно! В Wine библиотеки времени выполнения (MSVCR[XXX]) являются сторонними и могут вызывать критические ошибки. Например, MSVCR100 необходимо заменить на оригинальную версию для Windows, иначе возможны сбои в работе, сопровождающиеся критическими ошибками.
![]()
Настройка Wine для корректной работы библиотек:
Если по каким-либо причинам Wine не находит стороннюю MSVCR-библиотеку, можно попробовать разместить ее в папке с исполняемым файлом игры. Однако такая ситуация встречается редко:
- Открыть терминал и выполнить команду winecfg. В появившемся окне перейти на вкладку “Библиотеки”.
- В поле “Новое замещение для библиотеки” добавить следующие библиотеки:
- MSVCR100.DLL
MSVCR110.DLL
MSVCR120.DLL
MSVCR140.DLL
(и другие, если в будущем появится необходимость).
Это позволит Wine в первую очередь использовать установленную на ПК библиотеку, а при ее отсутствии — встроенную.
![]()
- Установить Microsoft Visual C++ 2010 x86, а также версии 2012–2019, если они требуются для работы каких-либо плагинов. Как правило, этого достаточно для нормального запуска игры.
![]()