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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Внимание!
    — Требуется примерно по 3-5 человек на каждую из версий ОС:: - Windows® XP SP3, Windows® Vista SP2, Windows® 7 SP1, Windows® 8, Windows® 8.1, Windows® 10(build 10 1607) и Windows® 10(build 10 1703). Для стационарных ПК и ноутбуков. Заявку на участие можно оставить здесь...
  • На нашем форума стартовал новый осенний конкурс скриншотов от Ордена Хранителей под названием "Право на ненависть"!
    Смысл конкурса заключается в создании художественных скриншотов в играх серии "Готика", иллюстрирующих тему ненависти. Подробности и правила в конкурсной теме
    Работы принимаются до 22 октября, а после начнётся голосование. В обоих этапах конкурса может проявить себя любой желающий. Спешите поучаствовать!

Gothic ½ Union

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
  • Первое сообщение
  • #1
73687


Юнион | Union
Объединение пакетов
AgamaST &
SystemPack


О пакете Описание SDK & DLLs Менеджер ресурсов


  • Ресурсы портала: World of Gothic.ru
    Страна разработчика: РФ
    Платформа игры: Кроссплатформенный (Gothic I Classic, Gothic I Sequel, Gothic II Classic, Gothic II NoTR)
    Тип обновления: Онлайн обновление
    Рабочее название: Юнион
    Версия пакета: 1.0a, 1.0b, 1.0c, 1.0d, 1.0e
    Язык: Английский, Немецкий, Русский, Польский, Румынский, Итальянский, Чешский, Испанский
    Вес: 3,15 МБ
    Статус: Релиз
    Дата релиза: 02.06.2019 | 02.06.2019 | 21.09.2019 | 05.10.2019 | 12.10.2019 |||

    Авторы:
    Gratt - разработка пакета Union и Gothic SDK
    killer-m - патчинг движка (улучшение работоспособности и исправление ошибок)
    Jr13San - тестирование и отладка пакета Union
    MaGoth - адаптация под различные ОС, модерация Web-ресурсов
    KuDeSnik - разработка пакета SystemPack
    Slavemaster - разработка пакета SystemPack

    Haart - справочный материал по Union API
    neromont - справочный материал по Gothic API

    LikerGothic - перевод справочных материалов на английский


    . В Union 1.1a ожидается .
    • Поддержка формата .OGG ✓
    • Объемный звук ✓
    • Исправление видеороликов
    • Корректировка логики vdfs ✓
    • Перенаправление потоков bink ✓ & mss в vdfs
    • Обновление Gothic API ✓




  • Юнион
    Пакет исправления, улучшения и редактирования движка.
    Штатный игрок получит систему, исправляющую массу технических ошибок игры, улучшающую ее стабильность и производительность.
    В случае, если пользователь захочет отредактировать движок, юнион предоставит SDK для создания собственных плагинов на игру.


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

    Библиотека управления памятью
    Повышает производительность операций над памятью, в особенности при высокой загруженности. Разработчикам открыт доступ к изменению функций памяти из зарезервированной библиотеки zMalloc32.dll.

    Конечное использование
    Установить и запустить игру любым удобным способом.




  • Плагины
    Инструменты разработчика добавляются как шаблон проекта в Visual Studio. Инструменты имеют наборы классов движка, построенных согласно оригинальным. В особенности нужно отметить vtable, восстановленную программно, и поля классов, совпадающие по размерам и порядку. Таким образом имеем простой и нативный способ внедрять свой собственный код в движок без костылей и палок.

    Выполнение плагинов
    Для выполнения созданного плагина достаточно поместить dll в папку System или в VDF том, предварительно указав имя библиотеки в запускаемом ini. Количество запускаемых одновременно плагинов не ограничивается. Это касается не только чистой игры, но и любых модов к ней.
    Конечно помимо плагинов можно запускать
    любые другие dll, не имеющие отношения к юниону.

    Выбор компилятора
    Настоятельно рекомендуется компилировать проекты с использованием vc2010 для исключения возможных ошибок памяти. При этом приветствуется использование последних версий Visual Studio для разработки и написания кода.

    Совместимость
    Если версия плагина устаревает по отношению к пакету, он по прежнему останется совместим. При этом Gothic API не оказывает никакой роли в этом процессе.



  • Сетевой установщик компонентов и обновлений
    Программа разработана для получения быстрого доступа ко всем продуктам и их обновлениям в рамках разработки пакета Union (средства расширения и улучшения движка ZenGin). Все доступные пакеты помечаются индикатором, который определяет находится файл на сервере или уже скачан. Для скачанных пакетов возможна установка в offline режиме для экономии трафика или вне доступа к сети. Клиент обновится автоматически, если на него поступят обновления.


    1. Установка и обновление:
    Скачивание и установка выполняется через сетевой менеджер в онлайн режиме, пример окон менеджера ресурсов:
    ResourceManager.pngResourceManager_Download.pngResourceManager_Install.pngResourceManager_Update.png

    Перед установкой пакета Union в обязательном порядке необходимо установить патч на игру находящийся в том же разделе, ставится он только 1 раз на чистую игру, далее просто забываем о нем, циферка 1:
    ResourceManager_Components.png


    После чего скачиваем и устанавливаем сам пакет Юнион в одной из представленных версий 1.0a или 1.0b, циферка 2.

    Важно! Пакет Юнион может быть установлен на любую версию игры установленную на ПК и/или на все сразу, поочередно. Его работоспособность проверялась на версиях стим и гог и дисковых версиях лицензионных копий (кроме сиквела). За остальные помойки не ручаемся.


    2. Систем пак:
    По поводу возможностей SystemPack'a см., описание в шапке темы: https://worldofplayers.ru/threads/36519/
    Единственное исключение, в данной версии пакета Юнион пока еще не реализована поддержка видеосистемы формата Bink и инкапсулированного формата звуковой системы *Ogg

    Дополнительное в SystemPack.ini
    CSS:
    [DEBUG]
    WindowPosX = "0"
    ; ... Позиция окна по горизонтали, - по-умолчанию: 0.
    ; ... Изменение позиции окна доступно только при BorderlessWindow = 1
    
    WindowPosY = "0"
    ; ... Позиция окна по вертикали, - по-умолчанию: 0.
    ; ... Изменение позиции окна доступно только при BorderlessWindow = 1

    3. Плагины:
    При установке плагинов из SDK, Менеджер ресурсов добавит в выбранную Visual studio шаблон проекта и установит все необходимые инструменты.
    Рекомендуется использовать последние версии студии. Но обязательно иметь компилятор vc2010. Самый простой способ его заиметь - установить Visual studio 2010 (и никогда ее не трогать). Более подробно о работе с плагинами объясню позже, но самое важное описано ниже.
    - в проекте есть несколько конфигураций сборки:
    G1 Release и им подобные - проект настраивается под компиляцию для одного движка.
    Release - компиляция для всех движков по выбору.
    Работать необходимо в пространстве имен движка.
    namespace - Gothic_I_Classic, Gothic_I_Addon, Gothic_II_Classic, Gothic_II_Addon соответственно.

    Разница между 1.0а и 1.0b в алгоритмах файловой системы. По хорошему конечно использовать b версию.



