• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Control style as default in Gothic I

  • Gothic 1 style - Ctrl + Action (vanilla)

    Голосов: 45 43,7%
  • Gothic 2 style - One button control (SystemPack)

    Голосов: 58 56,3%

  • Всего проголосовало
    103

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
  • Первое сообщение
  • #1
UnionSplash.jpg




• For foreign colleagues, we have prepared an 'English' tab.
This will make this page easier to read.

• For partners, we have made a 'Details' tab.
There are answers to most of the questions you might have.


Русский English Детально Details





  • Для установки продукта на Steam копию игры
    рекомендуется использовать версию Union из мастерской

    • Получить для Steam Gothic I •
    stimSmall.png
    • Получить для Steam Gothic II •




    Для ручной установки используйте Менеджер Ресурсов - программу для
    установки самых актуальных продуктов Union в режиме онлайн

    • Скачать сетевой Менеджер Ресурсов • 1559419291725.png




    Либо используйте Автономные установщики - установочные
    программы, не требующие подключения к интернету.

    • Получите больше Автономных продуктов на базе Union тут •
    Скачать Union 1.0m
    напрямую WOP.pngс облака GDRIVE.png
    Скачать Первичный патч
    напрямую WOP.pngс облака GDRIVE.png




    Определения:
    Unionпакет, исправляющий большинство багов движка, улучшающий его производительность и совместимость с разными ОС.
    Первичный патчресурсный пакет, подготавливающий игру для работы с другими программными пакетами и модами.
    Плагиныбиблиотеки, предназначенные для добавления в движок технических средств в функциональных или творческих целях.
    Патчнебольшая программа, изменяющая код движка, как правило в целях исправления багов или недоработок.
    Gothic APIнабор из 4-х интерфейсов, предоставляющих программисту прямой доступ к объектам движка и его структуре в целом.
    Union SDKнабор инструментов разработчика для удобного создания кроссплатформенных плагинов для движка на базе Union.

    Платформы:
    Gothic 1, Gothic Sequel, Gothic 2, Gothic 2 NoTR

    Языки:
    Английский, Русский, Немецкий, Польский, Румынский, Итальянский, Чешский, Испанский

    Релизы:
    1.0a, 1.0b, 1.0c, 1.0d, 1.0e, 1.0f, 1.0g, 1.0h, 1.0i, 1.0j, 1.0k, 1.0l, 1.0m

    Страница на немецком ресурсе:
    worldofplayers.de

    Разработчики:
    Gratt, killer-m

    Системные требования:
    • Windows XP SP3 или выше, MacOS, Linux​
    • Visual C++ 2010 (установится автоматически)​
    • DirectX 7, 8, 9​
    • NET framework 4.0 (для установщиков)​
    • Права администратора​

    Установка – прядок и правила
    Правила установки и удаления:
    • Забудьте все, что Вам говорили на YouTube или других форумах люди, мало понимающие в работе движка и его компонентов
    • Union устанавливается либо через Менеджер ресурсов, либо через автономный установщик. Ссылки на то и другое находятся в самом верху темы. Разница между ними заключается в том, что:
      • Менеджер ресурсов – это онлайн программа, для которой требуется подключение к сети. В Менеджере все обновления выходят первее, а также там находятся и другие продукты на базе Union.
      • Автономный установщик – это офлайн программа, которая содержит конкретный устанавливаемый продукт.
    • При установке Union Вы сразу получаете установленный SystemPack 2.0.
    • Установка Union может производиться на любую лицензионную копию Gothic и с любыми предварительно установленными расширителями и модификациями (кроме классического Возвращение 2.0)
    • Обновление пакета может совершаться установкой новой версии Union поверх старой.
    • Удаление Union производится либо через деинсталлятор в папке Gothic, либо через установщик.
    • Откат версии Union рекомендуется производить путем удаления более новой версии Union, а затем установкой более старой.
    О первичном патче:
    • Первичный патч – это патч, который приводит ресурсы игры в порядок, а также добавляет в нее Player Kit для игры с модификациями.
    • Первичный патч обязателен к установке на чистую игру. Ставить его повторно не нужно.
    • Повторная установка первичного патча рекомендуется тогда, когда исполняемые файлы игры были повреждены другими пакетами, либо при выходе обновления первичного патча.
    Порядок установки и обновления:
    При первой установке Union:
    1. Убедитесь, что игра выключена и все ее файлы закрыты.
    2. Установите первичный патч - Player Kit + Патч игровых ресурсов.
    3. Установите Union актуальной версии.
    4. Произведите запуск игры до меню, а затем закройте ее.
    5. Убедитесь, что в папке Gothic/System появился файл SystemPack.ini. Если файла нет, то проверьте, что выбран правильный путь установки. Затем повторите действия начиная с пункта 1.
    6. Перезапустите ПК, чтобы Ваша система применила новые правила политики DEP.
    При обновлениях Union:
    1. Убедитесь, что игра выключена и все ее файлы закрыты.
    2. При установке Union выберите пункт ‘Установить/обновить компоненты’.
    3. Запустите игру до меню и убедитесь, что буква Union в правом нижнем углу соответствует букве устанавливаемого Union. В противном случае убедитесь, что выбран правильный путь установки. Затем повторите действия начиная с пункта 1.
    Порядок удаления:
    1. Убедитесь, что игра выключена и все ее файлы закрыты.
    2. Запустите ‘Union – uninstaller.exe’ в папке игры, либо запустите процесс установки и выберите пункт ‘Восстановить оригинальную версию из бекапа’
    3. После удаления в меню игры в правом нижнем углу должна пропасть надпись Union.

    Список правок движка:
    ВерсияНазваниеНазначение
    1​
    1.0aGothic.ini fixesПереопределяет некоторые важные параметры Gothic.ini
    2​
    GameVersionВыводит версию Union в игровом меню
    3​
    BorderlessWindowЗадает параметры оконного режима
    4​
    Allow all windowed resolutionsУбирает лимит 1024x768 для оконного режима
    5​
    D3DIM700.dll - removes 2048 pixel limitВключает разрешения от 2K и выше
    6​
    AcGenral.dll - Windows 7 rundll32.exe bugfixОтключает запуск процесса rundll32.exe препятствующий запуску игры на Windows 7
    7​
    ALPHA_VOB and ALPHA_WORLD_POLYУвеличивает количество памяти для классов zCRndAlphaSortObject_Vob и zCRndAlphaSortObject_WorldPoly
    8​
    Unlock FPSОтключает лимит FPS
    9​
    D3DVBCAPS_WRITEONLYУдаляет флаг WRITEONLY при создании вертексного буфера
    10​
    Unlock_ResolutionУбирает лимит для разрешений выше 1600 в меню игры
    11​
    MARVIN - F8 fixПредотвращает поворот персонажа к северу
    12​
    FOVРеализует широкоэкранную формулу для расчета угла обзора
    13​
    SPAWN_INSERTRANGEОпределяет зону видимости для включения NPC в мир
    14​
    SPAWN_REMOVERANGEОпределяет зону видимости для исключения NPC из мира
    15​
    SPAWN_INSERTTIME_MAXОпределяет частоту обновления включений NPC в мир
    16​
    ZNORESTHREADОтключает отдельный поток для менеджера ресурсов
    17​
    SaveGameToANSIЗаписывает сохранения текстом в кодировке ANSI
    18​
    SendMessage - BroadCast fixИсправляет зависание в момент запуска игры
    19​
    NumLockDisableИсправляет самопроизвольное отключение NumLock'а
    20​
    PerceptionCheck - crash fixИсправляет вылет при вызове функции PERC_ASSESSITEM
    21​
    MAP - 4:3 aspect ratioУстанавливает фиксированное соотношение карт 4:3
    22​
    Resolution limit - 25600Разблокирует лимит разрешения экрана в меню игры
    23​
    DrawDistanceMultiplierУстанавливает множитель дистанции отрисовки
    24​
    zPM_NUM_VBUFFER_VERT 65535~ Увеличивает максимально допустимое количество полигонов в модели
    25​
    DisableLODОтключает упрощение моделей при увеличении дистанции
    26​
    DisableIndoorClippingОтключает отсечение объектов в Indoor локациях
    27​
    OutDoorPortalDistanceMultiplierУстанавливает множитель дистанции отрисовки порталов OUTDOOR
    28​
    InDoorPortalDistanceMultiplierУстанавливает множитель дистанции отрисовки порталов INDOOR
    29​
    WoodPortalDistanceMultiplierУстанавливает множитель дистанции отрисовки порталов WOOD
    30​
    DisableCacheOutПри сворачивании игры отключает выгрузку кэша, иначе игра часто вылетает при сворачивании
    31​
    MoverBugfixНеобходим чтобы в храме спящего при FPS выше 24 активировался переключатель
    32​
    zMouseRotationScaleУстанавливает множитель скорости мыши
    33​
    FPS limit in menuОграничивает количество кадров в главном меню Г1
    34​
    DialogBoxXЗадает фактический размер диалога по X
    35​
    DialogBoxYЗадает фактический размер диалога по Y
    36​
    SubtitlesBoxXЗадает ширину окна субтитров
    37​
    BarrierЗадает пользовательские настройки барьера
    38​
    Enable QuickSaveАктивирует горячие клавиши быстрого сохранения F5 и загрузки F9
    39​
    USInternationalKeyboardLayoutУстанавливает интернациональный режим ввода с клавиатуры
    40​
    Disable key repeat acceleration in menuЕсли в меню игры зажать клавишу, то переход по строкам в меню не ускоряется
    41​
    keyDelayRateУстанавливает время автоматического повтора ввода зажатой кнопки
    42​
    keyDelayFirstУстанавливает время первого автоматического повтора ввода зажатой кнопки
    43​
    NUM_POS_CACHE 524288~ Увеличивает максимально допустимое количество полигонов в модели
    44​
    s_posCacheList~ Увеличивает максимально допустимое количество полигонов в модели
    45​
    ShowManaBarЗадает постоянное отображение статуса маны
    46​
    ShowSwimBarЗадает постоянное отображение статуса дыхания
    47​
    HideHealthBarЗадает возможность скрытия статуса здоровья, если оно полное
    48​
    ShieldАктивирует слот щита
    49​
    Model ClippingОтключает исчезновение моделей при большой дистанции от камеры
    50​
    PfxFixИсправляет исчезновение PFX эффектов
    51​
    MAP_Delay_BUGFIXИсправляет подвисание в момент открытия карты
    52​
    Disable assert - refCtr>=-1, "D: OBJ: deleting an already deleted zCObject ?!"Отключает ошибку, сообщающую о том, что удаляемый объект уже был удален
    53​
    CollisionBugИсправляет вылет при коллизии длиною в нулевой вектор
    54​
    LOW_FPS_FIXИсправляет зависание игры при проигрывании PFX
    55​
    DEAD_B BUGFIXПри добивании врага лежащего на животе воспроизводится правильная анимация
    56​
    Orcs_Remove_WeaponРазрешает оркам убирать оружие
    57​
    SubtitlesЗадает параметры жизни окна субтитров
    58​
    NewChapterSizeXЗадает фактический размер окна новой главы по X
    59​
    NewChapterSizeYЗадает фактический размер окна новой главы по Y
    60​
    SaveGameImageSizeXЗадает фактический размер окна сохранения по X
    61​
    SaveGameImageSizeYЗадает фактический размер окна сохранения по Y
    62​
    InventoryItemNoteSizeXОпределяет размеры элементов интерфейса в игре: Начало новой главы, Сохранение игры, Описание предметов, ед. измерения пиксели
    63​
    InventoryCellSizeУстанавливает размер ячейки инвентаря
    64​
    DisableCrawlОтключает анимацию плавания в режиме WALK
    65​
    FOV_New_FormulaОпределяет новую формулу углов обзора
    66​
    Not equip a bow/crossbow togetherNPC не экипируются луком и арбалетом одновременно
    67​
    Interface scalingЗадает множитель размера интерфейса
    68​
    No_Strafe_while_fallЗапрещает использование стрейфа во время падения
    69​
    TRADE_VALUE_MULTIPLIERМножитель цен, который будут выставлять торговцы при продаже им предметов
    70​
    Disable_Save_Menu_When_DieЗапрещает сохранение в момент смерти главного героя
    71​
    Disable_Map_UseОтключает карту в некоторых состояниях (смерть, нокаут, падение и тп)
    72​
    Allow_Throw_ItemsРазрешает кидать предметы
    73​
    Rotate_ItemsВращает предметы в инвентаре
    74​
    Inventory_Camera_BugfixВыбирает правильную камеру инвентаря, если он был открыт с оружием в руках
    75​
    Spell_Name_Time_FixУменьшает время отображения надписи с названием заклинания
    76​
    HighlightЗадает пользовательскую подсветку объектов окружения
    77​
    ITM_FLAG_DROPPEDВыброшенным предметам назначается флаг const int ITEM_DROPPED = 1<<24
    78​
    Hide_Focus_on_EMPTY_DEAD_NPCЗапрещает отображение фокуса для мертвых NPC с пустым инвентарём
    79​
    Disable using of weapons when the hero uses an anvilЗапрещает использование оружия в при взаимодействии с наковальней
    80​
    No_interrupt_fight_animationОтключает прерывание некоторых боевых анимаций
    81​
    Drop_Throw_Item_FixРазрешает предмет взятый для броска бросить перед собой
    82​
    Auto_Scroll_TimeУменьшает время отображения надписи с названием заклинания
    83​
    Block the hero move in the menuБлокирует движение главного героя при нахождении в меню
    84​
    Turn_Attack_on_RunУстраняет ошибку, при которой атакующие с разбега нпс производили поворот в ту же сторону, что и главный герой
    85​
    Doubling_ItemsПредотвращает удвоение предметов при взаимодействии с объектами
    86​
    Underwater_Take_VobРазрешает подбирать предметы под водой
    87​
    Disabled_Mouse_Camera_FixКамера работает правильно, если в оцпиях игры отключена мышь
    88​
    Arrow_PFXПри столкновении стрелы или болта с препядствием воспроизводится pfx эффект
    89​
    ONE_BUTTON_CONTROLПриводит управление G1 к виду G2
    90​
    MOUSE_BUFFER_SIZE 50Увеличивает размер буфера ввода мыши для предотвращения залипания клавиш
    91​
    FindNextFightAction_WorkaroundПредотвращает "дрожание" анимации монстров
    92​
    Text ColorЗадает цвета текста в диалоговых операциях
    93​
    Close_Inventory_In_NPCЗакрывает окно инвентаря NPC при активации боевого режима
    94​
    Show_FPSАктивирует постоянное отображение частоты кадров
    95​
    Items_Insert_BugПредотвращает удваиваение предметов у торговцев в начале каждой главы
    96​
    F6_Windowed_FreeLookАктивирует клавишу F6 в оконном режиме для включения свободной камеры
    97​
    JUMP_ANIM_Bug (s_ledgeCache?)Увеличивает таймаут кэша с информацией об уступе/платформе для карабканья
    98​
    EV_Parade_fixБлок в бою срабатывает без осечек
    99​
    Hit_Check_AngleНельзя заблокировать удар направленный в спину
    100​
    Parade_fixНельзя заблокировать укусы монстров (за исключением отскока) Отскок блокирует урон при нажатии одной клавиши, вместо сочетания 2-х клавиш (опционально - Gothic2_Control=1) Изменён звук когда монстр блокирует удар
    101​
    Monsters_Block_DamageРазрешает монстрам блокировать удары
    102​
    Hide strength and dexterity values in character screen after /Скрывает второе значение силы и ловкости из окна характеристик персонажа
    103​
    Anisotropic_FilteringУстанавливает уровень фильтрации текстур
    104​
    Pyro_fixПри повторном применении заклинания "Пирокинез" жертва не выходит из состояния ZS_Pyro
    105​
    Disable endless VISEME after getting hitОтключает бесконечную анимацию рта при получении урона
    106​
    Magic_Collision_FixИсправляет отсутствие урона магией стоя в упор
    107​
    Game_InitEnglish to Game_InitEngIntlЗаменяет функцию инициализации
    108​
    Disable using map when the hero has become a monsterБлокирует возможность открытия карты в образе монстра
    109​
    The last used scroll gives full damageЗадает правильное нанесение урона от последнего свитка
    110​
    No_Interrupt_Interact_ANIОтключает прерывание некоторых анимаций (например, нельзя прервать анимацию применения зелья перманентно повышающего характеристики)
    111​
    AttackRun_fixNPC при атаке на бегу не поворачиваются вокруг своей оси, копируя повороты Гг
    112​
    FIST mode turns off correctly by pressing "1" buttonЗадает корректный выход из кулачного режима по кнопке "1"
    113​
    Dropped arrows, bolts and torches will be removed after loading saveЗадает правильное удаление упавших стрел, болтов и факелов после загрузки
    114​
    MOUSE_BUFFER_SIZE 100Увеличивает размер буфера ввода мыши для предотвращения залипания клавиш
    115​
    WASD_MenuНавигация в главном меню с помощью клавиш WASD
    116​
    Unlock armor in trade, in npcПозволяет отображать одежду в инвентаре покупок и обыска
    117​
    PolishДобавляет ввод польских диакритических знаков
    118​
    No_Take_AnimОтключает анимацию поднятия предметов
    119​
    RMB_No_Take_AnimПереназначает предыдущий патч на правую кнопку мыши
    120​
    1.0cKERNEL32_2_SHW32Переадресовывает некоторые функции работы с файлами в Union, чтобы воспроизводить bink ролики из VDF
    121​
    Fix low framerateДелает обычным FPS в главном меню
    122​
    Rain particle collisionsАктивирует столкновение капель дождя с любыми объектами
    123​
    Simple WindowДелает окно игры безрамочным
    124​
    CollisionVolumeScalerОпределяет оптимальный объем объекта, с которым происходит взаимодействие
    125​
    BarrierIgnoreSkyEffectsSettingПредотвращает исчезновение барьера при отключении дождя (skyEffects=0)
    126​
    SmoothAniDistanceЗадает дистанцию, при которой анимация будет проигрываться плавно
    127​
    Lootfix UnconsciousПредотвращает самопроизвольное закрытие инвентаря при попытке обыска бессознательного NPC
    128​
    DrawItemInfoРисует объект в поле описания предмета поверх заднего плана
    129​
    MobInterCollisionОтключает столкновения для точного позиционирования NPC с используемым MOB
    130​
    LOW_FPS_NaN_checkИсправляет зависание игры при проигрывании PFX
    131​
    CView_Blit_farZ_65534Отображает фоновую текстуру на высоких значениях дальности видимости
    132​
    1.0eREMOVE OVERLAYMDS fixИсправляет невозможность удалить MDS оверлей
    133​
    Exit VDFSЗаставляет игру вызывать завершение файловой системы перед выходом
    134​
    1.0fprologИсправляет утечку памяти в прологе oCNpc
    135​
    Hide original splashСкрывает родное окно сплеша
    136​
    1.0gFix low framerateДелает обычным FPS в главном меню
    137​
    1.0hAllow undeclarated instancesРазрешает вставку в мир незадекларированных zCObject производных
    138​
    Line cache sizeУвеличивает количество возможный рисуемых на экране линий
    139​
    UnequipItemИсправляет баг с двойным снятием стат при деэкипировке предмета
    140​
    SAVEDAT IN ASCIIАльтернативное сохранение скриптов для повышения производительности
    141​
    oCNpc::SetFlag FixИсправляет ошибку неправильной установки флага из-за неверного оператора
    142​
    Dialog Starvation FixИсправляет возможное зависание диалога
    143​
    F3 - SetForegroundWindowИсправляет пропадание окна при активации-деактивации полноэкранного режима
    144​
    CS Player crash fixИсправляет вылет, когда не завершена катсцена, которая больше не используется
    145​
    Sliding fixИсправляет баг, когда персонаж начинает соскальзывать вверх по склону или застревать на нем
    146​
    Fix 1px cutline in zCView objectsУстраняет дырку в нижней и правой части экрана между вьюпортом и элементами интерфейса
    147​
    Load Steam Overlay [исключен]Активирует игровой оверлей стима
    148​
    SAVE MENU CONFIRM LMBРазрешает подтверждение действия сохранения игры левой кнопкой мыши
    149​
    Inventory KEY 9 fixПредотвращает закрытие инвентаря при назначении клавиши "9" на заклинание
    150​
    DialogChoice start from KEY 1Задает начало выбора диалога с кнопки 1 вместо 0
    151​
    Optimize VBОтключение вызова IDirect3DVertexBuffer7::Optimize для работы Steam Overlay
    152​
    VISEME at 60Hz fixИсправляет искажение лицевой анимации при 60 FPS
    153​
    Timed Overlay Mds Fix 'SetFightAnis after InitAnimations'Предотвращает зависания анимаций после удаления временного MDS оверлея
    154​
    bink_v_1_5Адаптирует bink из Г2 под Г1
    155​
    IsDead check T_RUNSTRAFEL and T_RUNSTRAFERИсправляет залипание анимации стрейфа после смерти NPC
    156​
    FIX T_MAGJUMPB (InvestedMana == 0)Исправляет зависание магов после отскока
    157​
    Disable slow code segment in zCTexConGeneric::UnlockОтключает неиспользуемый медленный код при инициализации текстуры
    158​
    IsDead before FindNextFightActionНе дает мертвому NPC производить атаки
    159​
    Ignore damage from GIL_SKELETON_MAGE to GIL_SKELETONОтключает урон от Скелета мага по Обычным скелетам
    160​
    1.0iCastSpecificSpell - SetAsPlayer fixУстраняет ошибку, на мгновение перемещающую камеру в 0 координату (а соответственно и баги со сбросом ближайших AI) во время превращения в монстра
    161​
    Fix double spawn for summonsУстраняет сдвиг призванных сущностей на свободные места спустя секунду после призыва
    162​
    GetSpellItem leak fixИсключает утечку памяти при использовании функции Npc_HasSpell
    163​
    CodeCave - 1Удаляет debug код для места под фиксы
    164​
    FindNextFightAction_Workaround_1Меняет поведение монстров чтобы на средней дистанции они не поворачивались к игроку, а бежали к нему
    165​
    CheckInsertNpc - NPC spawn fixРешает проблему, когда персонажи G1 в диапазоне видимости отказывались появляться
    166​
    Spawn anim fixВосстанавливает работоспособность анимации T_SPAWN во время призыва сущностей
    167​
    CopyDamage to arrow/boltИсправляет нулевой урон стрелы/болта, если он находился в руке после загрузки игры
    168​
    Disable inventory limitОтключает лимит инвентаря, мешающий в модах с большим количеством предметов
    169​
    Stop Focus TalkПозволяет прерывать диалоги, спровоцированные обращением к игроку
    170​
    PARADEJUMPB when GAME_ACTION not pressedВозвращает способность игроку отпрыгивать после атаки, а не ставить блок, если KEY_ACTION не зажата
    171Disable portal in the swampУвеличивает рабочую дистанцию портала PSU, отображающегося на болотах в виде черной коробки
    1721.0kskip EV_AIMATИсправляет дерганый выход при режима прицеливания с управлением G2
    173zFILE_VDFS::Open unsignedИсправляет ошибку при которой файловая система считает ошибкой адреса файлов свыше 2GB
    174Regen mana without hpИсправляет баг при котором регенерация здоровья возможна только с регенерацией маны
    175Transform crashfixИсправляет вылет при трансформации во время драки
    1761.0lStopInteraction fixИсправляет падение NPC с лестницы, когда первый заканчивает подъем, а второй пытается начать
    177Aligning npc by ladderВыравнивает NPC относительно наклона лестницы
    178Fall down from the mobInter fixУстраняет возможность сбросить NPC интерактивного объекта, плотно подойдя к нему
    179Barrier kill monsters and in waterДля устранения возможности пройти за барьер, урон по понстрам и в воде будет всегда смертелен
    180Disable form return after deathУстранение возможности вернуть человеческую форму в первую секунду смерти формы монстра
    181Inventory freeze at spell cast fixИсправляет зависание главного персонажа при открытии инвентаря в момент сотворения заклинания
    182Skip AI in non-game worldsИсправляет множественный вызов AI и скриптов, когда открыт инвентарь
    183Step sounds in more actionsПозволяет услышать шаги NPC при стрейфе, прыжках и шаге назад
    184Change BodyState in strafeНазначает состояние BS_SNEAK и BS_WALK (в т.ч. WALK вместо RUN) во время стрейфа
    185Create draw and remove weapon perceptions on run [исключен]Создает восприятие доставания и убирания оружия на беру (в оригинале только стоя)
    186Close alpha-lines on multipage documentsНемного сближает страницы документа, чтобы можно было создать им прозрачный контур
    187Stop strafe when movlockПрерывает стрейф, если персонажу запрещается двигаться (диалоги, катсцены и тп)
    188patch SVM (small talk) - ensure the text popups always appearИсправляет отображение субтитров мини диалогов (отображает, когда на экране нет других элементов интерфейса - прим. инвентарь или диалог)
    189Unpack inventory before tradeИсправляет ошибку, когда у торговца отображаются не все предметы, либо неверное их количество
    190CompatData fixИсправляет низкий FPS и убирает рамку в полноэкранном режиме
    191Lost sound fix in DirectSound3D providerИсправляет пропадающие звуки при включенном драйвере DirectSound3D
    192Double swim_2_dive fixИсправляет двойное выныривания после падения персонажа в воду
    193Dont reset active npcs at midnightИсправляет восполнение здоровья и других атрибутов у персонажей в полночь, если они находятся в поле видимости игрока
    194Fantom light after remove torch or other sources fixИсправляет световое пятно от убраного факела или другого источника света
    195Close inventory when dialog startsЗакрывает инвентарь игрока перед началом диалога
    196Disable inventory key in dialogsЗапрещает открывать инвентарь в диалогах
    197Monster-fish fixИсправляет недоработку, когда пираньи вдали от острова считались по неправильной дистанции
    198Transform teleportation through the walls fixИсправляет телепорт через стены при использовании свитка превращения
    199Reset spacer windowСбрасывает параметры окна Spacer, тем самым предотвращает его сворачивание
    200Relax ranged weapon after removeИсправление луков и арбалетов на спине, бесконечно проигрывающих анимацию
    201Disallow locking focus non-npc objectsЗапрещает фиксировать фокус на любых объектах кроме npc
    202Fix crash while transforming in waterПредотвращает креш при трансформации в воде
    203Restore mortality after dialogЕсли диалог завершается неудачно, возвращает видимость героя перед нпс (по умолчанию выкл)
    204Disable frame activity on pauseЗапрещает любые телодвижения персонажей во время паузы
    2051.0mStanlock fix when meatbug tries to draw weaponПредотвращает зависание персонажа, если будучи мясным жуком попытаться достать оружие
    206First day in savegame is 1Отображает номер игрового дня в меню сохранения/загрузки начиная с 1, а не 0
    207Fit viewport to screenВписывает элементы интерфейса в пределы экрана, устраняя некоторые негативные эффекты DX7
    208Create drawweapon perceptionНПС услышат, если персонаж на бегу достанет оружие в G1
    209Create removeweapon perceptionНПС услышат, если персонаж на бегу уберет оружие в G1
    210Fix NPC_KnowsInfoПозволяет отобразить ранее скрытые диалоги из-за ошибки скриптеров игры

    Описание файла настроек:
    INI:
    ; GOTHIC ½ — SYSTEMPACK
    ; ВАЖНО: Изменять настройки секции [DEBUG] не рекомендуется, но если у вас будут проблемы с нововведениями,
    ; вы можете отключить то, или иное исправление.
    ; Внимание: Файл SystemPack.ini станет доступен только после первого запуска игры!
    
    
    [DEBUG]
    Disable_D3DVBCAPS_WRITEONLY=1
    ; ... исправление, удаляет флаг WRITEONLY при создании вертексного буфера, для решения проблем с радиальным туманом и текстурами.
    ; - включено (1) или выключено (0), значение по-умолчанию: 1, для всех видеокарт. Возможное снижение производительности на 10-15%.
    
    SimpleWindow=1
    ; ... отключает рамку окна, но не включает оконный режим, - включено (1) или выключено (0), по-умолчанию: 1.
    
    BorderlessWindow=0
    ; ... включает оконный режим без рамки, - включено (1) или выключено (0), по-умолчанию: 0.
    ; рекомендуется включать только при возникновении проблем с работой игры в полноэкранном режиме.
    
    WindowPosX=0
    ; ... позиция окна по горизонтали, - по-умолчанию: 0.
    ; изменение позиции окна доступно только при BorderlessWindow = 1.
    
    WindowPosY=0
    ; ... позиция окна по вертикали, - по-умолчанию: 0.
    ; изменение позиции окна доступно только при BorderlessWindow = 1.
    
    ZNORESTHREAD=1
    ; ... отключает отдельный поток для менеджера ресурсов(ResourceManager) игры, - включено (1) или выключено (0), по-умолчанию: 1.
    
    MoverBugfix=1
    ; ... исправление для переключателя в храме "Спящего", - включено (1) или выключено (0), по-умолчанию: 1.
    ; работает даже при 1000 FPS, на остальные переключатели исправление вроде бы не влияет.
    
    NumLockDisable=1
    ; ... исправление, предотвращает отключение активного NumLock при запуске игры "Готика 1", - включено (1) выключено (0), по-умолчанию: 1.
    
    DisableCacheOut=1
    ; ... отключает выгрузку кэша при сворачивании игры, - включено (1) или выключено (0), по-умолчанию: 1.
    
    QuickSaveEnable=1
    ; ... исправление, восстанавливает работоспособность функции быстрого сохранения/загрузки для игры "Готика 1", - включено (1)
    ; или выключено (0), по-умолчанию: 1. Функция быстрого сохранения в игре использует 15-й слот.
    ; клавиши управления: [F5] - быстрое сохранение, [F9] - быстрая загрузка.
    
    USInternationalKeyboardLayout=1
    ; ... частично меняет раскладку клавиатуры, клавиши Z и Y поменялись местами, клавиша минус (нижнее подчеркивание)
    ; теперь работает корректно в консоли, по-умолчанию: 1.
    
    Polish_version=0
    ; ... включает изменения сделанные польским локализатором для клавиатуры в игре, - включено (1) или выключено (0), по-умолчанию: 0.
    
    PFXfix=1
    ; ... исправление, для корректной работы PFX-эффектов огня из костров в "Готике 1", - включено (1) выключено (0), по-умолчанию: зависит от языка системы.
    
    StrafeBug=0
    ; ... возможность использовать стрейф в прыжке/падении - включено (1) или выключено (0), по-умолчанию: 0.
    
    Show_FPS_Counter=0
    ; ... показать внутренний счётчик FPS, - включено (1) или выключено (0), по-умолчанию: 0.
    ; Внимание: встроенный в игру счётчик FPS не отображает значений больше 256 FPS.
    
    Cache_Timeout=400
    ; ... таймаут кэша с информацией об уступе, диапазон значений от 100 до 1500. Увеличьте это значение при возникновении проблем с карабканьем, по-умолчанию: 100.
    
    BUGFIX_already_deleted_zCObject=1
    ; ... отключает вывод ошибки с сообщением "D: OBJ: deleting an already deleted zCObject ?!", - включено (1) или выключено (0),
    ; по-умолчанию: 1.
    
    Disable_HUMANS_SWIM.MDS=0
    ; ... отключает анимацию плаванья в режиме walk, - включено (1) или выключено (0), по-умолчанию: 0.
    
    Game_InitEngIntl=1
    ; ... исправление, меняет опрос скрипта Game_InitEnglish на Game_InitEngIntl, - включено (1) или выключено (0), по-умолчанию: 1.
    ; в оригинальном Gothic2.exe 1.30(fix) изначально опрашивается только Game_InitGerman и Game_InitEnglish,
    ; а в русской версии игры в скрипте Startup.d прописано - Game_InitEngIntl, из-за этого exe-шник не работал с русской версией.
    ; для тех версий игры, где в скрипте Startup.d прописано значение Game_InitEnglish, этот параметр нужно выставить в 0.
    
    FixBink=1
    ; ... исправления для воспроизведения видео на всех ОС, - включено (1) или выключено (0).
    
    FixMss=1
    ; ... исправления для системы объемного звука, - включено (1) или выключено (0).
    
    UnknExeCrc=0x64796DB9
    ; ... при сбое игры сюда заносится контрольная сумма неизвестного или повлекшего вылет ехе-файла игры,
    ; к которому невозможно было применить исправления SystemPack'a.
    
    LineCacheSize=16384
    ; ... увеличивает количество допустимых для отрисовки на экран линий
    
    Win10AmdFix=1
    ; ... вынуждает игру на Windows 10 при видеокарте AMD запускаться в оконном режиме
    
    BorderFix = 1
    ; ... исправляет ограничение в 30 кадров и убирает рамку в полноэкранном режиме на современных ОС
    
    OptimizeVB=0
    ; ... отключает Steam Overlay
    
    SlidingSize=0.05
    ; ... определяет значение фикса, при котором персонаж будет корректно проскальзывать через ребра полигонов, при этом не вскальзывая вверх по склону, по-умолчанию: 0.05.
    
    ReadBinkWithVDFS=1
    ; ... позволяет читать BINK видео прямо из VDF тома, - включено (1) или выключено (0), по-умолчанию: 1.
    
    UseErrorVisuals=0
    ; ... вынуждает VDFS использовать вместо отсутствующих моделей и текстур красные объекты, которые будут
    ; отображаться вместо прозрачных объектов и текстур, - включено (1) или выключено (0), по-умолчанию: 0.
    
    dwNumVertices=8192
    ; ... предписывает сколько вершин может быть выделено динамическим вертексным буфером для отображения модели, по-умолчанию: 8192.
    
    DecompressedCacheSize=20
    ; ... размер кеша извлеченных данных сжатого тома в мегабайтах. Используется для предварительной распаковки
    ; данных, что может сократить время чтения, а также для повторного чтения извлеченных данных. по-умолчанию 20.
    
    UnzipThreadsCount=8
    ; ... количество потоков, которые будут задействованы при распаковке сжатого тома.
    ; По умолчанию указывается количество, равное числу ядер процессора.
    
    EmulatorMode=0
    ; ... режим, который принудительно изменяет порядок патчинга движка как в режиме для Wine.
    ; По-умолчанию 0.
    
    GpuFixes=1
    ; ... указывает, необходимо ли применять патчи для видеокарт, по-умолчанию 1.
    
    ForceFlip=0
    ; ... используйте эту опцию, если при использовании G-sync, FastSync, EnhancedSync
    ; проявляется мерцание - включено (1) или выключено (0), по-умолчанию: 0.
    
    DisableOcclusionCulling=0
    ; ... отключает проверку на наличие препятствий обхору объекта. Позволяет исключить
    ; мерцания объектов, но может заметно снизить производительность - включено (1) или выключено (0), по-умолчанию: 0.
    
    TerminateProcessHotkey=1
    ; ... разрешает комбинацию клавиш Ctrl + Alt + Q для экстренного завершения процесса игры.
    ; Используйте эту фукнцию при софтлоках или зависаниях игры - включено (1) или выключено (0), по-умолчанию: 1.
    
    RestoreMortalityAfterDialog=0
    ; ... позволяет автоматически следить за тем, чтобы при некорректном завершении диалога
    ; персонажи могли реалировать на героя - включено (1) или выключено (0), по-умолчанию: 0.
    
    FixBinkNew=1
    ; ... включает новую систему исправления роликов на базе Union.
    ; Включено (1) или выключено (0), по-умолчанию: 1.
    
    FixBink_InterpPixelSize=1
    ; ... определяет качество сглаживания видеоряда.
    ; 0 - сглаживание отключено, лучшая производительность;
    ; 1 - лучшее качество, худшая производительность;
    ; 2- хорошее качество, хорошая производительность;
    ; 3 или выше - снижение качества в пользу производителности.
    ; По умолчанию - зависит от процессора и разрешения экрана.
    
    FixBink_InterpCpuCount=6
    ; ... определяет количество потоков CPU, которое будет задействовано
    ; при сглаживании видеоряда. По-умолчанию: зависит от процессора
    
    
    [PARAMETERS]
    Gothic2_Control=0
    ; ... схема управления из Готики 2, одна клавиша (ЛКМ или CTRL) для выполнения любых действий, вместо комбинации клавиш (ЛКМ+W или CTRL+W), - включено (1) или выключено (0), по-умолчанию: 0.
    
    FPS_Limit=0
    ; ... ограничение FPS при нажатии любой клавиши, - включено (25-100) или выключено (0), по-умолчанию: 0.
    
    AnisotropicFiltering=16
    ; ... уровень анизотропной фильтрации текстур, - включено (2-16) или выключено (0), по-умолчанию: 16.
    
    VerticalFOV=67.5
    ; ... параметр для изменения вертикального FOV, значение по-умолчанию: 67.5.
    ; значение параметра для изменения vFOV по старой формуле: для мониторов 16:10 - (56.25), для мониторов 16:9 - (50.625).
    
    NewFOVformula=0
    ; ... включает альтернативную формулу расчёта FOV, из-за чего модели в игре более не выглядят вытянутыми, - включено (1)
    ; или выключено (0), по-умолчанию: 0.
    
    DisableLOD=0
    ; ... отключает прогрессивный LOD для *.3ds моделей, - включено (1) или выключено (0), по-умолчанию: 0.
    ; возможное снижение производительности на 10-15%.
    
    DisableIndoorClipping=1
    ; ... отключает отсечение объектов в Indoor локациях, - включено (1) или выключено (0), по-умолчанию: 1.
    
    SPAWN_INSERTRANGE=4500.0
    ; ... дистанция, на которой в мир игры вставляется NPC, по-умолчанию: 4500.
    
    SPAWN_REMOVERANGE=5000.0
    ; ... дистанция, на которой из мира игры удаляется NPC, по-умолчанию: 5000.
    
    SPAWN_INSERTTIME_MAX=1000.0
    ; ... интервал времени при котором в определенной точке - WP/FP, будет порожден/вставлен в мир очередной NPC
    ; значение по-умолчанию: 1000, ед. измерения: миллисекунды.
    
    SmoothAniDistance=5000
    ; ... дистанция плавной анимации NPC, - минимум (2000), по-умолчанию в игре: 2000.
    
    DrawDistanceMultiplier=1
    ; ... множитель дистанции видимости/прорисовки мира игры, по-умолчанию: 1.
    ; ограничения для множителя при дистанции видимости равной - 300% в опциях игры: для Gothic.exe - 10, для всех остальных - 26.
    
    OutDoorPortalDistanceMultiplier=1
    InDoorPortalDistanceMultiplier=1
    WoodPortalDistanceMultiplier=1
    ; ... множитель дистанции удаления порталов, по-умолчанию: 1
    ; OutDoor - когда ГГ находится вне помещений/пещер, на улице.
    ; InDoor - когда ГГ находится внутри помещений/пещер, в доме.
    ; рекомендуется увеличивать OutDoor/InDoor значения - синхронно.
    ; Wood - дальность видимости порталов леса, данный тип порталов актуален только для "Готики 1".
    
    zMouseRotationScale=0.1
    ; ... скорость поворота модели ГГ при использовании мыши в "Готике 1", по-умолчанию: 0.1.
    ; рекомендуемые значения: диапазон от 0.1 до 0.3, шаг - 0.01.
    ; для мышек с высоким DPI (4000 и выше), не более - 0.2.
    
    EnableShields=0
    ; ... исправление включает поддержку работы класса щитов, только для файлов: Gothic2.exe и GothicMod.exe, - включено (1)
    ; или выключено (0), по-умолчанию: 0.
    
    No_Take_Anim=0
    ; ... отключает анимацию подбора для любых назначенных клавиш, - включено (1) или выключено (0), по-умолчанию: 0.
    
    RMB_No_Take_Anim=0
    ; ... принудительно назначает клавиши LMB и RMB(любые другие клавиши работать не будут), отключает анимацию подбора для RMB,
    ; - включено (1) или выключено (0), по-умолчанию: 0.
    ; ВНИМАНИЕ: движок поддерживает назначение только 2-х кнопок на одно действие. Эти опции взаимоисключающие,
    ; одновременно может работать только одна из них!
    ; если включены обе, то будет работать только RBM_No_Take_Ani, так как RBM_No_Take_Ani имеет приоритет над No_Take_Ani (!)
    ; если включена RBM_No_Take_Ani=1, то на действие GAME_ACTION назначается левая и правая кнопка мыши, соответственно никакие
    ; другие назначаемые кнопки(в том числе и с клавиатуры) работать в этом случае не будут (!)
    ; если вам нужен Ctrl, но не нужна анимация, выставляем: No_Take_Anim=1, RMB_No_Take_Anim=0.
    ; если вам не нужна анимация на ПКМ, выставляем: No_Take_Anim=0, RMB_No_Take_Anim=1.
    ; если вам нужна анимация, выставляем: No_Take_Anim=0, RMB_No_Take_Anim=0.
    
    TRADE_VALUE_MULTIPLIER=0.5
    ; ... коэффициент торговли, - минимум (0.01), максимум (100.0), по-умолчанию: 0.5.
    
    Animated_Inventory=1
    ; ... вращение предметов в инвентаре, - включено (1) или выключено (0), по-умолчанию: 1.
    
    HideFocus=1
    ; ... скрыть фокус для мертвых NPC с пустым инвентарём, - включено (1) или выключено (0), по-умолчанию: 1.
    
    ThrowFlag=1
    ; ... проверять флаг ITEM_THROW, для возможности бросить вещь, - включено (1) или выключено (0), по-умолчанию: 1.
    
    InteractionCollision=0
    ; ... просчёт коллизий для используемых интерактивных объектов, - включено (1) или выключено (0), по-умолчанию: 0.
    
    keyDelayRate=150
    ; ... скорость авто-повтора нажатой клавиши в Готике 1, по-умолчанию: 70. Рекомендуемые значения: диапазон от 10 до 300.
    
    keyDelayFirst=150
    ; ... задержка перед началом авто-повтора клавиши в Готике 1, по-умолчанию: 140. Рекомендуемые значения: диапазон от 100 до 1000.
    
    HighlightMeleeFocus=1
    ; ... подсветка NPC в фокусе, - включено (1) или выключено (0), по-умолчанию: 1.
    
    HighlightInteractFocus=1
    ; ... подсветка предметов в фокусе, - включено (1) или выключено (0), по-умолчанию: 1.
    
    HighlightInteractNoFocus=1
    ; ... мерцание предметов находящихся не в фокусе, - включено (1) или выключено (0), по-умолчанию: 1.
    
    Fight_ANI_Interrupt=0
    ; ... прерывание анимации в бою, - включено (1) или выключено (0), по-умолчанию: 0.
    
    Monsters_Block_Damage=0
    ; ... разрешить монстрам блокировать удары, - включено (1) или выключено (0), по-умолчанию: 0.
    
    ReverbVolume=3.0
    ; ... множитель для громкости реверберации, чем выше значение, тем громче отражения эффектов звука, по-умолчанию: 3.0.
    ; громкость реверберации как множитель для всех - относительная реверберация разных звуков должна быть как в оригинале игры.
    ; опция доступна только если включен в настройках игры звуковой драйвер SP - "DirectSound3D HW".
    
    RainVobCollision=1
    ; ... капли дождя не проникают сквозь твердые объекты
    
    AbortMenuSound=1
    ; ... делает музыку в меню G2A прерываемой
    
    ShowArmor=0
    ; ... показывает одежду в инвентаре другого NPC
    
    UnlockParadeJumpB=1
    ; ... если в Gothic 2 попытаться совершить отскок сразу после удара, то будет поставлен блок. С технической точки
    ; зрения - это баг, который фиксится, если данная опция = 1. - включено (1) или выключено (0), по-умолчанию: 1
    
    AdaptiveSightDistance=0
    ; ... активирует автоматический контроль за дистанцией прорисовки в зависимости
    ; от текущего быстродействия игры - включено (1) или выключено (0), по-умолчанию: 0.
    
    AdaptiveSightDistance_LowerFPS=55
    ; ... порог FPS, при котором дистанция прорисовки будет снижаться в угоду производительности.
    ; Это значение не может быть выше UpperFPS - по-умолчанию: 55.
    
    AdaptiveSightDistance_UpperFPS=60
    ; ... порог FPS, при котором дистанция прорисовки будет повышаться в угоду лучшей картинки.
    ; Это значение не может быть меньше LowerFPS - по-умолчанию: 60.
    
    AdaptiveSightDistance_ShowInfo=0
    ; ... отображать отладочную информацию адаптивной дистанции отрисовки - включено (1) или выключено (0), по-умолчанию: 0.
    
    VisualizePerfomance=0
    ; ... рисует на экране графиг производительности - включено (1) или выключено (0), по-умолчанию: 0.
    
    HeightCorrectionOnLadder=1
    ; ... разрешает следить за тем, чтобы ноги персонажа не утопали под
    ; землю во время использования лестницы - включено (1) или выключено (0), по-умолчанию: 1.
    
    
    [BARRIER]
    AlwaysON=0
    ; ... отображать визуальный эффект Барьера постоянно, - включено (1) или выключено (0), по-умолчанию: 0.
    
    AlwaysOFF=0
    ; ... отключить визуальный эффект Барьера, - включено (1) или выключено (0), по-умолчанию: 0.
    
    DisableSound=0
    ; ... отключить звук Барьера, - включено (1) или выключено (0), по-умолчанию: 0.
    
    DisableDamage=0
    ; ... отключить урон от Барьера, - включено (1) или выключено (0), по-умолчанию: 0.
    
    
    [INTERFACE]
    Scale=1
    ; ... множитель автоматического масштабирования интерфейса игры, за основу взято разрешение 1024x768 пикселей;
    ; включено (1) или (1.1 ... и выше), масштабирование интерфейса в n-раз на усмотрение пользователя.
    ; максимальное значение зависит от вертикального разрешения экрана. То есть:
    ; для разрешения 1920x1080, максимальное значение будет 1080/512 = 2.10
    ; для разрешения 3840x2160, максимальное значение будет 2160/512 = 4.21
    ; более высокие значения будут прочитаны как максимальное.
    ; выключено (0), без масштабирования. По-умолчанию: 1.
    
    ScaleInventory=1
    ; ... определяет должен ли масштабироваться инвентарь, - включено (1) или выключено (0), по-умолчанию: 0.
    
    ForceMenuScale=0
    ; ... форсировать масштабирование меню, - включено (1) или выключено (0), по-умолчанию: 0.
    
    ScaleMenusX=640
    ; ... размер меню X для масштабирования, по-умолчанию: 640, ед. измерения пиксели.
    
    ScaleMenusY=480
    ; ... размер меню Y для масштабирования, по-умолчанию: 480, ед. измерения пиксели.
    
    DialogBoxX=800
    DialogBoxY=600
    SubtitlesBoxX=600
    ; ... настраиваемые параметры для изменения размеров окон субтитров и диалогов, ед., измерения пиксели.
    
    ShowManaBar=1
    ; ... отображение индикатора маны: скрыт - (0) выводится только с активным заклинанием в руках Гг - (1) отображается постоянно - (2),
    ; по-умолчанию в игре: 1.
    
    ShowSwimBar=1
    ; ... отображение индикатора воздуха: скрыт - (0) выводится только если Гг под водой - (1) отображается постоянно - (2),
    ; по-умолчанию в игре: 1.
    
    HideHealthBar=0
    ; ... отображение индикатора жизни: выводится постоянно - (0) скрыть - (1), по-умолчанию в игре: 0.
    
    NewChapterSizeX=640
    NewChapterSizeY=480
    SaveGameImageSizeX=320
    SaveGameImageSizeY=200
    InventoryItemNoteSizeX=450
    ; ... размеры элементов интерфейса в игре: Начало новой главы, Сохранение игры, Описание предметов, ед. измерения пиксели.
    
    InventoryCellSize=70
    ; ... изменение размера ячейки инвентаря, минимум (10), по умолчанию в игре: 70, ед. измерения пиксели.
    
    Color_DialogChoice_Active=-1
    ; ... цвет выбранной строки диалога, - по-умолчанию: -1 (Белый).
    
    Color_DialogChoice_Inactive=-6316129
    ; ... цвет не выбранной строки диалога, - по-умолчанию: -6316129 (Серый).
    
    Color_Talk_Hero=-1
    ; ... цвет шрифта для субтитров Гг, - по-умолчанию: -1 (Белый).
    
    Color_Talk_NPC=-256
    ; ... цвет шрифта для субтитров NPC, - по-умолчанию: -256 (Желтый).
    
    Color_Noise=-49408
    ; ... цвет шрифта для разговоров окружающих NPC, - по-умолчанию: -49408 (Оранжевый).
    ; Важно: используется только в "Готике 1".
    
    Hide_STR_DEX=1
    ; ... скрыть отображение второго значения силы/ловкости в окне характеристик персонажа, - включено (1) или выключено (0), по-умолчанию: 1.
    
    ForceDocScale = 0
    ScaleDocX = 8192
    ScaleDocY = 8192
    ; ... параметры для изменения размеров документов, книг и тп.
    
    ScaleRate=768
    ; ... эталонное значение разрешения по Y, под которое будет подстраиваться
    ; автоматическое масштабирование - по-умолчанию: 768.
    
    
    [SUBTITLES]
    Control=0
    ; ... включает управление временем отображения субтитров, - включено (1) или выключено (0), по-умолчанию: 0.
    ; необходимо включить для управления субтитрами.
    
    TimeMultiplier=2.0
    ; ... множитель времени для фраз с файлом озвученного диалога. То есть, имеется одна озвученная фраза продолжительностью
    ; в 10 секунд, при установленном множителе 2.0 субтитры в игры для неё будут отображаться в течении 20 секунд.
    
    MaxTimePerPhrase=30.0
    ; ... максимальное время в секундах для отображения субтитров без файла озвучки.
    
    TimePerChar=100.0
    ; ... время в миллисекундах для отображения одного символа субтитров без файла озвученного диалога. Например, при значении
    ; TimePerChar=200.0, фраза: "Ты можешь научить меня сражаться?" содержит 33 символа,
    ; значит отображаться она будет 33*200/1000=6.6 секунд.
    
    
    [MOUSE]
    EnableWrapper = 1
    ; ... включает управление мышью DirectX8
    
    SpeedMultiplierX = 1.0
    ; ... множитель скорости мыши по оси X
    
    SpeedMultiplierY = 1.0
    ; ... множитель скорости мыши по оси Y
    
    PrecisionMultiplier = 1.0
    ; ... множитель точности, оказываемый на мышку в зависимости от скорости ее движения, по-умолчанию: 1.0.
    
    ForceMouseControl = 0
    ; ... вынуждает мышь работать принудительно,
    ; даже если не найден фокус целевого окна
    
    FixTargetDelay = 1.0
    ; ... определяет с каким временным интервалом (секунды)
    ; при управлении G2 необходимо зафиксироваться на цели
    
    GameOverlayTakeControl = 1
    ; ... разрешает Оверлею Стима блокировать управление
    
    NoDirectXAxisMode=0
    ; ... Движения мыши будут регистрироваться не через DirectX, а через количество позиций, которое прошла мышь (RAW режим).
    ; Рекомендуется попробовать тем, кто играет с Freee Aim и испытывает большие проблемы с точностью прицеливания.
    ; Включено (1) или выключено (0), по-умолчанию: 0.
    
    
    [CORE]
    ShowDebugWindow=0
    ; ... открывает дополнительное консольное окно, куда выводится основная информация Union - включено (1) или выключено (0), по-умолчанию: 0.
    
    UseDebugWindowHost=1
    ; ... запускать консольное окно в отдельном процессе. такое окно не будет закрыто при выходе из игры - включено (1) или выключено (0), по-умолчанию: 1.
    
    ShowHiddenFiles=0
    ; ... делает доступным для видимости временное хранилище в папке Gothic\Data - включено (1) или выключено (0), по-умолчанию: 0.
    
    RTDynamicCastExtension=1
    ;  ... активирует расширение, позволяющее движку нативно ассоциировать классы плагинов со своими.
    ; Не рекомендуется изменять этот параметр - включено (1) или выключено (0), по-умолчанию: 1.
    
    CustomDebugWindowPos=0
    ; ... определяет, будет ли дополнительное консольное окно создаваться в конкретном месте экрана - включено (1) или выключено (0), по-умолчанию: 0.
    
    DebugWindowPosX=0
    ; ... задает положение дополнительного консольного окна по оси X - по-умолчанию: 0.
    
    DebugWindowPosY=0
    ; ... задает положение дополнительного консольного окна по оси Y - по-умолчанию: 0.
    
    CustomRaiseHardError=1
    ; ... определяет будет ли создано альтернативное окно ошибки загрузки библиотек, более понятное конечному пользователю, - включено (1) или выключено (0), по-умолчанию: 1.
    
    Language=RUS
    ; ... определяет используемый в Union язык, а также язык, используемый в плагинах. По-умолчанию: язык системы.
    
    ParserExtenderAlwaysOn=0
    ; ... определяет должен ли плагин zParserExtender запускаться даже тогда, когда нет скриптов для инъекции.
    ; Включено (1) или выключено (0), по-умолчанию: 0.
    
    
    [PLUGINS]
    PluginList =
    ; ... определяет, какие плагины должны быть запущены при старте игры. Указываются через запятую.
    
    UseVDFS = true
    ; ... определяет, будут ли плагины читаться из VDF томов
    
    AutorunFilter = dll, m3d, src, d
    ; ... определяет, плагины каких расширений могут быть запущены из папки Autorun
    
    IgnoreList =
    ; ... определяет, какие плагины не должны запускаться при старте игры. Указываются через запятую.
    ; Параметр является фильтром, где символом * игнорируется диапазон символов.
    
    UnIgnoreList =
    ; ... определяет, какие плагины не должны игнорироваться, не смотря на предписание параметра IgnoreList. Указываются через запятую.
    ; Параметр является фильтром, где символом * игнорируется диапазон символов.
    
    UseAdaptiveHooks = 0
    ; ... определяет будут ли все Detours хуки Union заменяться на альтернативные хуки-патчи. Параметр следует использовать только
    ; в случае проблем с соместимостью в каких-либо модификациях, поскольку данный вид хуков может сработать не со 100% вероятностью
    ; в силу особенностей байт-кода игры, - включено (1) или выключено (0), по-умолчанию: 0.
    
    IgnoredAdaptiveList =
    ; ... список адресов (через запятую), которые не должны быть адаптированы, если UseAdaptiveHooks = 1.
    
    ShowAdaptiveReport = 0
    ; ... выводит в консоль отчет о произведенных адаптациях, - включено (1) или выключено (0), по-умолчанию: 0.
    
    AutorunDependenciesSortion = 1
    ; ... определяет должны ли плагины в папке Autorun сортироваться согласно зависимости друг от друга, - включено (1) или выключено (0), по-умолчанию: 1.
    
    
    [GAME]
    SaveGameToASCII = 0
    ; ... вынуждает игру писать Сейвы в виде понятного человеку текста - включено (1) или выключено (0), по-умолчанию: 0.
    
    SaveDATinASCII = 0
    ; ... вынуждает игру записывать часть сейва со скриптами в символьном виде - включено (1) или выключено (0), по-умолчанию: 1.
    
    
    [SPLASH]
    FileName =
    ; ... указывает, какой файл DIB (24 bit without a color-space data) будет использован в качестве изображения Сплеш окна.
    ; Если ничего не задано, то Union попытается найти файл с именем Splash.bmp.
    
    HideTitle = 0
    ; ... указывает, стоит ли скрывать текущую версию Union и SystemPack поверх окна сплеша - включено (1) или выключено (0), по-умолчанию: 0.
    
    AlphaColor =
    ; ... указывает, какой цвет (RGB: "255 100 50") следует использовать в качестве полностью прозрачной области на изображении.

    Описание формата PATCH файлов:

    Краткий перечень введений:
    - Исправления багов движка и драйверов
    - Поддержка всех современных разрешений экранов
    - Быстрая система чтения игровых файлов
    - Поддержка сжатых OGG звуков
    - Поддержка различных звуковых драйверов для наилучшего игрового звучания
    - Автоматическая подстройка параметров под Вашу ОС и Видеокарту
    - Повышение предела используемой памяти до 4GB
    - Автоматическое отключение DEP и масштабирования интерфейса
    - Поддержка Steam overlay
    - Воспроизведение игровых роликов во весь экран + чтение BINK из VDF
    - Отзывчивая мышь
    - Альтернативное окно Сплеша

    Запуск под Wine (или другими (не)эмуляторами):
    Добавлена поддержка Wine и других аналогов. (тестировалось под Ubuntu 20.04 и MacOS 11.1, Wine 5.0)
    Под Вайном не будут запускаться GPU патчи, мешающие запуску игры.

    Требования для корректной работы под Wine (для остальных (не)эмуляторов аналогично):
    1. Чтобы работал Менеджер ресурсов и автономные установщики, требуются установленный DotNet (NET Framework 4.0), Visual C++ 2010.
    2. Чтобы работала сама Gothic, требуются установленные Visual C++ 2008 и 2010.
    ВАЖНО! В Wine библиотеки времени выполнения (MSVCR[XXX]) самопальные, поэтому могут вызывать критические ошибки. Например MSVCR100 необходимо сразу поменять на оригинальный для Windows. В противном случае будете видеть следующее:
    1614030398533.png


    Поэтому первым делом надо настроить Wine таким образом, чтобы первоисточниками библиотек времени выполнения были сторонние dll.
    Для этого прописываем в терминал команду winecfg - должно появиться окно с настройками Wine. Открываем вкладку "Библиотеки". В поле "Новое замещение для библиотеки" прописываем сразу пачку библиотек MSVCR100.DLL, MSVCR110.DLL, MSVCR120.DLL, MSVCR140.DLL (и так далее, если когда-нибудь потребуются другие). Таким образом Wine будет искать сначала установленную на ПК библиотеку, а если не найдет - собственную.
    1614030479558.png


    Теперь для того, чтобы эти библиотеки появились, следует установить Microsoft Visual C++ 2010 x86 (а также остальные 2012-2019, если этого требуют какие-либо плагины). Как правило этого достаточно для нормальной работы игры. Всё.


    Однако, если по какой-то причине сторонняя MSVCR не определяется, можно попробовать положить ее рядом с EXE файлом игры (см. спойлер). Но по идеи до такого дойти не должно.
    1614030523897.png




  • To install the product on a Steam copy of the game
    recommended to use the Union version from the workshop

    • Get for the Steam Gothic I •
    stimSmall.png
    • Get for the Steam Gothic II •




    To manual install, use the Resource Manager - a program which
    can install the most up-to-date Union products online

    • Download Resource Manager • 1559419291725.png




    Or, use the Offline Installers - installers
    which do not require an internet connection.

    • Get more Union Standalone Products here •
    Download Union 1.0m
    directly WOP.pngfrom cloud GDRIVE.png
    Download Primary patch
    directly WOP.pngfrom cloud GDRIVE.png




    Definitions:
    Uniona package that fixes most of the engine's bugs, improves its performance and compatibility with different operating systems.
    Primary patchresource pack that prepares the game to work with other software packages and mods.
    Pluginslibraries designed to add technical means to the engine for functional or creative purposes.
    Patcha small program that changes the engine code, usually in order to fix bugs or flaws.
    Gothic APIa set of 4 interfaces that provide the programmer with direct access to the objects of the engine and its structure as a whole.
    Union SDKa set of developer tools for easy creation of cross-platform plugins for a Union-based engine.

    Platforms:
    Gothic 1, Gothic Sequel, Gothic 2, Gothic 2 NoTR

    Languages:
    English, Russian, German, Polish, Romanian, Italian, Czech, Spanish

    Releases:
    1.0a, 1.0b, 1.0c, 1.0d, 1.0e, 1.0f, 1.0g, 1.0h, 1.0i, 1.0j, 1.0k, 1.0l, 1.0m

    Page on a German resource:
    worldofplayers.de

    Developers:
    Gratt, killer-m

    System requirements:
    • Windows XP SP3 or higher, MacOS, Linux
    • Visual C++ 2010 (will be installed automatically)
    • DirectX 7, 8, 9
    • NET framework 4.0 (for the installers)
    • Administrator rights

    Installation guide:
    Installation guide:
    • Forget everything that people who have little understanding of the engine and its components have told you on YouTube or any other forums
    • Union is installed either through Resource manager, either through offline installer. Links to both are at the very top of the topic. The difference between the two is that
      • Resource manager is online program, which requires a network connection. In the Manager, all updates are released first, and there are also other Union-based products.
      • The offline installer is offline program, which contains the specific product to be installed.
    • When you install Union, you immediately get the installed SystemPack 2.0.
    • Union can be installed on any licensed copy of Gothic and with any pre-installed extensions and modifications (except for the classic Return 2.0)
    • The package can be updated by installing a new version of Union over the old one.
    • Uninstallation of Union is performed either through the uninstaller in the Gothic folder, or through the installer.
    • It is recommended to rollback the Union version by uninstalling the newer version of Union and then installing the older one.
    About the primary patch:
    • The Primary Patch is a patch that tidies up the game's resources and also adds a Player Kit to play with mods.
    • The primary patch is required for installation on a clean game. You do not need to re-install it.
    • Reinstallation of the primary patch is recommended when the executable files of the game have been damaged by other packages, or when an update of the primary patch is released.
    Installation and update procedure:
    When installing Union for the first time:
    1. Make sure that the game is turned off and all its files are closed.
    2. Install the Primary patch - Player Kit + Game resources patch.
    3. Install the current version of Union.
    4. Start the game before the menu, and then close it.
    5. Make sure the SystemPack.ini file appears in the Gothic/System folder. If the file is not present, then check that the correct installation path is selected. Then repeat from step 1.
    6. Restart your PC for your system to apply the new DEP policy rules.
    On Union updates:
    1. Make sure that the game is turned off and all its files are closed.
    2. When installing Union, select the ‘Install / update components’ item.
    3. Run the game to the menu and make sure that the letter Union in the lower right corner matches the letter of the Union you are installing. If not, make sure to select the correct installation path. Then repeat from step 1.
    On Union removing:
    1. Make sure that the game is turned off and all its files are closed.
    2. Run ‘Union - uninstaller.exe’ in the game folder, or start the installation process and select ‘Restore original version from backup’
    3. After deleting from the game menu, the inscription Union should disappear in the lower right corner.

    List of engine edits:
    VersionNameDescription
    1​
    1.0aGothic.ini fixesOverrides some important parameters of Gothic.ini
    2​
    GameVersionDisplays the version of Union in the game menu
    3​
    BorderlessWindowSets window mode options
    4​
    Allow all windowed resolutionsRemoves 1024x768 limit for windowed mode
    5​
    D3DIM700.dll - removes 2048 pixel limitIncludes resolutions from 2K and higher
    6​
    AcGenral.dll - Windows 7 rundll32.exe bugfixDisables the start of the rundll32.exe process that prevents the game from starting on Windows 7
    7​
    ALPHA_VOB and ALPHA_WORLD_POLYIncreases memory for zCRndAlphaSortObject_Vob and zCRndAlphaSortObject_WorldPoly classes
    8​
    Unlock FPSDisables FPS limit
    9​
    D3DVBCAPS_WRITEONLYRemoves the WRITEONLY flag when creating a vertex buffer.
    10​
    Unlock_ResolutionRemoves the limit for resolutions above 1600 in the game menu
    11​
    MARVIN - F8 fixPrevent character from turning north
    12​
    FOVImplements a widescreen formula for calculating the viewing angle
    13​
    SPAWN_INSERTRANGEDefines the range for including NPCs in the world
    14​
    SPAWN_REMOVERANGEDefines the range for excluding NPCs from the world
    15​
    SPAWN_INSERTTIME_MAXDetermines the refresh rate of NPC inclusions in the world.
    16​
    ZNORESTHREADDisables a separate thread for the resource manager
    17​
    SaveGameToANSIWrites ANSI-encoded text saves
    18​
    SendMessage - BroadCast fixFixes a hangup at the start of the game
    19​
    NumLockDisableFixes spontaneous disabling of NumLock
    20​
    PerceptionCheck - crash fixFixes crash when calling PERC_ASSESSITEM function
    21​
    MAP - 4:3 aspect ratioSets a fixed 4:3 card ratio
    22​
    Resolution limit - 25600Unlocks the screen resolution limit in the game menu
    23​
    DrawDistanceMultiplierSets the draw distance multiplier
    24​
    zPM_NUM_VBUFFER_VERT 65535~ Increases the maximum allowable number of polygons in the model
    25​
    DisableLODDisables simplification of models when increasing distance
    26​
    DisableIndoorClippingDisables clipping objects in Indoor locations
    27​
    OutDoorPortalDistanceMultiplierSets the portal rendering distance multiplier OUTDOOR
    28​
    InDoorPortalDistanceMultiplierSets the portal rendering distance multiplier INDOOR
    29​
    WoodPortalDistanceMultiplierSets the portal rendering distance multiplier WOOD
    30​
    DisableCacheOutDisables cache unloading when minimizing the game, otherwise the game often crashes when minimized
    31​
    MoverBugfixIt is necessary for the switch to be activated in the temple of the sleeper at FPS above 24
    32​
    zMouseRotationScaleSets the mouse speed multiplier
    33​
    FPS limit in menuLimits the number of frames in the main menu G1
    34​
    DialogBoxXSets the actual size of the dialog in X
    35​
    DialogBoxYSets the actual size of the dialog in Y
    36​
    SubtitlesBoxXSets the width of the subtitle window
    37​
    BarrierDefines custom barrier settings
    38​
    Enable QuickSaveActivates the keyboard shortcuts for saving F5 and loading F9
    39​
    USInternationalKeyboardLayoutSets the international keyboard input mode
    40​
    Disable key repeat acceleration in menuIf you hold down the key in the game menu, then the transition through the lines in the menu is not accelerated
    41​
    keyDelayRateSets the time to automatically re-imput the pressed button
    42​
    keyDelayFirstSets the time of the first automatic re-input of the pressed button
    43​
    NUM_POS_CACHE 524288~ Increases the maximum allowable number of polygons in the model
    44​
    s_posCacheList~ Increases the maximum allowable number of polygons in the model
    45​
    ShowManaBarSets a permanent display of mana status
    46​
    ShowSwimBarSets a permanent display of breathing status
    47​
    HideHealthBarSets whether to hide health status, if full
    48​
    ShieldActivates a shield slot
    49​
    Model ClippingDisables the disappearance of models at a large distance from the camera
    50​
    PfxFixCorrects the disappearance of PFX effects
    51​
    MAP_Delay_BUGFIXFixes a freeze at the time of opening the card
    52​
    Disable assert - refCtr>=-1, "D: OBJ: deleting an already deleted zCObject ?!"Disables an error indicating that the object to be deleted has already been deleted
    53​
    CollisionBugCorrects a crash when colliding with a length of zero vector
    54​
    LOW_FPS_FIXFixes a game freeze when playing PFX
    55​
    DEAD_B BUGFIXWhen finishing the enemy lying on his stomach, the correct animation is played
    56​
    Orcs_Remove_WeaponAllows orcs to remove weapons
    57​
    SubtitlesSets subtitle window life options
    58​
    NewChapterSizeXSets the actual window size of the new X chapter
    59​
    NewChapterSizeYSets the actual window size of the new chapter in Y
    60​
    SaveGameImageSizeXSets the actual size of the save window in X
    61​
    SaveGameImageSizeYSets the actual size of the save window in Y
    62​
    InventoryItemNoteSizeXDetermines the size of the interface elements in the game: Start a new chapter, Save the game, Description of items, units measuring pixels
    63​
    InventoryCellSizeSets the size of the inventory cell
    64​
    DisableCrawlTurns off swimming animation in WALK mode/TD]
    65​
    FOV_New_FormulaDefines a new formula for viewing angles
    66​
    Not equip a bow/crossbow togetherNPCs do not equip with bow and crossbow at the same time
    67​
    Interface scalingSpecifies an interface scaling
    68​
    No_Strafe_while_fallProhibits the use of strafe during a fall
    69​
    TRADE_VALUE_MULTIPLIERPrice multiplier that merchants will set when selling items to them
    70​
    Disable_Save_Menu_When_DieForbids preservation at the time of death of the protagonist
    71​
    Disable_Map_UseDisables the map in some states (death, knockout, fall, etc.)
    72​
    Allow_Throw_ItemsAllows throwing items
    73​
    Rotate_ItemsRotates items in inventory
    74​
    Inventory_Camera_BugfixSelects the correct inventory camera if it was open with a weapon in hand
    75​
    Spell_Name_Time_FixDecreases the display time of the inscription with the name of the spell
    76​
    HighlightSets custom highlighting of environment objects
    77​
    ITM_FLAG_DROPPEDDiscarded items are assigned a flag const int ITEM_DROPPED = 1 << 24
    78​
    Hide_Focus_on_EMPTY_DEAD_NPCDisables focus display for dead NPCs with empty inventory
    79​
    Disable using of weapons when the hero uses an anvilProhibits the use of weapons when interacting with an anvil
    80​
    No_interrupt_fight_animationDisables interruption of some combat animations
    81​
    Drop_Throw_Item_FixAllows an object taken for a throw to be thrown in front of itself
    82​
    Auto_Scroll_TimeReduces the display time of the spell name label
    83​
    Block the hero move in the menuBlocks the movement of the main character when in the menu
    84​
    Turn_Attack_on_RunFixes a bug where the NPCs' attackers would turn in the same direction as the main character
    85​
    Doubling_ItemsPrevents doubling of objects when interacting with objects
    86​
    Underwater_Take_VobAllows picking up items under water
    87​
    Disabled_Mouse_Camera_FixThe camera works correctly if the mouse is disabled in the game ops
    88​
    Arrow_PFXWhen an arrow or a bolt collides with an obstacle, the pfx effect is reproduced
    89​
    ONE_BUTTON_CONTROLBring control G1 to view G2
    90​
    MOUSE_BUFFER_SIZE 50Increases mouse input buffer size to prevent sticky keys
    91​
    FindNextFightAction_WorkaroundPrevents "trembling" monster animations
    92​
    Text ColorSets the colors of text in dialog operations.
    93​
    Close_Inventory_In_NPCCloses the NPC inventory window when combat mode is activated
    94​
    Show_FPSEnables continuous showing of frame rate
    95​
    Items_Insert_BugPrevents merchants from doubling items at the beginning of each chapter
    96​
    F6_Windowed_FreeLookActivates the F6 key in windowed mode to enable a free camera
    97​
    JUMP_ANIM_Bug (s_ledgeCache?)Increases the cache timeout with ledge / climbing platform information
    98​
    EV_Parade_fixBlock in battle fires without misfires
    99​
    Hit_Check_AngleYou can not block a blow aimed at the back
    100​
    Parade_fixIt is impossible to block the bites of monsters (except for the rebound). The rebound blocks the damage when one key is pressed, instead of combining 2 keys (optional - Gothic2_Control = 1) Sound changed when a monster blocks a hit.
    101​
    Monsters_Block_DamageAllows monsters to block attacks
    102​
    Hide strength and dexterity values in character screen after /Hides the second value of strength and dexterity from the character's characteristics window
    103​
    Anisotropic_FilteringSets the texture filtering level
    104​
    Pyro_fixWhen re-casting the Pyrokinesis spell, the victim does not exit the ZS_Pyro state
    105​
    Disable endless VISEME after getting hitDisables endless mouth animation when taking damage
    106​
    Magic_Collision_FixCorrects the absence of magic damage while standing at point blank range
    107​
    Game_InitEnglish to Game_InitEngIntlReplaces the initialization function
    108​
    Disable using map when the hero has become a monsterBlocks the ability to open a card in the form of a monster
    109​
    The last used scroll gives full damageSets the correct damage from the last scroll
    110​
    No_Interrupt_Interact_ANIDisables the interruption of some animations (for example, you cannot interrupt the animation of applying a permanently increasing potion potion)
    111​
    AttackRun_fixNPCs when attacking on the run do not turn around their axis, copying the turns of Gg
    112​
    FIST mode turns off correctly by pressing "1" buttonSets the correct exit from the cam mode by the button "1"
    113​
    Dropped arrows, bolts and torches will be removed after loading saveSets the correct removal of fallen arrows, bolts, and torches after loading
    114​
    MOUSE_BUFFER_SIZE 100Increases mouse input buffer size to prevent sticky keys
    115​
    WASD_MenuNavigation in the main menu using the WASD keys
    116​
    Unlock armor in trade, in npcAllows you to display clothes in the inventory of purchases and searches
    117​
    PolishAdds input of Polish diacritics
    118​
    No_Take_AnimDisables item pickup animation
    119​
    RMB_No_Take_AnimReassigns the previous patch to the right mouse button
    120​
    1.0cKERNEL32_2_SHW32Redirects some file functions to Union to play bink clips from VDF
    121​
    Fix low framerateMakes normal FPS in the main menu
    122​
    Rain particle collisionsActivates the collision of raindrops with any objects
    123​
    Simple WindowMakes the game window frameless
    124​
    CollisionVolumeScalerDetermines the optimal volume of the object with which it interacts
    125​
    BarrierIgnoreSkyEffectsSettingPrevents barrier disappearing during shutdown of raining (skyEffects=0)
    126​
    SmoothAniDistanceSets the distance at which the animation will play smoothly
    127​
    Lootfix UnconsciousPrevents spontaneous inventory closures when trying to search an unconscious NPC
    128​
    DrawItemInfoDraws an object in the item description field over the background
    129​
    MobInterCollisionDisables collisions to accurately position NPCs with the used MOB
    130​
    LOW_FPS_NaN_checkFixes a game freeze when playing PFX
    131​
    CView_Blit_farZ_65534Displays background texture at high visibility ranges
    132​
    1.0eREMOVE OVERLAYMDS fixFixes inability to remove MDS overlay
    133​
    Exit VDFSMakes the game terminate the file system before exiting
    134​
    1.0fprologFixes memory leak in Prolog with some NPC
    135​
    Hide original splashHides native splash window
    136​
    1.0gFix low framerateMakes normal FPS in the main menu
    137​
    1.0hAllow undeclarated instancesAllows insertion into the world of undeclared zCObject derivatives
    138​
    Line cache sizeIncreases the number of lines drawn on the screen
    139​
    UnequipItemFix a bug with double removal of stats when unequipping an item
    140​
    SAVEDAT IN ASCIIAlternative script saving for better performance
    141​
    oCNpc::SetFlag FixFix the error of incorrect flag setting due to invalid operator
    142​
    Dialog Starvation FixFix possible dialog froze
    143​
    F3 - SetForegroundWindowFixes window fullscreen focus
    144​
    CS Player crash fixCutscene crash fix
    145​
    Sliding fixSliding mountains hero fix
    146​
    Fix 1px cutline in zCView objectsFixes 1 pixel bug in the interface
    147​
    Load Steam Overlay [removed]Activates Steam Overlay
    148​
    SAVE MENU CONFIRM LMBAllows confirming the action of saving the game with the left mouse button
    149​
    Inventory KEY 9 fixPrevents inventory closing when assigning the `key 9` to a spell
    150​
    DialogChoice start from KEY 1Specifies the start of dialog selection from button 1 instead of 0
    151​
    Optimize VBDisabling the IDirect3DVertexBuffer7::Optimize call for Steam Overlay to work
    152​
    VISEME at 60Hz fixFix facial animation distortion at 60 FPS
    153​
    Timed Overlay Mds Fix 'SetFightAnis after InitAnimations'Prevents animation freezes after removing temporary MDS overlay
    154​
    bink_v_1_5Adapts bink from G2 to G1
    155​
    IsDead check T_RUNSTRAFEL and T_RUNSTRAFERFixes animation loop after npc death
    156​
    FIX T_MAGJUMPB (InvestedMana == 0)Fix mages after a strafe
    157​
    Disable slow code segment in zCTexConGeneric::UnlockDisables slow code of textures init
    158​
    IsDead before FindNextFightActionStops dead npc attacks
    159​
    Ignore damage from GIL_SKELETON_MAGE to GIL_SKELETONDisable damage from skeleton mage to skeleton
    160​
    1.0iCastSpecificSpell - SetAsPlayer fixFixes the bug that momentarily moves the camera to 0 coordinate (and, accordingly, the bugs with resetting the nearest AI) when turning into a monster
    161​
    Fix double spawn for summonsFixes the shift of summoned entities to empty spaces one second after summoning
    162​
    GetSpellItem leak fixFixes memory leaks when using the Npc_HasSpell function
    163​
    CodeCave - 1Removes debug code for the place for fixes
    164​
    FindNextFightAction_Workaround_1Changes the behavior of monsters so that at medium distance they do not turn towards the player, but run towards him
    165​
    CheckInsertNpc - NPC spawn fixFixes where G1 NPCs in line of sight refused to appear
    166​
    Spawn anim fixRestores the T_SPAWN animation to work while invoking entities
    167​
    CopyDamage to arrow/boltFixes zero arrow/bolt damage if in hand after loading the game
    168​
    Disable inventory limitDisables the inventory limit that gets in the way in mods with a lot of items
    169​
    Stop Focus TalkAllows you to interrupt dialogues provoked by addressing the player
    170​
    PARADEJUMPB when GAME_ACTION not pressedReturns the ability to the player to jump back animation after an attack, not a parade, if KEY_ACTION is not pressed
    171Disable portal in the swampIncreases the working distance of the PSU portal, which appears in the swamps as a black box
    1721.0kskip EV_AIMATFixes 'tremor' out from aiming mode with G2 controls
    173zFILE_VDFS::Open unsignedFixes a bug of the file system considers file addresses over 2GB as an error
    174Regen mana without hpFixes a bug of health regeneration is only possible with mana regeneration
    175Transform crashfixFixes a crash when transforming during a fight
    1761.0lStopInteraction fixFixes NPC falling off stairs when the first finishes climbing and the second one tries to start
    177Aligning npc by ladderAligns the NPC with the slope of the stairs
    178Fall down from the mobInter fixEliminates the ability to reset the NPC of an interactive object by tightly approaching it
    179Barrier kill monsters and in waterTo eliminate the possibility of passing through the barrier, damage to ponstras and in water will always be fatal
    180Disable form return after deathDisables the opportunity to return to human form in the first second of death of the form of a monster
    181Inventory freeze at spell cast fixFixes freezing of the main character when opening inventory at the moment of casting a spell
    182Skip AI in non-game worldsFixes multiple calls to AI and scripts when inventory is open
    183Step sounds in more actionsAllows you to hear NPC footsteps when strafing, jumping and stepping back
    184Change BodyState in strafeAssigns BS_SNEAK and BS_WALK states (including WALK instead of RUN) during strafe
    185Create draw and remove weapon perceptions on run [removed]Creates the perception of reaching and removing weapons on the take (in the original only standing)
    186Close alpha-lines on multipage documentsBrings the pages of the document closer together so that you can create a transparent outline for them
    187Stop strafe when movlockInterrupts the strafe if the character is forbidden to move (dialogues, cutscenes, etc.)
    188patch SVM (small talk) - ensure the text popups always appearFixes the display of subtitles for mini dialogs (displays when there are no other interface elements on the screen - approx.inventory or dialog)
    189Unpack inventory before tradeFixes a bug when the merchant displays not all items, or the wrong amount
    190CompatData fixFixes low FPS and removes frame in full screen mode
    191Lost sound fix in DirectSound3D providerFixes missing sounds when DirectSound3D driver is enabled
    192Double swim_2_dive fixFixes double diving after falling into water
    193Dont reset active npcs at midnightCorrects the replenishment of health and other attributes for characters at midnight, if they are in the player's field of view
    194Fantom light after remove torch or other sources fixFixes a light spot from a retracted torch or other light source
    195Close inventory when dialog startsCloses the player's inventory before starting a dialogue
    196Disable inventory key in dialogsPrevents opening inventory in dialogs
    197Monster-fish fixFixes an issue where piranhas away from the island were counted at the wrong distance
    198Transform teleportation through the walls fixFixes teleporting through walls when using a transformation scroll
    199Reset spacer windowResets the parameters of the Spacer window, thereby preventing it from minimizing
    200Relax ranged weapon after removeFix for bows and crossbows on back playing endless animations
    201Disallow locking focus non-npc objectsPrevents fixing focus on any objects other than npc
    202Fix crash while transforming in waterFixes a crash when transform in water
    203Restore mortality after dialogIf the dialog fails, returns the visibility of the hero for other NPCs (off by default)
    204Disable frame activity on pauseDisables any movements of the characters during the pause
    2051.0mStanlock fix when meatbug tries to draw weaponPrevents the hero stanlock if, being a meatbug, you try to draw a weapon
    206First day in savegame is 1Displays the number of the game day in the save/load menu starting from 1, not 0
    207Fit viewport to screenFits interface elements into the screen limits, excluding some negative effects of DX7
    208Create drawweapon perceptionNPCs will hear if a character draws a weapon on the run in G1
    209Create removeweapon perceptionNPCs will hear if a character removes a weapon on the run in G1
    210Fix NPC_KnowsInfoAllows to display hidden dialogs due to error by the game's scriptwriters
    [TD]

    Description of the settings file:
    INI:
    ; GOTHIC ½ — SYSTEMPACK
    ; IMPORTANT: It is not recommended to change the settings of the [DEBUG] section, but if you have problems with innovations,
    ; you can disable this or that fix.
    ; Attention: The SystemPack.ini file will become available only after the first launch of the game!
    
    
    [DEBUG]
    FixGameUX=1
    ; ... fixes for GameUX and the process - rundll32 in WinVista, Win7, - enabled (1) or disabled (0).
    
    Disable_D3DVBCAPS_WRITEONLY=1
    ; ... fix, removes the WRITEONLY flag when creating a vertex buffer, to solve problems with radial fog and textures.
    ; - on (1) or off (0), the default value: 1, for all video cards. Possible decrease in productivity by 10-15%.
    
    SimpleWindow=1
    ; ... disables the window frame, but does not enable window mode - on (1) or off (0), by default: 1.
    
    BorderlessWindow=0
    ; ... turns on windowed mode without a frame - on (1) or off (0), default: 0.
    ; It is recommended to turn it on only if there are problems with the game in full screen mode.
    
    WindowPosX=0
    ; ... horizontal position of the window - by default: 0.
    ; changing the position of the window is available only with BorderlessWindow = 1.
    
    WindowPosY=0
    ; ... the vertical position of the window - by default: 0.
    ; changing the position of the window is available only with BorderlessWindow = 1.
    
    ZNORESTHREAD=1
    ; ... disables a separate thread for the resource manager (ResourceManager) of the game - on (1) or off (0), by default: 1.
    
    MoverBugfix=1
    ; ... the fix for the switch in the Sleeping Temple is on (1) or off (0), by default: 1.
    ; It works even at 1000 FPS, the correction does not seem to affect the rest of the switches.
    
    NumLockDisable=1
    ; ... fix, prevents the active NumLock from being turned off when the Gothic 1 game starts, - on (1) off (0), by default: 1.
    
    DisableCacheOut=1
    ; ... disables cache unloading when minimizing the game - on (1) or off (0), by default: 1.
    
    QuickSaveEnable=1
    ; ... correction, restores the functionality of the quick save / load function for the game "Gothic 1", - enabled (1)
    ; on or off (0), by default: 1. The quick save function in the game uses the 15th slot.
    ; control keys: [F5] - quick save, [F9] - fast boot.
    
    USInternationalKeyboardLayout=1
    ; ... partially changes the keyboard layout, the Z and Y keys are swapped, the minus key (underscore)
    ; Now it works correctly in the console, by default: 1.
    
    Polish_version=0
    ; ... includes changes made by the Polish localizer for the keyboard in the game - on (1) or off (0), by default: 0.
    
    PFXfix=1
    ; ... correction, for the correct operation of the PFX effects of fire from bonfires in "Gothic 1", - on (1) off (0), by default: 1.
    
    StrafeBug=0
    ; ... the ability to use a strafe in jump / fall - on (1) or off (0), by default: 0.
    
    Show_FPS_Counter=0
    ; ... show internal FPS counter, - on (1) or off (0), default: 0.
    ; Attention: the FPS counter built into the game does not display values greater than 256 FPS.
    
    Cache_Timeout=400
    ; ... cache timeout with ledge information, the range of values is from 100 to 1500. Increase this value if there are problems with climbing, by default: 100.
    
    BUGFIX_already_deleted_zCObject=1
    ; ... disables the error output with the message "D: OBJ: deleting an already deleted zCObject?!", - on (1) or off (0),
    ; by default: 1.
    
    Disable_HUMANS_SWIM.MDS=0
    ; ... disables the swimming animation in walk mode - on (1) or off (0), default: 0.
    
    Game_InitEngIntl=1
    ; ... correction, changes the polling of the Game_InitEnglish script to Game_InitEngIntl, - on (1) or off (0), by default: 1.
    ; in the original Gothic2.exe 1.30 (fix), only Game_InitGerman and Game_InitEnglish are initially polled,
    ; and in the Russian version of the game in the Startup.d script it is written - Game_InitEngIntl, because of this the exe-shnik did not work with the Russian version.
    ; for those versions of the game where the value Game_InitEnglish is specified in the Startup.d script, this parameter must be set to 0.
    
    FixHighRes=1
    ; ... automatic patching of D3DIm700.dll to support high resolutions - on (1) or off (0), by default: 1.
    
    FixAppCompat=1
    ; ... fix to enable full-screen mode in the game:
    ; disabled (0), - when disabled, the NPC health indicator will not be visible, on Windows 8 and 8.1 the game will work with very
    ; low FPS, no more than ~ 30. Turning this mode on is not recommended (!)
    ; enabled (1), - activates a full-fledged full-screen mode in which Vsync will work, management will be available:
    ; gamma, brightness and contrast means of the game. There are no problems with FPS on Windows 8 and 8.1, recommended for everyone (!)
    ; on (2), - activates windowed mode without frame. It looks the same as full-screen, but it doesn’t work in it: Vsync - it can
    ; lead to problems in "Gothic 1", control: gamma, brightness, contrast means of the game (not critical, but many use it).
    ; This mode is recommended to be activated only if the full-screen mode does not work correctly! What is possible only
    ; for those users of Nvidia Optimus whose videos in full-screen mode do not work at all.
    ; Only works on Windows 8 and above. By default: 1.
    
    FixBink=1
    ; ... corrections for video playback on all OSs - on (1) or off (0).
    
    FixMss=1
    ; ... corrections for the surround sound system - on (1) or off (0).
    
    UnknExeCrc=0x64796DB9
    ; ... if the game crashes, the checksum of the unknown or entailed game exe-file is entered here,
    ; to which it was impossible to apply SystemPack'a fixes.
    
    LineCacheSize=16384
    ; ... increases the number of lines allowed for drawing on the screen
    
    SlidingSize=0.05
    ; ... defines a value for correct sliding, default: 0.05.
    
    ReadBinkWithVDFS=1
    ; ... allows to read BINK video directly from a VDF volume, - on (1) or off (0), default: 1.
    
    UseErrorVisuals=0
    ; ... forces VDFS to use red objects instead of missing models and textures, which will be
    ; displayed instead of transparent objects and textures - on (1) or off (0), default: 0.
    
    dwNumVertices=8192
    ; ... defines how many vertices can be allocated by the dynamic vertex buffer for displaying the model, by default: 8192.
    
    DecompressedCacheSize=20
    ; ... the size of the extracted data cache of the compressed volume in megabytes. Used to pre-decompress
    ; data, which can reduce read time, and also to re-read the extracted data. the default is 20.
    
    UnzipThreadsCount=8
    ; ... the number of threads that will be used when decompressing the compressed volume.
    ; By default, the number of threads is equal to the number of processor cores.
    
    EmulatorMode=0
    ; ... a mode that forcibly changes the order of engine patching as in AlphaColor mode.
    ; The default is 0.
    
    GpuFixes=1
    ; ... indicates whether to apply patches for video cards, by default 1.
    
    ForceFlip=0
    ; ... используйте эту опцию, если при использовании G-sync, FastSync, EnhancedSync
    ; проявляется мерцание - включено (1) или выключено (0), по-умолчанию: 0.
    
    DisableOcclusionCulling=0
    ; ... отключает проверку на наличие препятствий обхору объекта. Позволяет исключить
    ; мерцания объектов, но может заметно снизить производительность - включено (1) или выключено (0), по-умолчанию: 0.
    
    TerminateProcessHotkey=1
    ; ... разрешает комбинацию клавиш Ctrl + Alt + Q для экстренного завершения процесса игры.
    ; Используйте эту фукнцию при софтлоках или зависаниях игры - включено (1) или выключено (0), по-умолчанию: 1.
    
    RestoreMortalityAfterDialog=0
    ; ... позволяет автоматически следить за тем, чтобы при некорректном завершении диалога
    ; персонажи могли реалировать на героя - включено (1) или выключено (0), по-умолчанию: 0.
    
    FixBinkNew=1
    ; ... включает новую систему исправления роликов на базе Union.
    ; Включено (1) или выключено (0), по-умолчанию: 1.
    
    FixBink_InterpPixelSize=1
    ; ... определяет качество сглаживания видеоряда.
    ; 0 - сглаживание отключено, лучшая производительность;
    ; 1 - лучшее качество, худшая производительность;
    ; 2- хорошее качество, хорошая производительность;
    ; 3 или выше - снижение качества в пользу производителности.
    ; По умолчанию - зависит от процессора и разрешения экрана.
    
    FixBink_InterpCpuCount=6
    ; ... определяет количество потоков CPU, которое будет задействовано
    ; при сглаживании видеоряда. По-умолчанию: зависит от процессора
    
    
    [PARAMETERS]
    Gothic2_Control=0
    ; ... the control scheme from Gothic 2, one key (LMB or CTRL) to perform any action, instead of the key combination (LMB + W or CTRL + W), is on (1) or off (0), by default: 0 .
    
    FPS_Limit=0
    ; ... FPS restriction when pressing any key - on (25-100) or off (0), by default: 0.
    
    AnisotropicFiltering=16
    ; ... the level of anisotropic filtering of textures - on (2-16) or off (0), by default: 16.
    
    VerticalFOV=67.5
    ; ... parameter for changing vertical FOV, default value: 67.5.
    ; the value of the parameter for changing vFOV according to the old formula: for monitors 16:10 - (56.25), for monitors 16: 9 - (50.625).
    
    NewFOVformula=0
    ; ... includes an alternative formula for calculating FOV, because of which the models in the game no longer look elongated, - enabled (1)
    ; on or off (0), default: 0.
    
    DisableLOD=0
    ; ... disables the progressive LOD for * .3ds models - on (1) or off (0), default: 0.
    ; possible decrease in productivity by 10-15%.
    
    DisableIndoorClipping=1
    ; ... disables clipping of objects in Indoor locations - on (1) or off (0), by default: 1.
    
    SPAWN_INSERTRANGE=4500.0
    ; ... the distance at which the NPC is inserted into the game world, by default: 4500.
    
    SPAWN_REMOVERANGE=5000.0
    ; ... distance at which the NPC is removed from the game world, by default: 5000.
    
    SPAWN_INSERTTIME_MAX=1000.0
    ; ... the time interval at which at a certain point - WP / FP, will be generated / inserted into the world of the next NPC
    ; default value: 1000, units measurements: milliseconds.
    
    SmoothAniDistance=5000
    ; ... the distance of smooth animation of the NPC, is the minimum (2000), by default in the game: 2000.
    
    DrawDistanceMultiplier=1
    ; ... game visibility / rendering distance multiplier, by default: 1.
    ; restrictions for the multiplier with a visibility distance of 300% in the game options: for Gothic.exe - 10, for all others - 26.
    
    OutDoorPortalDistanceMultiplier=1
    InDoorPortalDistanceMultiplier=1
    WoodPortalDistanceMultiplier=1
    ; ... portal removal distance multiplier, default: 1
    ; OutDoor - when the GG is outside the premises / caves, on the street.
    ; InDoor - when the GG is inside the premises / caves in the house.
    ; It is recommended to increase OutDoor / InDoor values - synchronously.
    ; Wood - the visibility range of the forest portals, this type of portal is relevant only for "Gothic 1".
    
    zMouseRotationScale=0.1
    ; ... the rotation speed of the GG model when using the mouse in "Gothic 1", by default: 0.1.
    ; recommended values: range from 0.1 to 0.3, step - 0.01.
    ; for mice with high DPI (4000 and higher), no more than 0.2.
    
    EnableShields=0
    ; ... the fix includes support for the class of shields, only for files: Gothic2.exe and GothicMod.exe, - enabled (1)
    ; on or off (0), default: 0.
    
    No_Take_Anim=0
    ; ... disables the selection animation for any assigned keys - on (1) or off (0), by default: 0.
    
    RMB_No_Take_Anim=0
    ; ... forcibly assigns the keys LMB and RMB (any other keys will not work), disables the selection animation for RMB,
    ; - on (1) or off (0), by default: 0.
    ; ATTENTION: the engine supports the assignment of only 2 buttons per action. These options are mutually exclusive.
    ; only one of them can work at a time!
    ; if both are enabled, then only RBM_No_Take_Ani will work, since RBM_No_Take_Ani takes precedence over No_Take_Ani (!)
    ; if RBM_No_Take_Ani = 1 is enabled, then the left and right mouse buttons are assigned to the GAME_ACTION action, respectively, no
    ; other assignable buttons (including those from the keyboard) will not work in this case (!)
    ; if you need Ctrl, but don’t need animation, set: No_Take_Anim = 1, RMB_No_Take_Anim = 0.
    ; if you don’t need animation on RMB, set: No_Take_Anim = 0, RMB_No_Take_Anim = 1.
    ; if you don’t need animation on RMB, set: No_Take_Anim = 0, RMB_No_Take_Anim = 1.
    ; if you need animation, set: No_Take_Anim = 0, RMB_No_Take_Anim = 0.
    TRADE_VALUE_MULTIPLIER=0.5
    ; ... trade coefficient, - minimum (0.01), maximum (100.0), by default: 0.5.
    
    Animated_Inventory=1
    ; ... the rotation of items in the inventory is on (1) or off (0), by default: 1.
    
    HideFocus=1
    ; ... hide focus for dead NPCs with empty inventory - on (1) or off (0), by default: 1.
    
    ThrowFlag=1
    ; ... check the flag ITEM_THROW, for the ability to drop the item - on (1) or off (0), by default: 1.
    
    InteractionCollision=0
    ; ... miscalculation of collisions for used interactive objects - on (1) or off (0), by default: 0.
    
    keyDelayRate=150
    ; ... the speed of auto-repeat of a pressed key in Gothic 1, by default: 70. Recommended values: range from 10 to 300.
    
    keyDelayFirst=150
    ; ... the delay before starting auto-repeat of a key in Gothic 1, by default: 140. Recommended values: range from 100 to 1000.
    
    HighlightMeleeFocus=1
    ; ... NPC backlighting in focus - on (1) or off (0), default: 1.
    
    HighlightInteractFocus=1
    ; ... highlighting objects in focus - on (1) or off (0), default: 1.
    
    HighlightInteractNoFocus=1
    ; ... the flickering of objects out of focus is on (1) or off (0), by default: 1.
    
    Fight_ANI_Interrupt=0
    ; ... interruption of animation in battle - on (1) or off (0), default: 0.
    
    Monsters_Block_Damage=0
    ; ... allow monsters to block attacks - on (1) or off (0), default: 0.
    
    ReverbVolume=3.0
    ; ... a factor for the reverb volume, the higher the value, the louder the reflection of sound effects, by default: 3.0.
    ; reverb volume as a multiplier for everyone - the relative reverb of different sounds should be like in the original game.
    ; the option is available only if the sound driver SP - "DirectSound3D HW" is included in the game settings.
    
    RainVobCollision=1
    ; ... raindrops will collide with objects
    
    AbortMenuSound=1
    ; ... makes music in the G2A menu interruptible
    
    ShowArmor=0
    ; ... shows armor in another NPC's inventory
    
    UnlockParadeJumpB=1
    ; ... if in Gothic 2 you try to bounce right after the impact, then a block will be placed.
    ; From a technical point of view, this is a bug that is fixed if this option = 1. - enabled (1) or disabled (0), by default: 1
    
    AdaptiveSightDistance=0
    ; ... активирует автоматический контроль за дистанцией прорисовки в зависимости
    ; от текущего быстродействия игры - включено (1) или выключено (0), по-умолчанию: 0.
    
    AdaptiveSightDistance_LowerFPS=55
    ; ... порог FPS, при котором дистанция прорисовки будет снижаться в угоду производительности.
    ; Это значение не может быть выше UpperFPS - по-умолчанию: 55.
    
    AdaptiveSightDistance_UpperFPS=60
    ; ... порог FPS, при котором дистанция прорисовки будет повышаться в угоду лучшей картинки.
    ; Это значение не может быть меньше LowerFPS - по-умолчанию: 60.
    
    AdaptiveSightDistance_ShowInfo=0
    ; ... отображать отладочную информацию адаптивной дистанции отрисовки - включено (1) или выключено (0), по-умолчанию: 0.
    
    VisualizePerfomance=0
    ; ... рисует на экране графиг производительности - включено (1) или выключено (0), по-умолчанию: 0.
    
    HeightCorrectionOnLadder=1
    ; ... разрешает следить за тем, чтобы ноги персонажа не утопали под
    ; землю во время использования лестницы - включено (1) или выключено (0), по-умолчанию: 1.
    
    
    [BARRIER]
    AlwaysON=0
    ; ... display the visual effect of the Barrier constantly - on (1) or off (0), default: 0.
    
    AlwaysOFF=0
    ; ... disable the visual effect of the Barrier - on (1) or off (0), by default: 0.
    
    DisableSound=0
    ; ... turn off the sound of the Barrier - on (1) or off (0), by default: 0.
    
    DisableDamage=0
    ; ... disable damage from the Barrier - on (1) or off (0), default: 0.
    
    
    [INTERFACE]
    Scale=1
    ; ... the multiplier of automatic scaling of the game interface, based on a resolution of 1024x768 pixels;
    ; included (1) or (1.1 ... and higher), scaling the interface n-times at the discretion of the user.
    ; the maximum value depends on the vertical resolution of the screen. I.e:
    ; for a resolution of 1920x1080, the maximum value will be 1080/512 = 2.10
    ; for a resolution of 3840x2160, the maximum value will be 2160/512 = 4.21
    ; higher values will be read as maximum.
    ; off (0), no scaling. By default: 1.
    
    ForceMenuScale=0
    ; ... force the scaling of the menu - on (1) or off (0), by default: 0.
    
    ScaleMenusX=640
    ; ... the size of the X menu for scaling, by default: 640, units measuring pixels.
    
    ScaleMenusY=480
    ; ... the size of the Y menu for scaling, by default: 480, units. measuring pixels.
    
    DialogBoxX=800
    DialogBoxY=600
    SubtitlesBoxX=600
    ; ... customizable options for resizing subtitle windows and dialogs, units, measuring pixels.
    
    ShowManaBar=1
    ; ... display of the mana indicator: hidden - (0) is displayed only with the active spell in the hands of hero - (1) is constantly displayed - (2),
    ; by default in the game: 1.
    
    ShowSwimBar=1
    ; ... display of the air indicator: hidden - (0) is displayed only if Gg under water - (1) is displayed constantly - (2),
    ; by default in the game: 1.
    
    HideHealthBar=0
    ; ... display of the life indicator: is displayed constantly - (0) hide - (1), by default in the game: 0.
    
    NewChapterSizeX=640
    NewChapterSizeY=480
    SaveGameImageSizeX=320
    SaveGameImageSizeY=200
    InventoryItemNoteSizeX=450
    ; ... sizes of interface elements in the game: Start of a new chapter, Saving the game, Description of objects, units measuring pixels.
    
    InventoryCellSize=70
    ; ... change of the size of the inventory cell, minimum (10), by default in the game: 70, units measuring pixels.
    
    Color_DialogChoice_Active=-1
    ; ... the color of the selected dialog line, - by default: -1 (White).
    
    Color_DialogChoice_Inactive=-6316129
    ; ... the color of the not selected dialog line, - by default: -6316129 (Gray).
    
    Color_Talk_Hero=-1
    ; ... font color for subtitles Gg, - by default: -1 (White).
    
    Color_Talk_NPC=-256
    ; ... the font color for NPC subtitles, - by default: -256 (Yellow).
    
    Color_Noise=-49408
    ; ... the font color for conversations surrounding the NPC is - by default: -49408 (Orange).
    ; Important: used only in "Gothic 1".
    
    Hide_STR_DEX=1
    ; ... hide the display of the second strength / dexterity value in the character's characteristics window, - on (1) or off (0), by default: 1.
    
    ForceDocScale = 0
    ScaleDocX = 8192
    ScaleDocY = 8192
    ; ... parameters for resizing documents, books, etc.
    
    ScaleRate=768
    ; ... эталонное значение разрешения по Y, под которое будет подстраиваться
    ; автоматическое масштабирование - по-умолчанию: 768.
    
    
    [SUBTITLES]
    Control=0
    ; ... turns on subtitle display time control, - on (1) or off (0), default: 0.
    ; must be enabled to manage subtitles.
    
    TimeMultiplier=2.0
    ; ... time multiplier for phrases with voiced dialogue file. That is, there is one voiced phrase lasting
    ; in 10 seconds, with the installed multiplier 2.0, subtitles for games for it will be displayed for 20 seconds.
    
    MaxTimePerPhrase=30.0
    ; ... maximum time in seconds to display subtitles without a voice file.
    
    TimePerChar=100.0
    ; ... time in milliseconds to display one subtitle character without a voiced dialogue file. For example, with
    ; TimePerChar = 200.0, phrase: "Can you teach me how to fight?" contains 33 characters
    ; then it will be displayed 33 * 200/1000 = 6.6 seconds.
    
    
    [MOUSE]
    EnableWrapper = 1
    ; ... includes DirectX8 mouse control
    
    SpeedMultiplierX = 1.0
    ; ... X-axis mouse speed multiplier
    
    SpeedMultiplierY = 1.0
    ; ... Y-axis mouse speed multiplier
    
    PrecisionMultiplier = 1.0
    ; ... accuracy multiplier to the mouse depending on the speed of its movement, by default: 1.0.
    
    ForceMouseControl = 0
    ; ... the mouse to work forcibly even if the focus of the target window is not found
    
    FixTargetDelay = 1.0
    ; ... determines with what time interval (seconds) (when controlling G2) is necessary to lock on the target
    
    GameOverlayTakeControl = 1
    ; ... allows Steam Overlay to lock control
    
    NoDirectXAxisMode=0
    ; ... Движения мыши будут регистрироваться не через DirectX, а через количество позиций, которое прошла мышь (RAW режим).
    ; Рекомендуется попробовать тем, кто играет с Freee Aim и испытывает большие проблемы с точностью прицеливания.
    ; Включено (1) или выключено (0), по-умолчанию: 0.
    
    
    [CORE]
    ShowDebugWindow=0
    ; ... открывает дополнительное консольное окно, куда выводится основная информация Union - включено (1) или выключено (0), по-умолчанию: 0.
    
    UseDebugWindowHost=1
    ; ... запускать консольное окно в отдельном процессе. такое окно не будет закрыто при выходе из игры - включено (1) или выключено (0), по-умолчанию: 1.
    
    ShowHiddenFiles=0
    ; ... делает доступным для видимости временное хранилище в папке Gothic\Data - включено (1) или выключено (0), по-умолчанию: 0.
    
    RTDynamicCastExtension=1
    ;  ... активирует расширение, позволяющее движку нативно ассоциировать классы плагинов со своими.
    ; Не рекомендуется изменять этот параметр - включено (1) или выключено (0), по-умолчанию: 1.
    
    CustomDebugWindowPos=0
    ; ... определяет, будет ли дополнительное консольное окно создаваться в конкретном месте экрана - включено (1) или выключено (0), по-умолчанию: 0.
    
    DebugWindowPosX=0
    ; ... задает положение дополнительного консольного окна по оси X - по-умолчанию: 0.
    
    DebugWindowPosY=0
    ; ... задает положение дополнительного консольного окна по оси Y - по-умолчанию: 0.
    
    CustomRaiseHardError=1
    ; ... определяет будет ли создано альтернативное окно ошибки загрузки библиотек, более понятное конечному пользователю, - включено (1) или выключено (0), по-умолчанию: 1.
    
    Language=RUS
    ; ... определяет используемый в Union язык, а также язык, используемый в плагинах. По-умолчанию: язык системы.
    
    ParserExtenderAlwaysOn=0
    ; ... определяет должен ли плагин zParserExtender запускаться даже тогда, когда нет скриптов для инъекции.
    ; Включено (1) или выключено (0), по-умолчанию: 0.
    
    
    [PLUGINS]
    PluginList =
    ; ... a plugin list. The separator is comma (example: some.dll, plugin2.dll)
    
    UseVDFS = true
    ; ... defines if plugis can be loaded from VDF volumes
    
    AutorunFilter = dll, m3d, src, d
    ; ... defines format of files which can be loaded from Autorun folder
    
    IgnoreList =
    ; ... defines plugin ignore list
    ; Using * you can ignore a list of plugins
    
    UnIgnoreList =
    ; ... defines plugins list, which would be ignored from IgnoreList and loaded anyway. Using comma for many items.
    ; Using * you can ignore a list of plugins
    
    UseAdaptiveHooks = 0
    ; ... determines whether all Detours Union hooks will be replaced with alternative patch hooks. The parameter
    ; should be used only in case of compatibility problems in any modifications, since this type of hooks may not
    ; work with 100% probability due to the peculiarities of the game bytecode, - enabled (1) or disabled (0), by default: 0.
    
    IgnoredAdaptiveList =
    ; ... a list of addresses (separated by commas) that should not be adapted if UseAdaptiveHooks = 1.
    
    ShowAdaptiveReport = 0
    ; ... outputs to the console a report on the performed adaptations, - on (1) or off (0), by default: 0.
    
    AutorunDependenciesSortion = 1
    ; ... determines whether plugins in the Autorun folder should be sorted according to their dependencies, - on (1) or off (0), by default: 1.
    
    [GAME]
    SaveGameToASCII = 0
    ; ... forces the game to write Saves in the form of human-readable text - on (1) or off (0), default: 0.
    
    SaveDATinASCII = 0
    ; ... forces the game to record a part of the save with scripts in symbolic form - on (1) or off (0), by default: 1.
    
    
    [SPLASH]
    FileName =
    ; ... specifies which DIB file (24 bit without a color-space data) will be used as the splash window image.
    ; If nothing is specified, Union will try to find a file named Splash.bmp.
    
    HideTitle = 0
    ; ... indicates whether to hide the current version of Union and SystemPack over the splash window - on (1) or off (0), default: 0.
    
    AlphaColor =
    ; ... specifies which color (RGB: "255 100 50") to use as a fully transparent area in the image.

    Description of the PATCH file format:

    Short list of features:
    - Fixes for engine and driver bugs
    - Support for all modern screen resolutions
    - Fast system for reading game files
    - Support for compressed OGG sounds
    - Supports various audio drivers for the best gaming sound
    - Automatic adjustment of parameters for your OS and Video card
    - Raising the used memory limit to 4GB
    - Auto disable DEP and interface scaling
    - Steam overlay support
    - Play video game clips in full screen + read BINK from VDF
    - Responsive mouse
    - Alternative Splash window

    Run under Wine (or other (non) emulators):
    Added support for Wine and other analogues. (tested for Ubuntu 20.04 and MacOS 11.1, Wine 5.0)
    GPU patches that prevent the game from starting will not run with Wine.

    Requirements for correct work under Wine (for other (non) emulators similarly):
    1. Resource Manager and offline installers require an installed DotNet (NET Framework 4.0), Visual C++ 2010.
    2. For Gothic itself to work, you need the installed Visual C++ 2008 and 2010.
    IMPORTANT! In Wine runtime libraries are (MSVCR[XXX]) made by some users, therefore, they can cause critical errors.. For example MSVCR100 must be immediately replaced with original one for windows. Otherwise, you will see that:
    1614030398533.png


    Therefore, the first step is to configure Wine so that the primary sources of runtime libraries are third-party dlls..
    To do this, put the command to the terminal winecfg - a window with Wine settings should appear. Open the "Libraries" tab. In the "New substitution for the library" field, we immediately register a bundle of libraries MSVCR100.DLL, MSVCR110.DLL, MSVCR120.DLL, MSVCR140.DLL (and so on if others are ever needed). Thus, Wine will first search for the library installed on the PC, and if it does not find it, it will search for its own one.
    1614030479558.png


    Now, in order for these libraries to appear, you need to install Microsoft Visual C ++ 2010 x86 (as well as the rest of 2012-2019, if any plugins require it). As a rule, this is sufficient for the normal operation of the game. That is all.


    However, if for some reason the third-party MSVCR is not detected, you can try to put it next to the EXE file of the game (see the spoiler). But it should be ok.
    1614030523897.png

  • HTML:
    Требования к системе:
    * Официальное издание Gothic1, Gothic2 или Gothic2 NoTR
    * Windows XP Sp3 и выше
    * Visual C++ 2008, 2010
    * DirectX7, DirectX8
    * NET Framework 4.0
    * Права администратора
    
    Установка:
    1. Изначально следует убедиться, что игра имеет все актуальные патчи.
       Для этого можно воспользоваться установочным пакетом PlayerKit + Патч. Содержимое:
            Gothic.exe - официально опубликованный исполняемый файл, находящийся в публичном доступе на
                         скачивание. Установка этого файла будет произведена, если пользователь имеет
                         одно из множества официальных изданий.
    
            * В x64 разрядной версии патча в Gothic.exe используется LAA (Large Address Aware) Hack, позволяющий
              задействовать более 2ГБ памяти у x32 разрядных приложений. Данный патч не затрагивает байткод движка,
              а лишь заменяет байты PE заголовка, отвечающих за активацию этого флага.
    
            Описание: https://docs.microsoft.com/en-us/windows/win32/memory/4-gigabyte-tuning
            Патч:     https://www.worldofgothic.de/dl/download_552.htm
    
            Использованные ресурсы:
            Движок             crc32      crc32 (с LAA)  Источник
            Gothic1 1.08k      225BA11E   A3496B67       https://www.worldofgothic.de/dl/download_6.htm
            Gothic2 1.30       A2EE682C   FFB8118B       https://www.worldofgothic.de/dl/download_278.htm
            Gothic2 2.6 rev2   2BCD7E30   00D32D21       https://www.worldofgothic.de/dl/download_278.htm
    
            Различия между обычными исполняемыми файлами и с LAA:
            Адрес        Gothic1 1.08k      Gothic1 1.08k (LAA)
            0x0000014E   0E                 2E
            0x00000190   00                 F2
            0x00000191   00                 46
            0x00000192   00                 82
    
            Адрес        Gothic2 1.30       Gothic2 1.30 (LAA)
            0x0000016E   0E                 2E
            0x000001B0   BC                 DC
    
            Адрес        Gothic2 2.6 rev2   Gothic2 2.6 rev2 (LAA)
            0x00000156   0E                 2E
            0x00000198   89                 A9
    
        GothicStarter.exe - обычный + модифицированный менеджер для запуска модов.
                            Источник: https://github.com/GothicFixTeam/GothicFix/tree/master/GothicStarter
    
        XT_DayStd.sgt     - файл музыкальной темы с исправленным громким щелчком.
        Xardas_Tower.sty  - файл музыкальной темы с исправленным громким щелчком.
        Font_15_White.ftn - заменяет поврежденный (crc32: C61A14B6) файл шрифта для первой части Готики.
        OrcAttack.bik     - заменяет поврежденное (crc32: любое) видео для второй части Готики.
        Extro_PAL.bik     - заменяет поврежденное (crc32: 5E995A57) видео для второй части Готики.
    
        Дополнительно:
            - Переименовывает неверную директорию `_Work\Data\Textures\_Complied\` на `_Work\Data\Textures\_Compiled\`
            - Заменяет расширение файла `_Work\Data\Scripts\Content\Cutscene\Ou` с `.dat` на `.bin`
            - Заменяет расширение файла `_Work\Data\Scripts\Content\Cutscene\Ou` с `.lsc` на `.csl`
            - Переименовывает файл `_Work\Data\Scripts\_Copliled\Game.dat` на `_Work\Data\Scripts\_Copliled\Gothic.dat`
    
    2. После этого можно установить сам Union. Пакет установки включает в себя следующие файлы:
            Shw32.dll      - библиотека Union
            Vdfs32g.dll    - альтернативная Виртуальная файловая система
            Union.patch    - файл исправлений движка
            SystemPack.ini - файл настроек
            Bink32w.dll    - адаптированная библиотека для воспроизведения BIK видео Gothic2 -> Gothic1.
                             В данной библиотеке пропатчен внешний символ _BinkSetVolume@12 -> _BinkSetVolume@8.
                             Библиотека из Gothic2 поддерживает больше форматов, чем версия из Gothic1.
            Union.vdf
                *.m3d                       - файлы звуковых драйверов. Применяются в настройках игры.
                                              После выбора драйвера игру следует перезапустить.
                                              Полный список см. в приложении [2]
                zActivateCtrl.dll           - библиотека, устанавливающая константу UnionActivated в
                                              скриптах и в Gothic.ini в true, если запущен Union.
                zBinkFix.dll                - библиотека, расширяющая видеоролики на весь экран.
                zMouseFix.dll               - библиотека, переносящая управление мышкой на DirectX8.
                                              Данная мышь совместима со Steam оверлеем!
                zMouseFix.patch             - вспомогательный скрипт для корректной активации мышки DirectX8.
                Invalid_Source_File.*       - файлы, которые будут отображаться вместо несуществующих, если
                                              установлена опция SystemPack.ini -> UseErrorVisuals = true.
                                              Полный список см. в приложении [3]
                Humans_Skeleton-T_Spawn.man - исправленный файл анимации порождения скелета.
    
    3. Далее можно установить Ninja и другие патчи по Вашему желанию.
    4. Запустить игру любым удобным способом.
        - При первом запуске будет заполнен SystemPack.ini
        - Дополнительно будет поправлен запускаемый ini (Gothic.ini, GothicGame.ini, ..., <mod>.ini)
            * [INTERNAL] extendedMenu          = 1
            * [VIDEO]    zVidResFullscreenBPP  = 32
            * [ENGINE]   zTexCacheSizeMaxBytes = 100000000
            * [INTERNAL] menuShowVersion       = 1
            * [INTERNAL] gameStartFailed       = 0
            * [INTERNAL] gameAbnormalExit      = 0
        - Будет создана папка System/Autorun
        - Будет создан каталог промежуточных файлов Data/$Templates$
            * виден как скрытный при SystemPack.ini -> ShowHiddenFiles = true.
        - Будет добавлена запись в реестр
            * Путь     - HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\
            * параметр - Путь текущего исполняемого файла
            * Значение - "DisableNXShowUI  HighDpiAware"
    
    
    Виртуальная файловая система:
    В состав Union входит альтернативная файловая система. Она быстрее по отношению к оригинальной.
    - Не требует дамп файлов. Загрузка списка объектов происходит в реальном времени.
    - Обращение к данным происходит через более быструю хеш-таблицу.
    - При чтении данные файлов кешируются, что значительно понижает количество запросов к жесткому диску.
      Это ощутимо повышает скорость загрузок.
    - Поддержка файлов в формате OGG реализуется на уровне файловой системы. Звуковая дорожка декодируется
      в момент чтения файла и передается движку в понятном ему виде.
    - Возможность быстро завершить процесс, удерживая комбинацию кнопок CTRL + ALT + Q.
    - Возможность отображать отсутствующие файлы моделей, текстур и звуков в виде предупреждающих объектов.
      Для этого должен быть задан параметр SystemPack.ini -> UseErrorVisuals = true. Полный список объектов см. в приложении [3]
    
    
    Этапы загрузки Union:
    1. Первым этапом Union проверяет отключен ли DEP и Масштабирование интерфейса.
    Отключение DEP необходимо для того, чтобы моды под управлением Ikarus могли беспрепятственно работать с памятью процесса.
    Масштабирование интерфейса позволяет операционной системе растягивать окна и увеличивать текст. Если не отключать данный
    параметр, то это чревато тем, что у пользователя, играющего в оконном режиме, рамка окна будет значительно увеличиваться.
    Как итог - окно игры может быть больше размера экрана. Для каждого EXE файла эти параметры индивидуальны. Их отключение
    происходит путем добавления в реестр специальных ключей (DisableNXShowUI и HighDpiAware). Если Union производит запись
    в реестр, то процесс сразу уходит в рестарт, чтобы изменения вошли в силу. Поскольку это происходит в самую первую очередь,
    пользователь даже не заметит данной процедуры.
    
    2. На этом этапе Union подключает первую волну плагинов.
    Первая волна плагинов - это плагины, которые загружаются ДО виртуальной файловой системы и могут быть загружены только из
    физических каталогов. Задать список плагинов можно в SystemPack.ini -> PluginList. На конце имени плагина следует указать
    две звездочки (например Ninja.dll**).
    
    3. Union производит загрузку виртуальной файловой системы. В процессе загрузки определяются все файлы с расширением .Patch
    и содержимое папок Autorun.
    
    4. Теперь Union производит загрузку плагинов второй волны.
    Плагины второй волны - это плагины, которые загружаются сразу после виртуальной файловой системы. Такие плагины могут быть
    загружены из VDF и MOD томов. Подключение эквивалентно пункту 2, но на конце имени плагина следует задать одну звездочку.
    
    5. В пятом пункте Union загружает и выполняет все .patch файлы, найденные в физических и виртуальных каталогах игры (пункт 3).
    .patch файлы - это скрипты, синтаксис и назначение которых нацелено на внесения правок в память процесса или проведения
    подготовительных мероприятий в момент запуска движка. Примером такого патча является главный патч пакета - Union.patch,
    который содержит все исправления для Gothic I, Gothic Sequel, Gothic II и Gothic II NoTR. Ознакомиться подробнее можно
    тут: https://worldofplayers.ru/threads/42178/.
    Дополнительные патчи, производимые из Shw32.dll напрямую:
      * Патч на RTTI Dynamic_cast, для возможности нативного преобразования Классов движка и Union Gothic API.
      * Патч на звуковой драйвер DirectSound3D, из-за которого пропадали некоторые звуковые эффекты, потому что система
        считала, что источник звука слишком далеко.
      * Патч на QueryPerCounter, сбрасывающий время работы системы, из-за которого периодически не запускалась игра.
      * Патч на перенаправление IO инструкций для возможности чтения BIK файлов из VDF или MOD томов.
      * Патч на низкий ФПС и рамку окна в полноэкранном режиме в ddraw.dll для систем Windows 7 и выше.
    
    6. Union ожидает, когда произойдет обращение к Точке входа движка. В момент вызова WinMain, Union загрузит плагины третьей волны.
       Плагины третьей волны - это плагины, которые загружаются параллельно движку и могут быть запущены из VDF или MOD томов.
       Принципиальным отличием этой волны является то, что в них можно определять глобальные экземпляры классов Готики. Запускаются
       такие плагины двумя способами:
            I.  Указав их имена в SystemPack.ini -> PluginList, при этом добавлять звездочки в конце не нужно.
            II. Положив библиотеки в папку с именем System/Autorun физического или виртуального каталога.
    
    7. Следующий этап определяет вашу Операционную систему и Видеокарту. На основе этого подбираются оптимальные параметры запуска.
       Для владельцев Intel Graphic или AMD + Win10 будет установлен оконный режим, это должно компенсировать плохой FPS полноэкранного
       режима. Для владельцев NVidia значения G-Sync будут управляться игрой, чтобы игра не крашила на новых поколениях видеокарт.
    
    8. Запуск игры. Далее Union не будет вмешиваться в работу движка, если к нему не подключены плагины, имеющие в себе стандартный
       набор функций обратного вызова. Стандартный набор функций обратного вызова - это список функций, для которых Union будет
       перехватывать движковые события. Список таких функций смотри в приложении [1]. Следует заметить, что Union производит хуки
       только на те функции, для которых существует хотя бы одна не Null функция обратного вызова, которая при этом не является пустой.
       Для перехвата используются хуки-патчи, изменяющие адреса вызывающих инструкций. Подробнее см. в блоке `Перехват функций`.
    
    N. Завершение процесса происходит с предварительным отключением виртуальной файловой системы. После этого VDF и MOD тома снова
       станут доступными для изменений.
    
    
    
    
    Файлы патчей:
    Это скрипты, которые используются для изменения значений памяти или в подготовительных мероприятиях при запуске движка. Файлы
    патчей запускаются из любых каталогов обозреваемых файловой системой (System, Saves, _Work и любые другие по запросу движка).
    Запуск производится как из физических каталогов, так и из VDF & MOD. Если в физических и виртуальных каталогах встречаются
    одинаковые патчи с идентичными путями, приоритет чтения будет у физических копий.
    * Может быть создан дополнительный файл [имя патча].MAP. Это происходит, когда файл патча имеет хотя бы один патч с пометкой
      static (подробнее см. описание формата патчей). Этот файл позволяет сразу загружать все произведенные ранее изменения в
      память процесса, пропуская повторный синтаксический разбор статических блоков. По умолчанию файл не может быть увиден через
      стандартный проводник. Чтобы сделать файл скрытным, но видимым, установите значение SystemPack.ini -> ShowHiddenFiles = true.
      Описание формата патчей: https://worldofplayers.ru/threads/42178/
    
    
    
    
    Плагины:
    Это библиотеки, динамически загружаемые через Union. Загрузка плагинов может происходить как Физически, так и из VDF или MOD томов.
    Для загрузки библиотек существует три варианта:
    1. Классический способ - через запятую указать список имен библиотек в SystemPack.ini -> PluginList. Также через этот параметр
       можно контролировать приоритет запуска плагинов:
            I.   Если на конце имени библиотеки указать две звездочки (plugin.dll**), то она будет загружена раньше, чем Виртуальная
                 файловая система. Но в таком случае она не может быть загружена из VDF или MOD тома.
            II.  Если на конце имени библиотеки указать одну звездочку (plugin.dll*), то она будет запущена сразу после Виртуальной
                 файловой системы. на данном этапе библиотека может быть загружена из VDF или MOD тома.
            III. Если имя библиотеки указано без изменений (plugin.dll), то она будет загружена одновременно с игрой. На этом этапе
                 у библиотек появляется возможность использовать глобальные экземпляры классов Готики.
    
    2. Папка автозапуска. Если библиотека находится в Физическом каталоге `System/Autorun` или в Виртуальном каталоге `*/Autorun`,
       то библиотека будет загружена вместе с движком, как в этапе 1.III. В актуальных версиях Union порядок загрузки плагинов из
       этой папки определяется зависимостью библиотек друг от друга. Это значит, что если один плагин импортирует символы другого,
       то сперва будет загружен Экспортирующий, а затем - Импортирующий.
    3. Файл патча. Они запускаются автоматически. А значит вместе с собой патчи могут запускать и плагины. Для этого есть две
       скриптовые функции: LoadLibrary("plugin.dll") и LoadPlugins("plugin1.dll", ..., "pluginN.dll").
    
    Если плагины написаны с использованием Union SDK, то каждый плагин может иметь Стандартный набор функций обратного вызова.
    Это функции, которые происходят во время ключевых игровых событий (приложение [1]). Для вызова этих функций Union перехватывает
    связанные с ними процедуры через Хуки-патчи (см. Перехват функций). Перехват каждой отдельно взятой процедуры производится
    только в том случае, если существует хотя бы одна не Null функция обратного вызова, а также непустая функция. Union
    определяет пуста ли функция по ее байт-коду. Если функция начинается с инструкции ret, то она считается пустой.
    
    
    
    
    Gothic API:
    Плагины, содержащие Gothic API от Union, могут в полной мере использовать возможности классов движка. Gothic API предлагает
    классы, в которых:
    1. Реализация сразу для четырех движков.
    2. Соблюдены размеры полей. Это значит, что программист может обращаться ко всем свойствам классов без страха обратиться к
       неверной ячейки памяти.
    3. Методы работают напрямую с Движком. Функции классов имеют простую инструкцию, которая вынуждает выполнять Ваш код
       непосредственно из движка. Это в некотором смысле напоминает работу таблицы импорта.
    4. Правильная виртуальная таблица. Виртуальные методы реализованы таким образом, что их смещения совпадают со смещениями
       движка. Для этого Union учитывает:
            I.   Виртуальные методы расставлены в том же порядке, что и в таблице движка.
            II.  Компилятор меняет местами перегруженные виртуальные методы, поэтому в Gothic API они стоят в обратном таблице порядке.
            III. Ни одно имя НЕвиртуальной функции не должно совпадать с именем Виртуальной функции, поскольку такая перегрузка
                 также влияет на порядок виртуальных методов.
            IV.  Порядок множественного наследования также формирует порядок виртуальной таблицы. Поэтому нужно правильно выбирать
                 какой из классов должен унаследоваться первым.
            V.   Определение имен чисто виртуальных методов требовало анализа наследников для их правильной расстановки в классе.
    5. Программист может самостоятельно создавать или удалять экземпляры классов движка. Для этого в Union реализована общая для
       всего процесса Аллокация памяти. В плагинах на шаблоне Union перегружены операторы new/delete, содержащие вызовы функций
       выделения и высвобождения памяти, используемых Движком игры, Виртуальной файловой системой и самим Union'ом.
    6. Возможно динамическое преобразование (dynamic_cast) полиморфных типов за счет пропатченой функции Времени выполнения и
       правильной виртуальной таблицы. Патч отсекает из имени класса лишнее пространство имен, благодаря чему движок воспринимает
       классы API как родные. При этом быстродействие программы не меняется.
    7. Удобная иерархия содержимого классов, а также полностью публичный доступ ко всем его членам. В начале класса расположены
       перечислители и структуры, затем идут поля класса, методы, виртуальные методы, статические функции и статические свойства.
    
    
    
    
    Перехват функций:
    Для перехвата функций в Union используется два типа хуков.
    1. MS Detours - решение от Microsoft, которое подставляет в начало функции переход к другой процедуре.
    2. Патчи - альтернативное решение от Union. Программа определяет все инструкции, в которых принимает участие функция, а
       затем заменяет адреса и смещения на другую процедуру. Такой метод наилучшим образом сказывается на совместимости с
       другими модификациями. Несмотря на лучшую совместимость, у этого варианта есть недостаток. Вызовы некоторых функций
       не существуют в явном виде, тогда только Detours сможет их перехватить. К примеру в плагинах есть набор Стандартных функций
       обратного вызова (см. описание плагинов). В их реализации используются Хуки-патчи. Поэтому они не должны влиять на работу
       других проектов.
    
    * В SystemPack.ini есть параметр UseAdaptiveHooks. Если установить этот параметр в true, то Union попытается заменить все
      Detours на Патчи. Если у пользователя возникнут проблемы совместимости Модов и Плагинов, то эта опция позволит заметно
      повысить совместимость их совместимость друг с другом. Данная опция является экстренной мерой. Необходимо сообщать
      разработчикам о найденных ошибках для  исправления проблем.
    
    
    
    
    Менеджер ресурсов:
    Это программа, позволяющая получать актуальные сборки ресурсов и сведения, относящиеся к разработкам в рамках проекта Union,
    чтобы пользователь мог получать файлы и информацию из одного места. В менеджере всегда выкладываются самые актуальные сборки
    продуктов, которые пользователь может скачать, обновить, установить, удалить, преобразовать в автономный установщик и
    распространять его как угодно. Для предотвращения проблем с установкой, менеджер с версии 3.2 по умолчанию запрашивает
    права администратора. Программа использует `[Системный диск]:\\ProgramData\Union\` для хранения исполняемых файлов (1),
    хранилища скаченных ресурсов (2) и для содержания Union SDK (3).
        1. Менеджер хранит системные файлы в папке System:
            * Ucore32.dll         - ядро установщика.
            * Updater.exe         - программа для обновления компонентов менеджера. Вызывается непосредственно менеджером.
            * Locale.cs           - файл, содержащий данные с переводом пользовательского интерфейса.
            * Root.cs             - файл, содержащий иерархию ресурсов от последней успешной сессии.
            * Errors_Manager.log  - файл, содержащий ошибки, произошедшие во время выполнения Менеджера.
            * Errors_Updater.log  - файл, содержащий ошибки, произошедшие во время выполнения Обновлений.
            * history_d.cs        - файл, содержащий историю установочных каталогов для отображения подсказок при следующих установках.
            * history_f.cs        - файл, содержащий историю установленных файлов для отображения подсказок при следующих установках.
            * Language.cs         - файл, содержащий информацию о текущем языке
            * Theme.cs            - файл, содержащий информацию о текущей теме
    
        2. Папка Storage используется для хранения скачанных ресурсов.
        3. Папка SDK содержит файлы инструментов разработчика, если они были установлены.
    
    Менеджер обновляется автоматически, если на него приходит обновление. В случае, если отсутствует подключение к интернету,
    ранее скачанные Вами файлы будут доступны для использования. Описания и ссылки будут взяты из предыдущей сессии.
    Интерфейс программы - это набор каталогов, ресурсов, описаний и ссылок. Статус ресурсов определяется цветами:
      - Зеленый                  - объект скачан и может быть исполнен.
      - Голубой                  - объект доступен для скачивания.
      - Голубой с красной рамкой - объект недавно появился и может быть скачан.
      - Оранжевый                - объект можно обновить.
      - Серый                    - объект недоступен из-за отсутствия сети.
    
    
    
    
    Используя Union, вы соглашаетесь соблюдать лицензионное  соглашение  ниже:
    --------------------------------------------------------------------------
    Данная лицензия использует принципы сообщества Steam[1], а также  GMDK[2].
    Вы в праве распространять конечный продукт Union без уведомления  авторов.
    Однако вы не можете самостоятельно изменять ресурсы, относящиеся к  пакету
    Union. Вы не можете распространять сторонные пакеты, которые  препятствуют
    нормальной работе Union и дополнительного контента к нему без  причины[3].
    Вы имеете право подать жалобу разработчикам[4] Union, если  считаете,  что
    ваши права были нарушены.  Авторы  Union  и  его  представители[5]  могут:
    консультировать Вас по любым вопросам, касающихся пакета Union  и  текущей
    лицензии; накладывать санкции на продукты, которые, по  их  мнению,  могут
    нарушать условия лицензии и быть недопустимы к публичному распространению.
    Union не собирает ни один из видов информации на конечном ПК пользователя.
    Union не изменяет параметры системы, которые не были  описаны  на  главной
    странице Union. Условия лицензии могут быть изменены  в  любое  время  без
    предварительного уведомления.
    
    
    [1] https://store.steampowered.com/online_conduct
    [2] https://www.worldofgothic.de/modifikation/?go=modlizenz
    [3] Препятствие нормальной работы подразумевает любые операции,  связанные
        с вмешательством в работу любых компонентов Union без  разрешения  его
        авторов, либо дополнительного контента (плагины,  патчи  и  т.п.)  без
        согласования их с разработчиками, например: патчинг памяти; блокировка
        исполнения; неявное переопределение пользовательских настроек  и  т.п.
        Исключением можно могут считаться особые случаи, такие как: техническая
        несовместимость  пакетов;  нарушение   работоспособности   модификации;
        полное дублирование функционала и т.п.  Любые  исключения  должны  быть
        предварительно согласованы с авторами затрагиваемого контента.
    [4] Разработчиками Union являются: @Gratt(gratt.union@gmail.com), @killer-m.
    [5] Представителями Union являются: @Auronen, @Siemekk
    
    
    
    
    Приложения:
    1. список Стандартных функций обратного вызова:
      a. Регистрация внешних функций;
      b. Инициализация игровой сессии;
      c. Загрузка новой игры;
      d. Загрузка сохранения;
      e. Смена уровня;
      f. Смена уровня по триггеру;
      g. Сохранение игры;
      h. Установка паузы;
      i. Снятие паузы;
      j. Рендер уровня;
      k. Рендер меню.
    
    2. Список звуковых драйверов:
      a. MSSA3D.M3D
      b. MSSDS3D.M3D
      c. MSSDS3DH.M3D
      d. MSSDX7.M3D
      e. MSSEAX.M3D
      f. MSSRSX.M3D
      g. MSSSOFT.M3D
    
    3. Список файлов, отображаемых вместо отсутствующих:
      a. INVALID_SOURCE_FILE.MDL
      b. INVALID_SOURCE_FILE.MDM
      c. INVALID_SOURCE_FILE.MMB
      d. INVALID_SOURCE_FILE.MRM
      e. INVALID_SOURCE_FILE.OGG
      f. INVALID_SOURCE_FILE.WAV
      g. INVALID_SOURCE_FILE-C.TEX
    
    
    
    Правила сообщества:
    - не присваивать чужие продукты, а также не распространять их без разрешения авторов (если это не является прямой задачей продукта);
    - не создавать помехи другим пользователям или разработчикам без видимых на то причин;
    - не создавать конфликтных ситуаций или напряженной обстановки в сообществе;
    - не создавать вирусные программы.
    - При распространении продукта придерживаться законодательства целевой страны.
    
    Каждый член сообщества имеет равные права и может свободно создавать и распространять собственные продукты для игр Gothic и Gothic II с использованием инструментов Union и Union SDK, если продукты не противоречат правилам сообщества. В случае нарушения правил, продукт может быть заблокирован на уровне ядра Union.
    
    
    
    Ссылки:
    Исполняемые файлы Gothic1 1.08k:          https://www.worldofgothic.de/dl/download_6.htm
    Исполняемые файлы Gothic2 1.30:            https://www.worldofgothic.de/dl/download_278.htm
    Исполняемые файлы Gothic2 2.6 rev2:      https://www.worldofgothic.de/dl/download_278.htm
    LAA (Large Address Aware) Hack:                https://www.worldofgothic.de/dl/download_552.htm
    Large Address Aware (описание):                https://docs.microsoft.com/en-us/windows/win32/memory/4-gigabyte-tuning
    Описание формата файлов патчей:           https://worldofplayers.ru/threads/42178/
    Оригинальный ресурс Union на WOP.RU:  https://worldofplayers.ru/threads/40376/
    Ресурс Union на WOP.DE:                            https://forum.worldofplayers.de/forum/threads/1571097-Release-Gothic-½-Union-Ressourcen-Manager-%28DEU-ENG-RUS%29

  • HTML:
    System Requirements:
    * Official game Gothic1, Gothic2 or Gothic2 NoTR
    * Windows XP Sp3 or higher
    * Visual C++ 2008, 2010
    * DirectX7, DirectX8
    * NET Framework 4.0
    * Administrator rights
    
    Installation:
    1. You should make sure that the game has all the latest patches.
       To do this, you can use the installation package PlayerKit + Patch. It contains:
            Gothic.exe - an officially published executable file available for
                         download. This file will be installed if a user has
                         one of the many official game versions.
    
            * The x64 bit version of the patch in Gothic.exe uses the LAA (Large Address Aware) hack to allow
               use more than 2GB of memory for x32-bit applications. This patch does not affect the engine bytecode,
               but only replaces the PE header bytes responsible for activating this flag.
    
            Description: https://docs.microsoft.com/en-us/windows/win32/memory/4-gigabyte-tuning
            Patch:       https://www.worldofgothic.de/dl/download_552.htm
    
            Resources used:
            Engine              crc32      crc32 (with LAA)   Source
            Gothic1 1.08k       225BA11E   A3496B67           https://www.worldofgothic.de/dl/download_6.htm
            Gothic2 1.30        A2EE682C   FFB8118B           https://www.worldofgothic.de/dl/download_278.htm
            Gothic2 2.6 rev2    2BCD7E30   00D32D21           https://www.worldofgothic.de/dl/download_278.htm
    
            Differences  between normal    executables and with LAA ones:
            Address      Gothic1 1.08k     Gothic1 1.08k (LAA)
            0x0000014E   0E                2E
            0x00000190   00                F2
            0x00000191   00                46
            0x00000192   00                82
    
            Address      Gothic2 1.30      Gothic2 1.30 (LAA)
            0x0000016E   0E                2E
            0x000001B0   BC                DC
    
            Address      Gothic2 2.6 rev2  Gothic2 2.6 rev2 (LAA)
            0x00000156   0E                2E
            0x00000198   89                A9
    
        GothicStarter.exe   - normal + modified manager for launching mods.
                              Source: https://github.com/GothicFixTeam/GothicFix/tree/master/GothicStarter
        XT_DayStd.sgt       - music theme file with a loud click corrected.
        Xardas_Tower.sty    - music theme file with a loud click corrected.
        Font_15_White.ftn   - replaces the damaged (crc32: C61A14B6) font file for Gothic 1.
        OrcAttack.bik       - replaces damaged (crc32: any) video for Gothic 2.
        Extro_PAL.bik       - replaces damaged (crc32: 5E995A57) video for Gothic 2.
    
        Additionally:
            - Renames the invalid directory `_Work\Data\Textures\_Complied\` to `_Work\Data\Textures\_Compiled\`
            - Replaces the file extension `_Work\Data\Scripts\Content\Cutscene\Ou` `.dat` to `.bin`
            - Replaces the file extension `_Work\Data\Scripts\Content\Cutscene\Ou` `.lsc` to `.csl`
            - Renames the file `_Work\Data\Scripts\_Copliled\Game.dat` to `_Work\Data\Scripts\_Copliled\Gothic.dat`
    
    2. After that, you can install the Union itself. The installation package includes the following files:
            Shw32.dll      - Union library itself
            Vdfs32g.dll    - alternative virtual file system
            Union.patch    - engine's fixes file
            SystemPack.ini - settings file
            Bink32w.dll    - adapted library for playing BIK video Gothic2 -> Gothic1.
                             The external symbol _BinkSetVolume@12 -> _BinkSetVolume@8 is patched in this library.
                             The Gothic2 library supports more formats than the Gothic1 version.
            Union.vdf
                * .m3d                      - files of sound drivers. They are applied in the game settings.
                                              After selecting the driver, the game must be restarted.
                                              For a complete list see Appendix [2]
                zActivateCtrl.dll           - A library that sets the UnionActivated constant to
                                              scripts and in Gothic.ini to true if Union is running.
                zBinkFix.dll                - is a library that extends videos to full screen.
                zMouseFix.dll               - is a library that brings mouse control to DirectX8.
                                              This mouse is compatible with the Steam overlay!
                zMouseFix.patch             - auxiliary script for the correct activation of the DirectX8 mouse.
                Invalid_Source_File.*       - files that will be displayed instead of nonexistent ones if
                                              the SystemPack.ini option is set -> UseErrorVisuals = true.
                                              For a complete list see Appendix [3]
                Humans_Skeleton-T_Spawn.man - Corrected skeleton spawn animation file.
    
    3. Then you can install Ninja and other patches of your choice.
    4. Launch the game in any convenient way.
        - SystemPack.ini will be contained with necessary strings on the first launch
        - Additionally, the current used ini will be fixed too(Gothic.ini, GothicGame.ini, ..., <mod>.ini)
            * [INTERNAL] extendedMenu          = 1
            * [VIDEO]    zVidResFullscreenBPP  = 32
            * [ENGINE]   zTexCacheSizeMaxBytes = 100000000
            * [INTERNAL] menuShowVersion       = 1
            * [INTERNAL] gameStartFailed       = 0
            * [INTERNAL] gameAbnormalExit      = 0
        - The System/Autorun folder will be created
        - A directory of intermediate files will be created Data/$Templates$
            * it looks like a hidden folder when SystemPack.ini -> ShowHiddenFiles = true.
        - An entry will be added to the registry
            * Path  - HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\
            * Parameter - Path of the current executable file
            * Value - "DisableNXShowUI  HighDpiAware"
    
    
    
    
    Virtual file system:
    Union includes an alternative file system. It is faster than the original one.
    - It doesn't require dump files. The list of objects is loaded in real time.
    - Data is accessed through a faster hash table.
    - When reading, file data is cached, which significantly reduces the number of requests to the hard drive.
      This significantly increases the loading speed of the game.
    - OGG file support is implemented at the file system level. Audio track is decoded
      at the moment of reading the file and is transferred to the engine in a form it can work with.
    - Ability to quickly finish the process by holding down the CTRL + ALT + Q key combination.
    - Ability to display missing files of models, textures and sounds as warning objects.
      For this, the SystemPack.ini parameter -> UseErrorVisuals = true must be set. For a complete list of objects, see Appendix [3]
    
    
    
    
    Union loading steps:
    1. The first step of Union is to check if DEP and Interface Scaling are disabled.
    Disabling DEP is necessary so that mods under the control of Ikarus can work seamlessly with the memory of the process.
    Interface scaling allows the operating system to stretch windows and enlarge text. If you do not disable this
    parameter, the user playing in windowed mode will have the window frame increased significantly.
    As a result, the game window can be larger than the screen size. These parameters are individual for each EXE file. Turning them off
    occurs by adding special keys to the registry (DisableNXShowUI and HighDpiAware). If Union writes
    to the registry, then the process immediately goes to restart for the changes to take effect. Since this happens in the very first place,
    the user will not even notice this procedure.
    
    2. At this step, Union includes the first type plugins.
    The first type plugins are plugins that are loaded BEFORE the virtual filesystem and can only be loaded from
    physical directories. You can set the list of plugins in SystemPack.ini -> PluginList. At the end of the plugin name you should specify
    two asterisks (e.g. Ninja.dll**).
    
    3. Union loads the virtual file system. The loading process identifies all files with the .Patch extension
    and the contents of the Autorun folders.
    
    4. Union loads the second type plugins.
    The second type plugins are plugins that are loaded immediately after the virtual file system. Such plugins can be
    loaded from VDF and MOD volumes. Connection is equivalent to step 2, but one asterisk should be added at the end of the plugin name.
    
    5. In this step, Union loads and executes all .patch files found in the physical and virtual directories of the game (step 3).
    .patch files are scripts, the syntax and purpose of which is aimed at making changes to the memory of a process or conducting
    preparatory measures at the time of launching the engine. An example of such a patch is the main patch of the package - Union.patch,
    which contains all fixes for Gothic I, Gothic Sequel, Gothic II and Gothic II NoTR. You can read more in detail
    here: https://worldofplayers.ru/threads/42178/.
    Additional patches which are applied from Shw32.dll directly:
    * Patch for RTTI Dynamic_cast, for native conversion of Engine Classes and Union Gothic API.
    * A patch for the DirectSound3D sound driver, due to which some sound effects disappeared, because the system
      thought the sound source was too far away.
    * A patch for QueryPerCounter that resets the system uptime, due to which the game periodically did not start.
    * Patch for redirecting IO instructions for the ability to read BIK files from VDF or MOD volumes.
    * Patch for low FPS and window frame in full screen mode in ddraw.dll for Windows 7 and higher systems.
    
    6. Union waits for the call to the Engine Entry Point. When WinMain is called, Union will load third type of plugins.
       The third type plugins are plugins that are loaded in parallel to the engine and can be launched from VDF or MOD volumes.
       The fundamental difference between this type is that it is possible to define global instances of Gothic classes in them. Run
       such plugins in two ways:
            I.  By specifying their names in SystemPack.ini -> PluginList, you do not need to add asterisks at the end.
            II. Putting the libraries in a folder named System/Autorun in a physical or virtual directory.
    
    7. The next step is to determine your Operating System and Graphics Card. Based on this, the optimal launch parameters are selected.
        For owners of Intel Graphic or AMD + Win10, the windowed mode will be set, this should compensate for the poor FPS of the fullscreen
        regime. For NVidia owners, the G-Sync values will be controlled by the game so that the game doesn't crash on new generations of graphics cards.
    
    8. Launching the game. Further, Union will not interfere with the operation of the engine, if plugins are not connected to it, which have a standard
       a set of callback functions. The standard set of callback functions is a list of functions for which Union will
       intercept engine events. For a list of such functions, see Appendix [1]. It should be noted that Union produces hooks
       only for those functions for which there is at least one non-Null callback function that is not empty.
       To intercept, patch hooks are used that change the addresses of the calling instructions. For more details, see the section `Interception of functions`.
    
    N. The process terminates with the preliminary finishing of the virtual file system. After that VDF and MOD volume again
       will become available for changes.
    
    
    
    
    Patch files:
    These are scripts that are used to change memory values or committing some actions when starting the engine. Files
    patches are launched from any directories monitored by the file system (System, Saves, _Work and any others at the request of the engine).
    The launch is performed both from physical directories and from VDF & MOD. If physical and virtual directories contain
    identical patches with identical paths, physical copies will have read priority.
    * An additional [patch name] .MAP file can be created. This happens when the patch file has at least one patch marked
      'static' (see the description of the patch format for more details). This file allows you to immediately download all previously made changes to
      process memory, skipping re-parsing of static blocks. By default, the file cannot be seen through
      standard files explorer. To make the file hidden, but visible, set the value SystemPack.ini -> ShowHiddenFiles = true.
      Description of the patch format: https://worldofplayers.ru/threads/42178/
    
    
    
    
    Plugins:
    These are libraries dynamically loaded via Union. Plugins loading can be done both Physically and from VDF or MOD volumes.
    There are three options for loading libraries:
    1. The classic way is to specify the list of library names in SystemPack.ini -> PluginList separated by commas. Also through this parameter
       you can control the priority of launching plugins:
            I.   If you specify two asterisks (plugin.dll**) at the end of the library name, then it will be loaded earlier than the Virtual
                 file system. But in this case it cannot be loaded from VDF or MOD volume.
            II.  If you specify one asterisk (plugin.dll*) at the end of the library name, then it will be launched immediately after the Virtual
                 file system. at this stage the library can be loaded from VDF or MOD volume.
            III. If the name of the library is specified without changes (plugin.dll), then it will be loaded simultaneously with the game. At this stage
                 libraries have the ability to use global instances of Gothic classes.
    
    2. Autorun folder. If the library is located in the Physical Directory `System/Autorun` or in the Virtual Directory `*/Autorun`,
       then the library will be loaded along with the engine, as in step 1.III. In current versions of Union, the order of loading plugins from
       this folder is determined by the dependencies of the libraries on each other. This means that if one plugin imports symbols from another,
       then the Exporting will be loaded first, and then the Importing.
    3. The patch file. They start automatically. This means that plugins can also run patches along with them. There are two
       script functions: LoadLibrary ("plugin.dll") and LoadPlugins ("plugin1.dll", ..., "pluginN.dll").
    
    If plugins are written using the Union SDK, then each plugin can have a Standard set of callback functions.
    These are functions that called during key game events (Appendix [1]). To call these functions, Union intercepts
    related procedures through Hookie-patches (see Interception of functions). Interception of each individual procedure is performed
    only if there is at least one non-Null callback function and a non-empty function. Union
    determines whether a function is empty by its bytecode. If the function begins with a RET instruction, then it is considered as empty.
    
    
    
    
    Gothic API:
    Plugins containing the Gothic API from Union can take full advantage of the engine's class capabilities. Gothic API offers
    classes in which:
    1. Implementation for four engines (4 Gothic versions) at once.
    2. The sizes of the fields are correct. This means that the programmer can access all the properties of the classes without fear of accessing
       invalid memory location.
    3. The methods work directly with the Engine. Class functions have a simple statement that forces your code to execute
       directly from the engine. This is somewhat similar to how the import table works.
    4. Correct virtual table. Virtual methods are implemented in such a way that their offsets are the same as offsets
       engine. To do this, Union takes into account:
            I.   Virtual methods are arranged in the same order as in the engine table.
            II.  The compiler swaps the overloaded virtual methods, so in the Gothic API they appear in the reverse order of the table.
            III. No non-virtual function name should be the same as the virtual function name, since such an overload
                 also affects the order of virtual methods.
            IV.  Multiple inheritance order also forms the order of the virtual table. Therefore, you need to choose the right
                 which class should be inherited first.
            V.   Determining the names of purely virtual methods required the analysis of heirs for their correct placement in the class.
    5. The programmer can independently create or delete instances of the engine classes. For this, Union has implemented a common
       the whole process memory allocation. In plugins on the Union template, the new/delete operators are overloaded containing function calls
       allocating and freeing memory used by the Game Engine, Virtual File System and Union itself.
    6. Dynamic conversion (dynamic_cast) of polymorphic types is possible due to the patched Runtime function and
       correct virtual table. The patch strips off the extra namespace from the class name, so that the engine perceives
       API classes as native. At the same time, the performance of the program does not change.
    7. Convenient hierarchy of class contents, as well as completely public access to all its members. At the beginning of the class are located
       enumerators and structures, followed by class fields, methods, virtual methods, static functions, and static properties.
    
    
    
    Interception of functions:
    Union uses two types of hooks to intercept functions.
    1. MS Detours - a solution from Microsoft, which substitutes a transition to another procedure at the beginning of a function.
    2. Patches - an alternative solution from Union. The program defines all instructions in which the function takes part, and
       then replaces the addresses and offsets with another routine. This method has the best effect on compatibility with
       other modifications. Despite better compatibility, this option has a drawback. Some function calls
       do not exist explicitly, then only Detours can intercept them. For example, plugins have a set of Standard functions
       callback (see plugins description). Hook-patches are used in their implementation. Therefore, they should not influence the work.
       other projects.
    
    * SystemPack.ini has a UseAdaptiveHooks parameter. If you set this parameter to true, then Union will try to replace all
      Detours on Patches. If the user has problems with the compatibility of Mods and Plugins, then this option will allow you to noticeably
      increase their compatibility with each other. This option is an emergency measure. It is necessary to report
      the developers about the found bugs to fix the problems.
    
    
    
    
    Resource manager:
    This is a program that allows you to get up-to-date resource assemblies and information related to developments within the Union project,
    so that the user can get files and information from one place. The most up-to-date assemblies are always uploaded in the manager
    products that the user can download, update, install, uninstall, convert to an offline installer, and
    distribute it however you like. To prevent problems with the installation, the manager from version 3.2 by default asks
    administrator rights. The program uses `[System Drive]:\\ProgramData\Union\` to store executable files (1),
    repositories of downloaded resources (2) and for the content of the Union SDK (3).
        1. The manager stores system files in the System folder:
            * Ucore32.dll        - the core of the installer.
            * Updater.exe        - the program used for updating manager components. Called directly by the manager.
            * Locale.cs          - the file containing data with translation of the user interface.
            * Root.cs            - the file containing the resource hierarchy from the last successful session.
            * Errors_Manager.log - the file containing errors that occurred during the execution of the Manager.
            * Errors_Updater.log - the file containing errors that occurred during the execution of Updates.
            * history_d.cs       - the file containing the history of installation directories for displaying hints for the next installations.
            * history_f.cs       - the file containing the history of installed files to display hints for the next installations.
            * Language.cs        - the file containing information about the current language
            * Theme.cs           - the file containing information about the current theme
    
        2. The Storage folder is used to store downloaded resources.
        3. SDK folder contains developer tools files, if installed.
    
    The manager is updated automatically if an update is available. In case there is no internet connection,
    the files you previously downloaded will be available for use. Descriptions and links will be taken from the previous session.
    The program interface is a collection of directories, resources, descriptions and links. The resource status is determined by colors:
      - Green                  - the object has been downloaded and can be executed.
      - Blue                   - the object is available for download.
      - Blue with a red border - the object has recently appeared and can be downloaded.
      - Orange                 - the object can be updated.
      - Gray                   - the object is inaccessible due to the lack of a network.
    
    
    
    
    By using Union, you agree to be bound by the license agreement below:
    ---------------------------------------------------------------------------------
    This license uses the Steam  Community  conduct[1]  and  the  GMDK[2]  principles.
    You have the right to  distribute  the  end-product  of  Union  without  notifying
    the authors[4]. However, you cannot change the  resources  related  to  the  Union
    yourself. You may not redistribute third party packages that obstruct for a normal
    operation of Union and additional content to it  without  a  reason[3].  You  have 
    the right to file a complaint for the developers[4] of Union  if  you  think  that
    your rights have been violated. The authors of Union  and  its  representatives[5]
    can: advise you on any questions regarding  the  Union  package  and  the  current
    licenses; impose sanctions on products if they think  may  violate  the  terms  of
    this license and be unacceptable for public distribution. Union does  not  collect
    any type of information of the user's PC. Union does not change system  parameters 
    that were not described on the main Union page. The license terms are  subject  to
    change at any time without prior notice.
    
    
    [1] https://store.steampowered.com/online_conduct
    [2] https://www.worldofgothic.de/modification/?go=modlizenz
    [3] Obstruction  of  normal  operation  includes  any   operation   related   with
        interference in:  any  Union  components  without  Union  authors  permission;
        additional content (plugins, patches, etc.)  without  coordinating  thos  with
        convent  developers.  For  example:  memory  patching;   blocking   execution;
        implicit redefinition of user settings, etc. An exception  can  be  considered
        specific cases, such as: package incompatibility; violation of the performance
        of  the  modification;  complete  duplication  of  functionality,   etc.   Any
        exceptions must be previously agreed with the authors of the affected content.
    [4] Union developers are: @Gratt(gratt.union@gmail.com), @killer-m.
    [5] Union representatives are: @Auronen, @Siemekk
    
    
    
    
    Appendixes:
    1. The list of Standard callback functions:
       a. Registration of external functions;
       b. Initialization of the game session;
       c. Loading a new game;
       d. Loading a save;
       e. Level changing;
       f. Level changing by a trigger;
       g. Saving the game;
       h. Pause setting;
       i. Pause release;
       j. Level rendering;
       k. Render the menu.
    
    2. List of sound drivers:
      a. MSSA3D.M3D
      b. MSSDS3D.M3D
      c. MSSDS3DH.M3D
      d. MSSDX7.M3D
      e. MSSEAX.M3D
      f. MSSRSX.M3D
      g. MSSSOFT.M3D
    
    3. List of files displayed instead of missing ones:
      a. INVALID_SOURCE_FILE.MDL
      b. INVALID_SOURCE_FILE.MDM
      c. INVALID_SOURCE_FILE.MMB
      d. INVALID_SOURCE_FILE.MRM
      e. INVALID_SOURCE_FILE.OGG
      f. INVALID_SOURCE_FILE.WAV
      g. INVALID_SOURCE_FILE-C.TEX
    
    
    
    Community Rules:
    - do not appropriate other people's products, and do not distribute them without the permission of the authors (if this is not the direct task of the product);
    - do not interfere with other users or developers for no apparent reason;
    - do not create conflict situations or tension in the community;
    - do not create virus programs.
    - When distributing the product, comply with the laws of the country.
    
    Each member of the community has equal rights and can freely create and distribute their own products for Gothic and Gothic II games using the Union and Union SDK tools, if the products do not contradict the community rules. In case of violation of the rules, the product may be blocked at the Union core level.
    
    
    
    
    Links:
    Executable files Gothic1 1.08k:       https://www.worldofgothic.de/dl/download_6.htm
    Executable files Gothic2 1.30:        https://www.worldofgothic.de/dl/download_278.htm
    Executable files Gothic2 2.6 rev2:    https://www.worldofgothic.de/dl/download_278.htm
    LAA (Large Address Aware) Hack:       https://www.worldofgothic.de/dl/download_552.htm
    Large Address Aware (description):    https://docs.microsoft.com/en-us/windows/win32/memory/4-gigabyte-tuning
    Description of the patch file format: https://worldofplayers.ru/threads/42178/
    Original resource Union on WOP.RU:    https://worldofplayers.ru/threads/40376/
    Union resource on WOP.DE:             https://forum.worldofplayers.de/forum/threads/1571097-Release-Gothic-½-Union-Ressourcen-Manager-%28DEU-ENG-RUS%29
 

Вложения

  • Union 1.0h 04.11.2020.zip
    4,9 MB · Просмотры: 3.078
  • Union 1.0i 08.01.2021.zip
    5,7 MB · Просмотры: 9.261
  • Union Primary 08.01.2021.zip
    39,6 MB · Просмотры: 1.234
  • Union Primary 4gb 08.01.2021.zip
    39,6 MB · Просмотры: 5.020
  • Union 1.0j 22.02.2021.zip
    5,7 MB · Просмотры: 1.821
  • Union Primary 15.05.2021.zip
    39,7 MB · Просмотры: 444
  • Union Primary 4gb 15.05.2021.zip
    39,7 MB · Просмотры: 850
  • Union 1.0k 30.05.2021.zip
    6,1 MB · Просмотры: 717
  • Union 1.0k 11.06.2021.zip
    6,1 MB · Просмотры: 4.051
  • Union_Primary_4gb 30.10.2021.zip
    44,1 MB · Просмотры: 1.905
  • Union_1_0l 30.10.2021.zip
    10,8 MB · Просмотры: 7.266
  • Union_1_0l 17.01.2022.zip
    10,9 MB · Просмотры: 763
  • Union_Primary_4gb 17.01.2022.zip
    44,1 MB · Просмотры: 903
  • Union_Primary_Universal 12.02.2022.zip
    44 MB · Просмотры: 19.117
  • Union 1.0m 26.06.2022.zip
    11,8 MB · Просмотры: 611
  • Union 1.0m 26.06.2022 v2.zip
    11,8 MB · Просмотры: 360
  • Union 1.0m 26.06.2022 v3.zip
    11,8 MB · Просмотры: 20.525
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
А значит, можно отправить в топку пирог из оверлеев. И сделать отдельную ветку прокачки только топоров. Я за то, чтобы каждый тип имел свой блок анимаций в mds скриптах.
Ну определись какие блоки нужны, отсюда будет понятно хватит ли резерва. Если нет, то можно сразу смотреть в сторону динамики - указываешь двуручное или одноручное оружие и какую приставку блока должно использовать. Типа так.
Daedalus:
instance ITMW_AssCutter(C_ITEM)
{
    ...
    SetFightScheme("2HA", "ZS_LongAxe"); // какой блок использовать, в какой слот помещать
};
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995

Pag

Участник форума
Регистрация
7 Ноя 2013
Сообщения
98
Благодарности
62
Баллы
170
У меня на Юнионе странная проблема с колесиком мыши, оно листает вверх/вниз на 2 пункта, например в инвентаре листает сразу на два предмета, то же самое в любых меню, диалогах итд. Раньше никогда такого не было. Из плагинов использую только квиклут/квиксейв от Ликера (тот который можно поставить в самом Юнионе не работал :confused:), и еще дх11.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Pag, опрос мышки происходит 1 раз в кадр. Я бы на твоем месте для начала удостоверился, что в ее работу не лезет сам DX11 и все ли ок с настройками самой мыши.
Также можешь пошариться в настройках SystemPack.ini и найти там раздел Mouse. В твоем случае (возможно) может помочь отключение параметра EnableWrapper:
1605638216227.png
 

Pag

Участник форума
Регистрация
7 Ноя 2013
Сообщения
98
Благодарности
62
Баллы
170
Gratt, EnableWrapper пофиксил проблему, благодарю!
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Подскажите, как реализовать запрет автопропуск диалога, после завершения звуковой дорожки. Чтобы игрок сам пропускал диалог, нажимая Esc или правую клавишу мыши, стандартными клавишами, в общем.
Вещь не всем нужная, но тем, кто играет в иностранные моды и не совсем понимает иностранную речь - актуальная. Но как реализовать ее в коде - не соображу.
 

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
Вещь не всем нужная
Мне вот такое было нужно поскольку не успевал читать диалоги, поэтому по моей просьбе MaGoth добавил параметр (название его не помню давно выставил и забыл) в SP на который домножается время показа диалога рассчитанное системой, пользуюсь им (поставил увеличить в 20 раз) хоть он и глючит в катсценах (играл в какой то мод название не помню) из за того что там, там как раз заблокирован его сброс и когда сцена уже давно закончена диалоги ещё долго вылазят.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
А зайти и прочитать в тему? :)
MaxTimePerPhrase=30.0 ; ... максимальное время в секундах для отображения субтитров без файла озвучки.
TimePerChar=100.0 ; ... время в миллисекундах для отображения одного символа субтитров без файла озвученного диалога. Например, при значении TimePerChar=200.0, фраза: "Ты можешь научить меня сражаться?" содержит 33 символа, ; значит отображаться она будет 33*200/1000=6.6 секунд.

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

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
А зайти и прочитать в тему
Так пусть тот кому нужно название сам ищет, главное придать направление.
но не относится к модам, где есть озвучка
Походу я отстал от жизни, мне припоминалось что вроде на озвучу пофиг, правда у меня до сих пор тестовая версия SP может в ней что по другому
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
Так пусть тот кому нужно название сам ищет, главное придать направление.

Походу я отстал от жизни, мне припоминалось что вроде на озвучу пофиг, правда у меня до сих пор тестовая версия SP может в ней что по другому
Ну я сильно не тестил, но проверить очень легко - делаем огромные значения, в моде, где нет озвучки добавляем пустой звуковой файл в 1 сек. Если окно пропадет через 1 сек, значит не робит.

Я проверил и звуковой файл перекрывает любые настройки, движок сразу же закончит диалог, как заканчивается звуковой файл.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.080
Благодарности
1.899
Баллы
290

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
Так пробовал?

Код:
[SUBTITLES]
Control = 1
TimeMultiplier = 20

Ну, только значение ставить овердохренашное
Например
TimeMultiplier = 10000.0
Потому что при включенном управлении субтитрами, файлы без озвучки становятся зависимыми от TimeMultiplier, а не от MaxTimePerPhrase и TimePerChar
При TimeMultiplier = 20 скипаются очень быстро, при TimeMultiplier = 200, чуть медленее, но быстро, TimeMultiplier = 2000 уже хорошо, но длинные диалоги не успел прочитать
TimeMultiplier > 10000 позволяет полностью контролировать процесс.

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

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.080
Благодарности
1.899
Баллы
290
как реализовать запрет автопропуск диалога
НПС, произносящий диалоговую реплику, обрабатывает событие oCMsgConversation с подтипом EV_PLAYANISOUND.
Основная обработка события происходит в методе oCNpc::EV_PlaySound:
- реплика прекращается по истечении таймера stop = (csg->f_no <= 0), который устанавливается при первом вызове метода !csg->IsInUse()
- изначальное значение таймера передается во вьюшку вызовом zCView::DialogMessageCXY
- когда значение таймера становится <= 500, НПС завершает все говорильные анимации

Соответственно, чтобы предотвратить автоматическую смену диалогов нужно исправить условие окончания реплики и в вызовах zCView::DialogMessageCXY передавать достаточно большое значение времени. Но есть некоторый нюансы:
- баг в oCNpc::Output_SVM и oCNpc::Output_SVM_Overlay: используется вызов oCNpc::StartTalkingWith вместо oCNpc::SetTalkingWith. Из-за этого, если во время диалоговой реплики в сторону ГГ кто-либо произнесёт внедиалоговую реплику, то диалоговую реплику пропустить уже не получится (игра будет считать, что ГГ ведет диалог с тем, кто кинул реплику). Возможно, будет допустимым просто убрать эти вызовы.
- в oCNpc::StopRunnngOU не должны обрабатываться удалённые сообщения csg->IsDeleted()
- в oCNpc::StopRunnngOU не должен прерываться звук и закрываться вьюшки для неинициализированных сообщений csg->IsInUse() == false
- в oCNpc::StopRunnngOU должна закрываться только одна вьюшка, индекс которой хранится в csg->f_yes
- значение csg->f_yes перезаписывается при каждом вызове метода oCNpc::EV_PlaySound (этот оператор нужно убрать)

Всё это, в идеале, должно делаться с помощью патч-файла.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Ну вот например. Движок будет скипать фразу лишь спустя StaticTalkTime, если включен параметр StaticTalkTimeEnabled. Параметры появятся после первого запуска спатчем в sp ini. По умолчанию время пропуска равно 600000мс = 10мин. Проверил на г1, на вторую скопировал, но не проверял. Напишете если чё.

Но есть некоторый нюансы:
Это про всякие 'Эй ты' и подобные? Щас пока не могу их проверить. Если, как ты говоришь, пираньи перепутали функции, то никто не мешает вызвать другую функцию тем же патчем
 

Вложения

  • TalkTime.7z
    525 байт · Просмотры: 16
Последнее редактирование:

Raven25

Участник форума
Регистрация
18 Дек 2018
Сообщения
186
Благодарности
75
Баллы
190
Здравья! Есть вопрос, как в коде понять то что мы копаемся в чужом инвентаре (при воровстве, при оберании мёртвого, при торговле)
Пост автоматически объединён:

Просто есть такая вот проблема, при попытке достать предмет из инвентаря труппа\торговца\при воровсте плагин перехватывает комбинацию клавиш (ctrl и стрелка в право)
Пост автоматически объединён:

Вот код

C++:
// Supported with union (c) 2020 Union team
// Union SOURCE file

namespace GOTHIC_ENGINE {
    // Add your code here . . .

#define KeyClick(a) zinput->KeyToggled(a)
#define KeyPress(a) zinput->KeyPressed(a)
    int playerWantsToThrow = 0;

    void oCNpc::DoThrowItem( zCVob * pItem, float force ) {
        if ( !pItem )
            return;

        // кидаем
        DoThrowVob( pItem, force );
        // т.к. в функции oCAIVobMove::Init force(мощность) броска обрезается в 1, нам нужно сделать это вручную.
        // берем матрицу и вычисляем угол
        zMAT4 matrix = trafoObjToWorld;
        zMAT4 trafo = matrix * Alg_Rotation3DN( zVEC3( 1, 0, 0 ), -20 );
        // берем направление
        zVEC3     direction = trafo.GetAtVector();
        // задаем мощность броска, в данном случае стоит 1000
        pItem->GetRigidBody()->SetVelocity( direction * force );
    }

    void oCNpc::AI_PlayAni( zSTRING ani ) {
        oCMsgConversation* pConv = new oCMsgConversation( oCMsgConversation::EV_PLAYANI_NOOVERLAY, ani );
        pConv->number = 0;
        this->GetEM( FALSE )->OnMessage( pConv, this );
    }

    void ThrowLoop() {
        if ( playerWantsToThrow ) {
            // если герой вошел в любой боевой режим, вещь из правой руки автоматом выпадает, режи броска отключается.
            if ( player->fmode != NPC_WEAPON_NONE ) {
                playerWantsToThrow = FALSE;
                return;
            }

            // герой хочет чего-то там бросить и инвентарь закрыт
            if ( !player->inventory2.IsOpen() ) {
                zCModel* pModel = player->GetModel();
                // если зажата правая клавиша мыши, то стартуем аниму прицеливания
                if ( zinput->GetState( zLOGICKEY_ACTION ) ) {
                    if ( pModel ) {
                        if ( !pModel->IsAnimationActive( "S_IAIM" ) ) {
                            player->AI_PlayAni( "T_STAND_2_IAIM" );
                            player->AI_PlayAni( "S_IAIM" );
                        }
                    }
                }

                // если гг целится и правая кнопка мыши не зажата, включаем аниму перехода с прицеливания на STAND
                if ( playerWantsToThrow == 1 && !zinput->GetState( zLOGICKEY_ACTION ) && pModel->IsAnimationActive( "S_IAIM" ) ) {
                    if ( pModel->IsAnimationActive( "S_IAIM" ) ) {
                        player->GetEM( FALSE )->Clear();
                        player->AI_PlayAni( "T_IAIM_2_STAND" );
                    }
                }

                // если гг целится и игрок нажимает левую кнопку мыши, начинаем анимацию броска
                if ( playerWantsToThrow == 1 && zinput->GetState( zLOGICKEY_UP ) && pModel->IsAnimationActive( "S_IAIM" ) ) {
                    player->GetEM( FALSE )->Clear();
                    player->AI_PlayAni( "T_IAIM_2_ITHROW" );
                    playerWantsToThrow = 2;
                }

                // разрешение вертеть персонажем во время прицеливания
                if ( pModel->IsAnimationActive( "S_IAIM" ) || pModel->IsAnimationActive( "S_ITHROW" ) ) {
                    player->human_ai->PC_Turnings( 1 );
                }

                // если герой начал анимацию броска и дошел до нужной стадии,
                // бросаем вещь и активируем анимацию перехода в спокойное состояние, отключаем режим броска
                if ( playerWantsToThrow == 2 && pModel->IsAnimationActive( "S_ITHROW" ) ) {
                    player->GetEM( FALSE )->Clear();
                    player->DoThrowItem( player->GetRightHand(), 1000 );
                    player->AI_PlayAni( "T_ITHROW_2_STAND" );

                    playerWantsToThrow = 0;
                }
            }
        }


        if (player->inventory2.IsOpen()) {
            if (zinput->GetState(zLOGICKEY_ACTION) && zinput->KeyToggled(KEY_RIGHT)) {
                oCItem* newItem = player->inventory2.GetSelectedItem();
                if (newItem) {
                    zinput->ClearKeyBuffer();
                    // закрываем инвентарь
                    player->CloseInventory();
                    // забираем одну вещь(если их много, чтобы все не выкидывать)
                    newItem = player->RemoveFromInv(newItem->GetInstance(), 1);

                    if (newItem) {
                        // кладем вещь в слот правой руки
                        player->PutInSlot("ZS_RIGHTHAND", newItem, FALSE);
                        playerWantsToThrow = TRUE;
                    }
                }
            }
        } //IsOpen
    }
}
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.080
Благодарности
1.899
Баллы
290
Есть вопрос, как в коде понять то что мы копаемся в чужом инвентаре (при воровстве, при оберании мёртвого, при торговле)
Посмотреть все открытые контейнеры в oCItemContainer::contList

oCNpc::game_mode флаг указывающий текущий режим инвентарчяЧ: enum { NPC_GAME_NORMAL, NPC_GAME_PLUNDER, NPC_GAME_STEAL };(нормал - гг смотри свой инвентераь.. пландер - обыскивает труп, стил - ворует
 
Последнее редактирование модератором:

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Кто знает, как удалить директорию из под игры...путь получаю правильный, но не очень понятен принцип работы DirRemove для класса zFILE_FILE?
Кроме этого не ясно, как теперь перевести готический стринг в const wchar_t* для использования _wrmdir. В родном коде используется обычная команда rmdir которую убрали и которая работала с обычном стрингом с преобразованием в char. Порылся в инете - примеры есть но они работают с каким то своим стрингом ) не настолько силен в плюсах.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.080
Благодарности
1.899
Баллы
290
не очень понятен принцип работы DirRemove для класса zFILE_FILE
Удаляет только пустые директории, видимо.
Кроме этого не ясно, как теперь перевести готический стринг в const wchar_t* для использования _wrmdir.
Смысла нет, так как есть функция _rmdir, которая принимает char*. Плюс эти функции тоже только пустые директории удаляют.

Кто знает, как удалить директорию из под игры...
Как вариант:
C++:
bool DeleteDir(const char* path)
{
    size_t length = strlen(path);
    char* buffer = new char[length + 2];
    strcpy(buffer, path);
    buffer[length + 1] = 0;

    SHFILEOPSTRUCTA op;
    ZeroMemory(&op, sizeof(op));
    op.pFrom = buffer;
    op.wFunc = FO_DELETE;
    op.fFlags = FOF_NO_UI;

    int result = SHFileOperationA(&op);
    delete[] buffer;

    return result == 0;
}
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Удаляет только пустые директории, видимо.

Так в том то и дело, не ясно как задавать папку для удаления. Я покопался в коде там идет привязка как раз на функцию _rmdir, которую не нашел :)

Смысла нет, так как есть функция _rmdir, которая принимает char*. Плюс эти функции тоже только пустые директории удаляют.

Подскажешь, как ее вызвать? я вижу только функцию _wrmdir. и она работает как раз с const wchar_t*.

Спасибо, все удалилось. Теперь только осталось понять как сделать реиницилизацию списка в меню загрузки сейвов, чтобы он перестал видеть удаленную запись
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.080
Благодарности
1.899
Баллы
290
Я покопался в коде там идет привязка как раз на функцию _rmdir, которую не нашел
C++:
#include <direct.h>
Но эта функция удаляет только пустые директории.
А твой пример удалит папку с вложенными файлами?
Да.
Так в том то и дело, не ясно как задавать папку для удаления.
Путь до файла/папки в конструктор zFILE_FILE передаётся.
 
Сверху Снизу