- Автор(ы)
-
@Gratt
Wiki: Home · Union Framework / Union API
Текущий прогресс: около 90%
Union Framework — это мощный набор инструментов с открытым исходным кодом, предназначенный для глубокой модификации кода игр серии Gothic, основанных на движке ZenGin. Он позволяет разработчикам создавать собственные плагины, напрямую взаимодействующие с памятью игры, изменять её поведение и встраивать новые функции без необходимости предварительной установки каких-либо сторонних расширений, включая классический Union.
Основные возможности Union Framework:
- Перехват процедур и функций с гибкой настройкой
- Прямое изменение памяти (патчинг инструкций)
- Отслеживание событий загрузки библиотек
- Общая память между плагинами, включая общие синглтоны
- Работа с VDFS (виртуальной файловой системой Gothic)
- Инструменты для работы со строками и их локализацией
Методы перехвата (Hooking):
Union Framework реализует три подхода к перехвату функций, в зависимости от контекста и задач:
- HOOK + AS (MS Detours):
- Изменяет пролог целевой функции, переадресуя её вызов на вашу. Это мощный способ вмешательства, охватывающий весь процесс.
- HOOK + PATCH:
- Переопределяет все инструкции вызова конкретной функции, перенаправляя их на новую реализацию. Работает в пределах одного модуля, но совместим с другими расширителями.
- Частичный хук (Partial Hook):
- Позволяет встроить C++-функцию прямо в середину целевой функции. Полезно, когда необходимо вмешаться в конкретный участок логики, не перехватывая всё поведение целиком.
Общая память и синхронизация:
Для обеспечения стабильности и совместимости между плагинами Union Framework предоставляет механизм общей памяти, позволяющий:
- Использовать единые методы аллокации
- Создавать глобальные синглтоны, видимые сразу всем плагинам
- Согласовывать доступ к общим данным и точкам входа
Union API — это центральная часть Union Framework, предоставляющая полноценный интерфейс для работы с объектами игры в памяти. Он позволяет нативным плагинам:
- Получать доступ к структурам ZenGin (в том числе актёрам, объектам мира, GUI и т. д.)
- Использовать шаблон декоратор для расширения функциональности игры
- Работать с памятью напрямую, без ограничений
Сборка и использование:
Union API реализован как проект на Visual Studio 2022 и поддерживает сборку в разных форматах:
- DLL — динамически подключаемая библиотека (рекомендуется)
- LIB — статическая библиотека
- EXE — консольное приложение для отладки вне игры
union-api
к своему проекту C++, добавления соответствующих include-путей и определения макросов: _UNION_API_DLL
или _UNION_API_LIB
, в зависимости от способа подключения.Полная документация, примеры и инструкции находятся в официальной Wiki Union API.
Статус проекта:
Union API находится в активной разработке. Хотя он еще не завершён, уже доступен для тестирования. Следует учитывать, что API может меняться и в нём могут быть ошибки.
Union API находится в активной разработке. Хотя он еще не завершён, уже доступен для тестирования. Следует учитывать, что API может меняться и в нём могут быть ошибки.