Подробнее отдельно о пакетах см. в соответствующих темах.:
Gothic ½ AST (Agama Script Tools)
Gothic ½ SP (SystemPack)

Тема в разработке...
 
Последнее редактирование:

Adanos Gotoman

Участник форума
Регистрация
16 Мар 2017
Сообщения
88
Благодарности
35
Баллы
70
Unsubdued, не знаю, на днях переустановлю всё.
 

Xnore

Участник форума
Регистрация
5 Фев 2018
Сообщения
13
Благодарности
0
Баллы
30
Чистый GOG 1.08k -
1570634130730.png
 

Xnore

Участник форума
Регистрация
5 Фев 2018
Сообщения
13
Благодарности
0
Баллы
30
Возможно ли играть в Пробуждение на Union? Просто не нашёл нигде, использует ли мод что-то не совместимое.
 

Babka

Участник форума
Регистрация
20 Сен 2019
Сообщения
8
Благодарности
0
Баллы
5
Xnore, Работает и с "чистой" Готикой и с модом Пробуждение. Для корректной работы нужна Gothic ( snowball. 1.08k ). После устанавливается Union patch и сам Union ( 1.0d ):)
 

Unsubdued

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.275
Благодарности
329
Баллы
245
Спасибо, Babka старая.
Извините, Админы и Модеры, удержаться не смог...
 

mud-freak

Участник форума
Регистрация
12 Окт 2019
Сообщения
3
Благодарности
0
Баллы
5
Union 1.0d
Стабильная версия, направленная на исправление ошибок 1.0c.

* Исправление вылета, наиболее характерного в переходе между локациями. Добавлена дополнительная проверка валидности физических файлов.
* Альтернативный алгоритм файловой системы. Поиск полного пути к файлу осуществляется в алфавитном порядке. Заметно в озвучке NPC.
* Исправление одноразового воспроизведения звуков. Сброс каретки читаемого ogg файла после использования.
* Исправление 0xC0000005 на некоторых системах. Убран лишний код из Union.patch, приводящий к попытке изменить несуществующие данные.

Всем спасибо за репорты.

Привет Gratt! Извините, что пишу на английском!

Great work! I have some issues with the VDFS of Union. I had created a DLL which can be loaded with the SystemPack successfully (using the pre.load file) without any problems. But now it does not work with Union: When I try to load the same DLL with Union, I run into limitations of its differing VDFS implementation.

Maybe you could look into this:
  1. Cannot access physical files with zFILE_VDFS::Open(false).

    I think this problem was intended to be fixed with version 1.0d (see here), but I still experience it.

    Here an example:
    I want to verify the checksum of my plugin (the physical DLL file) with zCChecksum::CalcFileChecksum(const zSTRING&). This function calls zFILE_VDFS::Open(false) which in turn fails with an invalid handle returned by vdf_fopen(char*, long), resulting in the error previously reported: "VFILE: @#$%^&".
    I assume there is still some implementation error in Union's VDFS which was not quite fixed in version 1.0d. The VDFS of the SystemPack does not have this problem. Could you look into this issue?

  2. VDF are locked and cannot be accessed/opened.

    Once the VDF files are read by the VDFS, they seem to remain opened and are thus locked and cannot be accessed for the duration of the game. This is not the case with the SystemPack. Could you close the files after reading them into memory or open them with shared flags (e.g. FILE_SHARE_READ) instead?
    For me, it is critical to be able to access the VDF, because I have a script that walks the file lists manually.

  3. Plugins (DLLs) are loaded after initialization of VDFS.

    Another problem I have with Union compared to SystemPack's loading of DLLs is, that the VDFS is initialized before loading the DLLs in Union. Could you rearrange that? I modify/create a VDF file at startup of my DLL, but at that time it is too late to be loaded by the VDFS. With the SystemPack (pre.load) this is no problem as the VDF files are only initialized after loading all DLLs.

All the issues mentioned are no problem for the SystemPack VDFS. Maybe you could compare the difference and adjust the VDFS of Union accordingly. I would highly appreciate that!

Thank you and best regards!
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
mud-freak, Hi :)

Cannot access physical files with
I guess this problem is part of the second question, because your DLL may be unavailable of opened in process flow

VDF are locked and cannot be accessed/opened.
This is for protect volumes from changes... But yes, i can unlock volumes for reading.

Plugins (DLLs) are loaded after initialization of VDFS.
that the VDFS is initialized before loading the DLLs in Union.
Because Union loads plugins with VDFS help :) VDFS searches DLLs in physical flows AND in VDF volumes. Union can run DLLs from any VDF or MOD volumes.
Example of autorun plugin:
1570874596877.png
1570874640460.png
Default start time of plugins is after engine WinMain. It is more safely, i can use constructors of Gothic classes in global space
1570876185256.png

But Union have special tag for loads plugins before engine, if last symbol in name == '*'.
Then start time is after VDFS.

For your tasks I can add one more condition of two '**' for start only physical DLLs before VDFS.
1570876426075.png


For tests I can give you new DLLs in forum PM, skype or discord.
 

mud-freak

Участник форума
Регистрация
12 Окт 2019
Сообщения
3
Благодарности
0
Баллы
5
Gratt, thank you for the explanations! Please excuse my lack of knowledge of the Union features, thank you for explaining!

Your ideas sounds very good. I am happy to do some testing with new DLLs in forum PM.
 

LikerGothic

Участник форума
Регистрация
11 Фев 2017
Сообщения
486
Благодарности
350
Баллы
110
Gratt, чем zCModelPrototype отличается от zCModel. Я тут хочу один баг исправить, когда все анимации (спринт, уровень владения оружием) ломаются и помогает только перезапуск игры. Для в2 актуально.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
Gratt, чем zCModelPrototype отличается zCModel. Я тут хочу один баг исправить, когда все анимации (спринт, уровень владения оружием) ломаются и помогает только перезапуск игры. Для в2 актуально.
Тем что zCModelPrototype является 'узлом' класса zCModel. А zCModel - производная от zCVisual.
zCModelPrototype может иметь вложенные zCMesh и хранить списки анимаций. Все это вкупе потом использует zCModel.

ломаются и помогает только перезапуск игры
Как проявляется этот баг?
 

LikerGothic

Участник форума
Регистрация
11 Фев 2017
Сообщения
486
Благодарности
350
Баллы
110
Gratt, допустим герой умирает, загружаешься, и все анимации владений/спринта скидываются (не всегда). Иногда это происходит при смене локации (редко) Применить новые оверлеи нельзя, ничего не происходит. Причем ломается на всех сейвах. Лечится только перезаходом в игру с нуля.

Функция ApplyModelProtoOverlay в случае бага возвращает FALSE, пишет в лог "tried to apply overlay to model: overlay- and model base-.mds do not match"
Пост автоматически объединён:

Список оверлеев до смерти, во время смерти, после перезагрузки сейва:

1570881582823.png
 
Последнее редактирование:

LikerGothic

Участник форума
Регистрация
11 Фев 2017
Сообщения
486
Благодарности
350
Баллы
110
Gratt, в принципе я баг зафиксил.
Всё оказалось проще, при загрузке локации или сейва вызываю, и не багает :)
Mdl_RemoveOverlayMds(npc,"HUMANS.MDS");
Mdl_ApplyOverlayMds(npc,"HUMANS.MDS");
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
LikerGothic, а глянь в этот момент что лежит в activeOverlays? Этот массив тоже зачищается?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
Union 1.0e
По заявкам. Введение дополнительных возможностей для файловой системы.


* Файловая система оставляет VDF тома доступными для чтения на всем времени выполнения, а также может читать файлы, открытые в других потоках.
* Указанный DLL плагин в PluginList, имеющий '**' на конце имени, будет запускаться до инициализации файловой системы (напоминаю, что плагины с одной '*' на конце запускаются до вызова конструкторов движка и точки входа WinMain)
1570907042275.png
* Теперь движок вызывает функцию vdf_exitall для корректного закрытия VDF потоков.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
163
Благодарности
50
Баллы
70
Приветствую всех. Возникла проблема:
При установке Union 1.0e, в папке System после запуска игры (G2 NotR) перестал появляться файл Union.ini, вследствие чего не удается подключить плагин dll.
Накатил обратно 1.0d - Union.ini спокойно появился. Пробовал полную переустановку игры, с SP 1.8, но на 1.0e файл упорно НЕ появляется.
В чем может быть проблема?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
KirTheSeeker, ну да, пути из-за вчерашних правок немного поехали.
Те кто уже успел скачать - просто заходим в менеджер, нажимаем ПКМ -> Перекачать и устанавливаем еще раз. Сейчас все правильно должно быть...
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
20
Благодарности
1
Баллы
10
Подскажите, для G1_Classic можно делать External функции? Соурсер их просто игнорирует, независимо, ставлю я в "Параметры->Расширенные настройки" галочку "Компиляция AST" или не ставлю. Всегда ошибка, мол, такой функции нет. Естественно, функции я прописал в ExternalFuncs.d.
Проверял тоже самое на G2_Addon, все работает. Проблема во мне, в игре или в Соурсере?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
1.512
Благодарности
1.744
Баллы
270
alexeich2019, В сорсере. Там 2 функции регистрации внешек, так как их наборы отличаются для г1 и г2. Saturas почему-то подставил вызов расширенных функций только в г2. Скомпилируй игрой, там нет ничего сложного.
 
Сверху Снизу